
On Thu, May 22, 2008 at 06:28:25PM +0100, Daniel P. Berrange wrote:
This patch adds more helper functions to the tests/testutils.c file which make it trivial to verify OOM handling in our test suites.
It provides a virtTestMain() function which is the main driver. This is given the original argc, argv and a function callback representing the test suite to run. Next, instead of a test suite defining a 'main()' function itself, it calls it something else like 'mymain()', and then declared VIRT_TEST_MAIN(mymain). This will cause the test suite to be run via the generic helper.
In normal use the virtTestMain() function simply calls mymain() directly and everything runs as it does now.
If you set the VIR_TEST_OOM environment variable to a positive integer it'll perform OOM testing. The value of the variable is the number of consequtive allocations to fails. eg VIR_TEST_OOM=1 will only fail a single allocation each time, while VIR_TEST_OOM=5 will fail batches of 5 allocations.
As described in the previous patch, the way it works is
- Run mymain() and get a count of allocations
- Foreach n in count - Schedule the n'th alocation to fail - Run mymain() and validate that it returns EXIT_FAILURE
So, now you can do
VIR_TEST_OOM=1 make check
And it'll perform OOM checking on any test suite leveraging this testutils infrastructure. You can also do it directly on individual testsuites
VIR_TEST_OOM=1 ./qparamstest
okay, sounds cool. The problem is to make realistic testing while systematic one would explodes time-wise. I guess the 1 setting is probably sufficient Patch looks fine to me, +1 Daniel -- Red Hat Virtualization group http://redhat.com/virtualization/ Daniel Veillard | virtualization library http://libvirt.org/ veillard@redhat.com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/