Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-1161

Test kit for java

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • M3
    • M3
    • Java Tests
    • 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.

      Attachments

        1. testkit.patch
          67 kB
          Rajith Muditha Attapattu

        Activity

          People

            rajith Rajith Muditha Attapattu
            rajith Rajith Muditha Attapattu
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: