summaryrefslogtreecommitdiff
path: root/qpid/java/testkit/bin/soak_report.sh
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/testkit/bin/soak_report.sh')
-rw-r--r--qpid/java/testkit/bin/soak_report.sh161
1 files changed, 161 insertions, 0 deletions
diff --git a/qpid/java/testkit/bin/soak_report.sh b/qpid/java/testkit/bin/soak_report.sh
new file mode 100644
index 0000000000..9da8bfa234
--- /dev/null
+++ b/qpid/java/testkit/bin/soak_report.sh
@@ -0,0 +1,161 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Sample script to run a soak test with MultiThreadedProducer/Consumer.
+# You need to provide the log freq and no of iterations
+# Ex to run 10 hours and collect 1 second samples
+# soak_report.sh 1 36000
+
+# This script assumes that a suitable broker instance is started.
+
+log_freq=$1
+log_iter=$2
+shift 2
+JVM_ARGS=$@
+
+if [ "$QPID_TEST_HOME" = "" ] ; then
+ echo "ERROR: Please set QPID_TEST_HOME ...."
+ exit 1
+fi
+
+print_rates()
+{
+ cat $1 | awk '{
+ FS = ",";
+ count = 0;
+ total_latency = 0;
+ min_latency = 9223372036854775807;
+ max_latency = 0;
+
+ total_tp = 0;
+ min_tp = 50000;
+ max_tp = 0;
+
+ while ((getline) == 1)
+ {
+ total_latency = total_latency + $3
+ total_tp = total_tp + $2
+
+ if ($3 > 0)
+ {
+ min_latency = (($3 < min_latency) ? $3 : min_latency);
+ max_latency = (($3 > max_latency) ? $3 : max_latency);
+ }
+ if ($2 > 0)
+ {
+ min_tp = (($2 < min_tp) ? $2 : min_tp);
+ max_tp = (($2 > max_tp) ? $2 : max_tp);
+ }
+
+ count = count + 1
+ }
+
+ print "Avg Latency (ms) : " total_latency/count
+ print "Max Latency (ms) : " max_latency
+ print "Min Latency (ms) : " min_latency
+
+ print ""
+ print "Avg Throughput (msg/sec) : " total_tp/count
+ print "Max Throughput (msg/sec) : " max_tp
+ print "Min Throughput (msg/sec) : " min_tp
+
+ print ""
+ print "Total Iteratons " count
+
+ }'
+}
+
+print_system_stats()
+{
+ cat $1 | awk '{
+ FS = ",";
+ count = 0;
+ total_memory = 0;
+ min_memory = 9223372036854775807;
+ max_memory = 0;
+
+ total_cp = 0;
+ min_cp = 50000;
+ max_cp = 0;
+
+ while ((getline) == 1)
+ {
+ total_memory = total_memory + $2
+ total_cp = total_cp + $3
+
+ if ($2 > 0)
+ {
+ min_memory = (($2 < min_memory) ? $2 : min_memory);
+ max_memory = (($2 > max_memory) ? $2 : max_memory);
+ }
+ if ($3 > 0)
+ {
+ min_cp = (($3 < min_cp) ? $3 : min_cp);
+ max_cp = (($3 > max_cp) ? $3 : max_cp);
+ }
+
+ count = count + 1
+ }
+
+ print "Avg Memory (MB) : " total_memory/(count*1024)
+ print "Max Memory (MB) : " max_memory/1024
+ print "Min Memory (MB) : " min_memory/1024
+
+ print ""
+ print "Avg CPU : " total_cp/count
+ print "Max CPU : " max_cp
+ print "Min CPU : " min_cp
+
+ print ""
+ print "Total Iteratons " count
+
+ }'
+}
+
+
+cleanup()
+{
+ kill -9 `ps aux | grep java | grep soak | awk '{ print $2 }'`
+}
+
+print_results()
+{
+ printf "\n======================================================= \n"
+ print_rates MultiThreadedConsumer_1.log
+ printf "\nConsumer process stats "
+ printf "\n----------------------- \n"
+ print_system_stats MultiThreadedConsumer_process_1.log
+ printf "\nProducer process stats "
+ printf "\n----------------------- \n"
+ print_system_stats MultiThreadedProducer_process_1.log
+ printf "\n------------------------------------------------------- \n"
+}
+
+trap cleanup EXIT
+
+# runs a single instance of the MultiThreadedConsumer and MultiThreadedProducer
+sh $QPID_TEST_HOME/bin/run_soak_client.sh 1 $log_freq $log_iter org.apache.qpid.testkit.soak.MultiThreadedConsumer $JVM_ARGS
+sh $QPID_TEST_HOME/bin/run_soak_client.sh 1 $log_freq $log_iter org.apache.qpid.testkit.soak.MultiThreadedProducer $JVM_ARGS
+
+sleep_time=$((log_freq * log_iter))
+echo "sleep time : " $sleep_time
+sleep $((log_freq * log_iter))
+
+print_results