test PDB get w/ filter
This commit is contained in:
@ -292,6 +292,45 @@ void testGroupMonitorTriggers(pvac::ClientProvider& client)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void testFilters(pvac::ClientProvider& client)
|
||||||
|
{
|
||||||
|
testDiag("test w/ server side filters");
|
||||||
|
|
||||||
|
pvd::shared_vector<const pvd::int16> expected;
|
||||||
|
{
|
||||||
|
pvd::shared_vector<pvd::int16> scratch(9);
|
||||||
|
scratch[0] = 9;
|
||||||
|
scratch[1] = 8;
|
||||||
|
scratch[2] = 7;
|
||||||
|
scratch[3] = 6;
|
||||||
|
scratch[4] = 5;
|
||||||
|
scratch[5] = 4;
|
||||||
|
scratch[6] = 3;
|
||||||
|
scratch[7] = 2;
|
||||||
|
scratch[8] = 1;
|
||||||
|
expected = pvd::freeze(scratch);
|
||||||
|
}
|
||||||
|
|
||||||
|
client.connect("TEST").put().set("value", expected).exec();
|
||||||
|
|
||||||
|
pvd::PVStructure::const_shared_pointer root(client.connect("TEST").get());
|
||||||
|
|
||||||
|
testFieldEqual<pvd::PVShortArray>(root, "value", expected);
|
||||||
|
|
||||||
|
root = client.connect("TEST.{\"arr\":{\"i\":2}}").get();
|
||||||
|
{
|
||||||
|
pvd::shared_vector<pvd::int16> scratch(5);
|
||||||
|
scratch[0] = 9;
|
||||||
|
scratch[1] = 7;
|
||||||
|
scratch[2] = 5;
|
||||||
|
scratch[3] = 3;
|
||||||
|
scratch[4] = 1;
|
||||||
|
expected = pvd::freeze(scratch);
|
||||||
|
}
|
||||||
|
|
||||||
|
testFieldEqual<pvd::PVShortArray>(root, "value", expected);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
@ -299,7 +338,7 @@ void p2pTestIoc_registerRecordDeviceDriver(struct dbBase *);
|
|||||||
|
|
||||||
MAIN(testpdb)
|
MAIN(testpdb)
|
||||||
{
|
{
|
||||||
testPlan(93);
|
testPlan(95);
|
||||||
try{
|
try{
|
||||||
QSRVRegistrar_counters();
|
QSRVRegistrar_counters();
|
||||||
epics::RefSnapshot ref_before;
|
epics::RefSnapshot ref_before;
|
||||||
@ -318,6 +357,7 @@ MAIN(testpdb)
|
|||||||
#ifdef USE_MULTILOCK
|
#ifdef USE_MULTILOCK
|
||||||
testdbReadDatabase("testpdb-groups.db", NULL, NULL);
|
testdbReadDatabase("testpdb-groups.db", NULL, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
testdbReadDatabase("testfilters.db", NULL, NULL);
|
||||||
|
|
||||||
IOC.init();
|
IOC.init();
|
||||||
|
|
||||||
@ -333,6 +373,7 @@ MAIN(testpdb)
|
|||||||
testSingleMonitor(client);
|
testSingleMonitor(client);
|
||||||
testGroupMonitor(client);
|
testGroupMonitor(client);
|
||||||
testGroupMonitorTriggers(client);
|
testGroupMonitorTriggers(client);
|
||||||
|
testFilters(client);
|
||||||
|
|
||||||
testEqual(epics::atomic::get(PDBProvider::num_instances), 1u);
|
testEqual(epics::atomic::get(PDBProvider::num_instances), 1u);
|
||||||
}
|
}
|
||||||
|
@ -562,15 +562,15 @@ void testFilters()
|
|||||||
|
|
||||||
IOC.init();
|
IOC.init();
|
||||||
|
|
||||||
static epicsInt32 arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
|
static const epicsInt32 arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
|
||||||
testdbPutArrFieldOk("TEST", DBF_LONG, 9, arr);
|
testdbPutArrFieldOk("TEST", DBF_LONG, 9, arr);
|
||||||
|
|
||||||
#if EPICS_VERSION_INT > VERSION_INT(7, 0, 5, 0)
|
#if EPICS_VERSION_INT > VERSION_INT(7, 0, 5, 0)
|
||||||
testdbGetArrFieldEqual("TEST", DBF_LONG, 10, 9, arr);
|
testdbGetArrFieldEqual("TEST", DBF_LONG, 10, 9, arr);
|
||||||
testdbGetArrFieldEqual("TEST.{arr:{s:5}}", DBF_LONG, 10, 4, arr+5);
|
testdbGetArrFieldEqual("TEST.{\"arr\":{\"s\":5}}", DBF_LONG, 10, 4, arr+5);
|
||||||
|
|
||||||
static epicsInt32 arr2[] = {9, 7, 5, 3, 1};
|
static const epicsInt32 arr2[] = {9, 7, 5, 3, 1};
|
||||||
testdbGetArrFieldEqual("TEST.{arr:{i:2}}", DBF_LONG, 10, 5, arr2);
|
testdbGetArrFieldEqual("TEST.{\"arr\":{\"i\":2}}", DBF_LONG, 10, 5, arr2);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
testSkip(3, "dbUnitTest doesn't use dbChannel");
|
testSkip(3, "dbUnitTest doesn't use dbChannel");
|
||||||
@ -579,7 +579,7 @@ void testFilters()
|
|||||||
pvd::PVStructurePtr root;
|
pvd::PVStructurePtr root;
|
||||||
p2p::auto_ptr<PVIF> pvif;
|
p2p::auto_ptr<PVIF> pvif;
|
||||||
|
|
||||||
DBCH chan("TEST.{arr:{i:2}}");
|
DBCH chan("TEST.{\"arr\":{\"i\":2}}");
|
||||||
ScalarBuilder builder(chan);
|
ScalarBuilder builder(chan);
|
||||||
|
|
||||||
root = pvd::FieldBuilder::begin()
|
root = pvd::FieldBuilder::begin()
|
||||||
|
Reference in New Issue
Block a user