[ 
https://issues.apache.org/jira/browse/QPID-1161?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aidan Skinner resolved QPID-1161.
---------------------------------

    Resolution: Fixed

> Test kit for java
> -----------------
>
>                 Key: QPID-1161
>                 URL: https://issues.apache.org/jira/browse/QPID-1161
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Tests
>    Affects Versions: M3
>            Reporter: Rajith Attapattu
>            Assignee: Rajith Attapattu
>             Fix For: M3
>
>         Attachments: testkit.patch
>
>
> 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. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to