| #!/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-send" |
| URL="amqp://guest:guest@clientid/testpath?brokerlist='tcp://localhost:5672'" |
| ADDRESS="queue;{create:always}" |
| MESSAGES="1" |
| ID="" |
| REPLY_TO="" |
| SEND_EOS="1" |
| DURABLE="false" |
| TTL="0" |
| PRIORITY="0" |
| PROPERTY="" |
| CORRELATION_ID="" |
| USER_ID="" |
| CONTENT_STRING="" |
| CONTENT_SIZE="1024" |
| CONTENT_MAP="" |
| CAPACITY="1000" |
| ACK_FREQUENCY="100" |
| TX="0" |
| ROLLBACL_FREQUENCY="0" |
| PRINT_CONTENT="true" |
| PRINT_HEADERS="false" |
| REPORT_TOTAL="false" |
| REPORT_EVERY="0" |
| REPORT_HEADER="true" |
| SEND_RATE="-1" |
| SEQUNCE="1" |
| DISABLE_TIMESTAMP="false" |
| EXTRA_JVM_ARGS="" |
| VERBOSE="0" |
| |
| TEST_ID=`echo ${HOSTNAME} | awk -F . '{print $1}'` |
| |
| TEMP=$(getopt -n $PROGRAM_NAME -o b:a:m:i:P:M:vh\ |
| --long broker:,address:,messages:,id:,reply-to:\ |
| ,send-eos:,durable:,ttl:,property:,correlational-id:\ |
| ,user-id:,content-string:,content-size:,content-map:\ |
| ,capacity:,ack-frequency:,tx:,rollback-frequency:\ |
| ,print-content:,print-headers:,report-total\ |
| ,report-every:,report-header:,send-rate:,sequence:,timestamp:\ |
| ,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%24s\n%89s\n" "-m, --messages N (0)" "Number of messages to receive; 0 means receive indefinitely" |
| |
| printf "\n%15s\n%75s\n" "-i, --id ID" "use the supplied id instead of generating one" |
| |
| printf "\n%23s\n%54s\n" "--reply-to REPLY-TO" "specify reply-to address" |
| |
| printf "\n%20s\n%70s\n" "--send-eos N (0)" "send N EOS messages to mark end of input" |
| |
| printf "\n%24s\n%54s\n" "--durable yes|no (0)" "mark messages as durable" |
| |
| printf "\n%19s\n%72s\n" "--ttl msecs (0)" "time-to-live for messages, in milliseconds" |
| |
| printf "\n%27s\n%72s\n" "--priority PRIORITY (0)" "time-to-live for messages, in milliseconds" |
| |
| printf "\n%29s\n%54s\n" "-P, --property NAME=VALUE" "specify message property" |
| |
| printf "\n%23s\n%57s\n" "--correlation-id ID" "correlation-id for message" |
| |
| printf "\n%20s\n%48s\n" "--user-id USERID" "userid for message" |
| |
| printf "\n%28s\n%60s\n" "--content-string CONTENT" "use CONTENT as message content" |
| |
| printf "\n%24s\n%62s\n" "--content-size N (0)" "create an N-byte message content" |
| |
| printf "\n%32s\n%59s\n" "-M, --content-map NAME=VALUE" "specify entry for map content" |
| |
| 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 (1)" "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%21s\n%64s\n%62s\n" "--send-rate N (0)" "Send at rate of N messages/second." "0 means send as fast as possible" |
| |
| printf "\n%25s\n%69s\n%77s\n" "--sequence yes|no (1)" "Add a sequence number messages property" "(required for duplicate/lost message detection)" |
| |
| printf "\n%26s\n%64s\n%77s\n" "--timestamp yes|no (1)" "Add a time stamp messages property" "(required for duplicate/lost message detection)" |
| |
| 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 |
| ;; |
| -m|--messages) |
| MESSAGES="$2"; shift; shift; continue |
| ;; |
| -i|--id) |
| ID="$2"; shift; shift; continue |
| ;; |
| --reply-to) |
| REPLY_TO="$2"; shift; shift; continue |
| ;; |
| --send-eos) |
| SEND_EOS="$2"; shift; shift; continue |
| ;; |
| --durable) |
| if [ "$2" == "1" ]; then DURABLE="true"; else DURABLE="false"; fi; shift; shift; continue |
| ;; |
| --ttl) |
| TTL="$2"; shift; shift; continue |
| ;; |
| --priority) |
| PRIORITY="$2"; shift; shift; continue |
| ;; |
| -P|--property) |
| PROPERTY="$2,$PROPERTY"; shift; shift; continue |
| ;; |
| --correlation-id) |
| CORRELATION_ID="$2"; shift; shift; continue |
| ;; |
| --user-id) |
| USER_ID="$2"; shift; shift; continue |
| ;; |
| --content-string) |
| CONTENT_STRING="$2"; shift; shift; continue |
| ;; |
| --content-size) |
| CONTENT_SIZE="$2"; shift; shift; continue |
| ;; |
| -M|--content-map) |
| CONTENT_MAP="$2,$CONTENT_MAP"; shift; 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 |
| ;; |
| --send-rate) |
| SEND_RATE="$2"; shift; shift; continue |
| ;; |
| --sequence) |
| if [ "$2" == "yes" ]; then SEQUENCE="true"; else SEQUENCE="false"; fi; shift; shift; continue |
| ;; |
| --timestamp) |
| if [ "$2" == "yes" ]; then DISABLE_TIMESTAMP="false"; else DISABLE_TIMESTAMP="true"; fi; 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 |
| |
| SENDER_ARGS="-server -Durl=$URL \ |
| -Daddress=$ADDRESS \ |
| -Dmsg-count=$MESSAGES \ |
| -Dsend-eos=$SEND_EOS \ |
| -Ddurable=$DURABLE \ |
| -Dmsg_size=$CONTENT_SIZE \ |
| -Dsend-rate=$SEND_RATE \ |
| -Ddisable-timestamp=$DISABLE_TIMESTAMP \ |
| -Dttl=$TTL \ |
| -Dpriority=$PRIORITY \ |
| -Dtx=$TX \ |
| -Drollback-frequnecy=$ROLLBACK_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$ID" != "x" ]; then SENDER_ARGS="$SENDER_ARGS -Did=$ID"; fi |
| if [ "x$USER_ID" != "x" ]; then SENDER_ARGS="$SENDER_ARGS -Duser_id=$USER_ID"; fi |
| if [ "x$CORRELATION_ID" != "x" ]; then SENDER_ARGS="$SENDER_ARGS -Dcorrelation_id=$CORRELATION_ID"; fi |
| |
| if [ "$VERBOSE" == "1" ]; then echo $SENDER_ARGS; fi |
| $JAVA -cp $CLASSPATH $LOG_CONFIG $JAVA_MEM $SENDER_ARGS org.apache.qpid.tools.QpidSend |