blob: 57abe874ff272c2756f6c63d93b30a7b7f60b0ff [file] [log] [blame]
#!/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.
#
# This starts the controller for coordinating perf tests/
. check-qpid-java-env
PROGRAM_NAME="qpid-jms-receive"
URL="amqp://guest:guest@clientid/testpath?brokerlist='tcp://localhost:5672'"
ADDRESS="queue;{create:always}"
TIMEOUT="0"
FOREVER="false"
MESSAGES="1"
IGNORE_DUPLICATES="false"
CHECK_REDELIVERED="false"
CAPACITY="1000"
ACK_FREQUENCY="100"
TX="0"
ROLLBACL_FREQUENCY="0"
PRINT_CONTENT="false"
PRINT_HEADERS="false"
REPORT_TOTAL="false"
REPORT_EVERY="0"
REPORT_HEADER="true"
READY_ADDRES="''"
EXTRA_JVM_ARGS=""
VERBOSE="0"
TEST_ID=`echo ${HOSTNAME} | awk -F . '{print $1}'`
TEMP=$(getopt -n $PROGRAM_NAME -o b:a:f:m:vh\
--long broker:,address:,timeout:,forever\
,messages:,ignore-duplicates,check-redelivered\
,capacity:,ack-frequency:,tx:,rollback-frequency:\
,print-content:,print-headers:,report-total\
,report-every:,report-header:,ready-address:\
,jvm-args:,verbose,help -- "$@")
# padding the option string with 4 spaces
# padding the desc string with 30 spaces
usage()
{
printf "\n%s\n" "Usage: $PROGRAM_NAME [option].."
printf "\n%20s\n%57s\n" "-b, --broker URL" "url of broker to connect to"
printf "\n%24s\n%53s\n" "-a,--address ADDRESS" "address to receive from"
printf "\n%25s\n%71s\n" "--timeout TIMEOUT (0)" "timeout in seconds to wait before exiting"
printf "\n%17s\n%61s\n" "-f, --forever" "ignore timeout and wait forever"
printf "\n%24s\n%89s\n" "-m, --messages N (0)" "Number of messages to receive; 0 means receive indefinitely"
printf "\n%23s\n%84s\n" "--ignore-duplicates" "Detect and ignore duplicates (by checking 'sn' header)"
printf "\n%23s\n%82s\n%92s\n" "--check-redelivered" "Fails with exception if a duplicate is not marked as" " redelivered (only relevant when ignore-duplicates is selected)"
printf "\n%23s\n%71s\n" "--capacity N (1000)" "Pre-fetch window (0 implies no pre-fetch)"
printf "\n%27s\n%94s\n" "--ack-frequency N (100)" "Ack frequency (0 implies none of the messages will get accepted)"
printf "\n%14s\n%94s\n" "--tx N (0)" "batch size for transactions (0 implies transaction are not used)"
printf "\n%30s\n%94s\n" "--rollback-frequency N (0)" "rollback frequency (0 implies no transaction will be rolledback)"
printf "\n%30s\n%55s\n" "--print-content yes|no (0)" "print out message content"
printf "\n%30s\n%55s\n" "--print-headers yes|no (0)" "print out message headers"
printf "\n%18s\n%76s\n" "--report-total" "Report total throughput and latency statistics"
printf "\n%24s\n%87s\n" "--report-every N (0)" "Report throughput and latency statistics every N messages"
printf "\n%30s\n%47s\n" "--report-header yes|no (1)" "Headers on report"
printf "\n%27s\n%82s\n" "--ready-address ADDRESS" "send a message to this address when ready to receive"
printf "\n%14s\n%69s\n" "--jvm-args" "Extra jvm arguments you want to specify"
printf "\n%17s\n%69s\n\n" "-v, --verbose" "Print debug information for this script"
}
eval set -- "$TEMP"
while true; do
case $1 in
-b|--broker)
URL="$2"; shift; shift; continue
;;
-a|--address)
ADDRESS="$2"; shift; shift; continue
;;
--timeout)
TIMEOUT="$2"; shift; shift; continue
;;
-f|--forever)
FOREVER="$2"; shift; shift; continue
;;
-m|--messages)
MESSAGES="$2"; shift; shift; continue
;;
--ignore-duplicates)
IGNORE_DUPLICATES="true"; shift; continue
;;
--check-redelivered)
CHECK_REDELIVERED="true"; shift; continue
;;
--capacity)
CAPACITY="$2"; shift; shift; continue
;;
--ack-frequency)
ACK_FREQUENCY="$2"; shift; shift; continue
;;
--tx)
TX="$2"; shift; shift; continue
;;
--rollback-frequency)
ROLLBACK_FREQUENCY="$2"; shift; shift; continue
;;
--print-content)
if [ "$2" == "yes" ]; then PRINT_CONTENT="true"; else PRINT_CONTENT="false"; fi; shift; shift; continue
;;
--print-headers)
if [ "$2" == "yes" ]; then PRINT_HEADERS="true"; else PRINT_HEADERS="false"; fi; shift; shift; continue
;;
--report-total)
REPORT_TOTAL="true"; shift; continue
;;
--report-every)
REPORT_EVERY="$2"; shift; shift; continue
;;
--report-header)
if [ "$2" == "yes" ]; then REPORT_HEADER="true"; else REPORT_HEADER="false"; fi; shift; shift; continue
;;
--ready-address)
READY_ADDRESS="$2"; shift; shift; continue
;;
-a|--jvm-args)
EXTRA_JVM_ARGS="$2"; shift; shift; continue
;;
-h|--help)
usage
exit 0
;;
-v|--verbose)
VERBOSE="1"; shift; continue
;;
--)
# no more arguments to parse
break
;;
*)
# no more arguments to parse
break
;;
esac
done
RECEIVER_ARGS="-server -Durl=$URL \
-Daddress=$ADDRESS \
-Dtimeout=$TIMEOUT \
-Dmsg-count=$MESSAGES \
-Dack-frequency=$ACK_FREQUENCY \
-Dtx=$TX \
-Drollback-frequnecy=$ROLLBACL_FREQUENCY \
-Dprint-content=$PRINT_CONTENT \
-Dprint-headers=$PRINT_HEADERS \
-Dreport-total=$REPORT_TOTAL \
-Dreport-every=$REPORT_EVERY \
-Dreport-header=$REPORT_HEADER \
-Dmax_prefetch=$CAPACITY "
if [ "x$READY_ADDRESS" != "x" ]; then RECEIVER_ARGS="$RECEIVER_ARGS -Dready-address=$READY_ADDRESS"; fi
if [ "$VERBOSE" == "1" ]; then echo $RECEIVER_ARGS; fi
echo $RECEIVER_ARGS
$JAVA -cp $CLASSPATH $LOG_CONFIG $JAVA_MEM $RECEIVER_ARGS org.apache.qpid.tools.QpidReceive