Implementation of the Lox bridge authority system

onyinyang 1e30e0ccdd Added Dockerfile and build scripts for PETS2023 2 gadi atpakaļ
src 02c19b6865 Fixed testing instructions and another substring issue 2 gadi atpakaļ
tests 0e5876a939 API for adding bridges and marking them as unreachable 3 gadi atpakaļ
Cargo.toml 634f8c9b35 Added timing 2 gadi atpakaļ
Dockerfile 1e30e0ccdd Added Dockerfile and build scripts for PETS2023 2 gadi atpakaļ
README.md 68d9a228fb Changed format of TESTNAME 2 gadi atpakaļ
build-lox.sh 1e30e0ccdd Added Dockerfile and build scripts for PETS2023 2 gadi atpakaļ
run-lox.sh 1e30e0ccdd Added Dockerfile and build scripts for PETS2023 2 gadi atpakaļ
stop-lox.sh 1e30e0ccdd Added Dockerfile and build scripts for PETS2023 2 gadi atpakaļ

README.md

Lox

Lox is a reputation-based bridge distribution system that provides privacy protection to users and their social graph and is open to all users. Lox is written in rust and requires cargo to test. Install Rust

To run the tests used for our experimental results run:

cargo test --release -- --nocapture TESTNAME

Where TESTNAME is one of:

stats_test_trust_levels 
stats_test_invitations
stats_test_percent_blockage_migration_05 
stats_test_percent_blockage_migration_010
stats_test_percent_blockage_migration_15
stats_test_percent_blockage_migration_20
stats_test_percent_blockage_migration_25
stats_test_percent_blockage_migration_30
stats_test_percent_blockage_migration_35
stats_test_percent_blockage_migration_40
stats_test_percent_blockage_migration_45 
stats_test_percent_blockage_migration_50
stats_test_percent_blockage_migration_55
stats_test_percent_blockage_migration_60
stats_test_percent_blockage_migration_65 
stats_test_percent_blockage_migration_70
stats_test_percent_blockage_migration_75
stats_test_percent_blockage_migration_80
stats_test_percent_blockage_migration_85
stats_test_percent_blockage_migration_90
stats_test_percent_blockage_migration_95
stats_test_percent_blockage_migration_100

Each test takes approximately 20-30 hours to run.

Note that: our implementation is coded such that the reachability certificate expires at 00:00 UTC. A workaround has been included in each test to pause if it is too close to this time so the request won't fail. In reality, if the bucket is still reachable, a user could simply request a new reachability token if their request fails for this reason (a new certificate should be available prior to the outdated certificate expiring).