From 3d74fcd5a46713d731c507ff416b03f6d87939de Mon Sep 17 00:00:00 2001 From: onyinyang Date: Thu, 20 Oct 2022 00:43:31 -0400 Subject: [PATCH] Added some fixes and requested touchups from artifact review --- crates/lox-library/Dockerfile | 4 +- .../Parsing-results/make_tables.py | 2 +- .../lox-library/Parsing-results/pets_plots.py | 2 +- .../Parsing-results/requirements.txt | 15 ++++++++ crates/lox-library/README.md | 38 +++++++++---------- crates/lox-library/run_tests_fast.sh | 38 +++++++++---------- crates/lox-library/src/tests.rs | 11 +++--- 7 files changed, 61 insertions(+), 49 deletions(-) create mode 100644 crates/lox-library/Parsing-results/requirements.txt diff --git a/crates/lox-library/Dockerfile b/crates/lox-library/Dockerfile index 8f5796d..954c37f 100644 --- a/crates/lox-library/Dockerfile +++ b/crates/lox-library/Dockerfile @@ -8,8 +8,6 @@ ADD Parsing-results ./Parsing-results ADD README.md README.md RUN apt update -y RUN apt install -y python3 python3-pip -RUN pip3 install pandas -RUN pip3 install numpy -RUN pip3 install matplotlib +RUN pip3 install -r Parsing-results/requirements.txt RUN cargo build --release ENV SHELL=/bin/bash diff --git a/crates/lox-library/Parsing-results/make_tables.py b/crates/lox-library/Parsing-results/make_tables.py index 36e6d16..61a0eea 100644 --- a/crates/lox-library/Parsing-results/make_tables.py +++ b/crates/lox-library/Parsing-results/make_tables.py @@ -11,7 +11,7 @@ def main(): "Redeem Invitation", "Check Blockage 5%", "Check Blockage 50%", "Check Blockage 100%", "Blockage Migration"] files = ["trust_levels.csv", "trust_promo.csv", "trust_mig.csv", "level2.csv", "invitations.csv", "redeem_invites.csv","check_blockage5.csv", - "check_blockage50.csv","check_blockage100.csv","check_blockage50.csv"] + "check_blockage50.csv","check_blockage100.csv","blockage_migration50.csv"] csv_cols = ["RequestS", "RequestT","Rtstdev","ResponseS","ResponseT", "ReTstdev", "ResponseHT", "RHTstdev"] perf_columns = ["Protocol","Request Size", "Request Time", "sigma", diff --git a/crates/lox-library/Parsing-results/pets_plots.py b/crates/lox-library/Parsing-results/pets_plots.py index 7683c99..df8557f 100644 --- a/crates/lox-library/Parsing-results/pets_plots.py +++ b/crates/lox-library/Parsing-results/pets_plots.py @@ -23,7 +23,7 @@ def main(): df.ResponseT+df.ReTstdev, alpha=0.5, edgecolor='#CC4F1B', facecolor='#FF9848') plt.tight_layout(pad=1) - plt.savefig("StandardCheck.pdf") + plt.savefig("Blockage-response-time.pdf") plt.close('all') def set_plot_options(): diff --git a/crates/lox-library/Parsing-results/requirements.txt b/crates/lox-library/Parsing-results/requirements.txt new file mode 100644 index 0000000..77e0143 --- /dev/null +++ b/crates/lox-library/Parsing-results/requirements.txt @@ -0,0 +1,15 @@ +contourpy==1.0.5 +cycler==0.11.0 +fonttools==4.37.4 +kiwisolver==1.4.4 +matplotlib==3.6.1 +mercurial==5.6.1 +numpy==1.23.4 +packaging==21.3 +pandas==1.5.0 +Pillow==9.2.0 +pyparsing==3.0.9 +python-dateutil==2.8.2 +pytz==2022.4 +six==1.16.0 + diff --git a/crates/lox-library/README.md b/crates/lox-library/README.md index ba48997..c3cfd4a 100644 --- a/crates/lox-library/README.md +++ b/crates/lox-library/README.md @@ -21,24 +21,24 @@ Where `TESTNAME > LOGFILE` is one of: ``` 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 +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 @@ -53,7 +53,7 @@ flag 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: +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 diff --git a/crates/lox-library/run_tests_fast.sh b/crates/lox-library/run_tests_fast.sh index a5546b9..4b43063 100755 --- a/crates/lox-library/run_tests_fast.sh +++ b/crates/lox-library/run_tests_fast.sh @@ -2,25 +2,25 @@ cargo test --release --features=fast -- --nocapture stats_test_trust_levels > trust_levels.log cargo test --release --features=fast -- --nocapture stats_test_invitations > invitations.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_05 > check_blockage05.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_010 > check_blockage010.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_20 > check_blockage20.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_25 > check_blockage25.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_30 > check_blockage30.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_35 > check_blockage35.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_40 > check_blockage40.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_45 > check_blockage45.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_50 > check_blockage50.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_55 > check_blockage55.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_60 > check_blockage60.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_65 > check_blockage65.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_70 > check_blockage70.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_75 > check_blockage75.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_80 > check_blockage80.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_85 > check_blockage85.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_90 > check_blockage90.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_95 > check_blockage95.log -cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_100 > check_blockage100.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_05 > blockage_migration05.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_010 > blockage_migration010.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_20 > blockage_migration20.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_25 > blockage_migration25.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_30 > blockage_migration30.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_35 > blockage_migration35.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_40 > blockage_migration40.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_45 > blockage_migration45.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_50 > blockage_migration50.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_55 > blockage_migration55.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_60 > blockage_migration60.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_65 > blockage_migration65.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_70 > blockage_migration70.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_75 > blockage_migration75.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_80 > blockage_migration80.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_85 > blockage_migration85.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_90 > blockage_migration90.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_95 > blockage_migration95.log +cargo test --release --features=fast -- --nocapture stats_test_percent_blockage_migration_100 > blockage_migration100.log echo "Completed all tests, now parsing results" mv *.log Parsing-results cd Parsing-results diff --git a/crates/lox-library/src/tests.rs b/crates/lox-library/src/tests.rs index e2b65ea..58f4911 100644 --- a/crates/lox-library/src/tests.rs +++ b/crates/lox-library/src/tests.rs @@ -1686,16 +1686,15 @@ fn print_stats_test_results( resp_handle_time: Vec, ) { let mean_req_size = mean(&req_size); - let req_std_dev = standard_deviation(&req_size, Some(mean_req_size)); + let req_std_dev = if &req_size.len() > &1 {standard_deviation(&req_size, Some(mean_req_size))} else {0.0}; let mean_req_time = mean(&req_time); - let req_time_std_dev = standard_deviation(&req_time, Some(mean_req_time)); + let req_time_std_dev = if &req_time.len() > &1 {standard_deviation(&req_time, Some(mean_req_time))} else {0.0}; let mean_resp_size = mean(&resp_size); - let resp_std_dev = standard_deviation(&resp_size, Some(mean_resp_size)); + let resp_std_dev = if &resp_size.len() > &1 {standard_deviation(&resp_size, Some(mean_resp_size))} else {0.0}; let mean_resp_time = mean(&resp_time); - let resp_time_std_dev = standard_deviation(&resp_time, Some(mean_resp_time)); + let resp_time_std_dev = if &resp_time.len() > &1 {standard_deviation(&resp_time, Some(mean_resp_time))} else {0.0}; let mean_resp_handle_time = mean(&resp_handle_time); - let resp_handle_time_std_dev = - standard_deviation(&resp_handle_time, Some(mean_resp_handle_time)); + let resp_handle_time_std_dev = if &resp_handle_time.len() > &1 {standard_deviation(&resp_handle_time, Some(mean_resp_handle_time))} else {0.0}; println!("Average request size = {} bytes", mean_req_size); println!("Request size standard deviation = {} bytes", req_std_dev);