Docker works as expected, README updated

This commit is contained in:
onyinyang 2022-10-18 00:52:10 -04:00
parent abc8acd079
commit 9f0fb0bbe1
No known key found for this signature in database
GPG Key ID: 156A6435430C2036
2 changed files with 34 additions and 33 deletions

View File

@ -6,9 +6,9 @@ ADD tests/ ./tests/
ADD run_tests_fast.sh .
ADD Parsing-results ./Parsing-results
ADD README.md README.md
RUN apt-get update -y
RUN apt-get install -y python3 python3-pip
RUN pip3 install pandas
RUN apt update -y
RUN apt install -y python3 python3-pip
RUN pip3 install pandas
RUN pip3 install numpy
RUN pip3 install matplotlib
RUN cargo build --release

View File

@ -1,7 +1,7 @@
# 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)
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:
@ -10,56 +10,57 @@ Lox is written in rust and requires `cargo` to test. [Install Rust](https://www.
./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
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
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
```
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).