-----------------------------------------------------------
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