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