Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
M3
-
None
Description
The attached Test kit for the java client consists of 2 components.
1) A Simple Perf Test that can be used to,
a) Run a predefined perf report consisting of 8 use cases (see below)
b) Run a producer and a consumer with a number of different options
2) Soak tests that can be run for longer durations (hours or days).
I am planning to add some stress tests to this module as well.
Please note this is not a replacement for the existing perf/systests etc.
But rather a small test kit thats focused on providing a packaged set of tests that can be quickly deployed on an environment to do quick smoke testing or easily setup a soak test.
1.0 Perf Kit
------------
1.1 The perf kit can be packaged as an RPM or a tar file and deploy on a target environment and run the perf report.
Or else a perf report can be automated to run every day or so an record numbers to catch perf regressions.
1.2 It calculates the following results in msg/sec.
System throuhgput : no_of_msgs / (time_last_msg_rcvd - time_first_msg_send)
Producer rate : no_of_msgs / (time_after_sending - time_before_sending)
Producer rate : no_of_msgs / (time_last_msg_rcvd - time_first_msg_rcvd)
Latency : time_msg_rcvd - time_msg_sent
The test will print min, max and avg latency.
1.3 The test assume that both producer and consumer are run on the same machine or different machines that are time synced.
1.4 You can also use run_sub.sh and run_pub.sh to run different use cases with several options.
Please look at TestParams.java for all the configurable options.
1.5 You can also use the test kit to benchmark against any vendor.
2.0 Soak tests
--------------
2.0 This includes a set of soak tests that can be run for a longer duration.
2.1 A typical test will send x-1 messages and the xth message will contain an "End" marker.
The producer will print the message_id and timestamp for the xth message.
The consumer will reply with an empty message to the replyTo destination given in the xth message.
The consumer also prints the message_id and timestamp for the xth message.
A typical value for x is 100k
2.2 The feedback loop prevents the producer from overrunning the consumer.
And the printout for every xth message will let you know how many iterations been completed at any given time.
2.2 The following results can be calculated for these tests.
Memory, CPU for each producer/consumer - scripts will be checked in
Using the message_id and timestamp you can get latency samples for the test run.
Using the timestamps you can calculate the system throughput rates.
2.2 If you use different machines for producer and consumer the machines have to be time synced if you want latency samples.
3.0 Perf Test report use cases
-------------------------------
3.1 Please check testkit/bin/perf_report.sh for more details
3.2 A typical test run will send 1000 msgs during warmup and 200k msgs for result calculation.
Test 1 Trans Queue
Test 2 Dura Queue
Test 3 Dura Queue Sync
Test 4 Topic
Test 5 Durable Topic
Test 6 Fanout
Test 7 Small TX (about 2 msgs per tx)
Test 8 Large TX (about 1000 msgs per tx)
4.0 Soak tests use cases
-------------------------
4.1 Following are the current tests available in the test kit.
4.2 Please refer to the source to see the javadoc and options
1. SimpleProducer/Consumer sends X messages at a time and will wait for confirmation from producer before proceeding with the next iteration. A no of options can be configured.
2. MultiThreadedProducer/Consumer does the same thing as above but runs each session in a separate thread.
It can also send messages transactionally. Again a no of options can be configured.
3. ResourceLeakTest will setup consumer/producers sends x messages and then teard down everything and continue again.