diff options
Diffstat (limited to 'cpp/test/Glacier2/sessionHelper/Client.cpp')
-rw-r--r-- | cpp/test/Glacier2/sessionHelper/Client.cpp | 425 |
1 files changed, 210 insertions, 215 deletions
diff --git a/cpp/test/Glacier2/sessionHelper/Client.cpp b/cpp/test/Glacier2/sessionHelper/Client.cpp index ec9ade1e0c6..59113a63669 100644 --- a/cpp/test/Glacier2/sessionHelper/Client.cpp +++ b/cpp/test/Glacier2/sessionHelper/Client.cpp @@ -11,7 +11,7 @@ #include <Ice/Ice.h> #include <Glacier2/Glacier2.h> -#include <TestCommon.h> +#include <TestHelper.h> #include <iostream> #include <iomanip> @@ -294,274 +294,269 @@ public: } }; -class SessionHelperClient : public Ice::Application, public Notify +} // Anonymous namespace end + +class Client : public Test::TestHelper, + public Notify { public: - int run(int argc, char* argv[]) + void run(int, char**); + + void + notify() { - instance = this; - string protocol = getTestProtocol(communicator()->getProperties()); - string host = getTestHost(communicator()->getProperties()); - _initData.properties = Ice::createProperties(argc, argv, communicator()->getProperties()); - _initData.properties->setProperty("Ice.Default.Router", "Glacier2/router:" + - getTestEndpoint(communicator(), 50)); - - DispatcherPtr dispatcher = new Dispatcher(); - dispatcher->start(); + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + _monitor.notify(); + } + +private: + + Glacier2::SessionHelperPtr _session; + Glacier2::SessionFactoryHelperPtr _factory; + Ice::InitializationData _initData; + IceUtil::Monitor<IceUtil::Mutex> _monitor; +}; + +void +Client::run(int argc, char** argv) +{ + Ice::CommunicatorHolder communicator = initialize(argc, argv); + instance = this; + string protocol = getTestProtocol(); + string host = getTestHost(); + _initData.properties = Ice::createProperties(argc, argv, communicator->getProperties()); + _initData.properties->setProperty("Ice.Default.Router", "Glacier2/router:" + getTestEndpoint(50)); + + DispatcherPtr dispatcher = new Dispatcher(); + dispatcher->start(); #ifdef ICE_CPP11_MAPPING - _initData.dispatcher = [dispatcher](std::function<void()> call, const std::shared_ptr<Ice::Connection>& conn) - { - dispatcher->dispatch(call, conn); - }; + _initData.dispatcher = [dispatcher](std::function<void()> call, const std::shared_ptr<Ice::Connection>& conn) + { + dispatcher->dispatch(call, conn); + }; #else - _initData.dispatcher = dispatcher; + _initData.dispatcher = dispatcher; #endif - _factory = ICE_MAKE_SHARED(Glacier2::SessionFactoryHelper, _initData, ICE_MAKE_SHARED(FailSessionCallback)); + _factory = ICE_MAKE_SHARED(Glacier2::SessionFactoryHelper, _initData, ICE_MAKE_SHARED(FailSessionCallback)); + // + // Test to create a session with wrong userid/password + // + + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + + cout << "testing SessionHelper connect with wrong userid/password... " << flush; + + _session = _factory->connect("userid", "xxx"); // - // Test to create a session with wrong userid/password + // Wait for connectFailed callback // + _monitor.timedWait(IceUtil::Time::seconds(30)); - { - IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + test(!_session->isConnected()); + } + _factory->destroy(); - cout << "testing SessionHelper connect with wrong userid/password... " << flush; + // + // Test to interrupt connection establishment + // - _session = _factory->connect("userid", "xxx"); - // - // Wait for connectFailed callback - // - _monitor.timedWait(IceUtil::Time::seconds(30)); + _initData.properties->setProperty("Ice.Default.Router", ""); + _factory = ICE_MAKE_SHARED(Glacier2::SessionFactoryHelper, _initData, ICE_MAKE_SHARED(InterruptConnectCallback)); - test(!_session->isConnected()); - } - _factory->destroy(); + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + cout << "testing SessionHelper connect interrupt... " << flush; + _factory->setRouterHost(host); + _factory->setPort(getTestPort(_initData.properties, 1)); + _factory->setProtocol(protocol); + _session = _factory->connect("userid", "abc123"); + + IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100)); + _session->destroy(); // - // Test to interrupt connection establishment + // Wait for connectFailed callback // + _monitor.timedWait(IceUtil::Time::seconds(30)); + test(!_session->isConnected()); + } + _factory->destroy(); + + _factory = ICE_MAKE_SHARED(Glacier2::SessionFactoryHelper, _initData, ICE_MAKE_SHARED(SuccessSessionCallback)); + + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + cout << "testing SessionHelper connect... " << flush; + _factory->setRouterHost(host); + _factory->setPort(getTestPort(_initData.properties, 50)); + _factory->setProtocol(protocol); + _session = _factory->connect("userid", "abc123"); - _initData.properties->setProperty("Ice.Default.Router", ""); - _factory = ICE_MAKE_SHARED(Glacier2::SessionFactoryHelper, _initData, ICE_MAKE_SHARED(InterruptConnectCallback)); + // + // Wait for connect callback + // + _monitor.timedWait(IceUtil::Time::seconds(30)); + cout << "testing SessionHelper isConnected after connect... " << flush; + test(_session->isConnected()); + cout << "ok" << endl; + + cout << "testing SessionHelper categoryForClient after connect... " << flush; + try { - IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); - cout << "testing SessionHelper connect interrupt... " << flush; - _factory->setRouterHost(host); - _factory->setPort(getTestPort(_initData.properties, 1)); - _factory->setProtocol(protocol); - _session = _factory->connect("userid", "abc123"); - - IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100)); - _session->destroy(); - - // - // Wait for connectFailed callback - // - _monitor.timedWait(IceUtil::Time::seconds(30)); - test(!_session->isConnected()); + test(!_session->categoryForClient().empty()); + } + catch(const Glacier2::SessionNotExistException&) + { + test(false); } - _factory->destroy(); + cout << "ok" << endl; - _factory = ICE_MAKE_SHARED(Glacier2::SessionFactoryHelper, _initData, ICE_MAKE_SHARED(SuccessSessionCallback)); + test(!_session->session()); - { - IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); - cout << "testing SessionHelper connect... " << flush; - _factory->setRouterHost(host); - _factory->setPort(getTestPort(_initData.properties, 50)); - _factory->setProtocol(protocol); - _session = _factory->connect("userid", "abc123"); - - // - // Wait for connect callback - // - _monitor.timedWait(IceUtil::Time::seconds(30)); - - cout << "testing SessionHelper isConnected after connect... " << flush; - test(_session->isConnected()); - cout << "ok" << endl; + cout << "testing stringToProxy for server object... " << flush; + Ice::ObjectPrxPtr base = + _session->communicator()->stringToProxy("callback:" + getTestEndpoint(_session->communicator()->getProperties())); + cout << "ok" << endl; - cout << "testing SessionHelper categoryForClient after connect... " << flush; - try - { - test(!_session->categoryForClient().empty()); - } - catch(const Glacier2::SessionNotExistException&) - { - test(false); - } - cout << "ok" << endl; + cout << "pinging server after session creation... " << flush; + base->ice_ping(); + cout << "ok" << endl; - test(!_session->session()); + cout << "testing checked cast for server object... " << flush; + CallbackPrxPtr twoway = ICE_CHECKED_CAST(CallbackPrx, base); + test(twoway); + cout << "ok" << endl; - cout << "testing stringToProxy for server object... " << flush; - Ice::ObjectPrxPtr base = - _session->communicator()->stringToProxy("callback:" + getTestEndpoint(_session->communicator(), 0)); - cout << "ok" << endl; + cout << "testing server shutdown... " << flush; + twoway->shutdown(); + cout << "ok" << endl; - cout << "pinging server after session creation... " << flush; - base->ice_ping(); - cout << "ok" << endl; + test(_session->communicator()); + cout << "testing SessionHelper destroy... " << flush; + _session->destroy(); - cout << "testing checked cast for server object... " << flush; - CallbackPrxPtr twoway = ICE_CHECKED_CAST(CallbackPrx, base); - test(twoway); - cout << "ok" << endl; + // + // Wait for disconnected callback + // + _monitor.wait(); - cout << "testing server shutdown... " << flush; - twoway->shutdown(); - cout << "ok" << endl; + cout << "testing SessionHelper isConnected after destroy... " << flush; + test(_session->isConnected() == false); + cout << "ok" << endl; - test(_session->communicator()); - cout << "testing SessionHelper destroy... " << flush; - _session->destroy(); + cout << "testing SessionHelper categoryForClient after destroy... " << flush; + try + { + test(!_session->categoryForClient().empty()); + test(false); + } + catch(const Glacier2::SessionNotExistException&) + { + } + cout << "ok" << endl; - // - // Wait for disconnected callback - // - _monitor.wait(); + cout << "testing SessionHelper session after destroy... " << flush; + test(_session->session() == ICE_NULLPTR); + cout << "ok" << endl; - cout << "testing SessionHelper isConnected after destroy... " << flush; - test(_session->isConnected() == false); - cout << "ok" << endl; + cout << "testing SessionHelper communicator after destroy... " << flush; + try + { + test(_session->communicator()); + _session->communicator()->stringToProxy("dummy"); + test(false); + } + catch(const Ice::CommunicatorDestroyedException&) + { + } + cout << "ok" << endl; - cout << "testing SessionHelper categoryForClient after destroy... " << flush; - try - { - test(!_session->categoryForClient().empty()); - test(false); - } - catch(const Glacier2::SessionNotExistException&) - { - } - cout << "ok" << endl; + cout << "uninstalling router with communicator... " << flush; + communicator->setDefaultRouter(0); + cout << "ok" << endl; - cout << "testing SessionHelper session after destroy... " << flush; - test(_session->session() == ICE_NULLPTR); + Ice::ObjectPrxPtr processBase; + { + cout << "testing stringToProxy for process object... " << flush; + processBase = communicator->stringToProxy("Glacier2/admin -f Process:" + getTestEndpoint(51)); cout << "ok" << endl; + } - cout << "testing SessionHelper communicator after destroy... " << flush; - try - { - test(_session->communicator()); - _session->communicator()->stringToProxy("dummy"); - test(false); - } - catch(const Ice::CommunicatorDestroyedException&) - { - } + Ice::ProcessPrxPtr process; + { + cout << "testing checked cast for admin object... " << flush; + process = ICE_CHECKED_CAST(Ice::ProcessPrx, processBase); + test(process != 0); cout << "ok" << endl; + } - cout << "uninstalling router with communicator... " << flush; - communicator()->setDefaultRouter(0); + cout << "testing Glacier2 shutdown... " << flush; + process->shutdown(); + try + { + process->ice_ping(); + test(false); + } + catch(const Ice::LocalException&) + { cout << "ok" << endl; + } + } - Ice::ObjectPrxPtr processBase; - { - cout << "testing stringToProxy for process object... " << flush; - processBase = communicator()->stringToProxy("Glacier2/admin -f Process:" + - getTestEndpoint(communicator(), 51)); - cout << "ok" << endl; - } - - Ice::ProcessPrxPtr process; - { - cout << "testing checked cast for admin object... " << flush; - process = ICE_CHECKED_CAST(Ice::ProcessPrx, processBase); - test(process != 0); - cout << "ok" << endl; - } + _factory->destroy(); - cout << "testing Glacier2 shutdown... " << flush; - process->shutdown(); - try - { - process->ice_ping(); - test(false); - } - catch(const Ice::LocalException&) - { - cout << "ok" << endl; - } - } + _factory = ICE_MAKE_SHARED(Glacier2::SessionFactoryHelper, _initData, ICE_MAKE_SHARED(AfterShutdownSessionCallback)); - _factory->destroy(); + // + // Wait a bit to ensure glaci2router has been shutdown. + // + IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100)); - _factory = ICE_MAKE_SHARED(Glacier2::SessionFactoryHelper, _initData, ICE_MAKE_SHARED(AfterShutdownSessionCallback)); + { + IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); + cout << "testing SessionHelper connect after router shutdown... " << flush; + _factory->setRouterHost(host); + _factory->setPort(getTestPort(_initData.properties, 50)); + _factory->setProtocol(protocol); + _session = _factory->connect("userid", "abc123"); // - // Wait a bit to ensure glaci2router has been shutdown. + // Wait for connectFailed callback // - IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100)); + _monitor.wait(); - { - IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); - cout << "testing SessionHelper connect after router shutdown... " << flush; - _factory->setRouterHost(host); - _factory->setPort(getTestPort(_initData.properties, 50)); - _factory->setProtocol(protocol); - _session = _factory->connect("userid", "abc123"); - - // - // Wait for connectFailed callback - // - _monitor.wait(); - - cout << "testing SessionHelper isConnect after connect failure... " << flush; - test(_session->isConnected() == false); - cout << "ok" << endl; - - cout << "testing SessionHelper communicator after connect failure... " << flush; - try - { - test(_session->communicator()); - _session->communicator()->stringToProxy("dummy"); - test(false); - } - catch(const Ice::CommunicatorDestroyedException&) - { - } - cout << "ok" << endl; + cout << "testing SessionHelper isConnect after connect failure... " << flush; + test(_session->isConnected() == false); + cout << "ok" << endl; - cout << "testing SessionHelper destroy after connect failure... " << flush; - _session->destroy(); - cout << "ok" << endl; + cout << "testing SessionHelper communicator after connect failure... " << flush; + try + { + test(_session->communicator()); + _session->communicator()->stringToProxy("dummy"); + test(false); } - - _factory->destroy(); - - if(dispatcher) + catch(const Ice::CommunicatorDestroyedException&) { - dispatcher->destroy(); - dispatcher->getThreadControl().join(); } + cout << "ok" << endl; - return 0; + cout << "testing SessionHelper destroy after connect failure... " << flush; + _session->destroy(); + cout << "ok" << endl; } - void - notify() + _factory->destroy(); + + if(dispatcher) { - IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); - _monitor.notify(); + dispatcher->destroy(); + dispatcher->getThreadControl().join(); } - -private: - - Glacier2::SessionHelperPtr _session; - Glacier2::SessionFactoryHelperPtr _factory; - Ice::InitializationData _initData; - IceUtil::Monitor<IceUtil::Mutex> _monitor; -}; - -} // Anonymous namespace end - -int -main(int argc, char* argv[]) -{ - SessionHelperClient c; - Ice::InitializationData initData = getTestInitData(argc, argv); - return c.main(argc, argv, initData); } + +DEFINE_TEST(Client) |