diff options
Diffstat (limited to 'cpp/test/IceGrid/session/AllTests.cpp')
-rw-r--r-- | cpp/test/IceGrid/session/AllTests.cpp | 210 |
1 files changed, 128 insertions, 82 deletions
diff --git a/cpp/test/IceGrid/session/AllTests.cpp b/cpp/test/IceGrid/session/AllTests.cpp index 3710473dd33..bdd080a9ea0 100644 --- a/cpp/test/IceGrid/session/AllTests.cpp +++ b/cpp/test/IceGrid/session/AllTests.cpp @@ -17,7 +17,7 @@ using namespace std; using namespace IceGrid; -void +void addProperty(const CommunicatorDescriptorPtr& communicator, const string& name, const string& value) { PropertyDescriptor prop; @@ -103,11 +103,11 @@ class ApplicationObserverI : public ApplicationObserver, public ObserverBase { public: - ApplicationObserverI(const string& name) : ObserverBase(name) + ApplicationObserverI(const string& name) : ObserverBase(name) { } - - virtual void + + virtual void applicationInit(int serial, const ApplicationInfoSeq& apps, const Ice::Current&) { Lock sync(*this); @@ -129,7 +129,7 @@ public: updated(updateSerial(serial, "application added `" + app.descriptor.name + "'")); } - virtual void + virtual void applicationRemoved(int serial, const std::string& name, const Ice::Current&) { Lock sync(*this); @@ -137,7 +137,7 @@ public: updated(updateSerial(serial, "application removed `" + name + "'")); } - virtual void + virtual void applicationUpdated(int serial, const ApplicationUpdateInfo& info, const Ice::Current&) { Lock sync(*this); @@ -176,8 +176,8 @@ public: AdapterObserverI(const string& name) : ObserverBase(name) { } - - virtual void + + virtual void adapterInit(const AdapterInfoSeq& adapters, const Ice::Current&) { Lock sync(*this); @@ -235,8 +235,8 @@ public: ObjectObserverI(const string& name) : ObserverBase(name) { } - - virtual void + + virtual void objectInit(const ObjectInfoSeq& objects, const Ice::Current&) { Lock sync(*this); @@ -268,7 +268,7 @@ public: { Lock sync(*this); this->objects.erase(id); - updated(updateSerial(0, "object removed `" + + updated(updateSerial(0, "object removed `" + current.adapter->getCommunicator()->identityToString(id) + "'")); } @@ -296,7 +296,7 @@ public: { } - virtual void + virtual void nodeInit(const NodeDynamicInfoSeq& info, const Ice::Current&) { Lock sync(*this); @@ -394,7 +394,7 @@ public: } ostringstream os; - os << "adapter `" << info.id << " on node `" << node << "' state updated: " + os << "adapter `" << info.id << " on node `" << node << "' state updated: " << (info.proxy ? "active" : "inactive"); updated(os.str()); } @@ -443,7 +443,7 @@ public: { } - virtual void + virtual void registryInit(const RegistryInfoSeq& info, const Ice::Current&) { Lock sync(*this); @@ -484,7 +484,7 @@ testFailedAndPrintObservers(const char* expr, const char* file, unsigned int lin #undef test #define test(ex) ((ex) ? ((void)0) : testFailedAndPrintObservers(#ex, __FILE__, __LINE__)) -void +void allTests(const Ice::CommunicatorPtr& communicator) { bool encoding10 = communicator->getProperties()->getProperty("Ice.Default.EncodingVersion") == "1.0"; @@ -556,7 +556,7 @@ allTests(const Ice::CommunicatorPtr& communicator) } } - { + { cout << "testing username/password sessions... " << flush; SessionPrx session1, session2; @@ -692,12 +692,12 @@ allTests(const Ice::CommunicatorPtr& communicator) adminSession1->destroy(); adminSession2->destroy(); - + cout << "ok" << endl; } if(properties->getProperty("Ice.Default.Protocol") == "ssl") - { + { cout << "testing sessions from secure connection... " << flush; SessionPrx session1, session2; @@ -739,7 +739,7 @@ allTests(const Ice::CommunicatorPtr& communicator) session1->destroy(); session2->destroy(); - + AdminSessionPrx adminSession1, adminSession2; adminSession1 = AdminSessionPrx::uncheckedCast( @@ -976,7 +976,7 @@ allTests(const Ice::CommunicatorPtr& communicator) } if(properties->getProperty("Ice.Default.Protocol") == "ssl") - { + { cout << "testing Glacier2 sessions from secure connection... " << flush; SessionPrx session1, session2; @@ -1055,7 +1055,7 @@ allTests(const Ice::CommunicatorPtr& communicator) router1->destroySession(); router2->destroySession(); - + AdminSessionPrx admSession1, admSession2; // @@ -1164,26 +1164,26 @@ allTests(const Ice::CommunicatorPtr& communicator) cout << "testing updates with admin sessions... " << flush; AdminSessionPrx session1 = registry->createAdminSession("admin1", "test1"); AdminSessionPrx session2 = registry->createAdminSession("admin2", "test2"); - + session1->ice_getConnection()->setACM(registry->getACMTimeout(), IceUtil::None, Ice::HeartbeatOnIdle); session2->ice_getConnection()->setACM(registry->getACMTimeout(), IceUtil::None, Ice::HeartbeatOnIdle); AdminPrx admin1 = session1->getAdmin(); AdminPrx admin2 = session2->getAdmin(); - + Ice::ObjectAdapterPtr adpt1 = communicator->createObjectAdapter(""); ApplicationObserverIPtr appObs1 = new ApplicationObserverI("appObs1.1"); Ice::ObjectPrx app1 = adpt1->addWithUUID(appObs1); NodeObserverIPtr nodeObs1 = new NodeObserverI("nodeObs1"); Ice::ObjectPrx no1 = adpt1->addWithUUID(nodeObs1); adpt1->activate(); - registry->ice_getConnection()->setAdapter(adpt1); - session1->setObserversByIdentity(Ice::Identity(), - no1->ice_getIdentity(), - app1->ice_getIdentity(), + registry->ice_getConnection()->setAdapter(adpt1); + session1->setObserversByIdentity(Ice::Identity(), + no1->ice_getIdentity(), + app1->ice_getIdentity(), Ice::Identity(), Ice::Identity()); - + Ice::ObjectAdapterPtr adpt2 = communicator->createObjectAdapterWithEndpoints("Observer2", "default"); ApplicationObserverIPtr appObs2 = new ApplicationObserverI("appObs2"); Ice::ObjectPrx app2 = adpt2->addWithUUID(appObs2); @@ -1191,11 +1191,11 @@ allTests(const Ice::CommunicatorPtr& communicator) Ice::ObjectPrx no2 = adpt2->addWithUUID(nodeObs2); adpt2->activate(); session2->setObservers(0, - NodeObserverPrx::uncheckedCast(no2), + NodeObserverPrx::uncheckedCast(no2), ApplicationObserverPrx::uncheckedCast(app2), 0, 0); - + appObs1->waitForUpdate(__FILE__, __LINE__); appObs2->waitForUpdate(__FILE__, __LINE__); @@ -1243,7 +1243,7 @@ allTests(const Ice::CommunicatorPtr& communicator) try { - session1->finishUpdate(); + session1->finishUpdate(); } catch(const Ice::UserException&) { @@ -1282,7 +1282,7 @@ allTests(const Ice::CommunicatorPtr& communicator) try { - session2->finishUpdate(); + session2->finishUpdate(); } catch(const Ice::UserException&) { @@ -1352,7 +1352,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(serial + 1 == appObs1->serial); test(serial + 1 == appObs2->serial); ++serial; - + try { int s = session1->startUpdate(); @@ -1387,23 +1387,72 @@ allTests(const Ice::CommunicatorPtr& communicator) } { + cout << "testing invalid configuration... " << flush; + AdminSessionPrx session1 = registry->createAdminSession("admin1", "test1"); + AdminPrx admin1 = session1->getAdmin(); + + Ice::LocatorRegistryPrx locatorRegistry = communicator->getDefaultLocator()->getRegistry(); + + try + { + ApplicationDescriptor app; + app.name = string(512, 'A'); + admin1->addApplication(app); + test(false); + } + catch(const DeploymentException&) + { + } + + Ice::ObjectPrx obj = communicator->stringToProxy("dummy:tcp -p 10000"); + try + { + locatorRegistry->setAdapterDirectProxy(string(512, 'A'), obj); + test(false); + } + catch(const Ice::UnknownException&) + { + } + + try + { + locatorRegistry->setReplicatedAdapterDirectProxy("Adapter", string(512, 'A'), obj); + test(false); + } + catch(const Ice::UnknownException&) + { + } + + try + { + admin1->addObjectWithType(obj, string(512, 'T')); + test(false); + } + catch(const DeploymentException&) + { + } + + cout << "ok" << endl; + } + + { cout << "testing application observer... " << flush; AdminSessionPrx session1 = registry->createAdminSession("admin1", "test1"); AdminPrx admin1 = session1->getAdmin(); session1->ice_getConnection()->setACM(registry->getACMTimeout(), IceUtil::None, Ice::HeartbeatOnIdle); - + Ice::ObjectAdapterPtr adpt1 = communicator->createObjectAdapter(""); ApplicationObserverIPtr appObs1 = new ApplicationObserverI("appObs1.2"); Ice::ObjectPrx app1 = adpt1->addWithUUID(appObs1); adpt1->activate(); - registry->ice_getConnection()->setAdapter(adpt1); - session1->setObserversByIdentity(Ice::Identity(), - Ice::Identity(), + registry->ice_getConnection()->setAdapter(adpt1); + session1->setObserversByIdentity(Ice::Identity(), + Ice::Identity(), app1->ice_getIdentity(), Ice::Identity(), Ice::Identity()); - + appObs1->waitForUpdate(__FILE__, __LINE__); int serial = appObs1->serial; @@ -1445,7 +1494,7 @@ allTests(const Ice::CommunicatorPtr& communicator) try { - ApplicationDescriptor app; + ApplicationDescriptor app; app = appObs1->applications["Application"].descriptor; app.variables.clear(); app.variables["test1"] = "test"; @@ -1488,18 +1537,18 @@ allTests(const Ice::CommunicatorPtr& communicator) AdminPrx admin1 = session1->getAdmin(); session1->ice_getConnection()->setACM(registry->getACMTimeout(), IceUtil::None, Ice::HeartbeatOnIdle); - + Ice::ObjectAdapterPtr adpt1 = communicator->createObjectAdapter(""); AdapterObserverIPtr adptObs1 = new AdapterObserverI("adptObs1"); Ice::ObjectPrx adapter1 = adpt1->addWithUUID(adptObs1); adpt1->activate(); - registry->ice_getConnection()->setAdapter(adpt1); - session1->setObserversByIdentity(Ice::Identity(), - Ice::Identity(), - Ice::Identity(), - adapter1->ice_getIdentity(), + registry->ice_getConnection()->setAdapter(adpt1); + session1->setObserversByIdentity(Ice::Identity(), + Ice::Identity(), + Ice::Identity(), + adapter1->ice_getIdentity(), Ice::Identity()); - + adptObs1->waitForUpdate(__FILE__, __LINE__); // init try @@ -1511,7 +1560,7 @@ allTests(const Ice::CommunicatorPtr& communicator) adptObs1->waitForUpdate(__FILE__, __LINE__); test(adptObs1->adapters.find("DummyAdapter") != adptObs1->adapters.end()); test(adptObs1->adapters["DummyAdapter"].proxy == obj); - + obj = communicator->stringToProxy("dummy:tcp -p 10000 -h localhost"); locatorRegistry->setAdapterDirectProxy("DummyAdapter", obj); adptObs1->waitForUpdate(__FILE__, __LINE__); @@ -1572,18 +1621,18 @@ allTests(const Ice::CommunicatorPtr& communicator) AdminPrx admin1 = session1->getAdmin(); session1->ice_getConnection()->setACM(registry->getACMTimeout(), IceUtil::None, Ice::HeartbeatOnIdle); - + Ice::ObjectAdapterPtr adpt1 = communicator->createObjectAdapter(""); ObjectObserverIPtr objectObs1 = new ObjectObserverI("objectObs1"); Ice::ObjectPrx object1 = adpt1->addWithUUID(objectObs1); adpt1->activate(); - registry->ice_getConnection()->setAdapter(adpt1); - session1->setObserversByIdentity(Ice::Identity(), - Ice::Identity(), - Ice::Identity(), - Ice::Identity(), + registry->ice_getConnection()->setAdapter(adpt1); + session1->setObserversByIdentity(Ice::Identity(), + Ice::Identity(), + Ice::Identity(), + Ice::Identity(), object1->ice_getIdentity()); - + objectObs1->waitForUpdate(__FILE__, __LINE__); // init try @@ -1595,7 +1644,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(objectObs1->objects.find(communicator->stringToIdentity("dummy")) != objectObs1->objects.end()); test(objectObs1->objects[communicator->stringToIdentity("dummy")].type == "::Dummy"); test(objectObs1->objects[communicator->stringToIdentity("dummy")].proxy == obj); - + obj = communicator->stringToProxy("dummy:tcp -p 10000 -h localhost"); admin->updateObject(obj); objectObs1->waitForUpdate(__FILE__, __LINE__); @@ -1638,7 +1687,7 @@ allTests(const Ice::CommunicatorPtr& communicator) // NodeDescriptor node; // node.servers.push_back(server); // nodeApp.nodes["localnode"] = node; - + // try // { // int s = session1->startUpdate(); @@ -1728,22 +1777,22 @@ allTests(const Ice::CommunicatorPtr& communicator) { cout << "testing node observer... " << flush; AdminSessionPrx session1 = registry->createAdminSession("admin1", "test1"); - + session1->ice_getConnection()->setACM(registry->getACMTimeout(), IceUtil::None, Ice::HeartbeatOnIdle); - + Ice::ObjectAdapterPtr adpt1 = communicator->createObjectAdapter(""); ApplicationObserverIPtr appObs1 = new ApplicationObserverI("appObs1.3"); Ice::ObjectPrx app1 = adpt1->addWithUUID(appObs1); NodeObserverIPtr nodeObs1 = new NodeObserverI("nodeObs1"); Ice::ObjectPrx no1 = adpt1->addWithUUID(nodeObs1); adpt1->activate(); - registry->ice_getConnection()->setAdapter(adpt1); - session1->setObserversByIdentity(Ice::Identity(), - no1->ice_getIdentity(), - app1->ice_getIdentity(), + registry->ice_getConnection()->setAdapter(adpt1); + session1->setObserversByIdentity(Ice::Identity(), + no1->ice_getIdentity(), + app1->ice_getIdentity(), Ice::Identity(), Ice::Identity()); - + appObs1->waitForUpdate(__FILE__, __LINE__); nodeObs1->waitForUpdate(__FILE__, __LINE__); // init @@ -1754,11 +1803,7 @@ allTests(const Ice::CommunicatorPtr& communicator) nodeApp.name = "NodeApp"; ServerDescriptorPtr server = new ServerDescriptor(); server->id = "node-1"; -#if defined(NDEBUG) || !defined(_WIN32) server->exe = properties->getProperty("IceBinDir") + "/icegridnode"; -#else - server->exe = properties->getProperty("IceBinDir") + "/icegridnoded"; -#endif server->options.push_back("--nowarn"); server->pwd = "."; server->applicationDistrib = false; @@ -1767,7 +1812,7 @@ allTests(const Ice::CommunicatorPtr& communicator) addProperty(server, "IceGrid.Node.Data", properties->getProperty("TestDir") + "/db/node-1"); addProperty(server, "IceGrid.Node.Endpoints", "default"); addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); - + NodeDescriptor node; node.servers.push_back(server); nodeApp.nodes["localnode"] = node; @@ -1807,11 +1852,12 @@ allTests(const Ice::CommunicatorPtr& communicator) ApplicationDescriptor testApp; testApp.name = "TestApp"; - + server = new ServerDescriptor(); server->id = "Server"; - server->exe = properties->getProperty("TestDir") + "/server"; - server->pwd = "."; + server->exe = properties->getProperty("ServerDir") + "/server"; + server->pwd = properties->getProperty("TestDir"); + server->applicationDistrib = false; server->allocatable = false; AdapterDescriptor adapter; @@ -1845,7 +1891,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(nodeObs1->nodes["localnode"].servers[0].state == Active); test(nodeObs1->nodes["localnode"].adapters.size() == 1); test(nodeObs1->nodes["localnode"].adapters[0].proxy); - + test(nodeObs1->nodes["localnode"].servers[0].enabled); admin->enableServer("Server", false); nodeObs1->waitForUpdate(__FILE__, __LINE__); // serverUpdate @@ -1866,7 +1912,7 @@ allTests(const Ice::CommunicatorPtr& communicator) test(nodeObs1->nodes["localnode"].adapters.empty()); session->startUpdate(); - admin->removeApplication("TestApp"); + admin->removeApplication("TestApp"); session->finishUpdate(); nodeObs1->waitForUpdate(__FILE__, __LINE__); // serverUpdate(Destroying) @@ -1881,22 +1927,22 @@ allTests(const Ice::CommunicatorPtr& communicator) { cout << "testing registry observer... " << flush; AdminSessionPrx session1 = registry->createAdminSession("admin1", "test1"); - + session1->ice_getConnection()->setACM(registry->getACMTimeout(), IceUtil::None, Ice::HeartbeatOnIdle); - + Ice::ObjectAdapterPtr adpt1 = communicator->createObjectAdapter(""); ApplicationObserverIPtr appObs1 = new ApplicationObserverI("appObs1.4"); Ice::ObjectPrx app1 = adpt1->addWithUUID(appObs1); RegistryObserverIPtr registryObs1 = new RegistryObserverI("registryObs1"); Ice::ObjectPrx ro1 = adpt1->addWithUUID(registryObs1); adpt1->activate(); - registry->ice_getConnection()->setAdapter(adpt1); - session1->setObserversByIdentity(ro1->ice_getIdentity(), + registry->ice_getConnection()->setAdapter(adpt1); + session1->setObserversByIdentity(ro1->ice_getIdentity(), Ice::Identity(), - app1->ice_getIdentity(), + app1->ice_getIdentity(), Ice::Identity(), Ice::Identity()); - + appObs1->waitForUpdate(__FILE__, __LINE__); registryObs1->waitForUpdate(__FILE__, __LINE__); // init @@ -1923,9 +1969,9 @@ allTests(const Ice::CommunicatorPtr& communicator) { cout << "testing observer with direct proxy... " << flush; AdminSessionPrx session1 = registry->createAdminSession("admin1", "test1"); - + session1->ice_getConnection()->setACM(registry->getACMTimeout(), IceUtil::None, Ice::HeartbeatOnIdle); - + Ice::ObjectAdapterPtr adpt1 = communicator->createObjectAdapterWithEndpoints("", "default"); NodeObserverIPtr nodeObs1 = new NodeObserverI("nodeObs1"); Ice::ObjectPrx no1 = adpt1->addWithUUID(nodeObs1); @@ -1951,7 +1997,7 @@ allTests(const Ice::CommunicatorPtr& communicator) Ice::ObjectPrx no1 = adpt1->addWithUUID(nodeObs1); assert(no1->ice_getAdapterId() == "adapter1"); adpt1->activate(); - + session1->setObservers(0, NodeObserverPrx::uncheckedCast(no1), 0, 0, 0); nodeObs1->waitForUpdate(__FILE__, __LINE__); // init |