67 lines
3.7 KiB
Markdown
67 lines
3.7 KiB
Markdown
# 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](https://www.rust-lang.org/tools/install). We used Rust version 1.56.0.
|
||
|
||
### To use the docker environment to build the package:
|
||
|
||
```
|
||
./build-lox.sh
|
||
./run-lox.sh
|
||
```
|
||
|
||
### To run each of the tests used for our experimental results run:
|
||
|
||
```
|
||
cargo test --release -- --nocapture TESTNAME > LOGFILE
|
||
```
|
||
|
||
Where `TESTNAME > LOGFILE` is one of:
|
||
|
||
```
|
||
stats_test_trust_levels > trust_levels.log
|
||
stats_test_invitations > invitations.log
|
||
stats_test_percent_blockage_migration_05 > blockage_migration05.log
|
||
stats_test_percent_blockage_migration_010 > blockage_migration010.log
|
||
stats_test_percent_blockage_migration_20 > blockage_migration20.log
|
||
stats_test_percent_blockage_migration_25 > blockage_migration25.log
|
||
stats_test_percent_blockage_migration_35 > blockage_migration35.log
|
||
stats_test_percent_blockage_migration_40 > blockage_migration40.log
|
||
stats_test_percent_blockage_migration_45 > blockage_migration45.log
|
||
stats_test_percent_blockage_migration_50 > blockage_migration50.log
|
||
stats_test_percent_blockage_migration_55 > blockage_migration55.log
|
||
stats_test_percent_blockage_migration_60 > blockage_migration60.log
|
||
stats_test_percent_blockage_migration_65 > blockage_migration65.log
|
||
stats_test_percent_blockage_migration_70 > blockage_migration70.log
|
||
stats_test_percent_blockage_migration_75 > blockage_migration75.log
|
||
stats_test_percent_blockage_migration_80 > blockage_migration80.log
|
||
stats_test_percent_blockage_migration_85 > blockage_migration85.log
|
||
stats_test_percent_blockage_migration_90 > blockage_migration90.log
|
||
stats_test_percent_blockage_migration_95 > blockage_migration95.log
|
||
stats_test_percent_blockage_migration_100 > blockage_migration100.log
|
||
```
|
||
|
||
Each test outputs results to the specified log file and takes approximately 20-30 hours to run. However, this can be improved
|
||
by passing the `fast` feature. Using this feature, our tests are run for 100
|
||
users instead of 10000 users and will produce results comparable to our
|
||
reported results (with larger error margins). To run individual tests with this
|
||
flag run:
|
||
|
||
```
|
||
cargo test --release --features=fast -- --nocapture TESTNAME > LOGFILE
|
||
```
|
||
|
||
We have also included the scripts we used to parse the output from each of the Lox tests in the `Parsing-results` directory. For convenience, copy all of the output log files to the `Parsing-results` directory and run `./parse_data.sh`. This is a python script that uses Python 3.8+ and depends on `numpy`, `matplotlib`, and `pandas` which can be installed with `pip3`.
|
||
|
||
To run all tests in fast mode, output the results to the `Parsing-results` directory, and generate the table (`performance_stats.csv`, our Table 4) and graphs (`Blockage-response-time.pdf` and `core-users.pdf`, our Figures 1 and 2) used in our paper, run:
|
||
|
||
```
|
||
./run_tests_fast
|
||
```
|
||
|
||
This takes 5–6 hours to complete on the 2011-era E7-8870 processor we used for the measurements in the paper. Newer processors will likely take less time. Note that with the `fast` feature, it is possible that some tests may only yield 0 or 1 data points, in which case you will see `0` for the times and/or stddevs in the resulting `performance_stats.csv` table for those tests.
|
||
|
||
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).
|
||
|
||
|