| #!/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 |