From c2a5eef5d46fd3a8154da38df0a13c85cf400d50 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Thu, 7 Jun 2001 17:24:28 +0000 Subject: [PATCH] added time stamp tests --- src/ca/acctst.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/ca/acctst.c b/src/ca/acctst.c index 610dcb600..db9dd5172 100644 --- a/src/ca/acctst.c +++ b/src/ca/acctst.c @@ -1834,6 +1834,40 @@ void verifyOldPend () assert ( status = ECA_TIMEOUT ); } +void verifyTimeStamps ( chid chan ) +{ + struct dbr_time_double first, last; + epicsTimeStamp localTime; + char buf[128]; + size_t length; + double diff; + int status; + + status = epicsTimeGetCurrent ( &localTime ); + assert ( status >= 0 ); + + status = ca_get ( DBR_TIME_DOUBLE, chan, &first ); + SEVCHK ( status, "fetch of dbr time double failed\n" ); + status = ca_pend_io ( 20.0 ); + assert ( status = ECA_NORMAL ); + + status = ca_get ( DBR_TIME_DOUBLE, chan, &last ); + SEVCHK ( status, "fetch of dbr time double failed\n" ); + status = ca_pend_io ( 20.0 ); + assert ( status = ECA_NORMAL ); + + length = epicsTimeToStrftime ( buf, sizeof ( buf ), + "%a %b %d %H:%M:%S %Y", &first.stamp ); + assert ( length ); + printf ("Processing time of channel \"%s\" was \"%s\"\n", ca_name ( chan ), buf ); + + diff = epicsTimeDiffInSeconds ( &last.stamp, &first.stamp ); + printf ("Time difference between two successive reads was %g sec\n", diff ); + + diff = epicsTimeDiffInSeconds ( &first.stamp, &localTime ); + printf ("Time difference between client and server %g sec\n", diff ); +} + int acctst ( char *pName, unsigned channelCount, unsigned repetitionCount ) { chid chan; @@ -1863,6 +1897,7 @@ int acctst ( char *pName, unsigned channelCount, unsigned repetitionCount ) printf ( "testing with a local channel\n" ); } + verifyTimeStamps ( chan ); verifyOldPend (); exceptionTest ( chan ); arrayTest ( chan );