TEST_CASE pv_lock_test() { LockApp app; int i, num; if (getenv("REPEAT")) num = atoi(getenv("REPEAT")); else num = 1; for (i = 0; i<num; ++i) { stop_in_connect = ! (i & 1); app.start(); hack.wait(); app.stop(); } TEST_OK; }
// // verify reasonable timer interval accuracy // void testAccuracy () { static const unsigned nTimers = 25u; delayVerify *pTimers[nTimers]; unsigned i; unsigned timerCount = 0; testDiag ( "Testing timer accuracy" ); epicsTimerQueueActive &queue = epicsTimerQueueActive::allocate ( true, epicsThreadPriorityMax ); for ( i = 0u; i < nTimers; i++ ) { pTimers[i] = new delayVerify ( i * 0.1 + delayVerifyOffset, queue ); timerCount += pTimers[i] ? 1 : 0; } testOk1 ( timerCount == nTimers ); expireCount = nTimers; for ( i = 0u; i < nTimers; i++ ) { epicsTime cur = epicsTime::getCurrent (); pTimers[i]->setBegin ( cur ); pTimers[i]->start ( cur + pTimers[i]->delay () ); } while ( expireCount != 0u ) { expireEvent.wait (); } double averageMeasuredError = 0.0; for ( i = 0u; i < nTimers; i++ ) { averageMeasuredError += pTimers[i]->checkError (); } averageMeasuredError /= nTimers; testDiag ("average timer delay error %f ms", averageMeasuredError * 1000 ); queue.release (); }