NamingManagerTests.cpp
Go to the documentation of this file.
1 // -*- C++ -*-
11 /*
12  * $Log: NamingManagerTests.cpp,v $
13  * Revision 1.1 2008/04/30 07:55:33 arafune
14  * The first commitment.
15  *
16  *
17  */
18 
19 #ifndef NamingManager_cpp
20 #define NamingManager_cpp
21 
22 #include <cppunit/ui/text/TestRunner.h>
23 #include <cppunit/TextOutputter.h>
24 #include <cppunit/extensions/TestFactoryRegistry.h>
25 #include <cppunit/extensions/HelperMacros.h>
26 #include <cppunit/TestAssert.h>
27 
28 #include <rtm/RTC.h>
29 #include <rtm/RTObject.h>
30 #include <rtm/NamingManager.h>
31 #include <rtm/Manager.h>
32 
33 namespace RTC
34 {
35  class CorbaObjectManager
36  {
37  public:
38  CorbaObjectManager(::CORBA::ORB_ptr orb, ::PortableServer::POA_ptr poa)
39  : m_orb(orb), m_poa(poa)
40  {
41  }
42 
43  void activate(::PortableServer::ServantBase* servant)
44  {
45  try
46  {
47  m_poa->activate_object(servant);
48  }
49  catch(const ::PortableServer::POA::ServantAlreadyActive &)
50  {
51  }
52  }
53 
54  void deactivate(::PortableServer::ServantBase* servant)
55  {
56  ::PortableServer::ObjectId_var id;
57  id = m_poa->servant_to_id(servant);
58  m_poa->deactivate_object(id);
59  }
60  protected:
61  ::CORBA::ORB_ptr m_orb;
62  ::PortableServer::POA_ptr m_poa;
63  };
64 };
65 
66 
71 namespace NamingManager
72 {
73  // protected: 関数のテスト用 class NamingManagerMock : public RTC::NamingManager { public: // コンストラクタ NamingManagerMock(RTC::Manager* manager) : RTC::NamingManager(manager) {} virtual ~NamingManagerMock(void) {} // NamingManager::registerMgrName は、protected: の為ここへ定義。 void registerMgrName(const char* name, const RTM::ManagerServant* mgr) { // std::cout << "registerMgrName() in name=" << name << std::endl; RTC::NamingManager::registerMgrName(name, mgr); mgrNames = RTC::NamingManager::m_mgrNames; // std::cout << "registerMgrName() out" << std::endl; } // NamingManager::unregisterMgrName は、protected: の為ここへ定義。 void unregisterMgrName(const char* name) { // std::cout << "unregisterMgrName() in name=" << name << std::endl; RTC::NamingManager::unregisterMgrName(name); mgrNames = RTC::NamingManager::m_mgrNames; // std::cout << "unregisterMgrName() out" << std::endl; } std::vector<RTC::NamingManager::Mgr*> mgrNames; }; class NamingOnCorbaTests : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(NamingOnCorbaTests); CPPUNIT_TEST(test_bindObject_and_unbindObject); CPPUNIT_TEST(test_bindObject_and_unbindObject3); CPPUNIT_TEST_SUITE_END(); private: CORBA::ORB_ptr m_pORB; PortableServer::POA_ptr m_pPOA; private: CosNaming::NamingContext_var getRootContext(const std::string& name_server) { std::string nsName = std::string("corbaloc::") + name_server + std::string("/NameService"); CORBA::Object_var obj = m_pORB->string_to_object(nsName.c_str()); CosNaming::NamingContext_var rootContext = CosNaming::NamingContext::_narrow(obj); if (CORBA::is_nil(rootContext)) { throw std::bad_alloc(); } return rootContext; } public: /*! * @brief Constructor */ NamingOnCorbaTests() { } /*! * @brief Destructor */ virtual ~NamingOnCorbaTests() { } /*! * @brief Test initialization */ virtual void setUp() { int argc(0); char** argv(NULL); m_pORB = CORBA::ORB_init(argc, argv); m_pPOA = PortableServer::POA::_narrow( m_pORB->resolve_initial_references("RootPOA")); m_pPOA->the_POAManager()->activate(); } /*! * @brief Test finalization */ virtual void tearDown() { } /*! * @brief bindObject()メソッドおよびunbindObject()メソッドのテスト * * - オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject() { // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; RTC::NamingOnCorba noc(m_pORB, name_server); // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto); CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef())); // オブジェクトをバインドできるか? noc.bindObject("id.kind", rto); // バインドしたオブジェクトを正しくresolveできるか? CosNaming::NamingContext_var nc = getRootContext(name_server); CosNaming::Name name; name.length(1); name[0].id = "id"; name[0].kind = "kind"; CORBA::Object_ptr obj = nc->resolve(name); CPPUNIT_ASSERT(! CORBA::is_nil(obj)); // バインドしたオブジェクトをアンバインドできるか? noc.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? try { nc->resolve(name); CPPUNIT_FAIL("Exception not thrown."); } catch (CosNaming::NamingContext::NotFound expected) {} objMgr.deactivate(rto); rto->finalize(); delete rto; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject3() { // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; RTC::NamingOnCorba noc(m_pORB, name_server); // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // オブジェクトをバインドできるか? noc.bindObject("id.kind", mgrs); // バインドしたオブジェクトを正しくresolveできるか? CosNaming::NamingContext_var nc = getRootContext(name_server); CosNaming::Name name; name.length(1); name[0].id = "id"; name[0].kind = "kind"; CORBA::Object_ptr obj = nc->resolve(name); //CPPUNIT_ASSERT(! CORBA::is_nil(obj)); // バインドしたオブジェクトをアンバインドできるか? noc.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? try { nc->resolve(name); CPPUNIT_FAIL("Exception not thrown."); } catch (CosNaming::NamingContext::NotFound expected) {} objMgr.deactivate(mgrs); delete mgrs; } }; class NamingManagerTests : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(NamingManagerTests); CPPUNIT_TEST(test_registerMgrName_and_unregisterMgrName); CPPUNIT_TEST(test_bindObject_and_unbindObject2); CPPUNIT_TEST(test_bindObject_and_unbindObject); CPPUNIT_TEST(test_unbindAll); CPPUNIT_TEST(test_getObjects); CPPUNIT_TEST(test_update); CPPUNIT_TEST_SUITE_END(); private: RTC::Manager* m_mgr; CORBA::ORB_ptr m_pORB; PortableServer::POA_ptr m_pPOA; private: CosNaming::NamingContext_var getRootContext(const std::string& name_server) { std::string nsName = std::string("corbaloc::") + name_server + std::string("/NameService"); CORBA::Object_var obj = m_mgr->getORB()->string_to_object(nsName.c_str()); CosNaming::NamingContext_var rootContext = CosNaming::NamingContext::_narrow(obj); if (CORBA::is_nil(rootContext)) { throw std::bad_alloc(); } return rootContext; } bool canResolve(const char* name_server, const char* id, const char* kind) { CosNaming::NamingContext_var nc = getRootContext(name_server); CosNaming::Name name; name.length(1); name[0].id = id; name[0].kind = kind; CORBA::Object_ptr obj; try { obj = nc->resolve(name); } catch (CosNaming::NamingContext::NotFound e) { return false; } return !CORBA::is_nil(obj); } public: /*! * @brief Constructor */ NamingManagerTests() { } /*! * @brief Destructor */ virtual ~NamingManagerTests() { } /*! * @brief Test initialization */ virtual void setUp() { m_mgr = RTC::Manager::init(0, NULL); m_pORB = m_mgr->getORB(); m_pPOA = m_mgr->getPOA(); } /*! * @brief Test finalization */ virtual void tearDown() { } /*! * @brief registerNameServer()メソッドのテスト */ void test_registerNameServer() { // test_bindObject_and_unbindObjectで使用しているので省略 } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto); CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", rto); CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(rto); rto->finalize(); delete rto; } /*! * @brief unbindAll()メソッドのテスト * * - バインドされているすべてのオブジェクトを正常にアンバインドできるか? */ void test_unbindAll() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto1 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto1); CPPUNIT_ASSERT(! CORBA::is_nil(rto1->getObjRef())); RTC::RTObject_impl* rto2 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto2); CPPUNIT_ASSERT(! CORBA::is_nil(rto2->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトを2つバインドしておく nmgr.bindObject("id1.kind1", rto1); CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1")); nmgr.bindObject("id2.kind2", rto2); CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2")); // unbindAll()を行う nmgr.unbindAll(); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id1", "kind1")); CPPUNIT_ASSERT(! canResolve(name_server, "id2", "kind2")); objMgr.deactivate(rto2); objMgr.deactivate(rto1); rto2->finalize(); delete rto2; rto1->finalize(); delete rto1; } /*! * @brief getObjects()メソッドのテスト * * - バインドされているすべてのオブジェクトを正しく取得できるか? */ void test_getObjects() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto1 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto1); CPPUNIT_ASSERT(! CORBA::is_nil(rto1->getObjRef())); RTC::RTObject_impl* rto2 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto2); CPPUNIT_ASSERT(! CORBA::is_nil(rto2->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトを2つバインドしておく nmgr.bindObject("id1.kind1", rto1); CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1")); nmgr.bindObject("id2.kind2", rto2); CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2")); // getObjects()で、バインドされているすべてのオブジェクトの取得を行う std::vector<RTC::RTObject_impl*> objs = nmgr.getObjects(); CPPUNIT_ASSERT_EQUAL(2, (int) objs.size()); // 取得したオブジェクト群の内容は正しいか? CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto1)); CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto2)); objMgr.deactivate(rto2); objMgr.deactivate(rto1); rto2->finalize(); delete rto2; rto1->finalize(); delete rto1; } /*! * @brief update()メソッドのテスト * * - ネームサービスを登録した後で、かつupdate()呼出の前は、まだネームサービスにバインドされていないことを確認する * - ネームサービスを登録した後で、かつupdate()呼出の後は、ネームサービスに正しくバインドされていることを確認する */ void test_update() { // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; RTC::NamingManager nmgr(m_mgr); // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto); CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef())); // registerNameServer()呼出前にオブジェクトを登録した場合、 // この時点では、まだネームサービスにバインドされていないはず nmgr.bindObject("id.kind", rto); // Cannot do bind because it is not registered. CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); // ネームサービスを登録した後で、かつupdate()呼出の前は、 // やはり、まだネームサービスにバインドされていないはず nmgr.registerNameServer("corba", name_server); // Only registered. CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); // update()呼出後は、正しくネームサービスにバインドされているか? // m_mgr->getConfig()["naming.update.rebind"] = "NO"; nmgr.update(); CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); m_mgr->getConfig()["naming.update.rebind"] = "YES"; nmgr.update(); CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); objMgr.deactivate(rto); rto->finalize(); delete rto; } /*! * @brief registerMgrName()メソッドとunregisterMgrName()メソッドのテスト * * - 引数ManagerServantで、マネージャーサーバントを正しく設定できるか? */ void test_registerMgrName_and_unregisterMgrName() { // サーバント作成 RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs1 = new RTM::ManagerServant(); RTM::ManagerServant* mgrs2 = new RTM::ManagerServant(); RTM::ManagerServant* mgrs3 = new RTM::ManagerServant(); objMgr.activate(mgrs1); objMgr.activate(mgrs2); objMgr.activate(mgrs3); NamingManagerMock nmm(m_mgr); // マネージャーサーバントの設定 nmm.registerMgrName("id.kind", mgrs1); // 初回設定 // 初回設定が登録されているか? bool bret(false); for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs1) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id.kind", mgrs2); // 上書設定 // 上書設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs2) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id2.kind2", mgrs3); // 追加設定 // 追加設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } } CPPUNIT_ASSERT(bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
75  {
76  public:
77  // コンストラクタ
79  : RTC::NamingManager(manager) {}
80  virtual ~NamingManagerMock(void) {}
81 
82  // NamingManager::registerMgrName は、protected: の為ここへ定義。
83  void registerMgrName(const char* name,
84  const RTM::ManagerServant* mgr)
85  {
86 // std::cout << "registerMgrName() in name=" << name << std::endl;
89 // std::cout << "registerMgrName() out" << std::endl;
90  }
91 
92  // NamingManager::unregisterMgrName は、protected: の為ここへ定義。
93  void unregisterMgrName(const char* name)
94  {
95 // std::cout << "unregisterMgrName() in name=" << name << std::endl;
98 // std::cout << "unregisterMgrName() out" << std::endl;
99  }
100 
101  std::vector<RTC::NamingManager::Mgr*> mgrNames;
102  };
103 
105  : public CppUnit::TestFixture
106  {
107  CPPUNIT_TEST_SUITE(NamingOnCorbaTests);
108 
109  CPPUNIT_TEST(test_bindObject_and_unbindObject);
110  CPPUNIT_TEST(test_bindObject_and_unbindObject3);
111 
112  CPPUNIT_TEST_SUITE_END();
113 
114  private:
115  CORBA::ORB_ptr m_pORB;
116  PortableServer::POA_ptr m_pPOA;
117 
118  private:
119  CosNaming::NamingContext_var getRootContext(const std::string& name_server)
120  {
121  std::string nsName
122  = std::string("corbaloc::")
123  + name_server
124  + std::string("/NameService");
125 
126  CORBA::Object_var obj = m_pORB->string_to_object(nsName.c_str());
127  CosNaming::NamingContext_var rootContext = CosNaming::NamingContext::_narrow(obj);
128  if (CORBA::is_nil(rootContext))
129  {
130  throw std::bad_alloc();
131  }
132 
133  return rootContext;
134  }
135 
136  public:
141  {
142  }
143 
148  {
149  }
150 
154  virtual void setUp()
155  {
156  int argc(0);
157  char** argv(NULL);
158 
159  m_pORB = CORBA::ORB_init(argc, argv);
160  m_pPOA = PortableServer::POA::_narrow(
161  m_pORB->resolve_initial_references("RootPOA"));
162  m_pPOA->the_POAManager()->activate();
163  }
164 
168  virtual void tearDown()
169  {
170  }
171 
179  {
180 // const char* name_server = "localhost:9876";
181  const char* name_server = "localhost:2809";
182  RTC::NamingOnCorba noc(m_pORB, name_server);
183 
184  // バインドするオブジェクトを作成しておく
185  RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA);
186  RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA);
187  objMgr.activate(rto);
188  CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef()));
189 
190  // オブジェクトをバインドできるか?
191  noc.bindObject("id.kind", rto);
192 
193  // バインドしたオブジェクトを正しくresolveできるか?
194  CosNaming::NamingContext_var nc = getRootContext(name_server);
195  CosNaming::Name name;
196  name.length(1);
197  name[0].id = "id";
198  name[0].kind = "kind";
199  CORBA::Object_ptr obj = nc->resolve(name);
200  CPPUNIT_ASSERT(! CORBA::is_nil(obj));
201 
202  // バインドしたオブジェクトをアンバインドできるか?
203  noc.unbindObject("id.kind");
204 
205  // アンバインドしたオブジェクトのresolveが意図どおり失敗するか?
206  try
207  {
208  nc->resolve(name);
209  CPPUNIT_FAIL("Exception not thrown.");
210  }
211  catch (CosNaming::NamingContext::NotFound expected) {}
212  objMgr.deactivate(rto);
213 
214  rto->finalize();
215  delete rto;
216  }
217 
225  {
226 // const char* name_server = "localhost:9876";
227  const char* name_server = "localhost:2809";
228  RTC::NamingOnCorba noc(m_pORB, name_server);
229 
230  // バインドするオブジェクトを作成しておく
231  RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA);
233  objMgr.activate(mgrs);
234  //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef()));
235 
236  // オブジェクトをバインドできるか?
237  noc.bindObject("id.kind", mgrs);
238 
239  // バインドしたオブジェクトを正しくresolveできるか?
240  CosNaming::NamingContext_var nc = getRootContext(name_server);
241  CosNaming::Name name;
242  name.length(1);
243  name[0].id = "id";
244  name[0].kind = "kind";
245  CORBA::Object_ptr obj = nc->resolve(name);
246  //CPPUNIT_ASSERT(! CORBA::is_nil(obj));
247 
248  // バインドしたオブジェクトをアンバインドできるか?
249  noc.unbindObject("id.kind");
250 
251  // アンバインドしたオブジェクトのresolveが意図どおり失敗するか?
252  try
253  {
254  nc->resolve(name);
255  CPPUNIT_FAIL("Exception not thrown.");
256  }
257  catch (CosNaming::NamingContext::NotFound expected) {}
258  objMgr.deactivate(mgrs);
259 
260  delete mgrs;
261  }
262 
263  };
264 
266  : public CppUnit::TestFixture
267  {
268  CPPUNIT_TEST_SUITE(NamingManagerTests);
269 
270  CPPUNIT_TEST(test_registerMgrName_and_unregisterMgrName);
271  CPPUNIT_TEST(test_bindObject_and_unbindObject2);
272  CPPUNIT_TEST(test_bindObject_and_unbindObject);
273  CPPUNIT_TEST(test_unbindAll);
274  CPPUNIT_TEST(test_getObjects);
275  CPPUNIT_TEST(test_update);
276 
277  CPPUNIT_TEST_SUITE_END();
278 
279  private:
281  CORBA::ORB_ptr m_pORB;
282  PortableServer::POA_ptr m_pPOA;
283 
284  private:
285  CosNaming::NamingContext_var getRootContext(const std::string& name_server)
286  {
287  std::string nsName
288  = std::string("corbaloc::")
289  + name_server
290  + std::string("/NameService");
291 
292  CORBA::Object_var obj = m_mgr->getORB()->string_to_object(nsName.c_str());
293  CosNaming::NamingContext_var rootContext = CosNaming::NamingContext::_narrow(obj);
294  if (CORBA::is_nil(rootContext))
295  {
296  throw std::bad_alloc();
297  }
298 
299  return rootContext;
300  }
301 
302  bool canResolve(const char* name_server, const char* id, const char* kind)
303  {
304  CosNaming::NamingContext_var nc = getRootContext(name_server);
305 
306  CosNaming::Name name;
307  name.length(1);
308  name[0].id = id;
309  name[0].kind = kind;
310 
311  CORBA::Object_ptr obj;
312  try
313  {
314  obj = nc->resolve(name);
315  }
316  catch (CosNaming::NamingContext::NotFound e)
317  {
318  return false;
319  }
320 
321  return !CORBA::is_nil(obj);
322  }
323 
324  public:
329  {
330  }
331 
336  {
337  }
338 
342  virtual void setUp()
343  {
344  m_mgr = RTC::Manager::init(0, NULL);
345  m_pORB = m_mgr->getORB();
346  m_pPOA = m_mgr->getPOA();
347  }
348 
352  virtual void tearDown()
353  {
354  }
355 
360  {
361  // test_bindObject_and_unbindObjectで使用しているので省略
362  }
363 
371  {
372  // バインドするオブジェクトを作成しておく
373  RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA);
374 
375  RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA);
376  objMgr.activate(rto);
377  CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef()));
378 
379  // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", rto); CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(rto); rto->finalize(); delete rto; } /*! * @brief unbindAll()メソッドのテスト * * - バインドされているすべてのオブジェクトを正常にアンバインドできるか? */ void test_unbindAll() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto1 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto1); CPPUNIT_ASSERT(! CORBA::is_nil(rto1->getObjRef())); RTC::RTObject_impl* rto2 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto2); CPPUNIT_ASSERT(! CORBA::is_nil(rto2->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトを2つバインドしておく nmgr.bindObject("id1.kind1", rto1); CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1")); nmgr.bindObject("id2.kind2", rto2); CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2")); // unbindAll()を行う nmgr.unbindAll(); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id1", "kind1")); CPPUNIT_ASSERT(! canResolve(name_server, "id2", "kind2")); objMgr.deactivate(rto2); objMgr.deactivate(rto1); rto2->finalize(); delete rto2; rto1->finalize(); delete rto1; } /*! * @brief getObjects()メソッドのテスト * * - バインドされているすべてのオブジェクトを正しく取得できるか? */ void test_getObjects() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto1 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto1); CPPUNIT_ASSERT(! CORBA::is_nil(rto1->getObjRef())); RTC::RTObject_impl* rto2 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto2); CPPUNIT_ASSERT(! CORBA::is_nil(rto2->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトを2つバインドしておく nmgr.bindObject("id1.kind1", rto1); CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1")); nmgr.bindObject("id2.kind2", rto2); CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2")); // getObjects()で、バインドされているすべてのオブジェクトの取得を行う std::vector<RTC::RTObject_impl*> objs = nmgr.getObjects(); CPPUNIT_ASSERT_EQUAL(2, (int) objs.size()); // 取得したオブジェクト群の内容は正しいか? CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto1)); CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto2)); objMgr.deactivate(rto2); objMgr.deactivate(rto1); rto2->finalize(); delete rto2; rto1->finalize(); delete rto1; } /*! * @brief update()メソッドのテスト * * - ネームサービスを登録した後で、かつupdate()呼出の前は、まだネームサービスにバインドされていないことを確認する * - ネームサービスを登録した後で、かつupdate()呼出の後は、ネームサービスに正しくバインドされていることを確認する */ void test_update() { // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; RTC::NamingManager nmgr(m_mgr); // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto); CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef())); // registerNameServer()呼出前にオブジェクトを登録した場合、 // この時点では、まだネームサービスにバインドされていないはず nmgr.bindObject("id.kind", rto); // Cannot do bind because it is not registered. CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); // ネームサービスを登録した後で、かつupdate()呼出の前は、 // やはり、まだネームサービスにバインドされていないはず nmgr.registerNameServer("corba", name_server); // Only registered. CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); // update()呼出後は、正しくネームサービスにバインドされているか? // m_mgr->getConfig()["naming.update.rebind"] = "NO"; nmgr.update(); CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); m_mgr->getConfig()["naming.update.rebind"] = "YES"; nmgr.update(); CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); objMgr.deactivate(rto); rto->finalize(); delete rto; } /*! * @brief registerMgrName()メソッドとunregisterMgrName()メソッドのテスト * * - 引数ManagerServantで、マネージャーサーバントを正しく設定できるか? */ void test_registerMgrName_and_unregisterMgrName() { // サーバント作成 RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs1 = new RTM::ManagerServant(); RTM::ManagerServant* mgrs2 = new RTM::ManagerServant(); RTM::ManagerServant* mgrs3 = new RTM::ManagerServant(); objMgr.activate(mgrs1); objMgr.activate(mgrs2); objMgr.activate(mgrs3); NamingManagerMock nmm(m_mgr); // マネージャーサーバントの設定 nmm.registerMgrName("id.kind", mgrs1); // 初回設定 // 初回設定が登録されているか? bool bret(false); for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs1) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id.kind", mgrs2); // 上書設定 // 上書設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs2) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id2.kind2", mgrs3); // 追加設定 // 追加設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } } CPPUNIT_ASSERT(bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
380  RTC::NamingManager nmgr(m_mgr);
381 // const char* name_server = "localhost:9876";
382  const char* name_server = "localhost:2809";
383  nmgr.registerNameServer("corba", name_server);
384 
385  // オブジェクトをバインドできるか?
386  nmgr.bindObject("id.kind", rto);
387  CPPUNIT_ASSERT(canResolve(name_server, "id", "kind"));
388 
389  // バインドしたオブジェクトをアンバインドできるか?
390  nmgr.unbindObject("id.kind");
391 
392  // アンバインドしたオブジェクトのresolveが意図どおり失敗するか?
393  CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind"));
394  objMgr.deactivate(rto);
395 
396  rto->finalize();
397  delete rto;
398  }
399 
406  {
407  // バインドするオブジェクトを作成しておく
408  RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA);
409 
410  RTC::RTObject_impl* rto1 = new RTC::RTObject_impl(m_pORB, m_pPOA);
411  objMgr.activate(rto1);
412  CPPUNIT_ASSERT(! CORBA::is_nil(rto1->getObjRef()));
413 
414  RTC::RTObject_impl* rto2 = new RTC::RTObject_impl(m_pORB, m_pPOA);
415  objMgr.activate(rto2);
416  CPPUNIT_ASSERT(! CORBA::is_nil(rto2->getObjRef()));
417 
418  // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトを2つバインドしておく nmgr.bindObject("id1.kind1", rto1); CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1")); nmgr.bindObject("id2.kind2", rto2); CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2")); // unbindAll()を行う nmgr.unbindAll(); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id1", "kind1")); CPPUNIT_ASSERT(! canResolve(name_server, "id2", "kind2")); objMgr.deactivate(rto2); objMgr.deactivate(rto1); rto2->finalize(); delete rto2; rto1->finalize(); delete rto1; } /*! * @brief getObjects()メソッドのテスト * * - バインドされているすべてのオブジェクトを正しく取得できるか? */ void test_getObjects() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto1 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto1); CPPUNIT_ASSERT(! CORBA::is_nil(rto1->getObjRef())); RTC::RTObject_impl* rto2 = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto2); CPPUNIT_ASSERT(! CORBA::is_nil(rto2->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトを2つバインドしておく nmgr.bindObject("id1.kind1", rto1); CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1")); nmgr.bindObject("id2.kind2", rto2); CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2")); // getObjects()で、バインドされているすべてのオブジェクトの取得を行う std::vector<RTC::RTObject_impl*> objs = nmgr.getObjects(); CPPUNIT_ASSERT_EQUAL(2, (int) objs.size()); // 取得したオブジェクト群の内容は正しいか? CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto1)); CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto2)); objMgr.deactivate(rto2); objMgr.deactivate(rto1); rto2->finalize(); delete rto2; rto1->finalize(); delete rto1; } /*! * @brief update()メソッドのテスト * * - ネームサービスを登録した後で、かつupdate()呼出の前は、まだネームサービスにバインドされていないことを確認する * - ネームサービスを登録した後で、かつupdate()呼出の後は、ネームサービスに正しくバインドされていることを確認する */ void test_update() { // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; RTC::NamingManager nmgr(m_mgr); // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto); CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef())); // registerNameServer()呼出前にオブジェクトを登録した場合、 // この時点では、まだネームサービスにバインドされていないはず nmgr.bindObject("id.kind", rto); // Cannot do bind because it is not registered. CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); // ネームサービスを登録した後で、かつupdate()呼出の前は、 // やはり、まだネームサービスにバインドされていないはず nmgr.registerNameServer("corba", name_server); // Only registered. CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); // update()呼出後は、正しくネームサービスにバインドされているか? // m_mgr->getConfig()["naming.update.rebind"] = "NO"; nmgr.update(); CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); m_mgr->getConfig()["naming.update.rebind"] = "YES"; nmgr.update(); CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); objMgr.deactivate(rto); rto->finalize(); delete rto; } /*! * @brief registerMgrName()メソッドとunregisterMgrName()メソッドのテスト * * - 引数ManagerServantで、マネージャーサーバントを正しく設定できるか? */ void test_registerMgrName_and_unregisterMgrName() { // サーバント作成 RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs1 = new RTM::ManagerServant(); RTM::ManagerServant* mgrs2 = new RTM::ManagerServant(); RTM::ManagerServant* mgrs3 = new RTM::ManagerServant(); objMgr.activate(mgrs1); objMgr.activate(mgrs2); objMgr.activate(mgrs3); NamingManagerMock nmm(m_mgr); // マネージャーサーバントの設定 nmm.registerMgrName("id.kind", mgrs1); // 初回設定 // 初回設定が登録されているか? bool bret(false); for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs1) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id.kind", mgrs2); // 上書設定 // 上書設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs2) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id2.kind2", mgrs3); // 追加設定 // 追加設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } } CPPUNIT_ASSERT(bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
419  RTC::NamingManager nmgr(m_mgr);
420 // const char* name_server = "localhost:9876";
421  const char* name_server = "localhost:2809";
422  nmgr.registerNameServer("corba", name_server);
423 
424  // オブジェクトを2つバインドしておく
425  nmgr.bindObject("id1.kind1", rto1);
426  CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1"));
427 
428  nmgr.bindObject("id2.kind2", rto2);
429  CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2"));
430 
431  // unbindAll()を行う
432  nmgr.unbindAll();
433 
434  // アンバインドしたオブジェクトのresolveが意図どおり失敗するか?
435  CPPUNIT_ASSERT(! canResolve(name_server, "id1", "kind1"));
436  CPPUNIT_ASSERT(! canResolve(name_server, "id2", "kind2"));
437  objMgr.deactivate(rto2);
438  objMgr.deactivate(rto1);
439 
440  rto2->finalize();
441  delete rto2;
442  rto1->finalize();
443  delete rto1;
444  }
445 
452  {
453  // バインドするオブジェクトを作成しておく
454  RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA);
455 
456  RTC::RTObject_impl* rto1 = new RTC::RTObject_impl(m_pORB, m_pPOA);
457  objMgr.activate(rto1);
458  CPPUNIT_ASSERT(! CORBA::is_nil(rto1->getObjRef()));
459 
460  RTC::RTObject_impl* rto2 = new RTC::RTObject_impl(m_pORB, m_pPOA);
461  objMgr.activate(rto2);
462  CPPUNIT_ASSERT(! CORBA::is_nil(rto2->getObjRef()));
463 
464  // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトを2つバインドしておく nmgr.bindObject("id1.kind1", rto1); CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1")); nmgr.bindObject("id2.kind2", rto2); CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2")); // getObjects()で、バインドされているすべてのオブジェクトの取得を行う std::vector<RTC::RTObject_impl*> objs = nmgr.getObjects(); CPPUNIT_ASSERT_EQUAL(2, (int) objs.size()); // 取得したオブジェクト群の内容は正しいか? CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto1)); CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto2)); objMgr.deactivate(rto2); objMgr.deactivate(rto1); rto2->finalize(); delete rto2; rto1->finalize(); delete rto1; } /*! * @brief update()メソッドのテスト * * - ネームサービスを登録した後で、かつupdate()呼出の前は、まだネームサービスにバインドされていないことを確認する * - ネームサービスを登録した後で、かつupdate()呼出の後は、ネームサービスに正しくバインドされていることを確認する */ void test_update() { // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; RTC::NamingManager nmgr(m_mgr); // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA); objMgr.activate(rto); CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef())); // registerNameServer()呼出前にオブジェクトを登録した場合、 // この時点では、まだネームサービスにバインドされていないはず nmgr.bindObject("id.kind", rto); // Cannot do bind because it is not registered. CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); // ネームサービスを登録した後で、かつupdate()呼出の前は、 // やはり、まだネームサービスにバインドされていないはず nmgr.registerNameServer("corba", name_server); // Only registered. CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); // update()呼出後は、正しくネームサービスにバインドされているか? // m_mgr->getConfig()["naming.update.rebind"] = "NO"; nmgr.update(); CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); m_mgr->getConfig()["naming.update.rebind"] = "YES"; nmgr.update(); CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); objMgr.deactivate(rto); rto->finalize(); delete rto; } /*! * @brief registerMgrName()メソッドとunregisterMgrName()メソッドのテスト * * - 引数ManagerServantで、マネージャーサーバントを正しく設定できるか? */ void test_registerMgrName_and_unregisterMgrName() { // サーバント作成 RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs1 = new RTM::ManagerServant(); RTM::ManagerServant* mgrs2 = new RTM::ManagerServant(); RTM::ManagerServant* mgrs3 = new RTM::ManagerServant(); objMgr.activate(mgrs1); objMgr.activate(mgrs2); objMgr.activate(mgrs3); NamingManagerMock nmm(m_mgr); // マネージャーサーバントの設定 nmm.registerMgrName("id.kind", mgrs1); // 初回設定 // 初回設定が登録されているか? bool bret(false); for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs1) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id.kind", mgrs2); // 上書設定 // 上書設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs2) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id2.kind2", mgrs3); // 追加設定 // 追加設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } } CPPUNIT_ASSERT(bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
465  RTC::NamingManager nmgr(m_mgr);
466 // const char* name_server = "localhost:9876";
467  const char* name_server = "localhost:2809";
468  nmgr.registerNameServer("corba", name_server);
469 
470  // オブジェクトを2つバインドしておく
471  nmgr.bindObject("id1.kind1", rto1);
472  CPPUNIT_ASSERT(canResolve(name_server, "id1", "kind1"));
473 
474  nmgr.bindObject("id2.kind2", rto2);
475  CPPUNIT_ASSERT(canResolve(name_server, "id2", "kind2"));
476 
477  // getObjects()で、バインドされているすべてのオブジェクトの取得を行う
478  std::vector<RTC::RTObject_impl*> objs = nmgr.getObjects();
479  CPPUNIT_ASSERT_EQUAL(2, (int) objs.size());
480 
481  // 取得したオブジェクト群の内容は正しいか?
482  CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto1));
483  CPPUNIT_ASSERT(objs.end() != std::find(objs.begin(), objs.end(), rto2));
484  objMgr.deactivate(rto2);
485  objMgr.deactivate(rto1);
486 
487  rto2->finalize();
488  delete rto2;
489  rto1->finalize();
490  delete rto1;
491  }
492 
499  void test_update()
500  {
501 // const char* name_server = "localhost:9876";
502  const char* name_server = "localhost:2809";
503  RTC::NamingManager nmgr(m_mgr);
504 
505  // バインドするオブジェクトを作成しておく
506  RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA);
507 
508  RTC::RTObject_impl* rto = new RTC::RTObject_impl(m_pORB, m_pPOA);
509  objMgr.activate(rto);
510  CPPUNIT_ASSERT(! CORBA::is_nil(rto->getObjRef()));
511 
512  // registerNameServer()呼出前にオブジェクトを登録した場合、
513  // この時点では、まだネームサービスにバインドされていないはず
514  nmgr.bindObject("id.kind", rto);
515  // Cannot do bind because it is not registered.
516  CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind"));
517 
518  // ネームサービスを登録した後で、かつupdate()呼出の前は、
519  // やはり、まだネームサービスにバインドされていないはず
520  nmgr.registerNameServer("corba", name_server);
521  // Only registered.
522  CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind"));
523 
524  // update()呼出後は、正しくネームサービスにバインドされているか?
525  //
526  m_mgr->getConfig()["naming.update.rebind"] = "NO";
527  nmgr.update();
528  CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind"));
529 
530  m_mgr->getConfig()["naming.update.rebind"] = "YES";
531  nmgr.update();
532  CPPUNIT_ASSERT(canResolve(name_server, "id", "kind"));
533  objMgr.deactivate(rto);
534 
535  rto->finalize();
536  delete rto;
537  }
538 
545  {
546  // サーバント作成
547  RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA);
551  objMgr.activate(mgrs1);
552  objMgr.activate(mgrs2);
553  objMgr.activate(mgrs3);
554  NamingManagerMock nmm(m_mgr);
555 
556  // マネージャーサーバントの設定 nmm.registerMgrName("id.kind", mgrs1); // 初回設定 // 初回設定が登録されているか? bool bret(false); for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs1) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id.kind", mgrs2); // 上書設定 // 上書設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs2) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id2.kind2", mgrs3); // 追加設定 // 追加設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } } CPPUNIT_ASSERT(bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
557  nmm.registerMgrName("id.kind", mgrs1); // 初回設定 // 初回設定が登録されているか? bool bret(false); for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs1) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id.kind", mgrs2); // 上書設定 // 上書設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs2) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id2.kind2", mgrs3); // 追加設定 // 追加設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } } CPPUNIT_ASSERT(bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
558 
559  // 初回設定が登録されているか?
560  bool bret(false);
561  for (int i(0), len(nmm.mgrNames.size()); i < len; ++i)
562  {
563  if (nmm.mgrNames[i]->name == "id.kind")
564  {
565  if (nmm.mgrNames[i]->mgr == mgrs1)
566  {
567  bret = true;
568  }
569  }
570  }
571  CPPUNIT_ASSERT(bret);
572 
573  nmm.registerMgrName("id.kind", mgrs2); // 上書設定 // 上書設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { if (nmm.mgrNames[i]->mgr == mgrs2) { bret = true; } } } CPPUNIT_ASSERT(bret); nmm.registerMgrName("id2.kind2", mgrs3); // 追加設定 // 追加設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } } CPPUNIT_ASSERT(bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
574 
575  // 上書設定が登録されているか?
576  bret = false;
577  for (int i(0), len(nmm.mgrNames.size()); i < len; ++i)
578  {
579  if (nmm.mgrNames[i]->name == "id.kind")
580  {
581  if (nmm.mgrNames[i]->mgr == mgrs2)
582  {
583  bret = true;
584  }
585  }
586  }
587  CPPUNIT_ASSERT(bret);
588 
589  nmm.registerMgrName("id2.kind2", mgrs3); // 追加設定 // 追加設定が登録されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } } CPPUNIT_ASSERT(bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
590 
591  // 追加設定が登録されているか?
592  bret = false;
593  for (int i(0), len(nmm.mgrNames.size()); i < len; ++i)
594  {
595  if (nmm.mgrNames[i]->name == "id2.kind2")
596  {
597  if (nmm.mgrNames[i]->mgr == mgrs3)
598  {
599  bret = true;
600  }
601  }
602  }
603  CPPUNIT_ASSERT(bret);
604 
605  // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id2.kind2"); // 追加設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id2.kind2") { bret = true; } } CPPUNIT_ASSERT(!bret); // 追加設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->mgr == mgrs3) { bret = true; } } CPPUNIT_ASSERT(!bret); // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
606  nmm.unregisterMgrName("id2.kind2");
607 
608  // 追加設定のnameが削除されているか?
609  bret = false;
610  for (int i(0), len(nmm.mgrNames.size()); i < len; ++i)
611  {
612  if (nmm.mgrNames[i]->name == "id2.kind2")
613  {
614  bret = true;
615  }
616  }
617  CPPUNIT_ASSERT(!bret);
618 
619  // 追加設定のmgrが削除されているか?
620  bret = false;
621  for (int i(0), len(nmm.mgrNames.size()); i < len; ++i)
622  {
623  if (nmm.mgrNames[i]->mgr == mgrs3)
624  {
625  bret = true;
626  }
627  }
628  CPPUNIT_ASSERT(!bret);
629 
630  // マネージャーサーバントの設定解除 nmm.unregisterMgrName("id.kind"); // 初回・上書設定のnameが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if (nmm.mgrNames[i]->name == "id.kind") { bret = true; } } CPPUNIT_ASSERT(!bret); // 初回・上書設定のmgrが削除されているか? bret = false; for (int i(0), len(nmm.mgrNames.size()); i < len; ++i) { if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2)) { bret = true; } } CPPUNIT_ASSERT(!bret); objMgr.deactivate(mgrs3); objMgr.deactivate(mgrs2); objMgr.deactivate(mgrs1); delete mgrs3; delete mgrs2; delete mgrs1; } /*! * @brief bindObject()メソッドとunbindObject()メソッドのテスト * * - 引数ManagerServantで、オブジェクトを正しくバインドできるか? * - オブジェクトを正しくアンバインドできるか? */ void test_bindObject_and_unbindObject2() { // バインドするオブジェクトを作成しておく RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA); RTM::ManagerServant* mgrs = new RTM::ManagerServant(); objMgr.activate(mgrs); //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef())); // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
631  nmm.unregisterMgrName("id.kind");
632 
633  // 初回・上書設定のnameが削除されているか?
634  bret = false;
635  for (int i(0), len(nmm.mgrNames.size()); i < len; ++i)
636  {
637  if (nmm.mgrNames[i]->name == "id.kind")
638  {
639  bret = true;
640  }
641  }
642  CPPUNIT_ASSERT(!bret);
643 
644  // 初回・上書設定のmgrが削除されているか?
645  bret = false;
646  for (int i(0), len(nmm.mgrNames.size()); i < len; ++i)
647  {
648  if ((nmm.mgrNames[i]->mgr == mgrs1) || (nmm.mgrNames[i]->mgr == mgrs2))
649  {
650  bret = true;
651  }
652  }
653  CPPUNIT_ASSERT(!bret);
654  objMgr.deactivate(mgrs3);
655  objMgr.deactivate(mgrs2);
656  objMgr.deactivate(mgrs1);
657 
658  delete mgrs3;
659  delete mgrs2;
660  delete mgrs1;
661  }
662 
670  {
671  // バインドするオブジェクトを作成しておく
672  RTC::CorbaObjectManager objMgr(m_pORB, m_pPOA);
673 
675  objMgr.activate(mgrs);
676  //CPPUNIT_ASSERT(! CORBA::is_nil(mgrs->getObjRef()));
677 
678  // NamingManagerを生成する(本来は、Manager内部から取得したいが...) RTC::NamingManager nmgr(m_mgr); // const char* name_server = "localhost:9876"; const char* name_server = "localhost:2809"; nmgr.registerNameServer("corba", name_server); // オブジェクトをバインドできるか? nmgr.bindObject("id.kind", mgrs); //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind")); // バインドしたオブジェクトをアンバインドできるか? nmgr.unbindObject("id.kind"); // アンバインドしたオブジェクトのresolveが意図どおり失敗するか? CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind")); objMgr.deactivate(mgrs); delete mgrs; } }; }; // namespace NamingManager /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests); CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingManagerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // NamingManager_cpp
679  RTC::NamingManager nmgr(m_mgr);
680 // const char* name_server = "localhost:9876";
681  const char* name_server = "localhost:2809";
682  nmgr.registerNameServer("corba", name_server);
683 
684  // オブジェクトをバインドできるか?
685  nmgr.bindObject("id.kind", mgrs);
686  //CPPUNIT_ASSERT(canResolve(name_server, "id", "kind"));
687 
688  // バインドしたオブジェクトをアンバインドできるか?
689  nmgr.unbindObject("id.kind");
690 
691  // アンバインドしたオブジェクトのresolveが意図どおり失敗するか?
692  CPPUNIT_ASSERT(! canResolve(name_server, "id", "kind"));
693  objMgr.deactivate(mgrs);
694 
695  delete mgrs;
696  }
697 
698  };
699 }; // namespace NamingManager
700 
701 /*
702  * Register test suite
703  */
706 
707 #ifdef LOCAL_MAIN
708 int main(int argc, char* argv[])
709 {
710 
711  FORMAT format = TEXT_OUT;
712  int target = 0;
713  std::string xsl;
714  std::string ns;
715  std::string fname;
716  std::ofstream ofs;
717 
718  int i(1);
719  while (i < argc)
720  {
721  std::string arg(argv[i]);
722  std::string next_arg;
723  if (i + 1 < argc) next_arg = argv[i + 1];
724  else next_arg = "";
725 
726  if (arg == "--text") { format = TEXT_OUT; break; }
727  if (arg == "--xml")
728  {
729  if (next_arg == "")
730  {
731  fname = argv[0];
732  fname += ".xml";
733  }
734  else
735  {
736  fname = next_arg;
737  }
738  format = XML_OUT;
739  ofs.open(fname.c_str());
740  }
741  if ( arg == "--compiler" ) { format = COMPILER_OUT; break; }
742  if ( arg == "--cerr" ) { target = 1; break; }
743  if ( arg == "--xsl" )
744  {
745  if (next_arg == "") xsl = "default.xsl";
746  else xsl = next_arg;
747  }
748  if ( arg == "--namespace" )
749  {
750  if (next_arg == "")
751  {
752  std::cerr << "no namespace specified" << std::endl;
753  exit(1);
754  }
755  else
756  {
757  xsl = next_arg;
758  }
759  }
760  ++i;
761  }
762  CppUnit::TextUi::TestRunner runner;
763  if ( ns.empty() )
764  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
765  else
766  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest());
767  CppUnit::Outputter* outputter = 0;
768  std::ostream* stream = target ? &std::cerr : &std::cout;
769  switch ( format )
770  {
771  case TEXT_OUT :
772  outputter = new CppUnit::TextOutputter(&runner.result(),*stream);
773  break;
774  case XML_OUT :
775  std::cout << "XML_OUT" << std::endl;
776  outputter = new CppUnit::XmlOutputter(&runner.result(),
777  ofs, "shift_jis");
778  static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl);
779  break;
780  case COMPILER_OUT :
781  outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream);
782  break;
783  }
784  runner.setOutputter(outputter);
785  runner.run();
786  return 0; // runner.run() ? 0 : 1;
787 }
788 #endif // MAIN
789 #endif // NamingManager_cpp
CosNaming::NamingContext_var getRootContext(const std::string &name_server)
int main(int argc, char **argv)
void test_bindObject_and_unbindObject3()
bindObject()メソッドとunbindObject()メソッドのテスト
void deactivate(::PortableServer::ServantBase *servant)
RT-Component.
NamingManagerMock(RTC::Manager *manager)
CPPUNIT_TEST_SUITE_REGISTRATION(NamingManager::NamingOnCorbaTests)
std::vector< Mgr * > m_mgrNames
ManagerServant list.
virtual void tearDown()
Test finalization.
PortableServer::POA_ptr getPOA()
Get a pointer to RootPOA held by Manager.
Definition: Manager.cpp:845
void test_bindObject_and_unbindObject2()
bindObject()メソッドとunbindObject()メソッドのテスト
Manager CORBA class.
std::vector< RTObject_impl * > getObjects()
Get all bound objects.
RT-Component class.
Definition: RTObject.h:89
void test_bindObject_and_unbindObject()
bindObject()メソッドとunbindObject()メソッドのテスト
Manager class.
Definition: Manager.h:80
void bindObject(const char *name, const RTObject_impl *rtobj)
Bind the specified objects to NamingService.
void registerNameServer(const char *method, const char *name_server)
Regster the NameServer.
CORBA::ORB_ptr getORB()
Get the pointer to ORB.
Definition: Manager.cpp:832
virtual void bindObject(const char *name, const RTObject_impl *rtobj)
Bind the specified CORBA objects to NamingService.
void test_getObjects()
getObjects()メソッドのテスト
void unregisterMgrName(const char *name)
Unregister the ManagerServants that will be registered to NameServer.
void registerMgrName(const char *name, const RTM::ManagerServant *mgr)
Configure the ManagerServants that will be registered to NameServer.
RTComponent manager class.
std::vector< RTC::NamingManager::Mgr * > mgrNames
virtual ReturnCode_t finalize()
[CORBA interface] Finalize the RTC for destruction
Definition: RTObject.cpp:357
::PortableServer::POA_ptr m_poa
void test_update()
update()メソッドのテスト
coil::Properties & getConfig()
Get the manager configuration.
Definition: Manager.h:305
void unregisterMgrName(const char *name)
CORBA::Long find(const CorbaSequence &seq, Functor f)
Return the index of CORBA sequence element that functor matches.
static Manager * init(int argc, char **argv)
Initialize manager.
Definition: Manager.cpp:110
virtual void tearDown()
Test finalization.
void test_bindObject_and_unbindObject()
bindObject()メソッドおよびunbindObject()メソッドのテスト
void test_registerNameServer()
registerNameServer()メソッドのテスト
void test_unbindAll()
unbindAll()メソッドのテスト
bool canResolve(const char *name_server, const char *id, const char *kind)
naming Service helper class
void update()
Update information of NamingServer.
virtual void unbindObject(const char *name)
Unbind the specified CORBA objects from NamingService.
RTComponent header.
bret
7 送受信データ比較
Definition: ConnectTest.py:377
CorbaObjectManager(::CORBA::ORB_ptr orb,::PortableServer::POA_ptr poa)
NamingServer management class for CORBA.
void test_registerMgrName_and_unregisterMgrName()
registerMgrName()メソッドとunregisterMgrName()メソッドのテスト
void registerMgrName(const char *name, const RTM::ManagerServant *mgr)
virtual void setUp()
Test initialization.
void activate(::PortableServer::ServantBase *servant)
virtual void setUp()
Test initialization.
NamingServer management class.
void unbindObject(const char *name)
Unbind the specified objects from NamingService.
RTObject_ptr getObjRef() const
[local interface] Get the object reference
Definition: RTObject.cpp:1483
CosNaming::NamingContext_var getRootContext(const std::string &name_server)
void unbindAll()
Unbind all objects from NamingService.


openrtm_aist
Author(s): Noriaki Ando
autogenerated on Thu Jun 6 2019 19:25:59