1 // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License.
9 // This library is distributed in the hope that it will be useful
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 // See http://www.salome-platform.org/
21 #include "NamingServiceTest.hxx"
22 #include "Utils_ORB_INIT.hxx"
23 #include "Utils_SINGLETON.hxx"
33 // --- uncomment to have some traces on standard error
34 // (useful only when adding new tests...)
38 #define MYDEVTRACE {std::cerr << __FILE__ << " [" << __LINE__ << "] : ";}
39 #define DEVTRACE(msg) {MYDEVTRACE; std::cerr<<msg<<std::endl<<std::flush;}
45 #define TRACEFILE "/tmp/traceUnitTest.log"
47 // ============================================================================
49 * a basic CORBA object implementation for use with namingService tests
51 // ============================================================================
53 NSTEST_echo_i::NSTEST_echo_i()
58 NSTEST_echo_i::NSTEST_echo_i(CORBA::Long num)
63 NSTEST_echo_i::~NSTEST_echo_i()
67 CORBA::Long NSTEST_echo_i::getId()
72 // ============================================================================
74 * a factory of CORBA objects for use with namingService tests
76 // ============================================================================
78 NSTEST_aFactory_i::NSTEST_aFactory_i()
83 NSTEST_aFactory_i::~NSTEST_aFactory_i()
87 NSTEST::echo_ptr NSTEST_aFactory_i::createInstance()
89 NSTEST_echo_i * anEcho = new NSTEST_echo_i(_num);
91 NSTEST::echo_var anEchoRef = anEcho->_this();
92 return anEchoRef._retn();
95 // ============================================================================
98 * - delete preexisting trace classes if any
100 * Get or initialize the orb
101 * Create a SALOME_NamingService instance
103 // ============================================================================
106 NamingServiceTest::setUp()
108 LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
110 bp1->deleteInstance(bp1);
113 char *theFileName = TRACEFILE;
119 CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
122 // traceFile.open(theFileName, ios::out | ios::trunc);
123 traceFile.open(theFileName, ios::out | ios::app);
124 CPPUNIT_ASSERT(traceFile); // file created empty, then closed
127 bp1 = LocalTraceBufferPool::instance();
130 // --- Get or initialize the orb
133 char* _argv[] = {""};
134 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
135 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
136 _orb = init(_argc , _argv ) ;
138 // --- Create a SALOME_NamingService instance
142 // --- Create an NSTEST::factory
144 CORBA::Object_var obj = _orb->resolve_initial_references("RootPOA");
145 ASSERT(!CORBA::is_nil(obj));
146 _root_poa = PortableServer::POA::_narrow(obj);
147 _pman = _root_poa->the_POAManager();
148 _myFactory = new NSTEST_aFactory_i();
149 _myFactoryId = _root_poa->activate_object(_myFactory);
150 _factoryRef = _myFactory->_this();
155 // ============================================================================
157 * - delete trace classes
159 // ============================================================================
162 NamingServiceTest::tearDown()
165 LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
167 bp1->deleteInstance(bp1);
170 // ============================================================================
172 * Test default constructor: must be followed by a call to init_orb(ORB)
174 // ============================================================================
177 NamingServiceTest::testConstructorDefault()
179 SALOME_NamingService NS;
180 //CPPUNIT_ASSERT_THROW(NS.getIORaddr(),CORBA::Exception);
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 constructor with ORB parameter
196 // ============================================================================
199 NamingServiceTest::testConstructorOrb()
201 SALOME_NamingService NS(_orb);
202 char *root = NS.getIORaddr();
203 CORBA::Object_var obj = _orb->string_to_object(root);
204 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
206 CosNaming::NamingContext_var rootContext =
207 CosNaming::NamingContext::_narrow(obj);
208 CPPUNIT_ASSERT(!CORBA::is_nil(rootContext));
211 // ============================================================================
213 * Test Register and resolve of a single CORBA object with absolute pathname,
214 * without subdirectories
216 // ============================================================================
219 NamingServiceTest::testRegisterResolveAbsNoPath()
221 _NS.Register(_factoryRef,"/nstest_factory");
222 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
223 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
224 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
225 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
228 // ============================================================================
230 * Test Register and resolve of a single CORBA object with relative pathname,
231 * without subdirectories
233 // ============================================================================
236 NamingServiceTest::testRegisterResolveRelativeNoPath()
238 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
239 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
240 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
241 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
243 _NS.Create_Directory("/myContext");
244 _NS.Change_Directory("/myContext");
246 NSTEST::echo_var anEchoRef = myFactory->createInstance();
247 _NS.Register(anEchoRef,"echo_0");
249 obj = _NS.Resolve("echo_0");
250 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
251 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
252 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
253 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef2->getId());
255 obj = _NS.Resolve("/myContext/echo_0");
256 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
257 NSTEST::echo_var anEchoRef3 = NSTEST::echo::_narrow(obj);
258 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef3));
259 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef3->getId());
262 // ============================================================================
264 * Test Register and resolve of a single CORBA object with absolute pathname,
267 // ============================================================================
270 NamingServiceTest::testRegisterResolveAbsWithPath()
272 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
273 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
274 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
275 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
277 NSTEST::echo_var anEchoRef = myFactory->createInstance();
278 _NS.Register(anEchoRef,"/nstest/echo_0");
280 obj = _NS.Resolve("/nstest/echo_0");
281 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
282 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
283 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
284 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRefa->getId());
286 NSTEST::echo_var anEchoRef1 = myFactory->createInstance();
287 _NS.Register(anEchoRef1,"/nstest2/rep2/rep3/echo_1");
288 CPPUNIT_ASSERT(anEchoRef->getId() != anEchoRef1->getId());
290 obj = _NS.Resolve("/nstest2/rep2/rep3/echo_1");
291 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
292 NSTEST::echo_var anEchoRef1a = NSTEST::echo::_narrow(obj);
293 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef1a));
294 CPPUNIT_ASSERT(anEchoRef1->getId() == anEchoRef1a->getId());
296 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
297 _NS.Register(anEchoRef2,"/nstest2/1/2/3/4/echo_1");
299 obj = _NS.Resolve("/nstest2/1/2/3/4/echo_1");
300 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
301 NSTEST::echo_var anEchoRef2a = NSTEST::echo::_narrow(obj);
302 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2a));
303 CPPUNIT_ASSERT(anEchoRef2->getId() == anEchoRef2a->getId());
306 // ============================================================================
308 * Test Register and resolve of a single CORBA object with relative pathname,
310 * Relative Path is changed to the created subdirectory when Register()
312 // ============================================================================
315 NamingServiceTest::testRegisterResolveRelativeWithPath()
317 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
318 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
319 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
320 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
321 _NS.Create_Directory("/myContext");
322 _NS.Change_Directory("/myContext");
324 NSTEST::echo_var anEchoRef = myFactory->createInstance();
325 _NS.Register(anEchoRef,"subdir/echo_0");
327 obj = _NS.Resolve("echo_0");
328 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
329 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
330 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
332 obj = _NS.Resolve("/myContext/subdir/echo_0");
333 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
334 NSTEST::echo_var anEchoRef3 = NSTEST::echo::_narrow(obj);
335 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef3));
336 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef3->getId());
338 _NS.Change_Directory("/myContext");
339 obj = _NS.Resolve("subdir/echo_0");
340 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
341 NSTEST::echo_var anEchoRef4 = NSTEST::echo::_narrow(obj);
342 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef4));
343 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef4->getId());
346 // ============================================================================
348 * Test resolve with a name not known
350 // ============================================================================
353 NamingServiceTest::testResolveBadName()
355 CORBA::Object_var obj = _NS.Resolve("/notRegisteredName");
356 CPPUNIT_ASSERT(CORBA::is_nil(obj));
358 obj = _NS.Resolve("/nstest/notRegisteredName");
359 CPPUNIT_ASSERT(CORBA::is_nil(obj));
361 obj = _NS.Resolve("/unknownPath/notRegisteredName");
362 CPPUNIT_ASSERT(CORBA::is_nil(obj));
364 obj = _NS.Resolve("/anUnknown/ComplicatedPath/notRegisteredName");
365 CPPUNIT_ASSERT(CORBA::is_nil(obj));
368 // ============================================================================
370 * Test resolve with a name not known, with a relative path
372 // ============================================================================
375 NamingServiceTest::testResolveBadNameRelative()
377 _NS.Create_Directory("/myContext");
378 _NS.Change_Directory("/myContext");
380 CORBA::Object_var obj = _NS.Resolve("notRegisteredName");
381 CPPUNIT_ASSERT(CORBA::is_nil(obj));
383 obj = _NS.Resolve("unknownPath/notRegisteredName");
384 CPPUNIT_ASSERT(CORBA::is_nil(obj));
386 obj = _NS.Resolve("anUnknown/ComplicatedPath/notRegisteredName");
387 CPPUNIT_ASSERT(CORBA::is_nil(obj));
390 // ============================================================================
392 * Test register and resolve multiple objects, test resolveFirst.
393 * Register a few objects in /nstestfirst/echo_n where n is the object id.
394 * Resolve all the objects.
395 * ResolveFirst /nstestfirst/echo must give /nstestfirst/echo_i, corresponding
396 * to the first object.
398 // ============================================================================
403 NamingServiceTest::testResolveFirst()
405 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
406 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
407 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
408 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
412 for (int i=0; i<NB_OBJS; i++)
414 NSTEST::echo_var anEchoRef = myFactory->createInstance();
415 ref[i] = anEchoRef->getId();
416 string name = "/nstestfirst/echo_";
418 sprintf(anum,"%d",ref[i]);
420 _NS.Register(anEchoRef,name.c_str());
423 for (int i=0; i<NB_OBJS; i++)
425 string name = "/nstestfirst/echo_";
427 sprintf(anum,"%d",ref[i]);
429 obj = _NS.Resolve(name.c_str());
430 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
431 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
432 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
433 CPPUNIT_ASSERT(anEchoRef->getId() == ref[i]);
436 string name = "/nstestfirst/echo";
437 obj = _NS.ResolveFirst(name.c_str());
438 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
439 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
440 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
441 CPPUNIT_ASSERT(anEchoRef->getId() == ref[0]);
444 // ============================================================================
446 * Test register and resolve multiple objects, test resolveFirst, relative path
447 * Register a few objects in /nstestfirstrel/echo_n where n is the object id.
448 * Resolve all the objects.
449 * ResolveFirst echo with a relative path /nstestfirstrel must give
450 * /nstestfirst/echo_i, corresponding to the first object.
452 // ============================================================================
455 NamingServiceTest::testResolveFirstRelative()
457 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
458 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
459 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
460 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
464 for (int i=0; i<NB_OBJS; i++)
466 NSTEST::echo_var anEchoRef = myFactory->createInstance();
467 ref[i] = anEchoRef->getId();
468 string name = "/nstestfirstrel/echo_";
470 sprintf(anum,"%d",ref[i]);
472 _NS.Register(anEchoRef,name.c_str());
475 for (int i=0; i<NB_OBJS; i++)
477 _NS.Change_Directory("/nstestfirstrel");
478 string name = "echo_";
480 sprintf(anum,"%d",ref[i]);
482 obj = _NS.Resolve(name.c_str());
483 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
484 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
485 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
486 CPPUNIT_ASSERT(anEchoRef->getId() == ref[i]);
489 _NS.Change_Directory("/nstestfirstrel");
490 string name = "echo";
491 obj = _NS.ResolveFirst(name.c_str());
492 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
495 // ============================================================================
497 * Test resolveFirst with unknown name
499 // ============================================================================
502 NamingServiceTest::testResolveFirstUnknown()
504 string name = "/notYeyRegistered";
505 CORBA::Object_var obj= _NS.ResolveFirst(name.c_str());
506 CPPUNIT_ASSERT(CORBA::is_nil(obj));
508 name = "/nstestfirst/notYeyRegistered";
509 obj = _NS.ResolveFirst(name.c_str());
510 CPPUNIT_ASSERT(CORBA::is_nil(obj));
512 name = "/rrr/sss/ttt/notYeyRegistered";
513 obj = _NS.ResolveFirst(name.c_str());
514 CPPUNIT_ASSERT(CORBA::is_nil(obj));
517 // ============================================================================
519 * Test resolveFirst with unknown name, relative Path
521 // ============================================================================
524 NamingServiceTest::testResolveFirstUnknownRelative()
526 _NS.Create_Directory("/myContext");
527 _NS.Change_Directory("/myContext");
529 string name = "RelnotYeyRegistered";
530 CORBA::Object_var obj = _NS.ResolveFirst(name.c_str());
531 CPPUNIT_ASSERT(CORBA::is_nil(obj));
533 name = "Relnstestfirst/notYeyRegistered";
534 obj = _NS.ResolveFirst(name.c_str());
535 CPPUNIT_ASSERT(CORBA::is_nil(obj));
537 name = "Relrrr/sss/ttt/notYeyRegistered";
538 obj = _NS.ResolveFirst(name.c_str());
539 CPPUNIT_ASSERT(CORBA::is_nil(obj));
542 // ============================================================================
544 * Test ResolveComponent works as specified
546 // ============================================================================
549 NamingServiceTest::testResolveComponentOK()
551 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
552 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
553 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
554 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
556 NSTEST::echo_var anEchoRef = myFactory->createInstance();
557 _NS.Register(anEchoRef,
558 "/Containers/theHostName/theContainerName/theComponentName");
560 obj = _NS.ResolveComponent("theHostName",
563 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
564 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
565 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
566 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef->getId());
569 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
570 _NS.Register(anEchoRef2,
571 "/Containers/theHostName/theContainerName_2/theComponentName");
573 obj = _NS.ResolveComponent("theHostName",
577 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
578 NSTEST::echo_var anEchoRefb = NSTEST::echo::_narrow(obj);
579 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefb));
580 CPPUNIT_ASSERT(anEchoRefb->getId() == anEchoRef2->getId());
583 // ============================================================================
585 * Test ResolveComponent gives nil pointer if hostname is not given (empty)
587 // ============================================================================
590 NamingServiceTest::testResolveComponentEmptyHostname()
592 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
593 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
594 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
595 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
597 NSTEST::echo_var anEchoRef = myFactory->createInstance();
598 _NS.Register(anEchoRef,
599 "/Containers/theHostName/theContainerName/theComponentName");
601 obj = _NS.ResolveComponent("",
604 CPPUNIT_ASSERT(CORBA::is_nil(obj));
607 // ============================================================================
609 * Test ResolveComponent gives nil pointer if hostname is unknown
611 // ============================================================================
614 NamingServiceTest::testResolveComponentUnknownHostname()
616 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
617 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
618 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
619 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
621 NSTEST::echo_var anEchoRef = myFactory->createInstance();
622 _NS.Register(anEchoRef,
623 "/Containers/theHostName/theContainerName/theComponentName");
625 obj = _NS.ResolveComponent("anUnknownHostName",
628 CPPUNIT_ASSERT(CORBA::is_nil(obj));
631 // ============================================================================
633 * Test ResolveComponent when containerName is empty.
634 * check bad hostname gives nil pointer.
635 * If componentName registered on a container from hostname, a component
636 * reference is found (the first one).
637 * Else give nil pointer.
639 // ============================================================================
642 NamingServiceTest::testResolveComponentEmptyContainerName()
644 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
645 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
646 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
647 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
649 NSTEST::echo_var anEchoRef = myFactory->createInstance();
650 _NS.Register(anEchoRef,
651 "/Containers/theHostName/theContainerName/theComponentName");
653 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
654 _NS.Register(anEchoRef2,
655 "/Containers/theHostName/aContainerName/aComponentName");
657 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
658 _NS.Register(anEchoRef3,
659 "/Containers/theHostName/otherContainerName/theComponentName");
661 obj = _NS.ResolveComponent("anUnknownHostName",
664 CPPUNIT_ASSERT(CORBA::is_nil(obj));
666 obj = _NS.ResolveComponent("theHostName",
669 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
670 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
671 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
672 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef->getId());
675 // ============================================================================
679 // ============================================================================
682 NamingServiceTest::testResolveComponentUnknownContainerName()
684 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
685 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
686 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
687 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
689 NSTEST::echo_var anEchoRef = myFactory->createInstance();
690 _NS.Register(anEchoRef,
691 "/Containers/theHostName/theContainerName/theComponentName");
693 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
694 _NS.Register(anEchoRef2,
695 "/Containers/theHostName/aContainerName/aComponentName");
697 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
698 _NS.Register(anEchoRef3,
699 "/Containers/theHostName/otherContainerName/theComponentName");
701 obj = _NS.ResolveComponent("theHostName",
702 "anUnknownContainerName",
704 CPPUNIT_ASSERT(CORBA::is_nil(obj));
707 // ============================================================================
711 // ============================================================================
714 NamingServiceTest::testResolveComponentEmptyComponentName()
716 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
717 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
718 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
719 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
721 NSTEST::echo_var anEchoRef = myFactory->createInstance();
722 _NS.Register(anEchoRef,
723 "/Containers/theHostName/theContainerName/theComponentName");
725 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
726 _NS.Register(anEchoRef2,
727 "/Containers/theHostName/EmptyContainerName/");
729 obj = _NS.ResolveComponent("theHostName",
730 "EmptyContainerName",
732 CPPUNIT_ASSERT(CORBA::is_nil(obj));
735 // ============================================================================
739 // ============================================================================
742 NamingServiceTest::testResolveComponentUnknownComponentName()
744 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
745 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
746 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
747 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
749 NSTEST::echo_var anEchoRef = myFactory->createInstance();
750 _NS.Register(anEchoRef,
751 "/Containers/theHostName/theContainerName/theComponentName");
753 obj = _NS.ResolveComponent("theHostName",
755 "anUnknownComponentName");
756 CPPUNIT_ASSERT(CORBA::is_nil(obj));
759 // ============================================================================
761 * Test with a false number nbproc.
762 * A positive number not corresponding to a registered component gives nil ref.
763 * A negative number is not taken into account and may give a non nil ref.
765 // ============================================================================
768 NamingServiceTest::testResolveComponentFalseNbproc()
770 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
771 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
772 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
773 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
775 NSTEST::echo_var anEchoRef = myFactory->createInstance();
776 _NS.Register(anEchoRef,
777 "/Containers/theHostName/theContainerName/theComponentName");
779 obj = _NS.ResolveComponent("theHostName",
783 CPPUNIT_ASSERT(CORBA::is_nil(obj));
785 obj = _NS.ResolveComponent("theHostName",
789 CPPUNIT_ASSERT(! CORBA::is_nil(obj));
792 // ============================================================================
796 // ============================================================================
799 NamingServiceTest::testContainerName()
801 string ref0 = "FactoryServer";
802 string ret = _NS.ContainerName("");
803 CPPUNIT_ASSERT(ret == ref0);
805 ref0 = "MyContainerName";
806 ret = _NS.ContainerName(ref0.c_str());
807 CPPUNIT_ASSERT(ret == ref0);
810 // ============================================================================
814 // ============================================================================
817 NamingServiceTest::testContainerNameParams()
819 Engines::MachineParameters params;
820 params.container_name = "";
821 params.hostname = "";
824 params.cpu_clock = 0;
825 params.nb_proc_per_node = 0;
827 params.isMPI = false;
829 string ref0 = "FactoryServer";
830 string ret = _NS.ContainerName(params);
831 CPPUNIT_ASSERT(ret == ref0);
833 ref0 = "MyContainerName";
834 params.container_name = ref0.c_str();
835 ret = _NS.ContainerName(params);
836 CPPUNIT_ASSERT(ret == ref0);
839 // ============================================================================
843 // ============================================================================
846 NamingServiceTest::testBuildContainerNameForNS()
848 string ref0 = "/Containers/theHostName/theContainerName";
849 string ret = _NS.BuildContainerNameForNS("theContainerName","theHostName");
850 CPPUNIT_ASSERT(ret == ref0);
852 ref0 = "/Containers/theHostName/FactoryServer";
853 ret = _NS.BuildContainerNameForNS("","theHostName");
854 CPPUNIT_ASSERT(ret == ref0);
857 // ============================================================================
861 // ============================================================================
864 NamingServiceTest::testBuildContainerNameForNSParams()
866 Engines::MachineParameters params;
867 params.container_name = "";
868 params.hostname = "";
871 params.cpu_clock = 0;
872 params.nb_proc_per_node = 0;
874 params.isMPI = false;
876 params.container_name = "theContainerName";
877 string ref0 = "/Containers/theHostName/theContainerName";
878 string ret = _NS.BuildContainerNameForNS(params,"theHostName");
879 CPPUNIT_ASSERT(ret == ref0);
881 params.container_name = "";
882 ref0 = "/Containers/theHostName/FactoryServer";
883 ret = _NS.BuildContainerNameForNS(params,"theHostName");
884 CPPUNIT_ASSERT(ret == ref0);
887 // ============================================================================
891 // ============================================================================
894 NamingServiceTest::testFind()
896 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
897 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
898 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
899 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
901 NSTEST::echo_var anEchoRef = myFactory->createInstance();
902 _NS.Register(anEchoRef,
903 "/Containers/theHostName/theContainerName/theComponentName");
905 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
906 _NS.Register(anEchoRef2,
907 "/Containers/theHostName/aContainerName/aComponentName");
909 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
910 _NS.Register(anEchoRef3,
911 "/Containers/theHostName/otherContainerName/theComponentName");
913 NSTEST::echo_var anEchoRef4 = myFactory->createInstance();
914 _NS.Register(anEchoRef4,
915 "/Containers/anHostName/oneContainerName/theComponentName");
917 _NS.Change_Directory("/Containers");
918 int occ= _NS.Find("theComponentName");
919 CPPUNIT_ASSERT(occ >= 3); // see previous tests
921 _NS.Change_Directory("/Containers");
922 occ= _NS.Find("aComponentName");
923 CPPUNIT_ASSERT(occ == 1);
925 _NS.Change_Directory("/Containers");
926 occ= _NS.Find("UnknownCompnentName");
927 CPPUNIT_ASSERT(occ == 0);
930 // ============================================================================
934 // ============================================================================
937 NamingServiceTest::testCreateDirectory()
939 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
940 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
941 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
942 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
944 bool ret = _NS.Create_Directory("/aaa/bbb/ccc/ddd/eee");
947 _NS.Change_Directory("/aaa/bbb/ccc/ddd/eee");
948 NSTEST::echo_var anEchoRef = myFactory->createInstance();
949 int val = anEchoRef->getId();
950 string name = "echo_";
952 sprintf(anum,"%d",val);
954 _NS.Register(anEchoRef,name.c_str());
956 string dirname = "/aaa/bbb/ccc/ddd/eee/";
958 obj = _NS.Resolve(dirname.c_str());
959 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
960 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
961 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
962 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef2->getId());
964 ret = _NS.Create_Directory("/aaa/bbb/ccc/ddd/eee");
967 _NS.Change_Directory("/aaa/bbb");
968 ret = _NS.Create_Directory("cccccc/dddddd/eeeeee");
969 _NS.Register(anEchoRef,"echo_abcde");
972 _NS.Change_Directory("/aaa/bbb/cccccc/dddddd/eeeeee");
973 obj = _NS.Resolve("echo_abcde");
974 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
977 // ============================================================================
981 // ============================================================================
984 NamingServiceTest::testChangeDirectory()
986 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
987 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
988 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
989 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
991 NSTEST::echo_var anEchoRef = myFactory->createInstance();
992 _NS.Register(anEchoRef,
993 "/Containers/theHostName/theContainerName/theComponentName");
995 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
996 _NS.Register(anEchoRef2,
997 "/Containers/theHostName/aContainerName/aComponentName");
999 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
1000 _NS.Register(anEchoRef3,
1001 "/Containers/theHostName/otherContainerName/theComponentName");
1003 NSTEST::echo_var anEchoRef4 = myFactory->createInstance();
1004 _NS.Register(anEchoRef4,
1005 "/Containers/anHostName/oneContainerName/theComponentName");
1007 _NS.Change_Directory("/Containers/theHostName/otherContainerName");
1008 obj = _NS.Resolve("theComponentName");
1009 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1011 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
1012 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
1013 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef3->getId());
1016 // ============================================================================
1020 // ============================================================================
1023 NamingServiceTest::testCurrentDirectory()
1025 string path = "/aaa/bbb/ccc/ddd/eee";
1026 bool ret = _NS.Create_Directory(path.c_str());
1027 CPPUNIT_ASSERT(ret);
1029 _NS.Change_Directory(path.c_str());
1030 string curdir = _NS.Current_Directory();
1031 CPPUNIT_ASSERT(curdir == path);
1034 // ============================================================================
1038 // ============================================================================
1041 NamingServiceTest::testList()
1043 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1045 _NS.Change_Directory("/Containers");
1049 // ============================================================================
1053 // ============================================================================
1056 NamingServiceTest::testListDirectory()
1058 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1059 _NS.list_directory();
1060 _NS.Change_Directory("/Containers");
1061 _NS.list_directory();
1064 // ============================================================================
1068 // ============================================================================
1071 NamingServiceTest::testListDirectoryRecurs()
1073 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1074 _NS.list_directory_recurs();
1075 _NS.Change_Directory("/Containers");
1076 _NS.list_directory_recurs();
1077 _NS.Change_Directory("/");
1078 _NS.list_directory_recurs();
1082 // ============================================================================
1086 // ============================================================================
1089 NamingServiceTest::testListSubdirs()
1091 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1093 _NS.Change_Directory("/Containers");
1095 _NS.Change_Directory("/");
1098 // ============================================================================
1102 // ============================================================================
1105 NamingServiceTest::testDestroyName()
1107 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
1108 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1109 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
1110 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
1112 string path = "/Containers/theHostName/theContainerName/theComponentName";
1114 NSTEST::echo_var anEchoRef = myFactory->createInstance();
1115 _NS.Register(anEchoRef, path.c_str());
1117 obj=_NS.Resolve(path.c_str());
1118 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1120 _NS.Destroy_Name(path.c_str());
1121 obj=_NS.Resolve(path.c_str());
1122 CPPUNIT_ASSERT(CORBA::is_nil(obj));
1125 // ============================================================================
1129 // ============================================================================
1132 NamingServiceTest::testDestroyDirectory()
1134 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
1135 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1136 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
1137 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
1139 string path = "/Containers/theHostName/theContainerName/theComponentName";
1141 NSTEST::echo_var anEchoRef = myFactory->createInstance();
1142 _NS.Register(anEchoRef, path.c_str());
1144 _NS.Destroy_Directory("/Containers/theHostName/theContainerName");
1145 obj=_NS.Resolve(path.c_str());
1146 CPPUNIT_ASSERT(!CORBA::is_nil(obj)); // directory not empty: not destroyed
1148 _NS.Destroy_Name(path.c_str());
1149 _NS.Destroy_Directory("/Containers/theHostName/theContainerName");
1150 _NS.Change_Directory("/Containers/theHostName");
1154 // ============================================================================
1156 * DestroyFullDirectory is not recursive
1157 * Need Housekeeping of /Containers for further tests !
1159 // ============================================================================
1161 void NamingServiceTest::_destroyDirectoryRecurs(string path)
1163 string current = path;
1165 if (_NS.Change_Directory(path.c_str()))
1167 vector<string> subdirs = _NS.list_subdirs();
1168 for (int i=0; i<subdirs.size(); i++)
1170 string subpath=path + "/" +subdirs[i];
1171 _destroyDirectoryRecurs(subpath);
1173 if (_NS.Change_Directory(path.c_str()))
1175 _NS.Destroy_FullDirectory(path.c_str());
1181 NamingServiceTest::testDestroyFullDirectory()
1183 _NS.Destroy_FullDirectory("/Containers");
1184 CPPUNIT_ASSERT(_NS.Change_Directory("/Containers"));
1185 vector<string> subdirs = _NS.list_subdirs();
1186 CPPUNIT_ASSERT(subdirs.size() >0);
1187 _NS.list_directory_recurs();
1188 string path = "/Containers";
1189 _destroyDirectoryRecurs(path);
1190 CPPUNIT_ASSERT( ! _NS.Change_Directory("/Containers"));
1191 _NS.Change_Directory("/");
1193 _NS.list_directory_recurs();
1196 // ============================================================================
1200 // ============================================================================
1203 NamingServiceTest::testGetIorAddr()
1205 char *root = _NS.getIORaddr();
1206 CORBA::Object_var obj = _orb->string_to_object(root);
1207 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1210 // ============================================================================
1214 // ============================================================================
1217 // NamingServiceTest::()
1219 // CPPUNIT_ASSERT(0);