TEST(Test, TestApplicationDestruction) { qi::ServiceDirectory sd; qi::Session server, client; qi::DynamicObjectBuilder ob1; qi::AnyObject oclient1; { qi::Application app(_argc, _argv); sd.listen("tcp://127.0.0.1:0"); server.connect(sd.endpoints()[0].str()); server.listen("tcp://0.0.0.0:0"); client.connect(sd.endpoints()[0].str()); qi::AnyObject oserver1(ob1.object()); server.registerService("coin1", oserver1).wait(); oclient1 = client.service("coin1"); // will fall with the others client.close(); server.close(); sd.close(); } }
TEST(Test, Recurse) { payload = qi::Promise<bool>(); TestSessionPair p1; TestSessionPair p2(p1); qi::DynamicObjectBuilder ob1, ob2; ob1.advertiseMethod("onFire1", &onFire1); ob2.advertiseMethod("onFire2", &onFire2); qi::AnyObject oserver1(ob1.object()), oserver2(ob2.object()); unsigned int nbServices = TestMode::getTestMode() == TestMode::Mode_Nightmare ? 2 : 1; // Two objects with a fire event and a onFire method. ASSERT_NO_THROW(p1.server()->registerService("coin1", oserver1).hasValue(2000)); ASSERT_NO_THROW(p2.server()->registerService("coin2", oserver2).hasValue(2000)); EXPECT_EQ(nbServices, p1.server()->services(qi::Session::ServiceLocality_Local).value().size()); EXPECT_EQ(nbServices, p2.server()->services(qi::Session::ServiceLocality_Local).value().size()); oclient1 = p2.client()->service("coin1"); oclient2 = p1.client()->service("coin2"); #ifdef WIN32 int niter = 1000; #else int niter = 1000; #endif if (TestMode::getTestMode() == TestMode::Mode_SSL) { niter /= 100; } if (getenv("VALGRIND")) { std::cerr << "Valgrind detected, reducing iteration count" << std::endl; niter = 50; } oclient1.call<void>("onFire1", niter); ASSERT_NO_THROW(payload.future().hasValue(2000)); oclient1.reset(); oclient2.reset(); }