In general, we want to run as many automated test tools on the Xmlrpc-c libraries as possible. Before releasing a new release, please run as many of these tests as possible. Included Test Suites -------------------- The 'test' program tests core functions. These are functions that don't involve HTTP communications. So obviously, it doesn't do any end-to-end client/server tests. The program is in src/test/test. You have to build that explicitly (with src/test/ as your current directory, do a 'make'); a top level 'make all' doesn't build it. (Reason: it's a tricky build, and we don't a user's build to fail just because of this program that a user doesn't need). src/cpp/cpptest is similar for the C++ libraries. Note: Before Release 1.03, 'test' was called 'rpctest' and both it and 'cpptest' were in the src/ directory and were built by 'make all'. Memory Leaks ------------ (Linux only?) Install Owen Taylor's 'memprof' utility. This program includes a malloc debugger and a conservative garbage collector. To run it, type: memprof test This should report any memory leaks which occur while the test suites are running. Electric Fence -------------- (Most Unix platforms.) Install Bruce Perens' Electric Fence library, and read the man pages carefully. Link 'test' against '-lefence', and run it with the following sets of environment variables: 1) (Default environment.) Test for heap block overruns. 2) EF_PROTECT_BELOW=1 Test for heap block underruns. 3) EF_PROTECT_FREE=1 Test for doubly-freed memory and illegal accesses to freed memory. 4) EF_ALIGNMENT=0 Test for very small block overruns. This is an important test, but it may not work on some platforms. Please see the efence manpage for more information. (After each run, unset the environment variables from the previous run.) Using a Bourne shell (such as bash) you can run all these tests as follows: test EF_PROTECT_BELOW=1 test EF_PROTECT_FREE=1 test EF_ALIGNMENT=0 test Alternatively, if you have a copy of Purify installed, please run that. End-to-End Tests ---------------- To test Abyss and the client XML transports, use the example programs examples/sample_add_server and examples/sample_add_client: $ export XMLRPC_TRACE_XML=1 $ examples/sample_add_server 8080& $ examples/sample_add_client Note that we use XMLRPC_TRACE_XML so we can see the XML flying by on both sides of the connection. Note that the Port 8080 is hardcoded in sample_add_client. Note that sample_add_client uses only the default XML transport. You can do more extensive client testing with the 'xmlrpc' program (tools/xmlrpc/xmlrpc). Tips ---- To debug Abyss without threads, don't pass -D_UNIX or -D_WIN32. The server will run in a single-threaded mode.