2 #include "NamingServiceTest.hxx"
3 #include "Utils_ORB_INIT.hxx"
4 #include "Utils_SINGLETON.hxx"
14 // --- uncomment to have some traces on standard error
15 // (useful only when adding new tests...)
19 #define MYDEVTRACE {std::cerr << __FILE__ << " [" << __LINE__ << "] : ";}
20 #define DEVTRACE(msg) {MYDEVTRACE; std::cerr<<msg<<std::endl<<std::flush;}
26 #define TRACEFILE "/tmp/traceUnitTest.log"
28 // ============================================================================
30 * a basic CORBA object implementation for use with namingService tests
32 // ============================================================================
34 NSTEST_echo_i::NSTEST_echo_i()
39 NSTEST_echo_i::NSTEST_echo_i(CORBA::Long num)
44 NSTEST_echo_i::~NSTEST_echo_i()
48 CORBA::Long NSTEST_echo_i::getId()
53 // ============================================================================
55 * a factory of CORBA objects for use with namingService tests
57 // ============================================================================
59 NSTEST_aFactory_i::NSTEST_aFactory_i()
64 NSTEST_aFactory_i::~NSTEST_aFactory_i()
68 NSTEST::echo_ptr NSTEST_aFactory_i::createInstance()
70 NSTEST_echo_i * anEcho = new NSTEST_echo_i(_num);
72 NSTEST::echo_var anEchoRef = anEcho->_this();
73 return anEchoRef._retn();
76 // ============================================================================
79 * - delete preexisting trace classes if any
81 * Get or initialize the orb
82 * Create a SALOME_NamingService instance
84 // ============================================================================
87 NamingServiceTest::setUp()
89 LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
91 bp1->deleteInstance(bp1);
94 char *theFileName = TRACEFILE;
100 CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
103 // traceFile.open(theFileName, ios::out | ios::trunc);
104 traceFile.open(theFileName, ios::out | ios::app);
105 CPPUNIT_ASSERT(traceFile); // file created empty, then closed
108 bp1 = LocalTraceBufferPool::instance();
111 // --- Get or initialize the orb
114 char* _argv[] = {""};
115 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
116 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
117 _orb = init(_argc , _argv ) ;
119 // --- Create a SALOME_NamingService instance
123 // --- Create an NSTEST::factory
125 CORBA::Object_var obj = _orb->resolve_initial_references("RootPOA");
126 ASSERT(!CORBA::is_nil(obj));
127 _root_poa = PortableServer::POA::_narrow(obj);
128 _pman = _root_poa->the_POAManager();
129 _myFactory = new NSTEST_aFactory_i();
130 _myFactoryId = _root_poa->activate_object(_myFactory);
131 _factoryRef = _myFactory->_this();
136 // ============================================================================
138 * - delete trace classes
140 // ============================================================================
143 NamingServiceTest::tearDown()
146 LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
148 bp1->deleteInstance(bp1);
151 // ============================================================================
153 * Test default constructor: must be followed by a call to init_orb(ORB)
155 // ============================================================================
158 NamingServiceTest::testConstructorDefault()
160 SALOME_NamingService NS;
161 //CPPUNIT_ASSERT_THROW(NS.getIORaddr(),CORBA::Exception);
164 char *root = NS.getIORaddr();
165 CORBA::Object_var obj = _orb->string_to_object(root);
166 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
168 CosNaming::NamingContext_var rootContext =
169 CosNaming::NamingContext::_narrow(obj);
170 CPPUNIT_ASSERT(!CORBA::is_nil(rootContext));
173 // ============================================================================
175 * Test constructor with ORB parameter
177 // ============================================================================
180 NamingServiceTest::testConstructorOrb()
182 SALOME_NamingService NS(_orb);
183 char *root = NS.getIORaddr();
184 CORBA::Object_var obj = _orb->string_to_object(root);
185 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
187 CosNaming::NamingContext_var rootContext =
188 CosNaming::NamingContext::_narrow(obj);
189 CPPUNIT_ASSERT(!CORBA::is_nil(rootContext));
192 // ============================================================================
194 * Test Register and resolve of a single CORBA object with absolute pathname,
195 * without subdirectories
197 // ============================================================================
200 NamingServiceTest::testRegisterResolveAbsNoPath()
202 _NS.Register(_factoryRef,"/nstest_factory");
203 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
204 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
205 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
206 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
209 // ============================================================================
211 * Test Register and resolve of a single CORBA object with relative pathname,
212 * without subdirectories
214 // ============================================================================
217 NamingServiceTest::testRegisterResolveRelativeNoPath()
219 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
220 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
221 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
222 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
224 _NS.Create_Directory("/myContext");
225 _NS.Change_Directory("/myContext");
227 NSTEST::echo_var anEchoRef = myFactory->createInstance();
228 _NS.Register(anEchoRef,"echo_0");
230 obj = _NS.Resolve("echo_0");
231 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
232 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
233 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
234 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef2->getId());
236 obj = _NS.Resolve("/myContext/echo_0");
237 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
238 NSTEST::echo_var anEchoRef3 = NSTEST::echo::_narrow(obj);
239 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef3));
240 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef3->getId());
243 // ============================================================================
245 * Test Register and resolve of a single CORBA object with absolute pathname,
248 // ============================================================================
251 NamingServiceTest::testRegisterResolveAbsWithPath()
253 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
254 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
255 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
256 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
258 NSTEST::echo_var anEchoRef = myFactory->createInstance();
259 _NS.Register(anEchoRef,"/nstest/echo_0");
261 obj = _NS.Resolve("/nstest/echo_0");
262 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
263 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
264 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
265 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRefa->getId());
267 NSTEST::echo_var anEchoRef1 = myFactory->createInstance();
268 _NS.Register(anEchoRef1,"/nstest2/rep2/rep3/echo_1");
269 CPPUNIT_ASSERT(anEchoRef->getId() != anEchoRef1->getId());
271 obj = _NS.Resolve("/nstest2/rep2/rep3/echo_1");
272 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
273 NSTEST::echo_var anEchoRef1a = NSTEST::echo::_narrow(obj);
274 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef1a));
275 CPPUNIT_ASSERT(anEchoRef1->getId() == anEchoRef1a->getId());
277 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
278 _NS.Register(anEchoRef2,"/nstest2/1/2/3/4/echo_1");
280 obj = _NS.Resolve("/nstest2/1/2/3/4/echo_1");
281 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
282 NSTEST::echo_var anEchoRef2a = NSTEST::echo::_narrow(obj);
283 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2a));
284 CPPUNIT_ASSERT(anEchoRef2->getId() == anEchoRef2a->getId());
287 // ============================================================================
289 * Test Register and resolve of a single CORBA object with relative pathname,
291 * Relative Path is changed to the created subdirectory when Register()
293 // ============================================================================
296 NamingServiceTest::testRegisterResolveRelativeWithPath()
298 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
299 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
300 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
301 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
302 _NS.Create_Directory("/myContext");
303 _NS.Change_Directory("/myContext");
305 NSTEST::echo_var anEchoRef = myFactory->createInstance();
306 _NS.Register(anEchoRef,"subdir/echo_0");
308 obj = _NS.Resolve("echo_0");
309 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
310 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
311 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
313 obj = _NS.Resolve("/myContext/subdir/echo_0");
314 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
315 NSTEST::echo_var anEchoRef3 = NSTEST::echo::_narrow(obj);
316 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef3));
317 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef3->getId());
319 _NS.Change_Directory("/myContext");
320 obj = _NS.Resolve("subdir/echo_0");
321 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
322 NSTEST::echo_var anEchoRef4 = NSTEST::echo::_narrow(obj);
323 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef4));
324 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef4->getId());
327 // ============================================================================
329 * Test resolve with a name not known
331 // ============================================================================
334 NamingServiceTest::testResolveBadName()
336 CORBA::Object_var obj = _NS.Resolve("/notRegisteredName");
337 CPPUNIT_ASSERT(CORBA::is_nil(obj));
339 obj = _NS.Resolve("/nstest/notRegisteredName");
340 CPPUNIT_ASSERT(CORBA::is_nil(obj));
342 obj = _NS.Resolve("/unknownPath/notRegisteredName");
343 CPPUNIT_ASSERT(CORBA::is_nil(obj));
345 obj = _NS.Resolve("/anUnknown/ComplicatedPath/notRegisteredName");
346 CPPUNIT_ASSERT(CORBA::is_nil(obj));
349 // ============================================================================
351 * Test resolve with a name not known, with a relative path
353 // ============================================================================
356 NamingServiceTest::testResolveBadNameRelative()
358 _NS.Create_Directory("/myContext");
359 _NS.Change_Directory("/myContext");
361 CORBA::Object_var obj = _NS.Resolve("notRegisteredName");
362 CPPUNIT_ASSERT(CORBA::is_nil(obj));
364 obj = _NS.Resolve("unknownPath/notRegisteredName");
365 CPPUNIT_ASSERT(CORBA::is_nil(obj));
367 obj = _NS.Resolve("anUnknown/ComplicatedPath/notRegisteredName");
368 CPPUNIT_ASSERT(CORBA::is_nil(obj));
371 // ============================================================================
373 * Test register and resolve multiple objects, test resolveFirst.
374 * Register a few objects in /nstestfirst/echo_n where n is the object id.
375 * Resolve all the objects.
376 * ResolveFirst /nstestfirst/echo must give /nstestfirst/echo_i, corresponding
377 * to the first object.
379 // ============================================================================
384 NamingServiceTest::testResolveFirst()
386 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
387 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
388 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
389 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
393 for (int i=0; i<NB_OBJS; i++)
395 NSTEST::echo_var anEchoRef = myFactory->createInstance();
396 ref[i] = anEchoRef->getId();
397 string name = "/nstestfirst/echo_";
399 sprintf(anum,"%d",ref[i]);
401 _NS.Register(anEchoRef,name.c_str());
404 for (int i=0; i<NB_OBJS; i++)
406 string name = "/nstestfirst/echo_";
408 sprintf(anum,"%d",ref[i]);
410 obj = _NS.Resolve(name.c_str());
411 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
412 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
413 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
414 CPPUNIT_ASSERT(anEchoRef->getId() == ref[i]);
417 string name = "/nstestfirst/echo";
418 obj = _NS.ResolveFirst(name.c_str());
419 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
420 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
421 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
422 CPPUNIT_ASSERT(anEchoRef->getId() == ref[0]);
425 // ============================================================================
427 * Test register and resolve multiple objects, test resolveFirst, relative path
428 * Register a few objects in /nstestfirstrel/echo_n where n is the object id.
429 * Resolve all the objects.
430 * ResolveFirst echo with a relative path /nstestfirstrel must give
431 * /nstestfirst/echo_i, corresponding to the first object.
433 // ============================================================================
436 NamingServiceTest::testResolveFirstRelative()
438 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
439 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
440 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
441 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
445 for (int i=0; i<NB_OBJS; i++)
447 NSTEST::echo_var anEchoRef = myFactory->createInstance();
448 ref[i] = anEchoRef->getId();
449 string name = "/nstestfirstrel/echo_";
451 sprintf(anum,"%d",ref[i]);
453 _NS.Register(anEchoRef,name.c_str());
456 for (int i=0; i<NB_OBJS; i++)
458 _NS.Change_Directory("/nstestfirstrel");
459 string name = "echo_";
461 sprintf(anum,"%d",ref[i]);
463 obj = _NS.Resolve(name.c_str());
464 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
465 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
466 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
467 CPPUNIT_ASSERT(anEchoRef->getId() == ref[i]);
470 _NS.Change_Directory("/nstestfirstrel");
471 string name = "echo";
472 obj = _NS.ResolveFirst(name.c_str());
473 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
476 // ============================================================================
478 * Test resolveFirst with unknown name
480 // ============================================================================
483 NamingServiceTest::testResolveFirstUnknown()
485 string name = "/notYeyRegistered";
486 CORBA::Object_var obj= _NS.ResolveFirst(name.c_str());
487 CPPUNIT_ASSERT(CORBA::is_nil(obj));
489 name = "/nstestfirst/notYeyRegistered";
490 obj = _NS.ResolveFirst(name.c_str());
491 CPPUNIT_ASSERT(CORBA::is_nil(obj));
493 name = "/rrr/sss/ttt/notYeyRegistered";
494 obj = _NS.ResolveFirst(name.c_str());
495 CPPUNIT_ASSERT(CORBA::is_nil(obj));
498 // ============================================================================
500 * Test resolveFirst with unknown name, relative Path
502 // ============================================================================
505 NamingServiceTest::testResolveFirstUnknownRelative()
507 _NS.Create_Directory("/myContext");
508 _NS.Change_Directory("/myContext");
510 string name = "RelnotYeyRegistered";
511 CORBA::Object_var obj = _NS.ResolveFirst(name.c_str());
512 CPPUNIT_ASSERT(CORBA::is_nil(obj));
514 name = "Relnstestfirst/notYeyRegistered";
515 obj = _NS.ResolveFirst(name.c_str());
516 CPPUNIT_ASSERT(CORBA::is_nil(obj));
518 name = "Relrrr/sss/ttt/notYeyRegistered";
519 obj = _NS.ResolveFirst(name.c_str());
520 CPPUNIT_ASSERT(CORBA::is_nil(obj));
523 // ============================================================================
525 * Test ResolveComponent works as specified
527 // ============================================================================
530 NamingServiceTest::testResolveComponentOK()
532 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
533 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
534 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
535 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
537 NSTEST::echo_var anEchoRef = myFactory->createInstance();
538 _NS.Register(anEchoRef,
539 "/Containers/theHostName/theContainerName/theComponentName");
541 obj = _NS.ResolveComponent("theHostName",
544 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
545 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
546 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
547 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef->getId());
550 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
551 _NS.Register(anEchoRef2,
552 "/Containers/theHostName/theContainerName_2/theComponentName");
554 obj = _NS.ResolveComponent("theHostName",
558 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
559 NSTEST::echo_var anEchoRefb = NSTEST::echo::_narrow(obj);
560 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefb));
561 CPPUNIT_ASSERT(anEchoRefb->getId() == anEchoRef2->getId());
564 // ============================================================================
566 * Test ResolveComponent gives nil pointer if hostname is not given (empty)
568 // ============================================================================
571 NamingServiceTest::testResolveComponentEmptyHostname()
573 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
574 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
575 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
576 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
578 NSTEST::echo_var anEchoRef = myFactory->createInstance();
579 _NS.Register(anEchoRef,
580 "/Containers/theHostName/theContainerName/theComponentName");
582 obj = _NS.ResolveComponent("",
585 CPPUNIT_ASSERT(CORBA::is_nil(obj));
588 // ============================================================================
590 * Test ResolveComponent gives nil pointer if hostname is unknown
592 // ============================================================================
595 NamingServiceTest::testResolveComponentUnknownHostname()
597 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
598 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
599 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
600 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
602 NSTEST::echo_var anEchoRef = myFactory->createInstance();
603 _NS.Register(anEchoRef,
604 "/Containers/theHostName/theContainerName/theComponentName");
606 obj = _NS.ResolveComponent("anUnknownHostName",
609 CPPUNIT_ASSERT(CORBA::is_nil(obj));
612 // ============================================================================
614 * Test ResolveComponent when containerName is empty.
615 * check bad hostname gives nil pointer.
616 * If componentName registered on a container from hostname, a component
617 * reference is found (the first one).
618 * Else give nil pointer.
620 // ============================================================================
623 NamingServiceTest::testResolveComponentEmptyContainerName()
625 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
626 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
627 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
628 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
630 NSTEST::echo_var anEchoRef = myFactory->createInstance();
631 _NS.Register(anEchoRef,
632 "/Containers/theHostName/theContainerName/theComponentName");
634 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
635 _NS.Register(anEchoRef2,
636 "/Containers/theHostName/aContainerName/aComponentName");
638 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
639 _NS.Register(anEchoRef3,
640 "/Containers/theHostName/otherContainerName/theComponentName");
642 obj = _NS.ResolveComponent("anUnknownHostName",
645 CPPUNIT_ASSERT(CORBA::is_nil(obj));
647 obj = _NS.ResolveComponent("theHostName",
650 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
651 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
652 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
653 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef->getId());
656 // ============================================================================
660 // ============================================================================
663 NamingServiceTest::testResolveComponentUnknownContainerName()
665 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
666 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
667 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
668 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
670 NSTEST::echo_var anEchoRef = myFactory->createInstance();
671 _NS.Register(anEchoRef,
672 "/Containers/theHostName/theContainerName/theComponentName");
674 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
675 _NS.Register(anEchoRef2,
676 "/Containers/theHostName/aContainerName/aComponentName");
678 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
679 _NS.Register(anEchoRef3,
680 "/Containers/theHostName/otherContainerName/theComponentName");
682 obj = _NS.ResolveComponent("theHostName",
683 "anUnknownContainerName",
685 CPPUNIT_ASSERT(CORBA::is_nil(obj));
688 // ============================================================================
692 // ============================================================================
695 NamingServiceTest::testResolveComponentEmptyComponentName()
697 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
698 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
699 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
700 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
702 NSTEST::echo_var anEchoRef = myFactory->createInstance();
703 _NS.Register(anEchoRef,
704 "/Containers/theHostName/theContainerName/theComponentName");
706 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
707 _NS.Register(anEchoRef2,
708 "/Containers/theHostName/EmptyContainerName/");
710 obj = _NS.ResolveComponent("theHostName",
711 "EmptyContainerName",
713 CPPUNIT_ASSERT(CORBA::is_nil(obj));
716 // ============================================================================
720 // ============================================================================
723 NamingServiceTest::testResolveComponentUnknownComponentName()
725 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
726 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
727 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
728 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
730 NSTEST::echo_var anEchoRef = myFactory->createInstance();
731 _NS.Register(anEchoRef,
732 "/Containers/theHostName/theContainerName/theComponentName");
734 obj = _NS.ResolveComponent("theHostName",
736 "anUnknownComponentName");
737 CPPUNIT_ASSERT(CORBA::is_nil(obj));
740 // ============================================================================
742 * Test with a false number nbproc.
743 * A positive number not corresponding to a registered component gives nil ref.
744 * A negative number is not taken into account and may give a non nil ref.
746 // ============================================================================
749 NamingServiceTest::testResolveComponentFalseNbproc()
751 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
752 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
753 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
754 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
756 NSTEST::echo_var anEchoRef = myFactory->createInstance();
757 _NS.Register(anEchoRef,
758 "/Containers/theHostName/theContainerName/theComponentName");
760 obj = _NS.ResolveComponent("theHostName",
764 CPPUNIT_ASSERT(CORBA::is_nil(obj));
766 obj = _NS.ResolveComponent("theHostName",
770 CPPUNIT_ASSERT(! CORBA::is_nil(obj));
773 // ============================================================================
777 // ============================================================================
780 NamingServiceTest::testContainerName()
782 string ref0 = "FactoryServer";
783 string ret = _NS.ContainerName("");
784 CPPUNIT_ASSERT(ret == ref0);
786 ref0 = "MyContainerName";
787 ret = _NS.ContainerName(ref0.c_str());
788 CPPUNIT_ASSERT(ret == ref0);
791 // ============================================================================
795 // ============================================================================
798 NamingServiceTest::testContainerNameParams()
800 Engines::MachineParameters params;
801 params.container_name = "";
802 params.hostname = "";
805 params.cpu_clock = 0;
806 params.nb_proc_per_node = 0;
808 params.isMPI = false;
810 string ref0 = "FactoryServer";
811 string ret = _NS.ContainerName(params);
812 CPPUNIT_ASSERT(ret == ref0);
814 ref0 = "MyContainerName";
815 params.container_name = ref0.c_str();
816 ret = _NS.ContainerName(params);
817 CPPUNIT_ASSERT(ret == ref0);
820 // ============================================================================
824 // ============================================================================
827 NamingServiceTest::testBuildContainerNameForNS()
829 string ref0 = "/Containers/theHostName/theContainerName";
830 string ret = _NS.BuildContainerNameForNS("theContainerName","theHostName");
831 CPPUNIT_ASSERT(ret == ref0);
833 ref0 = "/Containers/theHostName/FactoryServer";
834 ret = _NS.BuildContainerNameForNS("","theHostName");
835 CPPUNIT_ASSERT(ret == ref0);
838 // ============================================================================
842 // ============================================================================
845 NamingServiceTest::testBuildContainerNameForNSParams()
847 Engines::MachineParameters params;
848 params.container_name = "";
849 params.hostname = "";
852 params.cpu_clock = 0;
853 params.nb_proc_per_node = 0;
855 params.isMPI = false;
857 params.container_name = "theContainerName";
858 string ref0 = "/Containers/theHostName/theContainerName";
859 string ret = _NS.BuildContainerNameForNS(params,"theHostName");
860 CPPUNIT_ASSERT(ret == ref0);
862 params.container_name = "";
863 ref0 = "/Containers/theHostName/FactoryServer";
864 ret = _NS.BuildContainerNameForNS(params,"theHostName");
865 CPPUNIT_ASSERT(ret == ref0);
868 // ============================================================================
872 // ============================================================================
875 NamingServiceTest::testFind()
877 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
878 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
879 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
880 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
882 NSTEST::echo_var anEchoRef = myFactory->createInstance();
883 _NS.Register(anEchoRef,
884 "/Containers/theHostName/theContainerName/theComponentName");
886 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
887 _NS.Register(anEchoRef2,
888 "/Containers/theHostName/aContainerName/aComponentName");
890 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
891 _NS.Register(anEchoRef3,
892 "/Containers/theHostName/otherContainerName/theComponentName");
894 NSTEST::echo_var anEchoRef4 = myFactory->createInstance();
895 _NS.Register(anEchoRef4,
896 "/Containers/anHostName/oneContainerName/theComponentName");
898 _NS.Change_Directory("/Containers");
899 int occ= _NS.Find("theComponentName");
900 CPPUNIT_ASSERT(occ >= 3); // see previous tests
902 _NS.Change_Directory("/Containers");
903 occ= _NS.Find("aComponentName");
904 CPPUNIT_ASSERT(occ == 1);
906 _NS.Change_Directory("/Containers");
907 occ= _NS.Find("UnknownCompnentName");
908 CPPUNIT_ASSERT(occ == 0);
911 // ============================================================================
915 // ============================================================================
918 NamingServiceTest::testCreateDirectory()
920 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
921 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
922 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
923 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
925 bool ret = _NS.Create_Directory("/aaa/bbb/ccc/ddd/eee");
928 _NS.Change_Directory("/aaa/bbb/ccc/ddd/eee");
929 NSTEST::echo_var anEchoRef = myFactory->createInstance();
930 int val = anEchoRef->getId();
931 string name = "echo_";
933 sprintf(anum,"%d",val);
935 _NS.Register(anEchoRef,name.c_str());
937 string dirname = "/aaa/bbb/ccc/ddd/eee/";
939 obj = _NS.Resolve(dirname.c_str());
940 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
941 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
942 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
943 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef2->getId());
945 ret = _NS.Create_Directory("/aaa/bbb/ccc/ddd/eee");
948 _NS.Change_Directory("/aaa/bbb");
949 ret = _NS.Create_Directory("cccccc/dddddd/eeeeee");
950 _NS.Register(anEchoRef,"echo_abcde");
953 _NS.Change_Directory("/aaa/bbb/cccccc/dddddd/eeeeee");
954 obj = _NS.Resolve("echo_abcde");
955 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
958 // ============================================================================
962 // ============================================================================
965 NamingServiceTest::testChangeDirectory()
967 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
968 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
969 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
970 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
972 NSTEST::echo_var anEchoRef = myFactory->createInstance();
973 _NS.Register(anEchoRef,
974 "/Containers/theHostName/theContainerName/theComponentName");
976 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
977 _NS.Register(anEchoRef2,
978 "/Containers/theHostName/aContainerName/aComponentName");
980 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
981 _NS.Register(anEchoRef3,
982 "/Containers/theHostName/otherContainerName/theComponentName");
984 NSTEST::echo_var anEchoRef4 = myFactory->createInstance();
985 _NS.Register(anEchoRef4,
986 "/Containers/anHostName/oneContainerName/theComponentName");
988 _NS.Change_Directory("/Containers/theHostName/otherContainerName");
989 obj = _NS.Resolve("theComponentName");
990 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
992 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
993 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
994 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef3->getId());
997 // ============================================================================
1001 // ============================================================================
1004 NamingServiceTest::testCurrentDirectory()
1006 string path = "/aaa/bbb/ccc/ddd/eee";
1007 bool ret = _NS.Create_Directory(path.c_str());
1008 CPPUNIT_ASSERT(ret);
1010 _NS.Change_Directory(path.c_str());
1011 string curdir = _NS.Current_Directory();
1012 CPPUNIT_ASSERT(curdir == path);
1015 // ============================================================================
1019 // ============================================================================
1022 NamingServiceTest::testList()
1024 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1026 _NS.Change_Directory("/Containers");
1030 // ============================================================================
1034 // ============================================================================
1037 NamingServiceTest::testListDirectory()
1039 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1040 _NS.list_directory();
1041 _NS.Change_Directory("/Containers");
1042 _NS.list_directory();
1045 // ============================================================================
1049 // ============================================================================
1052 NamingServiceTest::testListDirectoryRecurs()
1054 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1055 _NS.list_directory_recurs();
1056 _NS.Change_Directory("/Containers");
1057 _NS.list_directory_recurs();
1058 _NS.Change_Directory("/");
1059 _NS.list_directory_recurs();
1063 // ============================================================================
1067 // ============================================================================
1070 NamingServiceTest::testListSubdirs()
1072 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1074 _NS.Change_Directory("/Containers");
1076 _NS.Change_Directory("/");
1079 // ============================================================================
1083 // ============================================================================
1086 NamingServiceTest::testDestroyName()
1088 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
1089 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1090 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
1091 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
1093 string path = "/Containers/theHostName/theContainerName/theComponentName";
1095 NSTEST::echo_var anEchoRef = myFactory->createInstance();
1096 _NS.Register(anEchoRef, path.c_str());
1098 obj=_NS.Resolve(path.c_str());
1099 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1101 _NS.Destroy_Name(path.c_str());
1102 obj=_NS.Resolve(path.c_str());
1103 CPPUNIT_ASSERT(CORBA::is_nil(obj));
1106 // ============================================================================
1110 // ============================================================================
1113 NamingServiceTest::testDestroyDirectory()
1115 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
1116 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1117 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
1118 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
1120 string path = "/Containers/theHostName/theContainerName/theComponentName";
1122 NSTEST::echo_var anEchoRef = myFactory->createInstance();
1123 _NS.Register(anEchoRef, path.c_str());
1125 _NS.Destroy_Directory("/Containers/theHostName/theContainerName");
1126 obj=_NS.Resolve(path.c_str());
1127 CPPUNIT_ASSERT(!CORBA::is_nil(obj)); // directory not empty: not destroyed
1129 _NS.Destroy_Name(path.c_str());
1130 _NS.Destroy_Directory("/Containers/theHostName/theContainerName");
1131 _NS.Change_Directory("/Containers/theHostName");
1135 // ============================================================================
1137 * DestroyFullDirectory is not recursive
1138 * Need Housekeeping of /Containers for further tests !
1140 // ============================================================================
1142 void NamingServiceTest::_destroyDirectoryRecurs(string path)
1144 string current = path;
1146 if (_NS.Change_Directory(path.c_str()))
1148 vector<string> subdirs = _NS.list_subdirs();
1149 for (int i=0; i<subdirs.size(); i++)
1151 string subpath=path + "/" +subdirs[i];
1152 _destroyDirectoryRecurs(subpath);
1154 if (_NS.Change_Directory(path.c_str()))
1156 _NS.Destroy_FullDirectory(path.c_str());
1162 NamingServiceTest::testDestroyFullDirectory()
1164 _NS.Destroy_FullDirectory("/Containers");
1165 CPPUNIT_ASSERT(_NS.Change_Directory("/Containers"));
1166 vector<string> subdirs = _NS.list_subdirs();
1167 CPPUNIT_ASSERT(subdirs.size() >0);
1168 _NS.list_directory_recurs();
1169 string path = "/Containers";
1170 _destroyDirectoryRecurs(path);
1171 CPPUNIT_ASSERT( ! _NS.Change_Directory("/Containers"));
1172 _NS.Change_Directory("/");
1174 _NS.list_directory_recurs();
1177 // ============================================================================
1181 // ============================================================================
1184 NamingServiceTest::testGetIorAddr()
1186 char *root = _NS.getIORaddr();
1187 CORBA::Object_var obj = _orb->string_to_object(root);
1188 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1191 // ============================================================================
1195 // ============================================================================
1198 // NamingServiceTest::()
1200 // CPPUNIT_ASSERT(0);