-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/9903/
-----------------------------------------------------------

(Updated March 18, 2013, 10:11 p.m.)


Review request for qpid, Rafael Schloming and Justin Ross.


Changes
-------

Simplified the approach a bit.  Rafi recommended parameterizing the tests, and 
moving them into the proton_tests directory.  I've modified the tests so they 
run very quickly by default - only transferring a small number of messages.  
Since they are now parameterized, we can manually run them will a much larger 
message count.  With this, they are always run as part of the unit tests 
(short), but can be optionally run standalone for much longer durations.

See the individual tests in "soak.py" for the parameters.  All take at least a  
'total_msgs' parameter, which controls the total number of messages the test 
will transfer.  To change a parameter, use the "-D" (define) option to the 
proton-test script. Example:

 ./tests/python/proton-test -Dtotal_msgs=10000 -Drecv_count=100 
proton_tests.soak.MessengerTests.test_echo_C

Eventually I'll add a simple shell script that will run long versions of the 
soak tests (with valgrind support for the C-based variants).

One Issue:

1) could not make these test run under the Jython environment.  In reality, I 
don't think running them under Jython buys us any coverage, since the python is 
simply used to manage the clients, not actually run any proton code.  Correct 
me if I'm wrong.  The problem seems to be a difference with the way Jython does 
I/O with a subprocess (popen) compared to native python.  The apps write to 
stdout, which the test code reads back.  In Jython, the I/O does not become 
available until the application exits.


Description
-------

This patch puts the infrastructure in place for system and soak tests as 
described in proton-223.

In summary:

o) it adds a set of simple messenger-based applications for sending a receiving 
messages; implementations done in python and C (for now).
o) creates a set of python test scripts for driving these tests

Right now I've got a small set of tests that generate traffic between the 
applications and verify that no messages are dropped.  These are run as part of 
"ctest", or can be run directly using the python test tool:

  ./test/python/proton-test -m system_tests


Todo:

1) I need a Java-based version of the Messenger apps.  Other languages are 
desired too, but we need Java for coverage of that implementation.
2) Enhance the receivers to explicitly accept messages based on window size.
3) More tests - connection scale, link scale, a test that covers proton-131, 
long running traffic tests, etc
4) Benchmark tests and related support for gathering throughput and latency.
5) Valgrind coverage exists for the C application, but fails for any cross 
language tests.  A small set of C-only tests would be useful for valgrind tests.
6) anything else???


This addresses bugs proton-131 and proton-223.
    https://issues.apache.org/jira/browse/proton-131
    https://issues.apache.org/jira/browse/proton-223


Diffs (updated)
-----

  /proton/trunk/CMakeLists.txt 1457783 
  /proton/trunk/config.sh 1457783 
  /proton/trunk/proton-c/CMakeLists.txt 1457783 
  /proton/trunk/tests/python/proton_tests/__init__.py 1457783 
  /proton/trunk/tests/python/proton_tests/apps/README.txt PRE-CREATION 
  /proton/trunk/tests/python/proton_tests/apps/c/CMakeLists.txt PRE-CREATION 
  /proton/trunk/tests/python/proton_tests/apps/c/msgr-common.h PRE-CREATION 
  /proton/trunk/tests/python/proton_tests/apps/c/msgr-common.c PRE-CREATION 
  /proton/trunk/tests/python/proton_tests/apps/c/msgr-recv.c PRE-CREATION 
  /proton/trunk/tests/python/proton_tests/apps/c/msgr-send.c PRE-CREATION 
  /proton/trunk/tests/python/proton_tests/apps/python/msgr-recv.py PRE-CREATION 
  /proton/trunk/tests/python/proton_tests/apps/python/msgr-send.py PRE-CREATION 
  /proton/trunk/tests/python/proton_tests/common.py 1457783 
  /proton/trunk/tests/python/proton_tests/soak.py PRE-CREATION 

Diff: https://reviews.apache.org/r/9903/diff/


Testing
-------

The short tests have been added to ctest, only tested on Linux (fedora 17) thus 
far.


Thanks,

Kenneth Giusti

Reply via email to