1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
/*
* testServerContext.cpp
*/
#include <pv/serverContext.h>
#include <epicsExit.h>
#include <testMain.h>
#include <epicsUnitTest.h>
namespace {
using namespace epics::pvAccess;
using namespace epics::pvData;
using namespace std;
class TestChannelProvider : public ChannelProvider
{
public:
std::string getProviderName() {
return "local";
};
TestChannelProvider() {}
ChannelFind::shared_pointer channelFind(std::string const & /*channelName*/,
ChannelFindRequester::shared_pointer const & channelFindRequester)
{
ChannelFind::shared_pointer nullCF;
channelFindRequester->channelFindResult(Status::Ok, nullCF, false);
return nullCF;
}
ChannelFind::shared_pointer channelList(ChannelListRequester::shared_pointer const & channelListRequester)
{
ChannelFind::shared_pointer nullCF;
PVStringArray::const_svector none;
channelListRequester->channelListResult(Status::Ok, nullCF, none, false);
return nullCF;
}
Channel::shared_pointer createChannel(
std::string const & channelName,
ChannelRequester::shared_pointer const & channelRequester,
short priority = PRIORITY_DEFAULT)
{
return createChannel(channelName, channelRequester, priority, "");
}
Channel::shared_pointer createChannel(
std::string const & /*channelName*/,
ChannelRequester::shared_pointer const & channelRequester,
short /*priority*/, std::string const & /*address*/)
{
Channel::shared_pointer nullC;
channelRequester->channelCreated(Status::Ok, nullC);
return nullC;
}
void destroy()
{
}
};
} // namespace
MAIN(testServerContext)
{
testPlan(2);
ChannelProvider::shared_pointer prov(new TestChannelProvider);
ServerContext::shared_pointer ctx(ServerContext::create(ServerContext::Config()
.provider(prov)));
ServerContext::weak_pointer wctx(ctx);
testOk(ctx.unique(), "# ServerContext::create() returned non-unique instance use_count=%u", (unsigned)ctx.use_count());
ctx->printInfo();
ctx->run(1);
ctx.reset();
testOk(!wctx.lock(), "# ServerContext cleanup leaves use_count=%u", (unsigned)wctx.use_count());
return testDone();
}
|