From 5721ee337c611e585a9f1de310fa86928f107968 Mon Sep 17 00:00:00 2001 From: "Edward M. Kagan" Date: Wed, 3 Nov 2021 18:33:51 +0300 Subject: [PATCH] Ready for quad test --- pom.xml | 2 +- scripts/collect-jars.sh | 5 +---- scripts/lua/dump_get.lua | 32 +++++-------------------------- scripts/lua/dump_index.lua | 32 +++++-------------------------- scripts/lua/dump_post.lua | 31 +++++------------------------- scripts/test-all.sh | 39 ++++++++++++++++++++++++++++++++++++++ scripts/wrk-test.sh | 30 +++++++++++++++++------------ 7 files changed, 74 insertions(+), 97 deletions(-) create mode 100755 scripts/test-all.sh diff --git a/pom.xml b/pom.xml index 6ea7312..ece25e3 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ 3.2.4 4.1.69.Final 2.11.0 - 3.0.3 + 2.35 4.2.0 5.0.0 UTF-8 diff --git a/scripts/collect-jars.sh b/scripts/collect-jars.sh index b02a66b..73ee402 100755 --- a/scripts/collect-jars.sh +++ b/scripts/collect-jars.sh @@ -1,9 +1,6 @@ -if [ ! -d ../docker/jars ]; then rm -rf ../docker/jars; fi +if [ -d ../docker/jars ]; then rm -rf ../docker/jars; fi mkdir -p ../docker/jars -if [ ! -d ../docker/data ]; then rm -rf ../docker/data; fi -mkdir -p ../docker/data - mkdir -p ../docker/jars/cxf-jetty cp ../modules/cxf-jetty/target/cxf-jetty-1.0-SNAPSHOT.jar ../docker/jars/cxf-jetty/app.jar mkdir -p ../docker/jars/cxf-netty diff --git a/scripts/lua/dump_get.lua b/scripts/lua/dump_get.lua index 55c63c0..f9886af 100644 --- a/scripts/lua/dump_get.lua +++ b/scripts/lua/dump_get.lua @@ -1,28 +1,6 @@ - function done(summary, latency, requests) - file = io.open('docker/data/get.json', 'w') - io.output(file) - - io.write(string.format("{\n")) - - io.write(string.format(" \"summary\": {\n")) - io.write(string.format(" \"duration_microseconds\": %d,\n", summary.duration)) - io.write(string.format(" \"num_requests\": %d,\n", summary.requests)) - io.write(string.format(" \"total_bytes\": %d,\n", summary.bytes)) - io.write(string.format(" \"requests_per_sec\": %.2f,\n", summary.requests/(summary.duration))) - io.write(string.format(" \"bytes_per_sec\": \"%.2f\"\n", summary.bytes/summary.duration)) - io.write(string.format(" },\n")) - - io.write(string.format(" \"latency\": {\n")) - io.write(string.format(" \"min_microseconds\": %.2f,\n", latency.min)) - io.write(string.format(" \"max_microseconds\": %.2f,\n", latency.max)) - io.write(string.format(" \"mean_microseconds\": %.2f,\n", latency.mean)) - io.write(string.format(" \"stdev_microseconds\": %.2f,\n", latency.stdev)) - io.write(string.format(" \"percentile_90_microseconds\": %.2f,\n", latency:percentile(90.0))) - io.write(string.format(" \"percentile_95_microseconds\": %.2f,\n", latency:percentile(95.0))) - io.write(string.format(" \"percentile_99_microseconds\": %.2f\n", latency:percentile(99.0))) - io.write(string.format(" }\n")) - - - io.write(string.format("}\n")) - end \ No newline at end of file + file = io.open('../docker/data/get.csv', 'w') + io.output(file) + io.write("\"duration_microseconds\",\"num_requests\",\"total_bytes\",\"requests_per_sec\",\"bytes_per_sec\",\"min_microseconds\",\"max_microseconds\",\"mean_microseconds\",\"stdev_microseconds\",\"percentile_90_microseconds\",\"percentile_95_microseconds\",\"percentile_99_microseconds\"\n") + io.write(string.format("%d,%d,%d,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",summary.duration,summary.requests,summary.bytes,summary.requests/(summary.duration),(summary.bytes/summary.duration),latency.min,latency.max,latency.mean,latency.stdev,latency:percentile(90.0),latency:percentile(95.0),latency:percentile(99.0))) +end \ No newline at end of file diff --git a/scripts/lua/dump_index.lua b/scripts/lua/dump_index.lua index 8da2237..5af055c 100644 --- a/scripts/lua/dump_index.lua +++ b/scripts/lua/dump_index.lua @@ -1,28 +1,6 @@ - function done(summary, latency, requests) - file = io.open('docker/data/index.json', 'w') - io.output(file) - - io.write(string.format("{\n")) - - io.write(string.format(" \"summary\": {\n")) - io.write(string.format(" \"duration_microseconds\": %d,\n", summary.duration)) - io.write(string.format(" \"num_requests\": %d,\n", summary.requests)) - io.write(string.format(" \"total_bytes\": %d,\n", summary.bytes)) - io.write(string.format(" \"requests_per_sec\": %.2f,\n", summary.requests/(summary.duration))) - io.write(string.format(" \"bytes_per_sec\": \"%.2f\"\n", summary.bytes/summary.duration)) - io.write(string.format(" },\n")) - - io.write(string.format(" \"latency\": {\n")) - io.write(string.format(" \"min_microseconds\": %.2f,\n", latency.min)) - io.write(string.format(" \"max_microseconds\": %.2f,\n", latency.max)) - io.write(string.format(" \"mean_microseconds\": %.2f,\n", latency.mean)) - io.write(string.format(" \"stdev_microseconds\": %.2f,\n", latency.stdev)) - io.write(string.format(" \"percentile_90_microseconds\": %.2f,\n", latency:percentile(90.0))) - io.write(string.format(" \"percentile_95_microseconds\": %.2f,\n", latency:percentile(95.0))) - io.write(string.format(" \"percentile_99_microseconds\": %.2f\n", latency:percentile(99.0))) - io.write(string.format(" }\n")) - - - io.write(string.format("}\n")) - end \ No newline at end of file + file = io.open('../docker/data/index.csv', 'w') + io.output(file) + io.write("\"duration_microseconds\",\"num_requests\",\"total_bytes\",\"requests_per_sec\",\"bytes_per_sec\",\"min_microseconds\",\"max_microseconds\",\"mean_microseconds\",\"stdev_microseconds\",\"percentile_90_microseconds\",\"percentile_95_microseconds\",\"percentile_99_microseconds\"\n") + io.write(string.format("%d,%d,%d,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",summary.duration,summary.requests,summary.bytes,summary.requests/(summary.duration),(summary.bytes/summary.duration),latency.min,latency.max,latency.mean,latency.stdev,latency:percentile(90.0),latency:percentile(95.0),latency:percentile(99.0))) +end \ No newline at end of file diff --git a/scripts/lua/dump_post.lua b/scripts/lua/dump_post.lua index b935fd4..95634ab 100644 --- a/scripts/lua/dump_post.lua +++ b/scripts/lua/dump_post.lua @@ -1,29 +1,8 @@ wrk.method = "POST" function done(summary, latency, requests) - file = io.open('docker/data/post.json', 'w') - io.output(file) - - io.write(string.format("{\n")) - - io.write(string.format(" \"summary\": {\n")) - io.write(string.format(" \"duration_microseconds\": %d,\n", summary.duration)) - io.write(string.format(" \"num_requests\": %d,\n", summary.requests)) - io.write(string.format(" \"total_bytes\": %d,\n", summary.bytes)) - io.write(string.format(" \"requests_per_sec\": %.2f,\n", summary.requests/(summary.duration))) - io.write(string.format(" \"bytes_per_sec\": \"%.2f\"\n", summary.bytes/summary.duration)) - io.write(string.format(" },\n")) - - io.write(string.format(" \"latency\": {\n")) - io.write(string.format(" \"min_microseconds\": %.2f,\n", latency.min)) - io.write(string.format(" \"max_microseconds\": %.2f,\n", latency.max)) - io.write(string.format(" \"mean_microseconds\": %.2f,\n", latency.mean)) - io.write(string.format(" \"stdev_microseconds\": %.2f,\n", latency.stdev)) - io.write(string.format(" \"percentile_90_microseconds\": %.2f,\n", latency:percentile(90.0))) - io.write(string.format(" \"percentile_95_microseconds\": %.2f,\n", latency:percentile(95.0))) - io.write(string.format(" \"percentile_99_microseconds\": %.2f\n", latency:percentile(99.0))) - io.write(string.format(" }\n")) - - - io.write(string.format("}\n")) - end \ No newline at end of file + file = io.open('../docker/data/post.csv', 'w') + io.output(file) + io.write("\"duration_microseconds\",\"num_requests\",\"total_bytes\",\"requests_per_sec\",\"bytes_per_sec\",\"min_microseconds\",\"max_microseconds\",\"mean_microseconds\",\"stdev_microseconds\",\"percentile_90_microseconds\",\"percentile_95_microseconds\",\"percentile_99_microseconds\"\n") + io.write(string.format("%d,%d,%d,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",summary.duration,summary.requests,summary.bytes,summary.requests/(summary.duration),(summary.bytes/summary.duration),latency.min,latency.max,latency.mean,latency.stdev,latency:percentile(90.0),latency:percentile(95.0),latency:percentile(99.0))) +end \ No newline at end of file diff --git a/scripts/test-all.sh b/scripts/test-all.sh new file mode 100755 index 0000000..7ee66fb --- /dev/null +++ b/scripts/test-all.sh @@ -0,0 +1,39 @@ +./collect-jars.sh + +test () { + parentdir="$(dirname "$(pwd)")" + + xterm -e "docker run --rm -it -p 8080:8080 -w /root -v $parentdir/docker/jars/$1:/root $2:$3 java -jar app.jar" & + TEST_DOCKER_PID=$! + sleep 1 + ./wrk-test.sh $1 $2 $3 12 100 15 + sleep 1 + kill $TEST_DOCKER_PID + sleep 1 +} +modules=( 'quarkus-resteasy-jackson' 'quarkus-resteasy-jsonb' 'jersey-grizzly2' 'jersey-jdk-http' 'jersey-simple-http' 'jersey-jetty' 'jersey-netty' 'jersey-netty' 'jersey-netty' 'jersey-netty' 'rawnetty' 'jooby-netty' 'jooby-jetty' 'jooby-undertow' 'resteasy-jdk-http' 'resteasy-netty' 'resteasy-reactor-netty' 'resteasy-vertx' 'resteasy-undertow' 'cxf-jetty' 'cxf-netty' 'cxf-undertow' ) +versions=( '8' '11' '17' ) +for version in "${versions[@]}" +do + jkds=( 'amazoncorretto' 'azul/zulu-openjdk' 'azul/zulu-openjdk-alpine' 'eclipse-temurin' 'openjdk' ) + for jdk in "${jkds[@]}" + do + for module in "${modules[@]}" + do + test $version $jdk $module + done + done +done + +versions=( '8-alpine' '11-alpine' '17-alpine' ) +for version in "${versions[@]}" +do + jkds=( 'amazoncorretto' 'eclipse-temurin' 'openjdk' ) + for jdk in "${jkds[@]}" + do + for module in "${modules[@]}" + do + test $version $jdk $module + done + done +done diff --git a/scripts/wrk-test.sh b/scripts/wrk-test.sh index 52b9398..40960b6 100755 --- a/scripts/wrk-test.sh +++ b/scripts/wrk-test.sh @@ -1,12 +1,18 @@ -echo "Module: $1"; -echo "Threads: $2"; -echo "Connections: $3"; -echo "Duration: $4"; - -wrk -t$2 -c$3 -d$4s -s ./scripts/lua/dump_index.lua http://127.0.0.1:8080/test/ -wrk -t$2 -c$3 -d$4s -s ./scripts/lua/dump_get.lua http://127.0.0.1:8080/test/100 -wrk -t$2 -c$3 -d$4s -s ./scripts/lua/dump_post.lua http://127.0.0.1:8080/test/100 - -mv ./docker/data/index.json ./docker/data/index-$1.json -mv ./docker/data/get.json ./docker/data/get-$1.json -mv ./docker/data/post.json ./docker/data/post-$1.json \ No newline at end of file +# echo "Module: $1"; +# echo "JDK image: $2"; +# echo "JDK version: $3"; +# echo "Threads: $4"; +# echo "Connections: $5"; +# echo "Duration: $6"; + +jdk_suffix=$2 +jdkim="$(echo $jdk_suffix | sed -e 's/\//@/g')" + +wrk -t$4 -c$5 -d$6s -s ./lua/dump_index.lua http://127.0.0.1:8080/test/ +mv ../docker/data/index.csv ../docker/data/index_$3_$1_$jdkim.csv + +wrk -t$4 -c$5 -d$6s -s ./lua/dump_get.lua http://127.0.0.1:8080/test/100 +mv ../docker/data/get.csv ../docker/data/get_$3_$1_$jdkim.csv + +wrk -t$4 -c$5 -d$6s -s ./lua/dump_post.lua http://127.0.0.1:8080/test/100 +mv ../docker/data/post.csv ../docker/data/post_$3_$1_$jdkim.csv \ No newline at end of file