Example #1
0
MojErr MojDbWatchTest::run()
{
    MojDb db;
    MojErr err = db.open(MojDbTestDir);
    MojTestErrCheck(err);
    MojObject type;
    err = type.fromJson(MojKindStr);
    MojTestErrCheck(err);
    err = db.putKind(type);
    MojTestErrCheck(err);

    // eq
    err = eqTest(db);
    MojTestErrCheck(err);
    // gt
    err = gtTest(db);
    MojTestErrCheck(err);
    // lt
    err = ltTest(db);
    MojTestErrCheck(err);
    // cancel
    err = cancelTest(db);
    MojTestErrCheck(err);
    // range
    err = rangeTest(db);
    MojTestErrCheck(err);
    // pages
    err = pageTest(db);
    MojTestErrCheck(err);

    // make sure we're not hanging onto watcher references
    MojTestAssert(TestWatcher::s_instanceCount == 0);

    err = db.close();
    MojTestErrCheck(err);

    return MojErrNone;
}
Example #2
0
static void workThread(threadInfo *pthreadInfo)
{
    cmdInfo    *pcmdInfo;
    asynUser   *pasynUser;

    while(1) {
        epicsEventMustWait(pthreadInfo->work);
        pcmdInfo = pthreadInfo->pcmdInfo;
        pasynUser = pcmdInfo->pasynUser;
        if(pcmdInfo->test==quit) break;
        switch(pcmdInfo->test) {
        case connect:            connectTest(pasynUser);break;
        case testBlock:           blockTest(pasynUser);   break;
        case testCancelRequest:  cancelTest(pasynUser); break;
        default:
            fprintf(pcmdInfo->file,"%s workThread illegal test %d\n",
                pthreadInfo->threadName,pcmdInfo->test);
        }
        fprintf(pcmdInfo->file,"%s %s all done\n",
            pthreadInfo->threadName,pcmdInfo->message);
        epicsEventSignal(pthreadInfo->done);
    }
    epicsEventSignal(pthreadInfo->done);
}