summaryrefslogtreecommitdiff
path: root/cpp/test/IceGrid/allocation/AllTests.cpp
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2006-08-31 10:10:13 +0000
committerMatthew Newhook <matthew@zeroc.com>2006-08-31 10:10:13 +0000
commit2ec6c0b43a984fbb0e9cbdc53ea53182a7b87e6c (patch)
tree41d7485138f56a1f0660aa0b6f69b876a300d8fe /cpp/test/IceGrid/allocation/AllTests.cpp
parent- Added /nologo to each Makefile. (diff)
downloadice-2ec6c0b43a984fbb0e9cbdc53ea53182a7b87e6c.tar.bz2
ice-2ec6c0b43a984fbb0e9cbdc53ea53182a7b87e6c.tar.xz
ice-2ec6c0b43a984fbb0e9cbdc53ea53182a7b87e6c.zip
http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=1293
Diffstat (limited to 'cpp/test/IceGrid/allocation/AllTests.cpp')
-rw-r--r--cpp/test/IceGrid/allocation/AllTests.cpp65
1 files changed, 48 insertions, 17 deletions
diff --git a/cpp/test/IceGrid/allocation/AllTests.cpp b/cpp/test/IceGrid/allocation/AllTests.cpp
index e91244af07d..fe7d69b4f80 100644
--- a/cpp/test/IceGrid/allocation/AllTests.cpp
+++ b/cpp/test/IceGrid/allocation/AllTests.cpp
@@ -292,6 +292,20 @@ public:
p = _sessions.erase(p);
}
}
+
+ vector<AdminSessionPrx>::iterator q = _adminSessions.begin();
+ while(q != _adminSessions.end())
+ {
+ try
+ {
+ (*q)->keepAlive();
+ ++q;
+ }
+ catch(const Ice::Exception&)
+ {
+ q = _adminSessions.erase(q);
+ }
+ }
}
}
}
@@ -303,6 +317,13 @@ public:
_sessions.push_back(session);
}
+ void
+ add(const AdminSessionPrx& session)
+ {
+ Lock sync(*this);
+ _adminSessions.push_back(session);
+ }
+
void
terminate()
{
@@ -315,6 +336,7 @@ private:
const Ice::LoggerPtr _logger;
vector<SessionPrx> _sessions;
+ vector<AdminSessionPrx> _adminSessions;
const IceUtil::Time _timeout;
bool _terminated;
};
@@ -323,7 +345,17 @@ typedef IceUtil::Handle<SessionKeepAliveThread> SessionKeepAliveThreadPtr;
void
allTests(const Ice::CommunicatorPtr& communicator)
{
- AdminPrx admin = AdminPrx::checkedCast(communicator->stringToProxy("IceGrid/Admin"));
+ SessionKeepAliveThreadPtr keepAlive = new SessionKeepAliveThread(
+ communicator->getLogger(), IceUtil::Time::seconds(5));
+ keepAlive->start();
+
+ RegistryPrx registry = IceGrid::RegistryPrx::checkedCast(communicator->stringToProxy("IceGrid/Registry"));
+ test(registry);
+ AdminSessionPrx session = registry->createAdminSession("foo", "bar");
+
+ keepAlive->add(session);
+
+ AdminPrx admin = session->getAdmin();
test(admin);
cout << "starting router... " << flush;
@@ -338,14 +370,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
}
cout << "ok" << endl;
- RegistryPrx registry = RegistryPrx::checkedCast(communicator->stringToProxy("IceGrid/Registry"));
- test(registry);
-
- SessionKeepAliveThreadPtr keepAlive;
- keepAlive = new SessionKeepAliveThread(communicator->getLogger(), IceUtil::Time::seconds(5));
- keepAlive->start();
-
- const int _allocationTimeout = 5000;
+ const int allocationTimeout = 5000;
Ice::ObjectPrx obj;
Ice::ObjectPrx dummy;
@@ -484,7 +509,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
}
session2->releaseObject(allocatablebis);
- session2->setAllocationTimeout(_allocationTimeout);
+ session2->setAllocationTimeout(allocationTimeout);
AllocateObjectByIdCallbackPtr cb1 = new AllocateObjectByIdCallback();
session2->allocateObjectById_async(cb1, allocatable);
IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));
@@ -511,7 +536,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
{
}
- session1->setAllocationTimeout(_allocationTimeout);
+ session1->setAllocationTimeout(allocationTimeout);
cb1 = new AllocateObjectByIdCallback();
session1->allocateObjectById_async(cb1, allocatable);
IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));
@@ -630,7 +655,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
}
session2->releaseObject(allocatablebis);
- session1->setAllocationTimeout(_allocationTimeout);
+ session1->setAllocationTimeout(allocationTimeout);
AllocateObjectByTypeCallbackPtr cb3 = new AllocateObjectByTypeCallback();
session1->allocateObjectByType_async(cb3, "::Test");
IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));
@@ -786,7 +811,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
session1->allocateObjectById(allocatable3);
session1->allocateObjectById(allocatable4);
- session2->setAllocationTimeout(_allocationTimeout);
+ session2->setAllocationTimeout(allocationTimeout);
cb1 = new AllocateObjectByIdCallback();
session2->allocateObjectById_async(cb1, allocatable3);
IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));
@@ -798,7 +823,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(cb1->hasResponse(dummy));
session2->releaseObject(allocatable3);
- session1->setAllocationTimeout(_allocationTimeout);
+ session1->setAllocationTimeout(allocationTimeout);
test(session2->allocateObjectByType("::TestServer1"));
cb3 = new AllocateObjectByTypeCallback();
session1->allocateObjectByType_async(cb3, "::TestServer2");
@@ -865,8 +890,8 @@ allTests(const Ice::CommunicatorPtr& communicator)
cout << "testing concurrent allocations... " << flush;
- session1->setAllocationTimeout(_allocationTimeout);
- session2->setAllocationTimeout(_allocationTimeout);
+ session1->setAllocationTimeout(allocationTimeout);
+ session2->setAllocationTimeout(allocationTimeout);
session2->allocateObjectById(allocatable);
AllocateObjectByIdCallbackPtr cb11 = new AllocateObjectByIdCallback();
@@ -914,7 +939,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
obj = session2->allocateObjectByType("::Test"); // Allocate the object
test(obj && obj->ice_getIdentity().name == "allocatable");
- session1->setAllocationTimeout(_allocationTimeout);
+ session1->setAllocationTimeout(allocationTimeout);
cb3 = new AllocateObjectByTypeCallback();
session1->allocateObjectByType_async(cb3, "::Test");
IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));
@@ -1032,4 +1057,10 @@ allTests(const Ice::CommunicatorPtr& communicator)
cout << "shutting down router... " << flush;
admin->stopServer("Glacier2");
cout << "ok" << endl;
+
+ keepAlive->terminate();
+ keepAlive->getThreadControl().join();
+ keepAlive = 0;
+
+ session->destroy();
}