On 02/05/2014 07:32 AM, Michal Privoznik wrote: > When trying to introduce a test for previous patch, I've > noticed that the command line is constructed using current > time. This won't work in our test suite (unless you guys > wants to set a specific time prior to each test run :) ). > Therefore we need to mock calls to time(2) to return the > same value every time it's called. Slick. But as we only support mocking calls on Linux, you have converted a test from generic platform to Linux-only. Then again, qemu tests only run where we support qemu, which is currently Linux only, so I'm not sure it will matter. I guess we'll find out if anyone complains that it broke 'make check' on their platform. The only other alternative I can think of is to use regex replacement - in several tests, we have means of munging actual output to recognize specific patterns and replacing them with fixed contents. A timestamp is an easy fixed pattern, and it might be more portable to avoid mocking time() and instead just munge all timestamps of actual output into the expected timestamp. But munging is not quite as precise as your approach of a known fixed point in time - especially if we end up testing multiple expected outputs that have different resulting offsets in relation to the same starting fixed point in time. So I can live with your patch, rather than trying to do regex replacement. > --- /dev/null > +++ b/tests/qemuxml2argvdata/qemuxml2argv-clock-localtime-basis-localtime.args > @@ -0,0 +1,5 @@ > +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ > +/usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic \ > +-monitor unix:/tmp/test-monitor,server,nowait -rtc base=2009-02-14T01:31:30 \ A quick grep finds: tests/qemuxml2argvdata/qemuxml2argv-clock-variable.args:base=2010-2-2T18:22:10 -no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 -net none \ so how was that test working, and why is it unchanged by your mock setting the time to 2009? > +++ b/tests/qemuxml2argvtest.c > @@ -618,6 +618,7 @@ mymain(void) > DO_TEST("bios", QEMU_CAPS_DEVICE, QEMU_CAPS_SGA); > DO_TEST("clock-utc", NONE); > DO_TEST("clock-localtime", NONE); > + DO_TEST("clock-localtime-basis-localtime", QEMU_CAPS_RTC); > /* > * Can't be enabled since the absolute timestamp changes every time > DO_TEST("clock-variable", QEMU_CAPS_RTC); Oh, it _wasn't_ working, but now can be MADE to work. Please uncomment this test, and fix the fallout, at which point, you have: ACK. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list