Remove performance statistics tests for pipeline
This commit is contained in:
parent
fc8711d279
commit
eb5417b6a4
|
@ -1,13 +0,0 @@
|
||||||
FROM rust:1.56.0
|
|
||||||
WORKDIR /home/lox
|
|
||||||
ADD src/ ./src/
|
|
||||||
ADD Cargo.toml Cargo.toml
|
|
||||||
ADD tests/ ./tests/
|
|
||||||
ADD run_tests_fast.sh .
|
|
||||||
ADD Parsing-results ./Parsing-results
|
|
||||||
ADD README.md README.md
|
|
||||||
RUN apt update -y
|
|
||||||
RUN apt install -y python3 python3-pip
|
|
||||||
RUN pip3 install -r Parsing-results/requirements.txt
|
|
||||||
RUN cargo build --release
|
|
||||||
ENV SHELL=/bin/bash
|
|
|
@ -1,60 +0,0 @@
|
||||||
import pandas as pd
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from matplotlib.lines import Line2D
|
|
||||||
|
|
||||||
fig, (axs, axs1) = plt.subplots(2, 4, figsize=(24, 12))
|
|
||||||
fig.suptitle("Checking for Blockage and Migration to new Bridges for" +
|
|
||||||
" Percentage of Bridges Blocked")
|
|
||||||
columns = ["Percent", "RequestT", "Rtstdev", "ResponseS", "ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
df = pd.read_csv("check_blockage.csv", usecols=columns)
|
|
||||||
df1 = pd.read_csv("migration.csv", usecols=columns)
|
|
||||||
fig.supxlabel('Blocked Bridges (%)')
|
|
||||||
axs[0].set_ylabel('Request Time (ms)')
|
|
||||||
axs[0].set_ylim([0,70])
|
|
||||||
l1 = axs[0].plot(df.Percent, df.RequestT, color='#CC4F1B',
|
|
||||||
label='Request Time for Percentage of Bridges Blocked')
|
|
||||||
axs[0].fill_between(df.Percent, df.RequestT-df.Rtstdev, df.RequestT+df.Rtstdev,
|
|
||||||
alpha=0.5, edgecolor='#CC4F1B', facecolor='#FF9848')
|
|
||||||
axs1[0].set_ylabel('Request Time (ms)')
|
|
||||||
axs1[0].set_ylim([0,70])
|
|
||||||
axs1[0].plot(df1.Percent, df1.RequestT, color='#1B2ACC',
|
|
||||||
label='Request Time for Percentage of Bridges Blocked')
|
|
||||||
axs1[0].fill_between(df1.Percent, df1.RequestT-df1.Rtstdev,
|
|
||||||
df1.RequestT+df1.Rtstdev, alpha=0.2, edgecolor='#1B2ACC',
|
|
||||||
facecolor='#089FFF')
|
|
||||||
axs[1].set_ylabel('Response Time (ms)')
|
|
||||||
axs[1].plot(df.Percent, df.ResponseT, color='#CC4F1B',
|
|
||||||
label='Response Time for Percentage of Bridges Blocked')
|
|
||||||
axs[1].fill_between(df.Percent, df.ResponseT-df.ReTstdev,
|
|
||||||
df.ResponseT+df.ReTstdev, alpha=0.5, edgecolor='#CC4F1B',
|
|
||||||
facecolor='#FF9848')
|
|
||||||
axs1[1].set_ylabel('Response Time (ms)')
|
|
||||||
axs1[1].set_ylim([0,70])
|
|
||||||
axs1[1].plot(df1.Percent, df1.ResponseT, color='#1B2ACC',
|
|
||||||
label='Response Time for Percentage of Bridges Blocked')
|
|
||||||
axs1[1].fill_between(df1.Percent, df1.ResponseT-df1.ReTstdev,
|
|
||||||
df1.ResponseT+df1.ReTstdev, alpha=0.2, edgecolor='#1B2ACC',
|
|
||||||
facecolor='#089FFF')
|
|
||||||
axs[2].set_ylabel('Response Size (ms)')
|
|
||||||
axs[2].plot(df.Percent, df.ResponseS, color='#CC4F1B',
|
|
||||||
label='Response Size for Percentage of Bridges Blocked')
|
|
||||||
axs1[2].set_ylabel('Response Size (ms)')
|
|
||||||
axs1[2].plot(df1.Percent, df1.ResponseS, color='#1B2ACC',
|
|
||||||
label='Response Size for Percentage of Bridges Blocked')
|
|
||||||
axs[3].set_ylabel('Response Handling Time (ms)')
|
|
||||||
axs[3].plot(df.Percent, df.ResponseHT, color='#CC4F1B',
|
|
||||||
label='Response Handling Time for Percentage of Bridges Blocked')
|
|
||||||
axs[3].fill_between(df.Percent, df.ResponseHT-df.RHTstdev,
|
|
||||||
df.ResponseHT+df.RHTstdev, alpha=0.5, edgecolor='#CC4F1B',
|
|
||||||
facecolor='#FF9848')
|
|
||||||
axs1[3].set_ylabel('Response Handling Time (ms)')
|
|
||||||
axs1[3].set_ylim([0,70])
|
|
||||||
axs1[3].plot(df1.Percent, df1.ResponseHT, color='#1B2ACC',
|
|
||||||
label='Response Handling Time for Percentage of Bridges Blocked')
|
|
||||||
axs1[3].fill_between(df1.Percent, df1.ResponseHT-df1.RHTstdev,
|
|
||||||
df1.ResponseHT+df1.RHTstdev, alpha=0.2, edgecolor='#1B2ACC',
|
|
||||||
facecolor='#089FFF')
|
|
||||||
legend_elements = [Line2D([0], [0], color='#CC4F1B', label="Check Blockage Protocol"), Line2D([0], [0], color='#1B2ACC', label="Blockage Migration Protocol")]
|
|
||||||
fig.legend(handles=legend_elements, loc='lower right')
|
|
||||||
fig.savefig("Performance.pdf")
|
|
|
@ -1,110 +0,0 @@
|
||||||
import sys
|
|
||||||
import pandas as pd
|
|
||||||
import matplotlib
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from matplotlib.lines import Line2D
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
|
|
||||||
fig, axs = plt.subplots(1, 3, figsize=(24, 7))
|
|
||||||
columns = ["Percent","Bridges", "RequestT", "Rtstdev", "ResponseS", "ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
df = pd.read_csv("standard_check"+".csv", usecols=columns)
|
|
||||||
df.sort_values(["Percent"], axis=0,ascending=[False], inplace=True)
|
|
||||||
bridges = df.Bridges*2*3
|
|
||||||
fig.supxlabel('Blocked Bridges (%)', size=30)
|
|
||||||
axs[0].set_ylabel('Response Time (ms)', size=25)
|
|
||||||
axs[0].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[0].tick_params(axis='y', labelsize=15)
|
|
||||||
# axs[0].set_xticklabels('Blocked Bridges (%)',fontsize=10)
|
|
||||||
axs[0].plot(df.Percent, df.ResponseT, color='#CC4F1B',
|
|
||||||
label='Response Time for Percentage of Bridges Blocked')
|
|
||||||
axs[0].fill_between(df.Percent, df.ResponseT-df.ReTstdev,
|
|
||||||
df.ResponseT+df.ReTstdev, alpha=0.5, edgecolor='#CC4F1B',
|
|
||||||
facecolor='#FF9848')
|
|
||||||
axs[1].set_ylabel('Response Size (bytes)', size=25)
|
|
||||||
axs[1].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[1].tick_params(axis='y', labelsize=15)
|
|
||||||
axs[1].plot(df.Percent, df.ResponseS, color='#CC4F1B',
|
|
||||||
label='Response Size for Percentage of Bridges Blocked')
|
|
||||||
axs[2].set_ylabel('Response Handling Time (ms)', size=25)
|
|
||||||
axs[2].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[2].tick_params(axis='y', labelsize=15)
|
|
||||||
axs[2].plot(df.Percent, df.ResponseHT, color='#CC4F1B',
|
|
||||||
label='Response Handling Time for Percentage of Bridges Blocked')
|
|
||||||
axs[2].fill_between(df.Percent, df.ResponseHT-df.RHTstdev,
|
|
||||||
df.ResponseHT+df.RHTstdev, alpha=0.5, edgecolor='#CC4F1B',
|
|
||||||
facecolor='#FF9848')
|
|
||||||
fig. tight_layout(pad=1)
|
|
||||||
fig.savefig("StandardCheck.pdf")
|
|
||||||
plt.close('all')
|
|
||||||
|
|
||||||
for n in range(5,105,5):
|
|
||||||
fig, axs = plt.subplots(1, 3, figsize=(24, 7))
|
|
||||||
columns = ["Percent","Bridges", "RequestT", "Rtstdev", "ResponseS", "ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
df = pd.read_csv("checkblockage"+str(n)+".csv", usecols=columns)
|
|
||||||
bridges = df.Bridges*2*3
|
|
||||||
fig.supxlabel('Total Size of Bridge Pool ('+str(n)+'% Bridges Blocked)',size=30)
|
|
||||||
axs[0].set_ylabel('Response Time (ms)', size=25)
|
|
||||||
axs[0].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[0].tick_params(axis='y', labelsize=15)
|
|
||||||
axs[0].plot(bridges, df.ResponseT, color='#740202',
|
|
||||||
label='Response Time for Percentage of Bridges Blocked')
|
|
||||||
axs[0].fill_between(bridges, df.ResponseT-df.ReTstdev,
|
|
||||||
df.ResponseT+df.ReTstdev, alpha=0.5, edgecolor='#740202',
|
|
||||||
facecolor='#E75252')
|
|
||||||
axs[1].set_ylabel('Response Size (bytes)', size=25)
|
|
||||||
axs[1].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[1].tick_params(axis='y', labelsize=15)
|
|
||||||
axs[1].plot(bridges, df.ResponseS, color='#740202',
|
|
||||||
label='Response Size for Percentage of Bridges Blocked')
|
|
||||||
axs[2].set_ylabel('Response Handling Time (ms)', size=25)
|
|
||||||
axs[2].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[2].tick_params(axis='y', labelsize=15)
|
|
||||||
axs[2].plot(bridges, df.ResponseHT, color='#740202',
|
|
||||||
label='Response Handling Time for Percentage of Bridges Blocked')
|
|
||||||
axs[2].fill_between(bridges, df.ResponseHT-df.RHTstdev,
|
|
||||||
df.ResponseHT+df.RHTstdev, alpha=0.5, edgecolor='#740202',
|
|
||||||
facecolor='#E75252')
|
|
||||||
fig. tight_layout(pad=1)
|
|
||||||
fig.savefig("PerformanceVaried"+str(n)+".pdf")
|
|
||||||
print("\nDone PerformanceVaried"+str(n)+" Plot.\nOutput to: PerformanceVaried"+str(n)+".pdf")
|
|
||||||
plt.close('all')
|
|
||||||
|
|
||||||
|
|
||||||
def set_plot_options():
|
|
||||||
options = {
|
|
||||||
'font.size': 12,
|
|
||||||
'figure.figsize': (4,2),
|
|
||||||
'figure.dpi': 100.0,
|
|
||||||
'figure.subplot.left': 0.20,
|
|
||||||
'figure.subplot.right': 0.97,
|
|
||||||
'figure.subplot.bottom': 0.20,
|
|
||||||
'figure.subplot.top': 0.90,
|
|
||||||
'grid.color': '0.1',
|
|
||||||
'grid.linestyle': ':',
|
|
||||||
#'grid.linewidth': 0.5,
|
|
||||||
'axes.grid' : True,
|
|
||||||
#'axes.grid.axis' : 'y',
|
|
||||||
#'axes.axisbelow': True,
|
|
||||||
'axes.titlesize' : 25,
|
|
||||||
'axes.labelsize' : 25,
|
|
||||||
'axes.formatter.limits': (-4,4),
|
|
||||||
'xtick.labelsize' : 30,#get_tick_font_size_10(),
|
|
||||||
'ytick.labelsize' : 30,#get_tick_font_size_10(),
|
|
||||||
'lines.linewidth' : 2.0,
|
|
||||||
'lines.markeredgewidth' : 0.5,
|
|
||||||
'lines.markersize' : 15,
|
|
||||||
}
|
|
||||||
|
|
||||||
for option_key in options:
|
|
||||||
matplotlib.rcParams[option_key] = options[option_key]
|
|
||||||
if 'figure.max_num_figures' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_num_figures'] = 100
|
|
||||||
if 'figure.max_open_warning' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_open_warning'] = 100
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(main())
|
|
|
@ -1,79 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import json
|
|
||||||
import lzma
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
import matplotlib
|
|
||||||
import matplotlib.pyplot as pyplot
|
|
||||||
import matplotlib.colors as mcolors
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
set_plot_options()
|
|
||||||
buckets = [600, 1200, 1800, 2400, 3000]
|
|
||||||
n = 1000000
|
|
||||||
ft = []
|
|
||||||
|
|
||||||
pyplot.figure()
|
|
||||||
for b in buckets:
|
|
||||||
delta = np.arange(1/10,1,.01)
|
|
||||||
x = []
|
|
||||||
for d in delta:
|
|
||||||
p = n*(1.61 + (14.71/d+23.725/d**2)/b) / 86400000
|
|
||||||
x.append(p)
|
|
||||||
ft.append(x)
|
|
||||||
|
|
||||||
|
|
||||||
pyplot.plot(delta, ft[0], label='600 Buckets')
|
|
||||||
pyplot.plot(delta, ft[1], linestyle='dotted', label='1200 Buckets')
|
|
||||||
pyplot.plot(delta, ft[2], linestyle='dashed', label='1800 Buckets')
|
|
||||||
pyplot.plot(delta, ft[3], linestyle='dashdot', label='2400 Buckets')
|
|
||||||
pyplot.plot(delta, ft[4], label='3000 Buckets')
|
|
||||||
pyplot.ylim(bottom=0)
|
|
||||||
|
|
||||||
pyplot.xlabel(r'$\Delta$')
|
|
||||||
pyplot.ylabel("Cores / Million Users")
|
|
||||||
# pyplot.title("Average Number of Bridge Users for 1 Month Old Bridges November 2021")
|
|
||||||
|
|
||||||
|
|
||||||
pyplot.legend(loc="upper right")
|
|
||||||
pyplot.tight_layout(pad=1)
|
|
||||||
pyplot.savefig("core-users.pdf")
|
|
||||||
|
|
||||||
def set_plot_options():
|
|
||||||
options = {
|
|
||||||
#'backend': 'PDF',
|
|
||||||
'font.size': 18,
|
|
||||||
'figure.figsize': (7,4),
|
|
||||||
'figure.dpi': 100.0,
|
|
||||||
'axes.grid' : True,
|
|
||||||
'axes.xmargin' : 0,
|
|
||||||
'axes.grid.axis' : 'y',
|
|
||||||
'axes.axisbelow': True,
|
|
||||||
'axes.titlesize' : 'medium',
|
|
||||||
'axes.labelsize' : 'large',
|
|
||||||
'axes.formatter.limits': (-6,6),
|
|
||||||
'xtick.labelsize' : 18,#get_tick_font_size_10(),
|
|
||||||
'ytick.labelsize' : 18,
|
|
||||||
'lines.linewidth' : 2.0,
|
|
||||||
'lines.markersize' : 10,
|
|
||||||
# turn on the following to embedd fonts; requires latex
|
|
||||||
'ps.useafm' : True,
|
|
||||||
'pdf.use14corefonts' : True,
|
|
||||||
'text.usetex' : False,
|
|
||||||
}
|
|
||||||
|
|
||||||
for option_key in options:
|
|
||||||
matplotlib.rcParams[option_key] = options[option_key]
|
|
||||||
|
|
||||||
if 'figure.max_num_figures' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_num_figures'] = 100
|
|
||||||
if 'figure.max_open_warning' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_open_warning'] = 100
|
|
||||||
if 'legend.ncol' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['legend.ncol'] = 100
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(main())
|
|
|
@ -1,68 +0,0 @@
|
||||||
import csv
|
|
||||||
import sys
|
|
||||||
import pandas as pd
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
perf = open("performance_stats"+".csv", "w", newline='')
|
|
||||||
protocols=["Open Invitation", "Trust Promotion(0->1)",
|
|
||||||
"Trust Migration (0->1)", "Level Up (1->4)", "Issue Invitation",
|
|
||||||
"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","blockage_migration50.csv"]
|
|
||||||
csv_cols = ["RequestS", "RequestT","Rtstdev","ResponseS","ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
perf_columns = ["Protocol","Request Size", "Request Time", "sigma",
|
|
||||||
"Response Size","Response Time", "sigma",
|
|
||||||
"Response Handling Time", "sigma"]
|
|
||||||
worst_resp = 0
|
|
||||||
perfwriter = csv.writer(perf, delimiter=',')
|
|
||||||
perfwriter.writerow(perf_columns)
|
|
||||||
|
|
||||||
for i, protocol in enumerate(protocols):
|
|
||||||
columns = ["Percent","Bridges", "RequestS", "Rsstdev", "RequestT",
|
|
||||||
"Rtstdev", "ResponseS","Restdev","ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
df = pd.read_csv(files[i], usecols=columns)
|
|
||||||
perf_in = []
|
|
||||||
|
|
||||||
perf_in.append(protocol)
|
|
||||||
for item in csv_cols:
|
|
||||||
row = df[item].loc[df['Bridges']==900].values
|
|
||||||
if "stdev" in item:
|
|
||||||
rounded = np.round(row[0], decimals=1)
|
|
||||||
else:
|
|
||||||
rounded = np.round(row[0], decimals=3)
|
|
||||||
perf_in.append(rounded)
|
|
||||||
rounded = np.round(row[0], decimals=1)
|
|
||||||
if item == "RequestT":
|
|
||||||
req = np.round(rounded, decimals=1)
|
|
||||||
elif item == "ResponseT":
|
|
||||||
resp_sec = np.round(1000/rounded, decimals=1)
|
|
||||||
resp_core = resp_sec/(1/(60*60*24))
|
|
||||||
if rounded > worst_resp:
|
|
||||||
worst_resp = rounded
|
|
||||||
|
|
||||||
|
|
||||||
perfwriter.writerow(perf_in)
|
|
||||||
|
|
||||||
for i, protocol in enumerate(protocols):
|
|
||||||
columns = ["Percent","Bridges", "RequestS", "Rsstdev", "RequestT",
|
|
||||||
"Rtstdev", "ResponseS","Restdev","ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
df = pd.read_csv(files[i], usecols=columns)
|
|
||||||
row = df['ResponseT'].loc[df['Bridges']==900].values
|
|
||||||
rounded = np.round(row[0], decimals=3)
|
|
||||||
resp_sec = np.round(1000/rounded, decimals=3)
|
|
||||||
resp_core = int(resp_sec/(1/(60*60*24)))
|
|
||||||
if worst_resp > rounded:
|
|
||||||
secs = int(worst_resp/1000)
|
|
||||||
|
|
||||||
perf.close()
|
|
||||||
print("\nDone Tables.\nTable data output to: performance_stats.csv,\n")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(main())
|
|
|
@ -1,14 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Parse results from Lox stat tests
|
|
||||||
echo 'Parse raw output to csv'
|
|
||||||
|
|
||||||
python3 raw_to_csv.py
|
|
||||||
|
|
||||||
echo 'Make plots for data'
|
|
||||||
|
|
||||||
#python3 check_blockages.py
|
|
||||||
python3 pets_plots.py
|
|
||||||
#python3 trust_promo_plot.py
|
|
||||||
python3 make_tables.py
|
|
||||||
python3 make_steady.py
|
|
|
@ -1,63 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import pandas as pd
|
|
||||||
import matplotlib
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from matplotlib.lines import Line2D
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
set_plot_options()
|
|
||||||
fig, axs = plt.subplots(1)
|
|
||||||
columns = ["Percent","Bridges", "RequestT", "Rtstdev", "ResponseS", "ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
df = pd.read_csv("standard_check"+".csv", usecols=columns)
|
|
||||||
df.sort_values(["Percent"], axis=0,ascending=[False], inplace=True)
|
|
||||||
bridges = df.Bridges*2*3
|
|
||||||
axs.set_xlabel('Blocked Bridges (%)')
|
|
||||||
axs.set_ylabel('Response Time (ms)')
|
|
||||||
axs.plot(df.Percent, df.ResponseT, color='#CC4F1B',
|
|
||||||
label='Response Time for Percentage of Bridges Blocked')
|
|
||||||
axs.set_ylim(bottom=0)
|
|
||||||
axs.fill_between(df.Percent, df.ResponseT-df.ReTstdev,
|
|
||||||
df.ResponseT+df.ReTstdev, alpha=0.5, edgecolor='#CC4F1B',
|
|
||||||
facecolor='#FF9848')
|
|
||||||
fig. tight_layout(pad=1)
|
|
||||||
fig.savefig("StandardCheck.pdf")
|
|
||||||
|
|
||||||
def set_plot_options():
|
|
||||||
options = {
|
|
||||||
#'backend': 'PDF',
|
|
||||||
'font.size': 18,
|
|
||||||
'figure.figsize': (7,3.5),
|
|
||||||
'figure.dpi': 100.0,
|
|
||||||
'axes.grid' : True,
|
|
||||||
'axes.xmargin' : 0,
|
|
||||||
'axes.grid.axis' : 'y',
|
|
||||||
'axes.axisbelow': True,
|
|
||||||
'axes.titlesize' : 'medium',
|
|
||||||
'axes.labelsize' : 'large',
|
|
||||||
'axes.formatter.limits': (-6,6),
|
|
||||||
'xtick.labelsize' : 18,#get_tick_font_size_10(),
|
|
||||||
'ytick.labelsize' : 18,
|
|
||||||
'lines.linewidth' : 2.0,
|
|
||||||
'lines.markersize' : 10,
|
|
||||||
# turn on the following to embedd fonts; requires latex
|
|
||||||
'ps.useafm' : True,
|
|
||||||
'pdf.use14corefonts' : True,
|
|
||||||
'text.usetex' : False,
|
|
||||||
}
|
|
||||||
|
|
||||||
for option_key in options:
|
|
||||||
matplotlib.rcParams[option_key] = options[option_key]
|
|
||||||
|
|
||||||
if 'figure.max_num_figures' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_num_figures'] = 100
|
|
||||||
if 'figure.max_open_warning' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_open_warning'] = 100
|
|
||||||
if 'legend.ncol' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['legend.ncol'] = 100
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(main())
|
|
|
@ -1,62 +0,0 @@
|
||||||
import sys
|
|
||||||
import pandas as pd
|
|
||||||
import matplotlib
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from matplotlib.lines import Line2D
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
|
|
||||||
plt.figure(figsize=(9, 5))
|
|
||||||
columns = ["Percent","Bridges", "RequestT", "Rtstdev", "ResponseS", "ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
df = pd.read_csv("standard_check"+".csv", usecols=columns)
|
|
||||||
df.sort_values(["Percent"], axis=0,ascending=[False], inplace=True)
|
|
||||||
bridges = df.Bridges*2*3
|
|
||||||
plt.xlabel('Blocked Bridges (%)', size=20)
|
|
||||||
plt.ylabel('Response Time (ms)', size=20)
|
|
||||||
plt.tick_params(axis='x', labelsize=15)
|
|
||||||
plt.tick_params(axis='y', labelsize=15)
|
|
||||||
plt.plot(df.Percent, df.ResponseT, color='#CC4F1B',
|
|
||||||
label='Response Time for Percentage of Bridges Blocked')
|
|
||||||
plt.fill_between(df.Percent, df.ResponseT-df.ReTstdev,
|
|
||||||
df.ResponseT+df.ReTstdev, alpha=0.5, edgecolor='#CC4F1B',
|
|
||||||
facecolor='#FF9848')
|
|
||||||
plt.tight_layout(pad=1)
|
|
||||||
plt.savefig("Blockage-response-time.pdf")
|
|
||||||
plt.close('all')
|
|
||||||
|
|
||||||
def set_plot_options():
|
|
||||||
options = {
|
|
||||||
'font.size': 12,
|
|
||||||
'figure.figsize': (10,2),
|
|
||||||
'figure.dpi': 100.0,
|
|
||||||
'figure.subplot.left': 0.20,
|
|
||||||
'figure.subplot.right': 0.97,
|
|
||||||
'figure.subplot.bottom': 0.20,
|
|
||||||
'figure.subplot.top': 0.90,
|
|
||||||
'grid.color': '0.1',
|
|
||||||
'grid.linestyle': ':',
|
|
||||||
#'grid.linewidth': 0.5,
|
|
||||||
'axes.grid' : True,
|
|
||||||
#'axes.grid.axis' : 'y',
|
|
||||||
#'axes.axisbelow': True,
|
|
||||||
'axes.titlesize' : 25,
|
|
||||||
'axes.labelsize' : 25,
|
|
||||||
'axes.formatter.limits': (-4,4),
|
|
||||||
'xtick.labelsize' : 30,#get_tick_font_size_10(),
|
|
||||||
'ytick.labelsize' : 30,#get_tick_font_size_10(),
|
|
||||||
'lines.linewidth' : 2.0,
|
|
||||||
'lines.markeredgewidth' : 0.5,
|
|
||||||
'lines.markersize' : 15,
|
|
||||||
}
|
|
||||||
|
|
||||||
for option_key in options:
|
|
||||||
matplotlib.rcParams[option_key] = options[option_key]
|
|
||||||
if 'figure.max_num_figures' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_num_figures'] = 100
|
|
||||||
if 'figure.max_open_warning' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_open_warning'] = 100
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(main())
|
|
|
@ -1,176 +0,0 @@
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
standard_check_file = open("standard_check"+".csv", "w")
|
|
||||||
standard_check_file.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
|
|
||||||
for p in Path('.').glob('*.log'):
|
|
||||||
print(f"Parsing: {p.name.strip('.log')}\n")
|
|
||||||
with p.open() as log_file:
|
|
||||||
test_file = open(p.name.strip('.log')+".csv", "w")
|
|
||||||
test_file.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
bridges = 0
|
|
||||||
c=False
|
|
||||||
red = 0
|
|
||||||
check = 0
|
|
||||||
level = 0
|
|
||||||
protocol = 0
|
|
||||||
num = 0
|
|
||||||
req_size = 0
|
|
||||||
req_size_std = 0
|
|
||||||
req_time = 0
|
|
||||||
req_time_std = 0
|
|
||||||
resp_size = 0
|
|
||||||
resp_size_std = 0
|
|
||||||
resp_time = 0
|
|
||||||
resp_time_std = 0
|
|
||||||
resp_handle_time = 0
|
|
||||||
resp_handle_std = 0
|
|
||||||
endline = 0
|
|
||||||
|
|
||||||
# Loop over the remaining lines in the file
|
|
||||||
for line in log_file:
|
|
||||||
if "***START" in line:
|
|
||||||
bridges = line.split()[1].split("*")[0]
|
|
||||||
if "CHECK-BLOCKAGE" in line:
|
|
||||||
protocol = 1
|
|
||||||
num = line.split("-")[6].strip('-')
|
|
||||||
if int(bridges) == 900:
|
|
||||||
check =1
|
|
||||||
if not c:
|
|
||||||
check_b = open("check_blockage"+str(num)+".csv", "w")
|
|
||||||
check_b.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
c=True
|
|
||||||
elif "BLOCKAGE-MIGRATION" in line:
|
|
||||||
protocol = 2
|
|
||||||
num = line.split("-")[6].strip('-')
|
|
||||||
elif "REDEEM" in line:
|
|
||||||
protocol = 3
|
|
||||||
if not red:
|
|
||||||
redeem = open("redeem_invites.csv", "w")
|
|
||||||
redeem.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
red = 1
|
|
||||||
elif "ISSUE" in line:
|
|
||||||
protocol = 4
|
|
||||||
elif "OPEN" in line:
|
|
||||||
protocol = 5
|
|
||||||
elif "TRUST-PROMOTION" in line:
|
|
||||||
protocol = 6
|
|
||||||
if not level:
|
|
||||||
trust_promo = open("trust_promo.csv", "w")
|
|
||||||
trust_promo.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
elif "TRUST-MIGRATION" in line:
|
|
||||||
protocol = 7
|
|
||||||
if not level:
|
|
||||||
mig_file = open("trust_mig.csv", "w")
|
|
||||||
mig_file.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
elif "LEVEL-UP-2" in line:
|
|
||||||
protocol = 8
|
|
||||||
if not level:
|
|
||||||
level_file = open("level2.csv", "w")
|
|
||||||
level_file.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
elif "LEVEL-UP-3" in line:
|
|
||||||
protocol = 9
|
|
||||||
if not level:
|
|
||||||
level_file_t = open("level3.csv", "w")
|
|
||||||
level_file_t.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
elif "LEVEL-UP-4" in line:
|
|
||||||
protocol = 10
|
|
||||||
if not level:
|
|
||||||
level_file_f = open("level4.csv", "w")
|
|
||||||
level_file_f.write("Percent,Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
level = 1
|
|
||||||
elif protocol:
|
|
||||||
value = line.split(" = ")
|
|
||||||
if value[0].startswith("Average"):
|
|
||||||
if "request" in value[0]:
|
|
||||||
if "size" in value[0]:
|
|
||||||
raw_size = value[1].split(" ")
|
|
||||||
req_size = raw_size[0]
|
|
||||||
else:
|
|
||||||
if "µ" in value[1]:
|
|
||||||
micro_sec = value[1].split("µ")
|
|
||||||
raw_size = float(micro_sec[0])*0.001
|
|
||||||
elif "m" not in value[1]:
|
|
||||||
sec = value[1][:-3]
|
|
||||||
raw_size = float(sec)*1000
|
|
||||||
else:
|
|
||||||
raw_size = value[1][:-3]
|
|
||||||
req_time = raw_size
|
|
||||||
else:
|
|
||||||
if "size" in value[0]:
|
|
||||||
raw_size = value[1].split(" ")
|
|
||||||
resp_size = raw_size[0]
|
|
||||||
else:
|
|
||||||
if "µ" in value[1]:
|
|
||||||
micro_sec = value[1].split("µ")
|
|
||||||
raw_size = float(micro_sec[0])*0.001
|
|
||||||
elif "m" not in value[1]:
|
|
||||||
sec = value[1][:-3]
|
|
||||||
raw_size = float(sec)*1000
|
|
||||||
else:
|
|
||||||
raw_size = value[1][:-3]
|
|
||||||
if "handling" in value[0]:
|
|
||||||
resp_handle_time = raw_size
|
|
||||||
else:
|
|
||||||
resp_time = raw_size
|
|
||||||
elif value[0].startswith("Request"):
|
|
||||||
if "size" in value[0]:
|
|
||||||
raw_size = value[1].split(" ")
|
|
||||||
req_size_std = raw_size[0]
|
|
||||||
else:
|
|
||||||
if "µ" in value[1]:
|
|
||||||
micro_sec = value[1].split("µ")
|
|
||||||
to_sec = float(micro_sec[0])*0.001
|
|
||||||
else:
|
|
||||||
to_sec = value[1][:-3]
|
|
||||||
req_time_std = to_sec
|
|
||||||
elif value[0].startswith("Response"):
|
|
||||||
if "size" in value[0]:
|
|
||||||
raw_size = value[1].split(" ")
|
|
||||||
resp_size_std = raw_size[0]
|
|
||||||
else:
|
|
||||||
if "µ" in value[1]:
|
|
||||||
micro_sec = value[1].split("µ")
|
|
||||||
to_sec = float(micro_sec[0])*0.001
|
|
||||||
else:
|
|
||||||
to_sec = value[1][:-3]
|
|
||||||
if "handling" in value[0]:
|
|
||||||
resp_handle_time_std = to_sec
|
|
||||||
endline = 1
|
|
||||||
else:
|
|
||||||
resp_time_std = to_sec
|
|
||||||
|
|
||||||
if endline == 1:
|
|
||||||
if check == 1:
|
|
||||||
standard_check_file.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
check = 0
|
|
||||||
if protocol == 1:
|
|
||||||
check_b.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
elif protocol == 3:
|
|
||||||
redeem.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
elif protocol<6:
|
|
||||||
test_file.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
else:
|
|
||||||
if protocol == 6:
|
|
||||||
trust_promo.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
if protocol == 7:
|
|
||||||
mig_file.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
if protocol == 8:
|
|
||||||
level_file.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
elif protocol == 9:
|
|
||||||
level_file_t.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
elif protocol == 10:
|
|
||||||
level_file_f.write(str(num) + "," + str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
endline = 0
|
|
||||||
protocol = 0
|
|
||||||
if level:
|
|
||||||
level_file.close()
|
|
||||||
level_file_t.close()
|
|
||||||
level_file_f.close()
|
|
||||||
trust_promo.close()
|
|
||||||
mig_file.close()
|
|
||||||
if red:
|
|
||||||
redeem.close()
|
|
||||||
test_file.close()
|
|
||||||
standard_check_file.close()
|
|
||||||
print("Done.")
|
|
|
@ -1,15 +0,0 @@
|
||||||
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
|
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
log_file = open("trust_levels.log", "r").readlines()
|
|
||||||
trust_promo_file = open("trust_promo"+".csv", "w")
|
|
||||||
trust_promo_file.write("Bridges,RequestS,Rsstdev,RequestT,Rtstdev,ResponseS,Restdev,ResponseT,ReTstdev,ResponseHT,RHTstdev\n")
|
|
||||||
|
|
||||||
|
|
||||||
bridges = 0
|
|
||||||
promo = 0
|
|
||||||
req_size = 0
|
|
||||||
req_size_std = 0
|
|
||||||
req_time = 0
|
|
||||||
req_time_std = 0
|
|
||||||
resp_size = 0
|
|
||||||
resp_size_std = 0
|
|
||||||
resp_time = 0
|
|
||||||
resp_time_std = 0
|
|
||||||
resp_handle_time = 0
|
|
||||||
resp_handle_std = 0
|
|
||||||
endline = 0
|
|
||||||
|
|
||||||
# Loop over the remaining lines in the file
|
|
||||||
for line in log_file:
|
|
||||||
if "***START" in line:
|
|
||||||
bridges = line.split()[1].split("*")[0]
|
|
||||||
elif "TRUST-PROMOTION" in line:
|
|
||||||
promo = 1
|
|
||||||
elif promo:
|
|
||||||
value = line.split(" = ")
|
|
||||||
if value[0].startswith("Average"):
|
|
||||||
if "request" in value[0]:
|
|
||||||
if "size" in value[0]:
|
|
||||||
raw_size = value[1].split(" ")
|
|
||||||
req_size = raw_size[0]
|
|
||||||
else:
|
|
||||||
raw_size = value[1]
|
|
||||||
req_time = raw_size[:-3]
|
|
||||||
else:
|
|
||||||
if "size" in value[0]:
|
|
||||||
raw_size = value[1].split(" ")
|
|
||||||
resp_size = raw_size[0]
|
|
||||||
else:
|
|
||||||
raw_size = value[1]
|
|
||||||
if "handling" in value[0]:
|
|
||||||
resp_handle_time = raw_size[:-3]
|
|
||||||
elif (value[1][-3]) != "m":
|
|
||||||
sec = value[1][:-3]
|
|
||||||
resp_time = float(sec)*1000
|
|
||||||
else:
|
|
||||||
resp_time = raw_size[:-3]
|
|
||||||
elif value[0].startswith("Request"):
|
|
||||||
if "size" in value[0]:
|
|
||||||
raw_size = value[1].split(" ")
|
|
||||||
req_size_std = raw_size[0]
|
|
||||||
else:
|
|
||||||
if "µ" in value[1]:
|
|
||||||
micro_sec = value[1].split("µ")
|
|
||||||
to_sec = float(micro_sec[0])*0.001
|
|
||||||
else:
|
|
||||||
to_sec = value[1][:-3]
|
|
||||||
req_time_std = to_sec
|
|
||||||
|
|
||||||
elif value[0].startswith("Response"):
|
|
||||||
if "size" in value[0]:
|
|
||||||
raw_size = value[1].split(" ")
|
|
||||||
resp_size_std = raw_size[0]
|
|
||||||
elif "bytes" in value[1]:
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
if "µ" in value[1]:
|
|
||||||
micro_sec = value[1].split("µ")
|
|
||||||
to_sec = float(micro_sec[0])*0.001
|
|
||||||
else:
|
|
||||||
to_sec = value[1][:-3]
|
|
||||||
if "handling" in value[0]:
|
|
||||||
resp_handle_time_std = to_sec
|
|
||||||
endline = 1
|
|
||||||
else:
|
|
||||||
resp_time_std = to_sec
|
|
||||||
|
|
||||||
if endline == 1:
|
|
||||||
if promo == 1:
|
|
||||||
trust_promo_file.write(str(bridges)+"," + str(req_size) + "," + str(req_size_std) + "," + str(req_time) + "," + str(req_time_std) + "," + str(resp_size) + "," + str(resp_size_std) + "," + str(resp_time) + "," + str(resp_time_std) + "," + str(resp_handle_time) + "," + str(resp_handle_time_std) + "\n")
|
|
||||||
promo = 0
|
|
||||||
endline = 0
|
|
||||||
|
|
||||||
trust_promo_file.close()
|
|
||||||
print("Done.")
|
|
|
@ -1,74 +0,0 @@
|
||||||
import sys
|
|
||||||
import pandas as pd
|
|
||||||
import matplotlib
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from matplotlib.lines import Line2D
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
|
|
||||||
fig, axs = plt.subplots(1, 3, figsize=(24, 7))
|
|
||||||
columns = ["Bridges", "RequestT", "Rtstdev", "ResponseS", "ResponseT",
|
|
||||||
"ReTstdev", "ResponseHT", "RHTstdev"]
|
|
||||||
df = pd.read_csv("trust_promo"+".csv", usecols=columns)
|
|
||||||
bridges = df.Bridges*2*3
|
|
||||||
fig.supxlabel('Total Size of Bridge Pool',size=30)
|
|
||||||
axs[0].set_ylabel('Response Time (ms)', size=25)
|
|
||||||
axs[0].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[0].tick_params(axis='y', labelsize=15)
|
|
||||||
axs[0].plot(bridges, df.ResponseT, color='#29135F',
|
|
||||||
label='Response Time for Trust Promotion')
|
|
||||||
axs[0].fill_between(bridges, df.ResponseT-df.ReTstdev,
|
|
||||||
df.ResponseT+df.ReTstdev, alpha=0.5, edgecolor='#29135F',
|
|
||||||
facecolor='#8967E2')
|
|
||||||
axs[1].set_ylabel('Response Size (bytes)', size=25)
|
|
||||||
axs[1].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[1].tick_params(axis='y', labelsize=15)
|
|
||||||
axs[1].plot(bridges, df.ResponseS, color='#29135F',
|
|
||||||
label='Response Size for Trust Promotion')
|
|
||||||
axs[2].set_ylabel('Response Handling Time (ms)', size=25)
|
|
||||||
axs[2].tick_params(axis='x', labelsize=15)
|
|
||||||
axs[2].tick_params(axis='y', labelsize=15)
|
|
||||||
axs[2].plot(bridges, df.ResponseHT, color='#29135F',
|
|
||||||
label='Response Handling Time for Trust Promotion')
|
|
||||||
axs[2].fill_between(bridges, df.ResponseHT-df.RHTstdev,
|
|
||||||
df.ResponseHT+df.RHTstdev, alpha=0.5, edgecolor='#29135F',
|
|
||||||
facecolor='#8967E2')
|
|
||||||
fig. tight_layout(pad=1)
|
|
||||||
fig.savefig("TrustPromotion.pdf")
|
|
||||||
print("\nDone Trust Promotion Plot.\nOutput to: TrustPromotion.pdf")
|
|
||||||
|
|
||||||
def set_plot_options():
|
|
||||||
options = {
|
|
||||||
'font.size': 12,
|
|
||||||
'figure.figsize': (4,2),
|
|
||||||
'figure.dpi': 100.0,
|
|
||||||
'figure.subplot.left': 0.20,
|
|
||||||
'figure.subplot.right': 0.97,
|
|
||||||
'figure.subplot.bottom': 0.20,
|
|
||||||
'figure.subplot.top': 0.90,
|
|
||||||
'grid.color': '0.1',
|
|
||||||
'grid.linestyle': ':',
|
|
||||||
#'grid.linewidth': 0.5,
|
|
||||||
'axes.grid' : True,
|
|
||||||
#'axes.grid.axis' : 'y',
|
|
||||||
#'axes.axisbelow': True,
|
|
||||||
'axes.titlesize' : 'large',
|
|
||||||
'axes.labelsize' : 'x-large',
|
|
||||||
'axes.formatter.limits': (-4,4),
|
|
||||||
'xtick.labelsize' : 20,#get_tick_font_size_10(),
|
|
||||||
'ytick.labelsize' : 20,#get_tick_font_size_10(),
|
|
||||||
'lines.linewidth' : 2.0,
|
|
||||||
'lines.markeredgewidth' : 0.5,
|
|
||||||
'lines.markersize' : 10,
|
|
||||||
}
|
|
||||||
|
|
||||||
for option_key in options:
|
|
||||||
matplotlib.rcParams[option_key] = options[option_key]
|
|
||||||
if 'figure.max_num_figures' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_num_figures'] = 100
|
|
||||||
if 'figure.max_open_warning' in matplotlib.rcParams:
|
|
||||||
matplotlib.rcParams['figure.max_open_warning'] = 100
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(main())
|
|
|
@ -3,64 +3,6 @@
|
||||||
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). We used Rust version 1.56.0.
|
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:
|
Note that this implementation is coded such that the reachability certificate expires at 00:00 UTC. 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).
|
||||||
|
|
||||||
```
|
|
||||||
./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).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
docker build -t lox .
|
|
|
@ -1,2 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
docker run --name lox --rm -it lox:latest /bin/bash
|
|
|
@ -1,29 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
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 > 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
|
|
||||||
./parse_data.sh
|
|
||||||
echo "Parse results are in the Parsing-results folder."
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue