From 6d7a0327e03289978b4708a8b7e2b557b5352959 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Mon, 5 Jan 2015 16:26:47 -0500 Subject: [PATCH] dbScanTest: start with test of scanOnce3() --- src/ioc/db/test/Makefile | 6 +++ src/ioc/db/test/dbScanTest.c | 73 +++++++++++++++++++++++++++++++ src/ioc/db/test/epicsRunDbTests.c | 2 + 3 files changed, 81 insertions(+) create mode 100644 src/ioc/db/test/dbScanTest.c diff --git a/src/ioc/db/test/Makefile b/src/ioc/db/test/Makefile index ef0927c26..f1bdbf33e 100644 --- a/src/ioc/db/test/Makefile +++ b/src/ioc/db/test/Makefile @@ -28,6 +28,12 @@ testHarness_SRCS += dbTestIoc_registerRecordDeviceDriver.cpp PROD_LIBS = dbTestIoc dbCore ca Com +TESTPROD_HOST += dbScanTest +dbScanTest_SRCS += dbScanTest.c +dbScanTest_SRCS += dbTestIoc_registerRecordDeviceDriver.cpp +testHarness_SRCS += dbScanTest.c +TESTS += dbScanTest + TESTPROD_HOST += dbShutdownTest dbShutdownTest_SRCS += dbShutdownTest.c dbShutdownTest_SRCS += dbTestIoc_registerRecordDeviceDriver.cpp diff --git a/src/ioc/db/test/dbScanTest.c b/src/ioc/db/test/dbScanTest.c new file mode 100644 index 000000000..f9f1f8e44 --- /dev/null +++ b/src/ioc/db/test/dbScanTest.c @@ -0,0 +1,73 @@ +/*************************************************************************\ +* Copyright (c) 2015 Brookhaven Science Assoc. as operator of Brookhaven +* National Laboratory. +* EPICS BASE is distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. + \*************************************************************************/ + +/* + * Author: Michael Davidsaver + */ + +#include + +#include "dbScan.h" +#include "epicsEvent.h" + +#include "dbUnitTest.h" +#include "testMain.h" + +#include "dbAccess.h" +#include "errlog.h" + +void dbTestIoc_registerRecordDeviceDriver(struct dbBase *); + +static epicsEventId waiter; +static int called; +static dbCommon *prec; + +static void onceComp(void *junk, dbCommon *prec) +{ + testOk1(junk==(void*)&waiter); + testOk1(strcmp(prec->name, "reca")==0); + called = 1; + epicsEventMustTrigger(waiter); +} + +static void testOnce(void) +{ + testDiag("check scanOnce3() callback"); + waiter = epicsEventMustCreate(epicsEventError); + + testdbPrepare(); + + testdbReadDatabase("dbTestIoc.dbd", NULL, NULL); + dbTestIoc_registerRecordDeviceDriver(pdbbase); + testdbReadDatabase("dbLockTest.db", NULL, NULL); + + eltc(0); + testIocInitOk(); + eltc(1); + + prec = testdbRecordPtr("reca"); + + testDiag("scanOnce %s", prec->name); + scanOnce3(prec, onceComp, &waiter); + testDiag("Waiting"); + epicsEventMustWait(waiter); + testOk1(called==1); + if(!called) + testSkip(2, "callback failed to run"); + + testIocShutdownOk(); + + testdbCleanup(); + epicsEventDestroy(waiter); +} + +MAIN(dbScanTest) +{ + testPlan(3); + testOnce(); + return testDone(); +} diff --git a/src/ioc/db/test/epicsRunDbTests.c b/src/ioc/db/test/epicsRunDbTests.c index 05fedeb51..0ee631686 100644 --- a/src/ioc/db/test/epicsRunDbTests.c +++ b/src/ioc/db/test/epicsRunDbTests.c @@ -22,6 +22,7 @@ int callbackParallelTest(void); int dbStateTest(void); int dbCaStatsTest(void); int dbShutdownTest(void); +int dbScanTest(void); int scanIoTest(void); int dbLockTest(void); int dbPutLinkTest(void); @@ -40,6 +41,7 @@ void epicsRunDbTests(void) runTest(dbStateTest); runTest(dbCaStatsTest); runTest(dbShutdownTest); + runTest(dbScanTest); runTest(scanIoTest); runTest(dbLockTest); runTest(dbPutLinkTest);