diff --git a/src/ca/acctst.c b/src/ca/acctst.c index db9dd5172..b18857d2d 100644 --- a/src/ca/acctst.c +++ b/src/ca/acctst.c @@ -75,12 +75,13 @@ void nUpdatesTester ( struct event_handler_args args ) } } -void monitorSubscriptionFirstUpdateTest ( chid chan ) +void monitorSubscriptionFirstUpdateTest ( const char *pName, chid chan ) { int status; unsigned eventCount = 0u; unsigned waitCount = 0u; evid id; + chid chan2; showProgressBegin (); @@ -100,6 +101,25 @@ void monitorSubscriptionFirstUpdateTest ( chid chan ) status = ca_clear_event ( id ); SEVCHK (status, 0); + eventCount = 0u; + waitCount = 0u; + status = ca_search ( pName, &chan2 ); + SEVCHK ( status, 0 ); + status = ca_add_event ( DBR_FLOAT, chan2, + nUpdatesTester, &eventCount, &id ); + SEVCHK ( status, 0 ); + status = ca_pend_io ( 20.0 ); + SEVCHK (status, 0); + ca_pend_event ( 0.1 ); + while ( eventCount < 1 && waitCount++ < 100 ) { + printf ( "-" ); + fflush ( stdout ); + ca_pend_event ( 0.1 ); + } + assert ( eventCount > 0 ); + status = ca_clear_channel ( chan2 ); + SEVCHK ( status, 0 ); + showProgressEnd (); } @@ -1902,7 +1922,7 @@ int acctst ( char *pName, unsigned channelCount, unsigned repetitionCount ) exceptionTest ( chan ); arrayTest ( chan ); verifyMonitorSubscriptionFlushIO ( chan ); - monitorSubscriptionFirstUpdateTest ( chan ); + monitorSubscriptionFirstUpdateTest ( pName, chan ); performGrEnumTest ( chan ); performCtrlDoubleTest ( chan ); verifyBlockInPendIO ( chan );