|
@@ -1,7 +1,7 @@
|
|
# Lox
|
|
# 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 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)
|
|
|
|
|
|
+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:
|
|
### To use the docker environment to build the package:
|
|
|
|
|
|
@@ -10,56 +10,57 @@ Lox is written in rust and requires `cargo` to test. [Install Rust](https://www.
|
|
./run-lox.sh
|
|
./run-lox.sh
|
|
```
|
|
```
|
|
|
|
|
|
-### To run the full tests used for our experimental results run:
|
|
|
|
|
|
+### To run each of the tests used for our experimental results run:
|
|
|
|
|
|
```
|
|
```
|
|
-cargo test --release -- --nocapture TESTNAME
|
|
|
|
|
|
+cargo test --release -- --nocapture TESTNAME > LOGFILE
|
|
```
|
|
```
|
|
|
|
|
|
-Where `TESTNAME` is one of:
|
|
|
|
|
|
+Where `TESTNAME > LOGFILE` 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
|
|
|
|
|
|
+stats_test_trust_levels > trust_levels.log
|
|
|
|
+stats_test_invitations > invitations.log
|
|
|
|
+stats_test_percent_blockage_migration_05 > check_blockage05.log
|
|
|
|
+stats_test_percent_blockage_migration_010 > check_blockage010.log
|
|
|
|
+stats_test_percent_blockage_migration_20 > check_blockage20.log
|
|
|
|
+stats_test_percent_blockage_migration_25 > check_blockage25.log
|
|
|
|
+stats_test_percent_blockage_migration_35 > check_blockage35.log
|
|
|
|
+stats_test_percent_blockage_migration_40 > check_blockage40.log
|
|
|
|
+stats_test_percent_blockage_migration_45 > check_blockage45.log
|
|
|
|
+stats_test_percent_blockage_migration_50 > check_blockage50.log
|
|
|
|
+stats_test_percent_blockage_migration_55 > check_blockage55.log
|
|
|
|
+stats_test_percent_blockage_migration_60 > check_blockage60.log
|
|
|
|
+stats_test_percent_blockage_migration_65 > check_blockage65.log
|
|
|
|
+stats_test_percent_blockage_migration_70 > check_blockage70.log
|
|
|
|
+stats_test_percent_blockage_migration_75 > check_blockage75.log
|
|
|
|
+stats_test_percent_blockage_migration_80 > check_blockage80.log
|
|
|
|
+stats_test_percent_blockage_migration_85 > check_blockage85.log
|
|
|
|
+stats_test_percent_blockage_migration_90 > check_blockage90.log
|
|
|
|
+stats_test_percent_blockage_migration_95 > check_blockage95.log
|
|
|
|
+stats_test_percent_blockage_migration_100 > check_blockage100.log
|
|
```
|
|
```
|
|
|
|
|
|
-Each test takes approximately 20-30 hours to run. However, this can be improved
|
|
|
|
|
|
+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
|
|
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
|
|
users instead of 10000 users and will produce results comparable to our
|
|
reported results (with larger error margins). To run individual tests with this
|
|
reported results (with larger error margins). To run individual tests with this
|
|
flag run:
|
|
flag run:
|
|
|
|
|
|
```
|
|
```
|
|
- cargo test --release --features=fast -- --nocapture TESTNAME
|
|
|
|
|
|
+ cargo test --release --features=fast -- --nocapture TESTNAME > LOGFILE
|
|
```
|
|
```
|
|
|
|
|
|
- To run all tests in fast mode and output the results to the Parsing-results
|
|
|
|
- directory, run:
|
|
|
|
|
|
+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 (`StandardCheck.pdf` and `core-users.pdf`, our Figures 1 and 2) used in our paper, run:
|
|
|
|
|
|
```
|
|
```
|
|
./run_tests_fast
|
|
./run_tests_fast
|
|
```
|
|
```
|
|
|
|
|
|
|
|
+This should take approximately 9 hours to complete.
|
|
|
|
+
|
|
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).
|
|
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).
|
|
|
|
|
|
|
|
|