summaryrefslogtreecommitdiff
path: root/qpid/java/tools/bin/start-consumers
blob: c71fc0c21fa8946753169ed06920174e4011216b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/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="start-consumers"
PROCESS_COUNT=1
CON_COUNT=1
MSG_COUNT=10000
ADDRESS="queue;{create:always}"
UNIQUE_DEST="false"

EXTRA_JVM_ARGS=" -Dmax_prefetch=500 "

TEST_ID=`echo ${HOSTNAME} |  awk -F . '{print $1}'`

TEMP=$(getopt -n $PROGRAM_NAME -o C:P:uc:p:a:s:t:w:h\
 --long connection-count:,process-count:,create-unique-queues-topics,\
jvm-args:,queue:,topic:,address:,\
msg-count:,help -- "$@")                                                            

usage()
{
  printf "\n%s\n" "Usage: start-producers [option].."

  printf "\n%32s\n%51s\n"  "-C, --connection-count=count" "No of consumers participating in the test"

  printf "\n%29s\n%51s\n"  "-P, --process-count=count" "No of producers participating in the test"

  printf "\n%37s\n%105s\n"  "-u, --create-unique-queues-topics" "This will create unique queue names and topics based on what you specify for --queue or --topic"

  printf "\n%11s\n%55s\n"  "--queue" "The Queue you want to publish to. Ex my-queue"

  printf "\n%11s\n%84s\n"  "--topic" "The Topic you want to publish to in amq.topic exchange. Ex amq.topic/topic"

  printf "\n%13s\n%44s\n"  "--address" "The address you want to publish to"

  printf "\n%25s\n%50s\n"  "-c, --msg-count=count" "message count per test (default 500,000)"

  printf "\n%18s\n%49s\n"  "-a, --jvm-args" "Extra jvm arguments you want to specify"
}

eval set -- "$TEMP"
while true; do     
        case $1 in 
                -C|--connection-count)
                        CON_COUNT="$2"; shift; shift; continue
                ;;                                    
                -P|--process-count)                            
                        PROCESS_COUNT="$2"; shift; shift; continue  
                ;;
		-u|--create-unique-queues-topics)                            
                        UNIQUE_DEST="true"; shift; continue  
                ;;                                     
                --queue)                            
                        ADDRESS="$2;{create: always}"; shift; shift; continue  
                ;;                                    
                --topic)                            
                        ADDRESS="amq.topic/$2"; shift; shift; continue  
                ;;                                    
                --address)                            
                        ADDRESS="$2"; shift; shift; continue  
                ;;                                 
                -h|--help)                            
                        usage                         
                        exit 0                        
                ;;                                    
                -a|--jvm-args)               
                        EXTRA_JVM_ARGS="$2"; shift; shift; continue 
                ;;   
                -c|--msg-count)               
                        MSG_COUNT="$2"; shift; shift; continue 
                ;;                                                                  
                --)                                                                 
                        # no more arguments to parse                                
                        break                                                       
                ;;                                                                  
                *)       
                        # no more arguments to parse                                                                                            
                        break                                                      
                ;;                                                                  
        esac                                                                        
done     

CONSUMER_ARGS="-server -Durl=amqp://guest:guest@clientid/testpath?brokerlist='tcp://localhost:5672' -Dprecision=mili -Dcon_count=$CON_COUNT -Dprint_std_dev=true"

start_consumers()
{
  for ((i=0; i<$PROCESS_COUNT; i++))
  do
     if [ "$UNIQUE_DEST" = "true" ]; then
     	sh run-sub "$CONSUMER_ARGS $@" "${TEST_ID}_$i" > ${TEST_ID}_$i.sub.out 2>&1  &    
     else
        sh run-sub "$CONSUMER_ARGS $@" > ${TEST_ID}_$i.sub.out 2>&1  &    
     fi 
  done
}

start_consumers "-Daddress=$ADDRESS -Duse_unique_dest=$UNIQUE_DEST -Dmsg_count=$MSG_COUNT -Dcon_count=$CON_COUNT $EXTRA_JVM_ARGS"