15
15
16
16
package com .rabbitmq .examples ;
17
17
18
+ import java .text .SimpleDateFormat ;
18
19
import java .util .Arrays ;
20
+ import java .util .Calendar ;
19
21
import java .util .List ;
20
22
21
23
import com .rabbitmq .examples .perf .MulticastParams ;
33
35
34
36
35
37
public class PerfTest {
38
+
36
39
public static void main (String [] args ) {
37
40
Options options = getOptions ();
38
41
CommandLineParser parser = new GnuParser ();
@@ -43,7 +46,9 @@ public static void main(String[] args) {
43
46
usage (options );
44
47
System .exit (0 );
45
48
}
46
-
49
+ String testID = new SimpleDateFormat ("HHmmss-SSS" ).format (Calendar .
50
+ getInstance ().getTime ());
51
+ testID = strArg (cmd , 'd' , "test-" +testID );
47
52
String exchangeType = strArg (cmd , 't' , "direct" );
48
53
String exchangeName = strArg (cmd , 'e' , exchangeType );
49
54
String queueName = strArg (cmd , 'u' , "" );
@@ -73,12 +78,13 @@ public static void main(String[] args) {
73
78
String uri = strArg (cmd , 'h' , "amqp://localhost" );
74
79
75
80
//setup
76
- PrintlnStats stats = new PrintlnStats (1000L * samplingInterval ,
77
- producerCount > 0 ,
78
- consumerCount > 0 ,
79
- (flags .contains ("mandatory" ) ||
80
- flags .contains ("immediate" )),
81
- confirm != -1 );
81
+ PrintlnStats stats = new PrintlnStats (testID ,
82
+ 1000L * samplingInterval ,
83
+ producerCount > 0 ,
84
+ consumerCount > 0 ,
85
+ (flags .contains ("mandatory" ) ||
86
+ flags .contains ("immediate" )),
87
+ confirm != -1 );
82
88
83
89
ConnectionFactory factory = new ConnectionFactory ();
84
90
factory .setShutdownTimeout (0 ); // So we still shut down even with slow consumers
@@ -135,6 +141,7 @@ private static void usage(Options options) {
135
141
private static Options getOptions () {
136
142
Options options = new Options ();
137
143
options .addOption (new Option ("?" , "help" , false ,"show usage" ));
144
+ options .addOption (new Option ("d" , "id" , true , "Test ID" ));
138
145
options .addOption (new Option ("h" , "uri" , true , "connection URI" ));
139
146
options .addOption (new Option ("t" , "type" , true , "exchange type" ));
140
147
options .addOption (new Option ("e" , "exchange" , true , "exchange name" ));
@@ -191,42 +198,48 @@ private static class PrintlnStats extends Stats {
191
198
private final boolean recvStatsEnabled ;
192
199
private final boolean returnStatsEnabled ;
193
200
private final boolean confirmStatsEnabled ;
201
+
202
+ private final String testID ;
194
203
195
- public PrintlnStats (long interval ,
204
+ public PrintlnStats (String testID , long interval ,
196
205
boolean sendStatsEnabled , boolean recvStatsEnabled ,
197
206
boolean returnStatsEnabled , boolean confirmStatsEnabled ) {
198
207
super (interval );
199
208
this .sendStatsEnabled = sendStatsEnabled ;
200
209
this .recvStatsEnabled = recvStatsEnabled ;
201
210
this .returnStatsEnabled = returnStatsEnabled ;
202
211
this .confirmStatsEnabled = confirmStatsEnabled ;
212
+ this .testID = testID ;
203
213
}
204
214
205
215
@ Override
206
216
protected void report (long now ) {
207
- System .out .print ("time: " + String .format ("%.3f" , (now - startTime )/1000.0 ) + "s" );
208
-
209
- showRate ("sent" , sendCountInterval , sendStatsEnabled , elapsedInterval );
210
- showRate ("returned" , returnCountInterval , sendStatsEnabled && returnStatsEnabled , elapsedInterval );
211
- showRate ("confirmed" , confirmCountInterval , sendStatsEnabled && confirmStatsEnabled , elapsedInterval );
212
- showRate ("nacked" , nackCountInterval , sendStatsEnabled && confirmStatsEnabled , elapsedInterval );
213
- showRate ("received" , recvCountInterval , recvStatsEnabled , elapsedInterval );
214
-
215
- System .out .print ((latencyCountInterval > 0 ?
217
+ String output = "id: " + testID + ", " ;
218
+
219
+ output += "time: " + String .format ("%.3f" , (now - startTime )/1000.0 ) + "s" ;
220
+ output +=
221
+ getRate ("sent" , sendCountInterval , sendStatsEnabled , elapsedInterval ) +
222
+ getRate ("returned" , returnCountInterval , sendStatsEnabled && returnStatsEnabled , elapsedInterval ) +
223
+ getRate ("confirmed" , confirmCountInterval , sendStatsEnabled && confirmStatsEnabled , elapsedInterval ) +
224
+ getRate ("nacked" , nackCountInterval , sendStatsEnabled && confirmStatsEnabled , elapsedInterval ) +
225
+ getRate ("received" , recvCountInterval , recvStatsEnabled , elapsedInterval );
226
+
227
+ output += (latencyCountInterval > 0 ?
216
228
", min/avg/max latency: " +
217
229
minLatency /1000L + "/" +
218
230
cumulativeLatencyInterval / (1000L * latencyCountInterval ) + "/" +
219
231
maxLatency /1000L + " microseconds" :
220
- "" )) ;
232
+ "" );
221
233
222
- System .out .println ();
234
+ System .out .println (output );
223
235
}
224
236
225
- private void showRate (String descr , long count , boolean display ,
237
+ private String getRate (String descr , long count , boolean display ,
226
238
long elapsed ) {
227
- if (display ) {
228
- System .out .print (", " + descr + ": " + formatRate (1000.0 * count / elapsed ) + " msg/s" );
229
- }
239
+ if (display )
240
+ return ", " + descr + ": " + formatRate (1000.0 * count / elapsed ) + " msg/s" ;
241
+ else
242
+ return "" ;
230
243
}
231
244
232
245
public void printFinal () {
0 commit comments