On 26 September 2014 17:35, Stefan Hajnoczi <stefa...@redhat.com> wrote: > Some hosts are slow or overloaded so test execution takes a long time. > Test cases use timeouts to protect against an infinite loop stalling the > test forever (especially important in automated test setups). > > Commit 6cd14054b67774cc58a51fca6660cfa1d3c08059 ("libqos virtio: > Increase ISR timeout") increased the clock_step() value in an attempt to > lengthen the virtio interrupt wait timeout, but timeout failures are > still occuring on the Travis automated testing platform. > > This is because clock_step() only affects the guest's virtual time. > Virtio requests can be bottlenecked on host disk I/O latency - which > cannot be improved by stepping the clock, so the fix was ineffective. > > This patch changes the qvirtio_wait_queue_isr() and > qvirtio_wait_config_isr() timeout mechanism from loop iterations to > microseconds. This way the test case can specify an absolute 30 second > timeout. Number of loop iterations is not a reliable timeout mechanism > since the speed depends on many factors including host performance. > > Tests should no longer timeout on overloaded Travis instances. > > Note that I dropped an assertion that waits for the full timeout > duration to assert that no interrupt was raised. I think this is not a > huge loss because it makes the test case non-deterministic (it cannot > really prove the no interrupt will ever be raised).
As per IRC conversation, this patch causes 'make check' to fail on some (slower?) systems with: ERROR:/home/petmay01/linaro/qemu-for-merges/tests/virtio-blk-test.c:596:pci_idx: assertion failed (status == 0): (255 == 0) Stefan has diagnosed this as a failure to poll for the zero status code, and is working on a patch. -- PMM