Browse Source

Docker works as expected, README updated

onyinyang 2 years ago
parent
commit
112bac3d3c
4 changed files with 34 additions and 173 deletions
  1. 3 3
      Dockerfile
  2. 31 30
      README.md
  3. 0 71
      src/migration.txt
  4. 0 69
      src/stddev.py

+ 3 - 3
Dockerfile

@@ -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

+ 31 - 30
README.md

@@ -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).
 
 

+ 0 - 71
src/migration.txt

@@ -1,71 +0,0 @@
-
-running 2 tests
-test tests::stats_test_blockage_migration_40 has been running for over 60 seconds
-test tests::stats_test_blockage_migration_45 has been running for over 60 seconds
-
----------------Check Blockage 40---------------
-
-Average Request size = 744
-Request Standard Deviation = 0
-Average Request Time = 17.560349ms
-Request time Standard Deviation = 527.939µs
-Average Response size = 1364
-Response Standard Deviation = 0
-Average Response Time = 29.160633ms
-Response Time Standard Deviation = 957.851µs
-Average Response Handling Time = 1.632675ms
-Response Handling Time Standard Deviation = 80.419µs
-
----------------Blockage Migration 40---------------
-
-Average Request size = 1224
-Request Standard Deviation = 0
-Average Request Time = 31.246734ms
-Request time Standard Deviation = 863.903µs
-Average Response size = 840
-Response Standard Deviation = 0
-Average Response Time = 47.96312ms
-Response Time Standard Deviation = 1.132074ms
-Average Response Handling Time = 20.067194ms
-Response Handling Time Standard Deviation = 560.91µs
-test tests::stats_test_blockage_migration_40 ... ok
-
----------------Check Blockage 45---------------
-
-Average Request size = 744
-Request Standard Deviation = 0
-Average Request Time = 16.879235ms
-Request time Standard Deviation = 1.012876ms
-Average Response size = 2204
-Response Standard Deviation = 0
-Average Response Time = 33.453128ms
-Response Time Standard Deviation = 2.007504ms
-Average Response Handling Time = 1.873567ms
-Response Handling Time Standard Deviation = 134.745µs
-
----------------Blockage Migration 45---------------
-
-Average Request size = 1224
-Request Standard Deviation = 0
-Average Request Time = 29.964257ms
-Request time Standard Deviation = 1.732654ms
-Average Response size = 840
-Response Standard Deviation = 0
-Average Response Time = 46.019155ms
-Response Time Standard Deviation = 2.632306ms
-Average Response Handling Time = 19.222321ms
-Response Handling Time Standard Deviation = 1.180166ms
-test tests::stats_test_blockage_migration_45 ... ok
-
-test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 21 filtered out; finished in 11763.27s
-
-
-running 0 tests
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s
-
-
-running 0 tests
-
-test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
-

+ 0 - 69
src/stddev.py

@@ -1,69 +0,0 @@
-log_file = open("test_raw_data.log", "r").readlines()
-test_file = open("issue_stddev.csv", "w")
-block_file = open("redeem_stddev.csv", "w")
-open_file = open("open_stddev.csv", "w")
-promo_file = open("promo_stddev.csv", "w")
-
-test_file.write("RequestT,ResponseT,ResponseHT\n")
-block_file.write("RequestT,ResponseT,ResponseHT\n")
-open_file.write("RequestT,ResponseT,ResponseHT\n")
-promo_file.write("RequestT,ResponseT,ResponseHT\n")
-
-
-
-blockage = 0
-num = 0
-req_time = 0
-resp_time = 0
-resp_handle = 0
-endline = 0
-
-# Loop over the remaining lines in the file
-for line in log_file:
-    if "ISSUE_INVITE" in line:
-        blockage = 1
-
-    elif "REDEEM_INVITE" in line:
-        blockage = 2
-
-    elif "OPEN_INVITE" in line:
-        blockage = 3
-    elif "TRUST_PROMOTION" in line:
-        blockage = 4
-
-    elif "tests::stats" in line:
-        blockage = 0
-
-    elif blockage:
-        value = line.split(" = ")
-        if value[0].startswith("Request"):
-            to_sec = value[1][:-3]
-            req_time = to_sec
-
-        elif value[0].startswith("Response"):
-            to_sec = value[1][:-3]
-            if "handle" in value[0]:
-                resp_handle_time = to_sec
-                endline = 1
-            else:
-                resp_time = to_sec
-
-
-    if endline == 1:
-        if blockage == 1:
-            test_file.write(str(req_time)+ "," + str(resp_time) + "," + str(resp_handle_time) + "\n")
-            endline = 0
-        elif blockage == 2:
-            block_file.write(str(req_time) + ","  + str(resp_time) + "," + str(resp_handle_time) + "\n")
-            endline = 0
-        elif blockage == 3:
-            open_file.write(str(req_time) + ","  + str(resp_time) + "," + str(resp_handle_time) + "\n")
-            endline = 0
-        elif blockage == 4:
-            promo_file.write(str(req_time) + ","  + str(resp_time) + "," + str(resp_handle_time) + "\n")
-            endline = 0
-        blockage = 0
-
-test_file.close()
-block_file.close()
-print("Done.")