From e055535f1118fa8d187068db167dc456e32da4ce Mon Sep 17 00:00:00 2001 From: nik012003 Date: Sat, 25 Jun 2022 17:59:33 +0200 Subject: [PATCH] Added csv output --- .gitignore | 3 +++ docs/FiregexBenchmark.png | Bin 0 -> 17858 bytes tests/README.md | 27 +++++++-------------------- tests/benchmark.py | 19 ++++++++++++------- 4 files changed, 22 insertions(+), 27 deletions(-) create mode 100644 docs/FiregexBenchmark.png diff --git a/.gitignore b/.gitignore index 7ab03bf..e4cd96a 100755 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,9 @@ docker-compose.yml # production #/frontend/build +#test results +/tests/benchmark.csv + # misc **/.DS_Store **/.env.local diff --git a/docs/FiregexBenchmark.png b/docs/FiregexBenchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..9acb796a55611b591c828ef237aab8b9af0bacb8 GIT binary patch literal 17858 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 M_f)o2`uUsx1)?J#)c^nh literal 0 HcmV?d00001 diff --git a/tests/README.md b/tests/README.md index 16b60a2..f90f6d6 100644 --- a/tests/README.md +++ b/tests/README.md @@ -28,6 +28,8 @@ The testing methodology will soon be updated with more edge-cases. # Running a Benchmark ./benchmark.py + options: + -h, --help show this help message and exit --address ADDRESS, -a ADDRESS Address of firegex backend --service_port SERVICE_PORT, -P SERVICE_PORT @@ -40,27 +42,12 @@ The testing methodology will soon be updated with more edge-cases. Number of regexes to benchmark with --duration DURATION, -d DURATION Duration of the Benchmark in seconds + --output_file OUTPUT_FILE, -o OUTPUT_FILE + Output results csv file Benchmarks let you evaluate the performance of the proxy. You can run one by typing in a shell ```test.py -p FIREGEX_PASSWORD -r NUM_OF_REGEX -d BENCHMARK_DURATION```. -It uses iperf3 to benchmark the throuput in MB/s of the server, both with proxy, without proxy, and for each new added regex. It will automatically add a new random regex untill it has reached NUM_OF_REGEX specified in the arguments. +It uses iperf3 to benchmark the throughput in MB/s of the server, both with proxy, without proxy, and for each new added regex. It will automatically add a new random regex untill it has reached NUM_OF_REGEX specified in the arguments. -Example output: - - Benchmarking with 30 will start on http://127.0.0.1:5000/ - Sucessfully logged in ✔ - Sucessfully created service Benchmark Service with public port 1337 ✔ - Sucessfully received the internal port 38249 ✔ - Baseline without proxy: 7145.402353788159MB/s - Sucessfully started service with id benchmark-service ✔ - Performance with no regexes: 2255.4573361742887MB/s - Performance with 1 regex(s): 76.51810976542541MB/s - Performance with 2 regex(s): 38.769568516424684MB/s - Performance with 3 regex(s): 25.976997107893663MB/s - Performance with 4 regex(s): 19.539058399917625MB/s - Performance with 5 regex(s): 14.720692718915746MB/s - Performance with 6 regex(s): 13.101487751340413MB/s - Performance with 7 regex(s): 11.237772047509017MB/s - Performance with 8 regex(s): 9.851833265188406MB/s - Performance with 9 regex(s): 8.725255532797124MB/s - Performance with 10 regex(s): 7.891516589287963MB/s \ No newline at end of file +You will find a new benchmark.csv file containg the results. +![Firegex Benchmark](/docs/FiregexBenchmark.png) diff --git a/tests/benchmark.py b/tests/benchmark.py index d07cc27..8d8aa82 100755 --- a/tests/benchmark.py +++ b/tests/benchmark.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -import argparse, socket,secrets, base64, iperf3 +import argparse, socket,secrets, base64, iperf3, csv from time import sleep from requests import Session from multiprocessing import Process @@ -28,6 +28,7 @@ parser.add_argument("--service_name", "-n", type=str , required=False, help='Nam parser.add_argument("--password", "-p", type=str, required=True, help='Firegex password') parser.add_argument("--num_of_regexes", "-r", type=int, required=True, help='Number of regexes to benchmark with') parser.add_argument("--duration", "-d", type=int, required=False, help='Duration of the Benchmark in seconds', default=5) +parser.add_argument("--output_file", "-o", type=str, required=False, help='Output results csv file', default="benchmark.csv") args = parser.parse_args() sep() @@ -74,7 +75,7 @@ def getReading(port): client.server_hostname = '127.0.0.1' client.port = port client.protocol = 'tcp' - return client.run().json['end']['sum_received']['bits_per_second']/8e+6 + return round(client.run().json['end']['sum_received']['bits_per_second']/8e+6 , 3) server = Process(target=startServer) server.start() @@ -83,7 +84,7 @@ sleep(1) #Get baseline reading puts(f"Baseline without proxy: ", color=colors.blue, end='') -print(f"{getReading(internal_port)}MB/s") +print(f"{getReading(internal_port)} MB/s") #Start firewall req = s.get(f"{args.address}api/service/{service_id}/start") @@ -97,7 +98,7 @@ sleep(1) results = [] puts(f"Performance with no regexes: ", color=colors.yellow , end='') results.append(getReading(args.service_port)) -print(f"{results[0]}MB/s") +print(f"{results[0]} MB/s") #Add all the regexs for i in range(1,args.num_of_regexes+1): @@ -107,10 +108,14 @@ for i in range(1,args.num_of_regexes+1): assert req.json()["status"] == "ok", f"Test Failed: Couldn't add regex {req.text}" puts(f"Performance with {i} regex(s): ", color=colors.red, end='') results.append(getReading(args.service_port)) - print(f"{results[i]}MB/s") + print(f"{results[i]} MB/s") -print("Results:") -print(results) +with open(args.output_file,'w') as f: + writer = csv.writer(f) + for i,result in enumerate(results): + writer.writerow([i,result]) + +puts(f"Sucessfully written results to {args.output_file} ✔", color=colors.magenta) #Delete the Service req = s.get(f"{args.address}api/service/{service_id}/delete")