# 6 Single receiver single sender 'Sleepy timeout' tests,
# these should take about 5.00 seconds each:
# sleepySender: sending every 0.009 seconds
ok 57 - Sent 500 (should be 500)
ok 58 - Received 500 (should be 500)
# sleepySender: sending every 0.010 seconds
ok 59 - Sent 500 (should be 500)
ok 60 - Received 500 (should be 500)
# sleepySender: sending every 0.011 seconds
ok 61 - Sent 500 (should be 500)
ok 62 - Received 500 (should be 500)
# sleepyReceiver: acquiring every 0.009 seconds
not ok 63 - Sent 420 (should be 500)
ok 64 - Received 500 (should be 500)
# sleepyReceiver: acquiring every 0.010 seconds
not ok 65 - Sent 420 (should be 500)
ok 66 - Received 500 (should be 500)
# sleepyReceiver: acquiring every 0.011 seconds
not ok 67 - Sent 420 (should be 500)
ok 68 - Received 500 (should be 500)
The epicsMessageQueueSendWithTimeout() routine must sometimes be returning an error (non-zero value) even though it has successfully queued the message; I confirmed that by incrementing a local numFailed counter on the else branch, which always
counted to 580. This was the output from a normal run on linux, which is about what I would expect:
# sleepyReceiver: acquiring every 0.009 seconds
ok 63 - Sent 500 (should be 500)
ok 64 - Received 500 (should be 500)
# numFailed = 0
# sleepyReceiver: acquiring every 0.010 seconds
ok 65 - Sent 500 (should be 500)
ok 66 - Received 500 (should be 500)
# numFailed = 204
# sleepyReceiver: acquiring every 0.011 seconds
ok 67 - Sent 500 (should be 500)
ok 68 - Received 500 (should be 500)
# numFailed = 500
Instead of trying to fix the RTEMS code I propose that we delete the RTEMS implementation completely, causing RTEMS to use the default implementation which gives me these test results when run on qemu:
# 6 Single receiver single sender 'Sleepy timeout' tests,
# these should take about 5.00 seconds each:
# sleepySender: sending every 0.009 seconds
ok 57 - Sent 500 (should be 500)
ok 58 - Received 500 (should be 500)
# sleepySender: sending every 0.010 seconds
ok 59 - Sent 500 (should be 500)
ok 60 - Received 500 (should be 500)
# sleepySender: sending every 0.011 seconds
ok 61 - Sent 500 (should be 500)
ok 62 - Received 500 (should be 500)
# sleepyReceiver: acquiring every 0.009 seconds
ok 63 - Sent 500 (should be 500)
ok 64 - Received 500 (should be 500)
# numFailed = 80
# sleepyReceiver: acquiring every 0.010 seconds
ok 65 - Sent 500 (should be 500)
ok 66 - Received 500 (should be 500)
# numFailed = 80
# sleepyReceiver: acquiring every 0.011 seconds
ok 67 - Sent 500 (should be 500)
ok 68 - Received 500 (should be 500)
# numFailed = 80