static void testFacets(const Ice::CommunicatorPtr& com, bool builtInFacets = true) { if(builtInFacets) { test(com->findAdminFacet("Properties")); test(com->findAdminFacet("Process")); test(com->findAdminFacet("Logger")); test(com->findAdminFacet("Metrics")); } TestFacetPtr f1 = ICE_MAKE_SHARED(TestFacetI); TestFacetPtr f2 = ICE_MAKE_SHARED(TestFacetI); TestFacetPtr f3 = ICE_MAKE_SHARED(TestFacetI); com->addAdminFacet(f1, "Facet1"); com->addAdminFacet(f2, "Facet2"); com->addAdminFacet(f3, "Facet3"); test(com->findAdminFacet("Facet1") == f1); test(com->findAdminFacet("Facet2") == f2); test(com->findAdminFacet("Facet3") == f3); test(!com->findAdminFacet("Bogus")); const Ice::FacetMap facetMap = com->findAllAdminFacets(); if(builtInFacets) { test(facetMap.size() == 7); test(facetMap.find("Properties") != facetMap.end()); test(facetMap.find("Process") != facetMap.end()); test(facetMap.find("Logger") != facetMap.end()); test(facetMap.find("Metrics") != facetMap.end()); } else { test(facetMap.size() >= 3); } test(facetMap.find("Facet1") != facetMap.end()); test(facetMap.find("Facet2") != facetMap.end()); test(facetMap.find("Facet3") != facetMap.end()); try { com->addAdminFacet(f1, "Facet1"); test(false); } catch(const Ice::AlreadyRegisteredException&) { // Expected } try { com->removeAdminFacet("Bogus"); test(false); } catch(const Ice::NotRegisteredException&) { // Expected } com->removeAdminFacet("Facet1"); com->removeAdminFacet("Facet2"); com->removeAdminFacet("Facet3"); try { com->removeAdminFacet("Facet1"); test(false); } catch(const Ice::NotRegisteredException&) { // Expected } }
GPrxPtr allTests(const Ice::CommunicatorPtr& communicator) { #ifdef ICE_OS_UWP bool uwp = true; #else bool uwp = false; #endif cout << "testing Ice.Admin.Facets property... " << flush; test(communicator->getProperties()->getPropertyAsList("Ice.Admin.Facets").empty()); communicator->getProperties()->setProperty("Ice.Admin.Facets", "foobar"); Ice::StringSeq facetFilter = communicator->getProperties()->getPropertyAsList("Ice.Admin.Facets"); test(facetFilter.size() == 1 && facetFilter[0] == "foobar"); communicator->getProperties()->setProperty("Ice.Admin.Facets", "foo\\'bar"); facetFilter = communicator->getProperties()->getPropertyAsList("Ice.Admin.Facets"); test(facetFilter.size() == 1 && facetFilter[0] == "foo'bar"); communicator->getProperties()->setProperty("Ice.Admin.Facets", "'foo bar' toto 'titi'"); facetFilter = communicator->getProperties()->getPropertyAsList("Ice.Admin.Facets"); test(facetFilter.size() == 3 && facetFilter[0] == "foo bar" && facetFilter[1] == "toto" && facetFilter[2] == "titi"); communicator->getProperties()->setProperty("Ice.Admin.Facets", "'foo bar\\' toto' 'titi'"); facetFilter = communicator->getProperties()->getPropertyAsList("Ice.Admin.Facets"); test(facetFilter.size() == 2 && facetFilter[0] == "foo bar' toto" && facetFilter[1] == "titi"); // communicator->getProperties()->setProperty("Ice.Admin.Facets", "'foo bar' 'toto titi"); // facetFilter = communicator->getProperties()->getPropertyAsList("Ice.Admin.Facets"); // test(facetFilter.size() == 0); communicator->getProperties()->setProperty("Ice.Admin.Facets", ""); cout << "ok" << endl; cout << "testing facet registration exceptions... " << flush; string localOAEndpoint; { ostringstream ostr; if(communicator->getProperties()->getProperty("Ice.Default.Protocol") == "bt") { ostr << "default -a *"; } else { ostr << "default -h *"; } localOAEndpoint = ostr.str(); } communicator->getProperties()->setProperty("FacetExceptionTestAdapter.Endpoints", localOAEndpoint); if(uwp || (communicator->getProperties()->getProperty("Ice.Default.Protocol") != "ssl" && communicator->getProperties()->getProperty("Ice.Default.Protocol") != "wss")) { Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter("FacetExceptionTestAdapter"); Ice::ObjectPtr obj = ICE_MAKE_SHARED(EmptyI); adapter->add(obj, Ice::stringToIdentity("d")); adapter->addFacet(obj, Ice::stringToIdentity("d"), "facetABCD"); try { adapter->addFacet(obj, Ice::stringToIdentity("d"), "facetABCD"); test(false); } catch(const Ice::AlreadyRegisteredException&) { } adapter->removeFacet(Ice::stringToIdentity("d"), "facetABCD"); try { adapter->removeFacet(Ice::stringToIdentity("d"), "facetABCD"); test(false); } catch(const Ice::NotRegisteredException&) { } cout << "ok" << endl; cout << "testing removeAllFacets... " << flush; Ice::ObjectPtr obj1 = ICE_MAKE_SHARED(EmptyI); Ice::ObjectPtr obj2 = ICE_MAKE_SHARED(EmptyI); adapter->addFacet(obj1, Ice::stringToIdentity("id1"), "f1"); adapter->addFacet(obj2, Ice::stringToIdentity("id1"), "f2"); Ice::ObjectPtr obj3 = ICE_MAKE_SHARED(EmptyI); adapter->addFacet(obj1, Ice::stringToIdentity("id2"), "f1"); adapter->addFacet(obj2, Ice::stringToIdentity("id2"), "f2"); adapter->addFacet(obj3, Ice::stringToIdentity("id2"), ""); Ice::FacetMap fm = adapter->removeAllFacets(Ice::stringToIdentity("id1")); test(fm.size() == 2); test(fm["f1"] == obj1); test(fm["f2"] == obj2); try { adapter->removeAllFacets(Ice::stringToIdentity("id1")); test(false); } catch(const Ice::NotRegisteredException&) { } fm = adapter->removeAllFacets(Ice::stringToIdentity("id2")); test(fm.size() == 3); test(fm["f1"] == obj1); test(fm["f2"] == obj2); test(fm[""] == obj3); cout << "ok" << endl; adapter->deactivate(); } cout << "testing stringToProxy... " << flush; string ref = "d:" + getTestEndpoint(communicator, 0); Ice::ObjectPrxPtr db = communicator->stringToProxy(ref); test(db); cout << "ok" << endl; cout << "testing unchecked cast... " << flush; Ice::ObjectPrxPtr prx = ICE_UNCHECKED_CAST(Ice::ObjectPrx, db); test(prx->ice_getFacet().empty()); #ifdef ICE_CPP11_MAPPING prx = Ice::uncheckedCast<Ice::ObjectPrx>(db, "facetABCD"); #else prx = Ice::ObjectPrx::uncheckedCast(db, "facetABCD"); #endif test(prx->ice_getFacet() == "facetABCD"); Ice::ObjectPrxPtr prx2 = ICE_UNCHECKED_CAST(Ice::ObjectPrx, prx); test(prx2->ice_getFacet() == "facetABCD"); #ifdef ICE_CPP11_MAPPING shared_ptr<Ice::ObjectPrx> prx3 = Ice::uncheckedCast<Ice::ObjectPrx>(prx, ""); #else Ice::ObjectPrx prx3 = Ice::ObjectPrx::uncheckedCast(prx, ""); #endif test(prx3->ice_getFacet().empty()); DPrxPtr d = ICE_UNCHECKED_CAST(Test::DPrx, db); test(d->ice_getFacet().empty()); #ifdef ICE_CPP11_MAPPING shared_ptr<DPrx> df = Ice::uncheckedCast<Test::DPrx>(db, "facetABCD"); #else DPrx df = Test::DPrx::uncheckedCast(db, "facetABCD"); #endif test(df->ice_getFacet() == "facetABCD"); DPrxPtr df2 = ICE_UNCHECKED_CAST(Test::DPrx, df); test(df2->ice_getFacet() == "facetABCD"); #ifdef ICE_CPP11_MAPPING shared_ptr<DPrx> df3 = Ice::uncheckedCast<Test::DPrx>(df, ""); #else DPrx df3 = Test::DPrx::uncheckedCast(df, ""); #endif test(df3->ice_getFacet().empty()); cout << "ok" << endl; cout << "testing checked cast... " << flush; prx = ICE_CHECKED_CAST(Ice::ObjectPrx, db); test(prx->ice_getFacet().empty()); #ifdef ICE_CPP11_MAPPING prx = Ice::checkedCast<Ice::ObjectPrx>(db, "facetABCD"); #else prx = Ice::ObjectPrx::checkedCast(db, "facetABCD"); #endif test(prx->ice_getFacet() == "facetABCD"); prx2 = ICE_CHECKED_CAST(Ice::ObjectPrx, prx); test(prx2->ice_getFacet() == "facetABCD"); #ifdef ICE_CPP11_MAPPING prx3 = Ice::checkedCast<Ice::ObjectPrx>(prx, ""); #else prx3 = Ice::ObjectPrx::checkedCast(prx, ""); #endif test(prx3->ice_getFacet().empty()); d = ICE_CHECKED_CAST(Test::DPrx, db); test(d->ice_getFacet().empty()); #ifdef ICE_CPP11_MAPPING df = Ice::checkedCast<Test::DPrx>(db, "facetABCD"); #else df = Test::DPrx::checkedCast(db, "facetABCD"); #endif test(df->ice_getFacet() == "facetABCD"); df2 = ICE_CHECKED_CAST(Test::DPrx, df); test(df2->ice_getFacet() == "facetABCD"); #ifdef ICE_CPP11_MAPPING df3 = Ice::checkedCast<Test::DPrx>(df, ""); #else df3 = Test::DPrx::checkedCast(df, ""); #endif test(df3->ice_getFacet().empty()); cout << "ok" << endl; cout << "testing non-facets A, B, C, and D... " << flush; d = ICE_CHECKED_CAST(DPrx, db); test(d); #ifdef ICE_CPP11_MAPPING test(Ice::targetEqualTo(d, db)); #else test(d == db); #endif test(d->callA() == "A"); test(d->callB() == "B"); test(d->callC() == "C"); test(d->callD() == "D"); cout << "ok" << endl; cout << "testing facets A, B, C, and D... " << flush; #ifdef ICE_CPP11_MAPPING df = Ice::checkedCast<DPrx>(d, "facetABCD"); #else df = DPrx::checkedCast(d, "facetABCD"); #endif test(df); test(df->callA() == "A"); test(df->callB() == "B"); test(df->callC() == "C"); test(df->callD() == "D"); cout << "ok" << endl; cout << "testing facets E and F... " << flush; #ifdef ICE_CPP11_MAPPING auto ff = Ice::checkedCast<FPrx>(d, "facetEF"); #else FPrx ff = FPrx::checkedCast(d, "facetEF"); #endif test(ff); test(ff->callE() == "E"); test(ff->callF() == "F"); cout << "ok" << endl; cout << "testing facet G... " << flush; #ifdef ICE_CPP11_MAPPING auto gf = Ice::checkedCast<GPrx>(ff, "facetGH"); #else GPrx gf = GPrx::checkedCast(ff, "facetGH"); #endif test(gf); test(gf->callG() == "G"); cout << "ok" << endl; cout << "testing whether casting preserves the facet... " << flush; HPrxPtr hf = ICE_CHECKED_CAST(HPrx, gf); test(hf); test(hf->callG() == "G"); test(hf->callH() == "H"); cout << "ok" << endl; return gf; }
GPrx allTests(const Ice::CommunicatorPtr& communicator) { tprintf("testing facet registration exceptions... "); Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter("FacetExceptionTestAdapter"); Ice::ObjectPtr obj = new EmptyI; adapter->add(obj, communicator->stringToIdentity("d")); adapter->addFacet(obj, communicator->stringToIdentity("d"), "facetABCD"); try { adapter->addFacet(obj, communicator->stringToIdentity("d"), "facetABCD"); test(false); } catch(Ice::AlreadyRegisteredException&) { } adapter->removeFacet(communicator->stringToIdentity("d"), "facetABCD"); try { adapter->removeFacet(communicator->stringToIdentity("d"), "facetABCD"); test(false); } catch(Ice::NotRegisteredException&) { } tprintf("ok\n"); tprintf("testing removeAllFacets... "); Ice::ObjectPtr obj1 = new EmptyI; Ice::ObjectPtr obj2 = new EmptyI; adapter->addFacet(obj1, communicator->stringToIdentity("id1"), "f1"); adapter->addFacet(obj2, communicator->stringToIdentity("id1"), "f2"); Ice::ObjectPtr obj3 = new EmptyI; adapter->addFacet(obj1, communicator->stringToIdentity("id2"), "f1"); adapter->addFacet(obj2, communicator->stringToIdentity("id2"), "f2"); adapter->addFacet(obj3, communicator->stringToIdentity("id2"), ""); Ice::FacetMap fm = adapter->removeAllFacets(communicator->stringToIdentity("id1")); test(fm.size() == 2); test(fm["f1"] == obj1); test(fm["f2"] == obj2); try { adapter->removeAllFacets(communicator->stringToIdentity("id1")); test(false); } catch(Ice::NotRegisteredException&) { } fm = adapter->removeAllFacets(communicator->stringToIdentity("id2")); test(fm.size() == 3); test(fm["f1"] == obj1); test(fm["f2"] == obj2); test(fm[""] == obj3); tprintf("ok\n"); adapter->deactivate(); tprintf("testing stringToProxy... "); string ref = communicator->getProperties()->getPropertyWithDefault("Facets.Proxy", "d:default -p 12010 -t 10000"); Ice::ObjectPrx db = communicator->stringToProxy(ref); test(db); tprintf("ok\n"); tprintf("testing unchecked cast... "); Ice::ObjectPrx prx = Ice::ObjectPrx::uncheckedCast(db); test(prx->ice_getFacet().empty()); prx = Ice::ObjectPrx::uncheckedCast(db, "facetABCD"); test(prx->ice_getFacet() == "facetABCD"); Ice::ObjectPrx prx2 = Ice::ObjectPrx::uncheckedCast(prx); test(prx2->ice_getFacet() == "facetABCD"); Ice::ObjectPrx prx3 = Ice::ObjectPrx::uncheckedCast(prx, ""); test(prx3->ice_getFacet().empty()); DPrx d = Test::DPrx::uncheckedCast(db); test(d->ice_getFacet().empty()); DPrx df = Test::DPrx::uncheckedCast(db, "facetABCD"); test(df->ice_getFacet() == "facetABCD"); DPrx df2 = Test::DPrx::uncheckedCast(df); test(df2->ice_getFacet() == "facetABCD"); DPrx df3 = Test::DPrx::uncheckedCast(df, ""); test(df3->ice_getFacet().empty()); tprintf("ok\n"); tprintf("testing checked cast... "); prx = Ice::ObjectPrx::checkedCast(db); test(prx->ice_getFacet().empty()); prx = Ice::ObjectPrx::checkedCast(db, "facetABCD"); test(prx->ice_getFacet() == "facetABCD"); prx2 = Ice::ObjectPrx::checkedCast(prx); test(prx2->ice_getFacet() == "facetABCD"); prx3 = Ice::ObjectPrx::checkedCast(prx, ""); test(prx3->ice_getFacet().empty()); d = Test::DPrx::checkedCast(db); test(d->ice_getFacet().empty()); df = Test::DPrx::checkedCast(db, "facetABCD"); test(df->ice_getFacet() == "facetABCD"); df2 = Test::DPrx::checkedCast(df); test(df2->ice_getFacet() == "facetABCD"); df3 = Test::DPrx::checkedCast(df, ""); test(df3->ice_getFacet().empty()); tprintf("ok\n"); tprintf("testing non-facets A, B, C, and D... "); d = DPrx::checkedCast(db); test(d); test(d == db); test(d->callA() == "A"); test(d->callB() == "B"); test(d->callC() == "C"); test(d->callD() == "D"); tprintf("ok\n"); tprintf("testing facets A, B, C, and D... "); df = DPrx::checkedCast(d, "facetABCD"); test(df); test(df->callA() == "A"); test(df->callB() == "B"); test(df->callC() == "C"); test(df->callD() == "D"); tprintf("ok\n"); tprintf("testing facets E and F... "); FPrx ff = FPrx::checkedCast(d, "facetEF"); test(ff); test(ff->callE() == "E"); test(ff->callF() == "F"); tprintf("ok\n"); tprintf("testing facet G... "); GPrx gf = GPrx::checkedCast(ff, "facetGH"); test(gf); test(gf->callG() == "G"); tprintf("ok\n"); tprintf("testing whether casting preserves the facet... "); HPrx hf = HPrx::checkedCast(gf); test(hf); test(hf->callG() == "G"); test(hf->callH() == "H"); tprintf("ok\n"); return gf; }