Poco test using clock_gettime() and gettimeofday()

David Stacey drstacey@tiscali.co.uk
Sat Nov 15 16:57:00 GMT 2014

I'm trying to get the (rather extensive) testsuite for poco-1.4.7 
passing - or at least satisfying myself that any failures are not due to 
a Cygwin problem. The last test I have to worry about is 'testDequeue' 
from the Foundation testsuite.

The Poco code uses two clock classes, one that uses clock_getttime() and 
the other uses gettimeofday(). The test creates two timestamps using the 
two clock classes, both 0.1 seconds in the future. clock_gettime() is 
polled repeatedly until the timestamp is reached. Then the other 
timestamp is checked (using gettimeofday()) to ensure that 0.1 seconds 
has elapsed on this clock also.

I've managed to condense this down into the sample programme attached. 
This always passes in Fedora 20, but passes or fails randomly in Cygwin.

I'm not convinced that the test is valid. Poco seems to be making 
assumptions about clock_gettime() and gettimeofday() that simply aren't 
guaranteed to hold - but obviously do in Fedora at least. For instance, 
the test must be assuming that either the accuracy of the two routines 
is identical, or be making assumptions about rounding in the less 
accurate routine.

I think it would be better to patch the test so that it uses 
clock_gettime() exclusively (and not gettimeofday() at all), and then 
this problem will disappear. But I thought I would submit it here to see 
what you thought before raising a ticket with the Poco developers.

What do you think?


-------------- next part --------------
A non-text attachment was scrubbed...
Name: timer_test.cpp
Type: text/x-c++src
Size: 2626 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20141115/26dc7f5a/attachment.bin>
-------------- next part --------------
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

More information about the Cygwin mailing list