⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alltests.cpp

📁 ICE-3.2 一个开源的中间件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        }        try        {            session1->allocateObjectById(allocatable4);            test(false);        }        catch(const AllocationTimeoutException&)        {        }        session2->allocateObjectById(allocatable4);        session2->releaseObject(allocatable3);        try        {            session1->allocateObjectById(allocatable3);            test(false);        }        catch(const AllocationTimeoutException&)        {        }        try        {            session1->allocateObjectByType("::TestServer1");            test(false);        }        catch(AllocationException&)        {        }        try        {            session1->allocateObjectByType("::TestServer2");            test(false);        }        catch(AllocationException&)        {        }        test(session2->allocateObjectByType("::TestServer1"));        try        {            session2->allocateObjectByType("::TestServer1");            test(false);        }        catch(AllocationException&)        {        }        try        {            session2->allocateObjectByType("::TestServer2");            test(false);        }        catch(AllocationException&)        {        }        session2->releaseObject(allocatable3);        session2->releaseObject(allocatable4);        session1->allocateObjectById(allocatable3);        session1->allocateObjectById(allocatable4);        session2->setAllocationTimeout(allocationTimeout);        cb1 = new AllocateObjectByIdCallback();        session2->allocateObjectById_async(cb1, allocatable3);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));        test(!cb1->hasResponse(dummy));        session1->releaseObject(allocatable3);        test(!cb1->hasResponse(dummy));        session1->releaseObject(allocatable4);        cb1->waitResponse(__FILE__, __LINE__);        test(cb1->hasResponse(dummy));        session2->releaseObject(allocatable3);        session1->setAllocationTimeout(allocationTimeout);        test(session2->allocateObjectByType("::TestServer1"));        cb3 = new AllocateObjectByTypeCallback();        session1->allocateObjectByType_async(cb3, "::TestServer2");        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));        test(!cb3->hasResponse(dummy));        session2->releaseObject(allocatable3);        cb3->waitResponse(__FILE__, __LINE__);        test(cb3->hasResponse(dummy));        session1->releaseObject(allocatable4);            session1->setAllocationTimeout(0);        session2->setAllocationTimeout(0);        test(session1->allocateObjectByType("::TestMultipleByServer"));        try        {            session2->allocateObjectByType("::TestMultipleByServer");            test(false);        }        catch(AllocationException&)        {        }        test(session1->allocateObjectByType("::TestMultipleByServer"));        session1->releaseObject(communicator->stringToIdentity("allocatable31"));        session1->releaseObject(communicator->stringToIdentity("allocatable41"));        test(session2->allocateObjectByType("::TestMultipleByServer"));        try        {            session1->allocateObjectByType("::TestMultipleByServer");            test(false);        }        catch(AllocationException&)        {        }        test(session2->allocateObjectByType("::TestMultipleByServer"));        session2->releaseObject(communicator->stringToIdentity("allocatable31"));        session2->releaseObject(communicator->stringToIdentity("allocatable41"));        Ice::ObjectPrx obj1 = session1->allocateObjectByType("::TestMultipleServer");        test(obj1);        Ice::ObjectPrx obj2 = session2->allocateObjectByType("::TestMultipleServer");        test(obj2);        try        {            session1->allocateObjectByType("::TestMultipleServer");            test(false);        }        catch(AllocationTimeoutException&)        {        }        try        {            session2->allocateObjectByType("::TestMultipleServer");            test(false);        }        catch(AllocationTimeoutException&)        {        }               session1->releaseObject(obj1->ice_getIdentity());        obj1 = session2->allocateObjectByType("::TestMultipleServer");        session2->releaseObject(obj1->ice_getIdentity());        session2->releaseObject(obj2->ice_getIdentity());        cout << "ok" << endl;        cout << "testing concurrent allocations... " << flush;        session1->setAllocationTimeout(allocationTimeout);        session2->setAllocationTimeout(allocationTimeout);        session2->allocateObjectById(allocatable);        AllocateObjectByIdCallbackPtr cb11 = new AllocateObjectByIdCallback();        AllocateObjectByIdCallbackPtr cb12 = new AllocateObjectByIdCallback();        session1->allocateObjectById_async(cb11, allocatable);        session1->allocateObjectById_async(cb12, allocatable);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));        test(!cb11->hasResponse(dummy));        test(!cb12->hasResponse(dummy));        session2->releaseObject(allocatable);        cb11->waitResponse(__FILE__, __LINE__);        cb12->waitResponse(__FILE__, __LINE__);        test(cb11->hasResponse(dummy) ? cb12->hasException() : cb12->hasResponse(dummy));        test(cb12->hasResponse(dummy) ? cb11->hasException() : cb11->hasResponse(dummy));        session1->releaseObject(allocatable);        session2->allocateObjectById(allocatable);        AllocateObjectByTypeCallbackPtr cb31 = new AllocateObjectByTypeCallback();        AllocateObjectByTypeCallbackPtr cb32 = new AllocateObjectByTypeCallback();        session1->allocateObjectByType_async(cb31, "::Test");        session1->allocateObjectByType_async(cb32, "::Test");        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));        test(!cb31->hasResponse(dummy));        test(!cb32->hasResponse(dummy));        session2->releaseObject(allocatable);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(300));        do        {            IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(200));        }        while(!cb31->hasResponse(dummy) && !cb32->hasResponse(dummy));        test(cb31->hasResponse(dummy) && dummy && !cb32->hasResponse(dummy) ||             cb32->hasResponse(dummy) && dummy && !cb31->hasResponse(dummy));        session1->releaseObject(allocatable);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(300));        AllocateObjectByTypeCallbackPtr cb33 = cb31->hasResponse(dummy) ? cb32 : cb31;        cb33->waitResponse(__FILE__, __LINE__);        test(cb33->hasResponse(dummy) && dummy);        session1->releaseObject(allocatable);        session2->allocateObjectById(allocatable3);        cb11 = new AllocateObjectByIdCallback();        cb12 = new AllocateObjectByIdCallback();        session1->allocateObjectById_async(cb11, allocatable3);        session1->allocateObjectById_async(cb12, allocatable3);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));        test(!cb11->hasResponse(dummy));        test(!cb12->hasResponse(dummy));        session2->releaseObject(allocatable3);        cb11->waitResponse(__FILE__, __LINE__);        cb12->waitResponse(__FILE__, __LINE__);        test(cb11->hasResponse(dummy) ? cb12->hasException() : cb12->hasResponse(dummy));        test(cb12->hasResponse(dummy) ? cb11->hasException() : cb11->hasResponse(dummy));        session1->releaseObject(allocatable3);        session2->allocateObjectById(allocatable3);        cb31 = new AllocateObjectByTypeCallback();        cb32 = new AllocateObjectByTypeCallback();        session1->allocateObjectByType_async(cb31, "::TestServer1");        session1->allocateObjectByType_async(cb32, "::TestServer1");        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));        test(!cb31->hasResponse(dummy));        test(!cb32->hasResponse(dummy));        session2->releaseObject(allocatable3);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(300));        do        {            IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(200));        }        while(!cb31->hasResponse(dummy) && !cb32->hasResponse(dummy));        test(cb31->hasResponse(dummy) && dummy && !cb32->hasResponse(dummy) ||             cb32->hasResponse(dummy) && dummy && !cb31->hasResponse(dummy));        session1->releaseObject(allocatable3);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(300));        cb33 = cb31->hasResponse(dummy) ? cb32 : cb31;        cb33->waitResponse(__FILE__, __LINE__);        test(cb33->hasResponse(dummy) && dummy);        session1->releaseObject(allocatable3);        session1->allocateObjectById(allocatable3);        cb31 = new AllocateObjectByTypeCallback();        cb32 = new AllocateObjectByTypeCallback();        session1->allocateObjectByType_async(cb31, "::TestServer1");        session1->allocateObjectByType_async(cb32, "::TestServer1");        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));        test(!cb31->hasResponse(dummy));        test(!cb32->hasResponse(dummy));        session1->releaseObject(allocatable3);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(300));        do        {            IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(200));        }        while(!cb31->hasResponse(dummy) && !cb32->hasResponse(dummy));        test(cb31->hasResponse(dummy) && dummy && !cb32->hasResponse(dummy) ||             cb32->hasResponse(dummy) && dummy && !cb31->hasResponse(dummy));        session1->releaseObject(allocatable3);        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(300));        cb33 = cb31->hasResponse(dummy) ? cb32 : cb31;        cb33->waitResponse(__FILE__, __LINE__);        test(cb33->hasResponse(dummy) && dummy);        session1->releaseObject(allocatable3);        cout << "ok" << endl;        cout << "testing session destroy... " << flush;        obj = session2->allocateObjectByType("::Test"); // Allocate the object        test(obj && obj->ice_getIdentity().name == "allocatable");        session1->setAllocationTimeout(allocationTimeout);        cb3 = new AllocateObjectByTypeCallback();        session1->allocateObjectByType_async(cb3, "::Test");        IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));        test(!cb3->hasResponse(dummy));        session2->destroy();            cb3->waitResponse(__FILE__, __LINE__);        test(cb3->hasResponse(obj));        session1->destroy();        session2 = SessionPrx::uncheckedCast(registry->createSession("Client2", ""));        session2->setAllocationTimeout(0);        session2->allocateObjectById(allocatable);        session2->destroy();        cout << "ok" << endl;        cout << "testing allocation with Glacier2 session... " << flush;        Ice::ObjectPrx routerBase = communicator->stringToProxy("Glacier2/router:default -p 12347");        Glacier2::RouterPrx router1 = Glacier2::RouterPrx::checkedCast(routerBase->ice_connectionId("client1"));        test(router1);                Glacier2::SessionPrx sessionBase = router1->createSession("test1", "abc123");        try        {            session1 = IceGrid::SessionPrx::checkedCast(sessionBase->ice_connectionId("client1")->ice_router(router1));            test(session1);            session1->ice_ping();            Ice::ObjectPrx obj;            obj = session1->allocateObjectById(allocatable)->ice_connectionId("client1")->ice_router(router1);            obj->ice_ping();            session1->releaseObject(allocatable);            try            {                obj->ice_ping();            }            catch(const Ice::ObjectNotExistException&)            {            }            obj = session1->allocateObjectById(allocatable3)->ice_connectionId("client1")->ice_router(router1);            obj->ice_ping();            obj2 = communicator->stringToProxy("allocatable4")->ice_connectionId("client1")->ice_router(router1);            obj2->ice_ping();            session1->releaseObject(allocatable3);            try            {                obj->ice_ping();            }            catch(const Ice::ObjectNotExistException&)            {            }            try            {                obj2->ice_ping();            }            catch(const Ice::ObjectNotExistException&)            {            }            session1->destroy();        }        catch(const Ice::LocalException& ex)        {            cerr << ex << endl;            test(false);        }        cout << "ok" << endl;        cout << "stress test... " << flush;        SessionPrx stressSession = registry->createSession("StressSession", "");                keepAlive->add(stressSession);        const int nClients = 10;        int i;        vector<StressClientPtr> clients;        for(i = 0; i < nClients - 2; ++i)        {            if(IceUtil::random(2) == 1)            {                clients.push_back(new StressClient(i, registry, false));            }            else            {                clients.push_back(new StressClient(i, stressSession));            }            clients.back()->start();        }        clients.push_back(new StressClient(i++, registry, true));        clients.back()->start();        clients.push_back(new StressClient(i++, registry, true));        clients.back()->start();                for(vector<StressClientPtr>::const_iterator p = clients.begin(); p != clients.end(); ++p)        {            (*p)->notifyThread();        }        //        // Let the stress client run for a bit.        //        IceUtil::ThreadControl::sleep(IceUtil::Time::seconds(8));        //        // Terminate the stress clients.        //        for(vector<StressClientPtr>::const_iterator q = clients.begin(); q != clients.end(); ++q)        {            (*q)->terminate();            (*q)->getThreadControl().join();        }        stressSession->destroy();        cout << "ok" << endl;    }    catch(const AllocationTimeoutException& ex)    {        cerr << ex << endl;        test(false);    }    catch(const AllocationException& ex)    {        cerr << ex.reason << endl;        test(false);    }    cout << "shutting down router... " << flush;    admin->stopServer("Glacier2");    cout << "ok" << endl;    keepAlive->terminate();    keepAlive->getThreadControl().join();    keepAlive = 0;    session->destroy();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -