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/ or email : webmaster.salome@opencascade.com
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 anEcho->_remove_ref();
93 return anEchoRef._retn();
96 // ============================================================================
99 * - delete preexisting trace classes if any
100 * - set trace on file
101 * Get or initialize the orb
102 * Create a SALOME_NamingService instance
104 // ============================================================================
107 NamingServiceTest::setUp()
109 LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
111 bp1->deleteInstance(bp1);
114 char *theFileName = TRACEFILE;
120 CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
123 // traceFile.open(theFileName, ios::out | ios::trunc);
124 traceFile.open(theFileName, ios::out | ios::app);
125 CPPUNIT_ASSERT(traceFile); // file created empty, then closed
128 bp1 = LocalTraceBufferPool::instance();
131 // --- Get or initialize the orb
134 char* _argv[] = {""};
135 ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
136 ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
137 _orb = init(_argc , _argv ) ;
139 // --- Create a SALOME_NamingService instance
143 // --- Create an NSTEST::factory
145 CORBA::Object_var obj = _orb->resolve_initial_references("RootPOA");
146 ASSERT(!CORBA::is_nil(obj));
147 _root_poa = PortableServer::POA::_narrow(obj);
148 _pman = _root_poa->the_POAManager();
149 _myFactory = new NSTEST_aFactory_i();
150 _myFactoryId = _root_poa->activate_object(_myFactory);
151 _factoryRef = _myFactory->_this();
153 _myFactory->_remove_ref();
157 // ============================================================================
159 * - delete trace classes
161 // ============================================================================
164 NamingServiceTest::tearDown()
167 LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
169 bp1->deleteInstance(bp1);
172 // ============================================================================
174 * Test default constructor: must be followed by a call to init_orb(ORB)
176 // ============================================================================
179 NamingServiceTest::testConstructorDefault()
181 SALOME_NamingService NS;
182 //CPPUNIT_ASSERT_THROW(NS.getIORaddr(),CORBA::Exception);
185 CORBA::String_var root = NS.getIORaddr();
186 CORBA::Object_var obj = _orb->string_to_object(root);
187 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
189 CosNaming::NamingContext_var rootContext =
190 CosNaming::NamingContext::_narrow(obj);
191 CPPUNIT_ASSERT(!CORBA::is_nil(rootContext));
194 // ============================================================================
196 * Test constructor with ORB parameter
198 // ============================================================================
201 NamingServiceTest::testConstructorOrb()
203 SALOME_NamingService NS(_orb);
204 CORBA::String_var root = NS.getIORaddr();
205 CORBA::Object_var obj = _orb->string_to_object(root);
206 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
208 CosNaming::NamingContext_var rootContext =
209 CosNaming::NamingContext::_narrow(obj);
210 CPPUNIT_ASSERT(!CORBA::is_nil(rootContext));
213 // ============================================================================
215 * Test Register and resolve of a single CORBA object with absolute pathname,
216 * without subdirectories
218 // ============================================================================
221 NamingServiceTest::testRegisterResolveAbsNoPath()
223 _NS.Register(_factoryRef,"/nstest_factory");
224 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
225 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
226 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
227 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
230 // ============================================================================
232 * Test Register and resolve of a single CORBA object with relative pathname,
233 * without subdirectories
235 // ============================================================================
238 NamingServiceTest::testRegisterResolveRelativeNoPath()
240 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
241 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
242 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
243 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
245 _NS.Create_Directory("/myContext");
246 _NS.Change_Directory("/myContext");
248 NSTEST::echo_var anEchoRef = myFactory->createInstance();
249 _NS.Register(anEchoRef,"echo_0");
251 obj = _NS.Resolve("echo_0");
252 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
253 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
254 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
255 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef2->getId());
257 obj = _NS.Resolve("/myContext/echo_0");
258 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
259 NSTEST::echo_var anEchoRef3 = NSTEST::echo::_narrow(obj);
260 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef3));
261 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef3->getId());
264 // ============================================================================
266 * Test Register and resolve of a single CORBA object with absolute pathname,
269 // ============================================================================
272 NamingServiceTest::testRegisterResolveAbsWithPath()
274 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
275 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
276 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
277 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
279 NSTEST::echo_var anEchoRef = myFactory->createInstance();
280 _NS.Register(anEchoRef,"/nstest/echo_0");
282 obj = _NS.Resolve("/nstest/echo_0");
283 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
284 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
285 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
286 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRefa->getId());
288 NSTEST::echo_var anEchoRef1 = myFactory->createInstance();
289 _NS.Register(anEchoRef1,"/nstest2/rep2/rep3/echo_1");
290 CPPUNIT_ASSERT(anEchoRef->getId() != anEchoRef1->getId());
292 obj = _NS.Resolve("/nstest2/rep2/rep3/echo_1");
293 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
294 NSTEST::echo_var anEchoRef1a = NSTEST::echo::_narrow(obj);
295 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef1a));
296 CPPUNIT_ASSERT(anEchoRef1->getId() == anEchoRef1a->getId());
298 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
299 _NS.Register(anEchoRef2,"/nstest2/1/2/3/4/echo_1");
301 obj = _NS.Resolve("/nstest2/1/2/3/4/echo_1");
302 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
303 NSTEST::echo_var anEchoRef2a = NSTEST::echo::_narrow(obj);
304 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2a));
305 CPPUNIT_ASSERT(anEchoRef2->getId() == anEchoRef2a->getId());
308 // ============================================================================
310 * Test Register and resolve of a single CORBA object with relative pathname,
312 * Relative Path is changed to the created subdirectory when Register()
314 // ============================================================================
317 NamingServiceTest::testRegisterResolveRelativeWithPath()
319 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
320 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
321 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
322 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
323 _NS.Create_Directory("/myContext");
324 _NS.Change_Directory("/myContext");
326 NSTEST::echo_var anEchoRef = myFactory->createInstance();
327 _NS.Register(anEchoRef,"subdir/echo_0");
329 obj = _NS.Resolve("echo_0");
330 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
331 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
332 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
334 obj = _NS.Resolve("/myContext/subdir/echo_0");
335 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
336 NSTEST::echo_var anEchoRef3 = NSTEST::echo::_narrow(obj);
337 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef3));
338 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef3->getId());
340 _NS.Change_Directory("/myContext");
341 obj = _NS.Resolve("subdir/echo_0");
342 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
343 NSTEST::echo_var anEchoRef4 = NSTEST::echo::_narrow(obj);
344 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef4));
345 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef4->getId());
348 // ============================================================================
350 * Test resolve with a name not known
352 // ============================================================================
355 NamingServiceTest::testResolveBadName()
357 CORBA::Object_var obj = _NS.Resolve("/notRegisteredName");
358 CPPUNIT_ASSERT(CORBA::is_nil(obj));
360 obj = _NS.Resolve("/nstest/notRegisteredName");
361 CPPUNIT_ASSERT(CORBA::is_nil(obj));
363 obj = _NS.Resolve("/unknownPath/notRegisteredName");
364 CPPUNIT_ASSERT(CORBA::is_nil(obj));
366 obj = _NS.Resolve("/anUnknown/ComplicatedPath/notRegisteredName");
367 CPPUNIT_ASSERT(CORBA::is_nil(obj));
370 // ============================================================================
372 * Test resolve with a name not known, with a relative path
374 // ============================================================================
377 NamingServiceTest::testResolveBadNameRelative()
379 _NS.Create_Directory("/myContext");
380 _NS.Change_Directory("/myContext");
382 CORBA::Object_var obj = _NS.Resolve("notRegisteredName");
383 CPPUNIT_ASSERT(CORBA::is_nil(obj));
385 obj = _NS.Resolve("unknownPath/notRegisteredName");
386 CPPUNIT_ASSERT(CORBA::is_nil(obj));
388 obj = _NS.Resolve("anUnknown/ComplicatedPath/notRegisteredName");
389 CPPUNIT_ASSERT(CORBA::is_nil(obj));
392 // ============================================================================
394 * Test register and resolve multiple objects, test resolveFirst.
395 * Register a few objects in /nstestfirst/echo_n where n is the object id.
396 * Resolve all the objects.
397 * ResolveFirst /nstestfirst/echo must give /nstestfirst/echo_i, corresponding
398 * to the first object.
400 // ============================================================================
405 NamingServiceTest::testResolveFirst()
407 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
408 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
409 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
410 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
414 for (int i=0; i<NB_OBJS; i++)
416 NSTEST::echo_var anEchoRef = myFactory->createInstance();
417 ref[i] = anEchoRef->getId();
418 string name = "/nstestfirst/echo_";
420 sprintf(anum,"%d",ref[i]);
422 _NS.Register(anEchoRef,name.c_str());
425 for (int i=0; i<NB_OBJS; i++)
427 string name = "/nstestfirst/echo_";
429 sprintf(anum,"%d",ref[i]);
431 obj = _NS.Resolve(name.c_str());
432 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
433 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
434 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
435 CPPUNIT_ASSERT(anEchoRef->getId() == ref[i]);
438 string name = "/nstestfirst/echo";
439 obj = _NS.ResolveFirst(name.c_str());
440 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
441 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
442 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
443 CPPUNIT_ASSERT(anEchoRef->getId() == ref[0]);
446 // ============================================================================
448 * Test register and resolve multiple objects, test resolveFirst, relative path
449 * Register a few objects in /nstestfirstrel/echo_n where n is the object id.
450 * Resolve all the objects.
451 * ResolveFirst echo with a relative path /nstestfirstrel must give
452 * /nstestfirst/echo_i, corresponding to the first object.
454 // ============================================================================
457 NamingServiceTest::testResolveFirstRelative()
459 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
460 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
461 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
462 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
466 for (int i=0; i<NB_OBJS; i++)
468 NSTEST::echo_var anEchoRef = myFactory->createInstance();
469 ref[i] = anEchoRef->getId();
470 string name = "/nstestfirstrel/echo_";
472 sprintf(anum,"%d",ref[i]);
474 _NS.Register(anEchoRef,name.c_str());
477 for (int i=0; i<NB_OBJS; i++)
479 _NS.Change_Directory("/nstestfirstrel");
480 string name = "echo_";
482 sprintf(anum,"%d",ref[i]);
484 obj = _NS.Resolve(name.c_str());
485 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
486 NSTEST::echo_var anEchoRef = NSTEST::echo::_narrow(obj);
487 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef));
488 CPPUNIT_ASSERT(anEchoRef->getId() == ref[i]);
491 _NS.Change_Directory("/nstestfirstrel");
492 string name = "echo";
493 obj = _NS.ResolveFirst(name.c_str());
494 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
497 // ============================================================================
499 * Test resolveFirst with unknown name
501 // ============================================================================
504 NamingServiceTest::testResolveFirstUnknown()
506 string name = "/notYeyRegistered";
507 CORBA::Object_var obj= _NS.ResolveFirst(name.c_str());
508 CPPUNIT_ASSERT(CORBA::is_nil(obj));
510 name = "/nstestfirst/notYeyRegistered";
511 obj = _NS.ResolveFirst(name.c_str());
512 CPPUNIT_ASSERT(CORBA::is_nil(obj));
514 name = "/rrr/sss/ttt/notYeyRegistered";
515 obj = _NS.ResolveFirst(name.c_str());
516 CPPUNIT_ASSERT(CORBA::is_nil(obj));
519 // ============================================================================
521 * Test resolveFirst with unknown name, relative Path
523 // ============================================================================
526 NamingServiceTest::testResolveFirstUnknownRelative()
528 _NS.Create_Directory("/myContext");
529 _NS.Change_Directory("/myContext");
531 string name = "RelnotYeyRegistered";
532 CORBA::Object_var obj = _NS.ResolveFirst(name.c_str());
533 CPPUNIT_ASSERT(CORBA::is_nil(obj));
535 name = "Relnstestfirst/notYeyRegistered";
536 obj = _NS.ResolveFirst(name.c_str());
537 CPPUNIT_ASSERT(CORBA::is_nil(obj));
539 name = "Relrrr/sss/ttt/notYeyRegistered";
540 obj = _NS.ResolveFirst(name.c_str());
541 CPPUNIT_ASSERT(CORBA::is_nil(obj));
544 // ============================================================================
546 * Test ResolveComponent works as specified
548 // ============================================================================
551 NamingServiceTest::testResolveComponentOK()
553 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
554 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
555 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
556 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
558 NSTEST::echo_var anEchoRef = myFactory->createInstance();
559 _NS.Register(anEchoRef,
560 "/Containers/theHostName/theContainerName/theComponentName");
562 obj = _NS.ResolveComponent("theHostName",
565 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
566 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
567 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
568 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef->getId());
571 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
572 _NS.Register(anEchoRef2,
573 "/Containers/theHostName/theContainerName_2/theComponentName");
575 obj = _NS.ResolveComponent("theHostName",
579 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
580 NSTEST::echo_var anEchoRefb = NSTEST::echo::_narrow(obj);
581 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefb));
582 CPPUNIT_ASSERT(anEchoRefb->getId() == anEchoRef2->getId());
585 // ============================================================================
587 * Test ResolveComponent gives nil pointer if hostname is not given (empty)
589 // ============================================================================
592 NamingServiceTest::testResolveComponentEmptyHostname()
594 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
595 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
596 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
597 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
599 NSTEST::echo_var anEchoRef = myFactory->createInstance();
600 _NS.Register(anEchoRef,
601 "/Containers/theHostName/theContainerName/theComponentName");
603 obj = _NS.ResolveComponent("",
606 CPPUNIT_ASSERT(CORBA::is_nil(obj));
609 // ============================================================================
611 * Test ResolveComponent gives nil pointer if hostname is unknown
613 // ============================================================================
616 NamingServiceTest::testResolveComponentUnknownHostname()
618 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
619 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
620 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
621 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
623 NSTEST::echo_var anEchoRef = myFactory->createInstance();
624 _NS.Register(anEchoRef,
625 "/Containers/theHostName/theContainerName/theComponentName");
627 obj = _NS.ResolveComponent("anUnknownHostName",
630 CPPUNIT_ASSERT(CORBA::is_nil(obj));
633 // ============================================================================
635 * Test ResolveComponent when containerName is empty.
636 * check bad hostname gives nil pointer.
637 * If componentName registered on a container from hostname, a component
638 * reference is found (the first one).
639 * Else give nil pointer.
641 // ============================================================================
644 NamingServiceTest::testResolveComponentEmptyContainerName()
646 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
647 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
648 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
649 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
651 NSTEST::echo_var anEchoRef = myFactory->createInstance();
652 _NS.Register(anEchoRef,
653 "/Containers/theHostName/theContainerName/theComponentName");
655 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
656 _NS.Register(anEchoRef2,
657 "/Containers/theHostName/aContainerName/aComponentName");
659 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
660 _NS.Register(anEchoRef3,
661 "/Containers/theHostName/otherContainerName/theComponentName");
663 obj = _NS.ResolveComponent("anUnknownHostName",
666 CPPUNIT_ASSERT(CORBA::is_nil(obj));
668 obj = _NS.ResolveComponent("theHostName",
671 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
672 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
673 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
674 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef->getId());
677 // ============================================================================
681 // ============================================================================
684 NamingServiceTest::testResolveComponentUnknownContainerName()
686 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
687 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
688 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
689 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
691 NSTEST::echo_var anEchoRef = myFactory->createInstance();
692 _NS.Register(anEchoRef,
693 "/Containers/theHostName/theContainerName/theComponentName");
695 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
696 _NS.Register(anEchoRef2,
697 "/Containers/theHostName/aContainerName/aComponentName");
699 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
700 _NS.Register(anEchoRef3,
701 "/Containers/theHostName/otherContainerName/theComponentName");
703 obj = _NS.ResolveComponent("theHostName",
704 "anUnknownContainerName",
706 CPPUNIT_ASSERT(CORBA::is_nil(obj));
709 // ============================================================================
713 // ============================================================================
716 NamingServiceTest::testResolveComponentEmptyComponentName()
718 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
719 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
720 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
721 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
723 NSTEST::echo_var anEchoRef = myFactory->createInstance();
724 _NS.Register(anEchoRef,
725 "/Containers/theHostName/theContainerName/theComponentName");
727 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
728 _NS.Register(anEchoRef2,
729 "/Containers/theHostName/EmptyContainerName/");
731 obj = _NS.ResolveComponent("theHostName",
732 "EmptyContainerName",
734 CPPUNIT_ASSERT(CORBA::is_nil(obj));
737 // ============================================================================
741 // ============================================================================
744 NamingServiceTest::testResolveComponentUnknownComponentName()
746 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
747 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
748 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
749 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
751 NSTEST::echo_var anEchoRef = myFactory->createInstance();
752 _NS.Register(anEchoRef,
753 "/Containers/theHostName/theContainerName/theComponentName");
755 obj = _NS.ResolveComponent("theHostName",
757 "anUnknownComponentName");
758 CPPUNIT_ASSERT(CORBA::is_nil(obj));
761 // ============================================================================
763 * Test with a false number nbproc.
764 * A positive number not corresponding to a registered component gives nil ref.
765 * A negative number is not taken into account and may give a non nil ref.
767 // ============================================================================
770 NamingServiceTest::testResolveComponentFalseNbproc()
772 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
773 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
774 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
775 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
777 NSTEST::echo_var anEchoRef = myFactory->createInstance();
778 _NS.Register(anEchoRef,
779 "/Containers/theHostName/theContainerName/theComponentName");
781 obj = _NS.ResolveComponent("theHostName",
785 CPPUNIT_ASSERT(CORBA::is_nil(obj));
787 obj = _NS.ResolveComponent("theHostName",
791 CPPUNIT_ASSERT(! CORBA::is_nil(obj));
794 // ============================================================================
798 // ============================================================================
801 NamingServiceTest::testContainerName()
803 string ref0 = "FactoryServer";
804 string ret = _NS.ContainerName("");
805 CPPUNIT_ASSERT(ret == ref0);
807 ref0 = "MyContainerName";
808 ret = _NS.ContainerName(ref0.c_str());
809 CPPUNIT_ASSERT(ret == ref0);
812 // ============================================================================
816 // ============================================================================
819 NamingServiceTest::testContainerNameParams()
821 Engines::MachineParameters params;
822 params.container_name = "";
823 params.hostname = "";
826 params.cpu_clock = 0;
827 params.nb_proc_per_node = 0;
829 params.isMPI = false;
831 string ref0 = "FactoryServer";
832 string ret = _NS.ContainerName(params);
833 CPPUNIT_ASSERT(ret == ref0);
835 ref0 = "MyContainerName";
836 params.container_name = ref0.c_str();
837 ret = _NS.ContainerName(params);
838 CPPUNIT_ASSERT(ret == ref0);
841 // ============================================================================
845 // ============================================================================
848 NamingServiceTest::testBuildContainerNameForNS()
850 string ref0 = "/Containers/theHostName/theContainerName";
851 string ret = _NS.BuildContainerNameForNS("theContainerName","theHostName");
852 CPPUNIT_ASSERT(ret == ref0);
854 ref0 = "/Containers/theHostName/FactoryServer";
855 ret = _NS.BuildContainerNameForNS("","theHostName");
856 CPPUNIT_ASSERT(ret == ref0);
859 // ============================================================================
863 // ============================================================================
866 NamingServiceTest::testBuildContainerNameForNSParams()
868 Engines::MachineParameters params;
869 params.container_name = "";
870 params.hostname = "";
873 params.cpu_clock = 0;
874 params.nb_proc_per_node = 0;
876 params.isMPI = false;
878 params.container_name = "theContainerName";
879 string ref0 = "/Containers/theHostName/theContainerName";
880 string ret = _NS.BuildContainerNameForNS(params,"theHostName");
881 CPPUNIT_ASSERT(ret == ref0);
883 params.container_name = "";
884 ref0 = "/Containers/theHostName/FactoryServer";
885 ret = _NS.BuildContainerNameForNS(params,"theHostName");
886 CPPUNIT_ASSERT(ret == ref0);
889 // ============================================================================
893 // ============================================================================
896 NamingServiceTest::testFind()
898 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
899 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
900 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
901 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
903 NSTEST::echo_var anEchoRef = myFactory->createInstance();
904 _NS.Register(anEchoRef,
905 "/Containers/theHostName/theContainerName/theComponentName");
907 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
908 _NS.Register(anEchoRef2,
909 "/Containers/theHostName/aContainerName/aComponentName");
911 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
912 _NS.Register(anEchoRef3,
913 "/Containers/theHostName/otherContainerName/theComponentName");
915 NSTEST::echo_var anEchoRef4 = myFactory->createInstance();
916 _NS.Register(anEchoRef4,
917 "/Containers/anHostName/oneContainerName/theComponentName");
919 _NS.Change_Directory("/Containers");
920 int occ= _NS.Find("theComponentName");
921 CPPUNIT_ASSERT(occ >= 3); // see previous tests
923 _NS.Change_Directory("/Containers");
924 occ= _NS.Find("aComponentName");
925 CPPUNIT_ASSERT(occ == 1);
927 _NS.Change_Directory("/Containers");
928 occ= _NS.Find("UnknownCompnentName");
929 CPPUNIT_ASSERT(occ == 0);
932 // ============================================================================
936 // ============================================================================
939 NamingServiceTest::testCreateDirectory()
941 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
942 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
943 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
944 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
946 bool ret = _NS.Create_Directory("/aaa/bbb/ccc/ddd/eee");
949 _NS.Change_Directory("/aaa/bbb/ccc/ddd/eee");
950 NSTEST::echo_var anEchoRef = myFactory->createInstance();
951 int val = anEchoRef->getId();
952 string name = "echo_";
954 sprintf(anum,"%d",val);
956 _NS.Register(anEchoRef,name.c_str());
958 string dirname = "/aaa/bbb/ccc/ddd/eee/";
960 obj = _NS.Resolve(dirname.c_str());
961 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
962 NSTEST::echo_var anEchoRef2 = NSTEST::echo::_narrow(obj);
963 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRef2));
964 CPPUNIT_ASSERT(anEchoRef->getId() == anEchoRef2->getId());
966 ret = _NS.Create_Directory("/aaa/bbb/ccc/ddd/eee");
969 _NS.Change_Directory("/aaa/bbb");
970 ret = _NS.Create_Directory("cccccc/dddddd/eeeeee");
971 _NS.Register(anEchoRef,"echo_abcde");
974 _NS.Change_Directory("/aaa/bbb/cccccc/dddddd/eeeeee");
975 obj = _NS.Resolve("echo_abcde");
976 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
979 // ============================================================================
983 // ============================================================================
986 NamingServiceTest::testChangeDirectory()
988 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
989 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
990 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
991 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
993 NSTEST::echo_var anEchoRef = myFactory->createInstance();
994 _NS.Register(anEchoRef,
995 "/Containers/theHostName/theContainerName/theComponentName");
997 NSTEST::echo_var anEchoRef2 = myFactory->createInstance();
998 _NS.Register(anEchoRef2,
999 "/Containers/theHostName/aContainerName/aComponentName");
1001 NSTEST::echo_var anEchoRef3 = myFactory->createInstance();
1002 _NS.Register(anEchoRef3,
1003 "/Containers/theHostName/otherContainerName/theComponentName");
1005 NSTEST::echo_var anEchoRef4 = myFactory->createInstance();
1006 _NS.Register(anEchoRef4,
1007 "/Containers/anHostName/oneContainerName/theComponentName");
1009 _NS.Change_Directory("/Containers/theHostName/otherContainerName");
1010 obj = _NS.Resolve("theComponentName");
1011 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1013 NSTEST::echo_var anEchoRefa = NSTEST::echo::_narrow(obj);
1014 CPPUNIT_ASSERT(!CORBA::is_nil(anEchoRefa));
1015 CPPUNIT_ASSERT(anEchoRefa->getId() == anEchoRef3->getId());
1018 // ============================================================================
1022 // ============================================================================
1025 NamingServiceTest::testCurrentDirectory()
1027 string path = "/aaa/bbb/ccc/ddd/eee";
1028 bool ret = _NS.Create_Directory(path.c_str());
1029 CPPUNIT_ASSERT(ret);
1031 _NS.Change_Directory(path.c_str());
1032 char* acurdir = _NS.Current_Directory();
1033 string curdir = acurdir;
1035 CPPUNIT_ASSERT(curdir == path);
1038 // ============================================================================
1042 // ============================================================================
1045 NamingServiceTest::testList()
1047 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1049 _NS.Change_Directory("/Containers");
1053 // ============================================================================
1057 // ============================================================================
1060 NamingServiceTest::testListDirectory()
1062 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1063 _NS.list_directory();
1064 _NS.Change_Directory("/Containers");
1065 _NS.list_directory();
1068 // ============================================================================
1072 // ============================================================================
1075 NamingServiceTest::testListDirectoryRecurs()
1077 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1078 _NS.list_directory_recurs();
1079 _NS.Change_Directory("/Containers");
1080 _NS.list_directory_recurs();
1081 _NS.Change_Directory("/");
1082 _NS.list_directory_recurs();
1086 // ============================================================================
1090 // ============================================================================
1093 NamingServiceTest::testListSubdirs()
1095 _NS.Change_Directory("/Containers/theHostName/theContainerName");
1097 _NS.Change_Directory("/Containers");
1099 _NS.Change_Directory("/");
1102 // ============================================================================
1106 // ============================================================================
1109 NamingServiceTest::testDestroyName()
1111 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
1112 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1113 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
1114 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
1116 string path = "/Containers/theHostName/theContainerName/theComponentName";
1118 NSTEST::echo_var anEchoRef = myFactory->createInstance();
1119 _NS.Register(anEchoRef, path.c_str());
1121 obj=_NS.Resolve(path.c_str());
1122 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1124 _NS.Destroy_Name(path.c_str());
1125 obj=_NS.Resolve(path.c_str());
1126 CPPUNIT_ASSERT(CORBA::is_nil(obj));
1129 // ============================================================================
1133 // ============================================================================
1136 NamingServiceTest::testDestroyDirectory()
1138 CORBA::Object_var obj = _NS.Resolve("/nstest_factory");
1139 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1140 NSTEST::aFactory_var myFactory = NSTEST::aFactory::_narrow(obj);
1141 CPPUNIT_ASSERT(!CORBA::is_nil(myFactory));
1143 string path = "/Containers/theHostName/theContainerName/theComponentName";
1145 NSTEST::echo_var anEchoRef = myFactory->createInstance();
1146 _NS.Register(anEchoRef, path.c_str());
1148 _NS.Destroy_Directory("/Containers/theHostName/theContainerName");
1149 obj=_NS.Resolve(path.c_str());
1150 CPPUNIT_ASSERT(!CORBA::is_nil(obj)); // directory not empty: not destroyed
1152 _NS.Destroy_Name(path.c_str());
1153 _NS.Destroy_Directory("/Containers/theHostName/theContainerName");
1154 _NS.Change_Directory("/Containers/theHostName");
1158 // ============================================================================
1160 * DestroyFullDirectory is not recursive
1161 * Need Housekeeping of /Containers for further tests !
1163 // ============================================================================
1165 void NamingServiceTest::_destroyDirectoryRecurs(string path)
1167 string current = path;
1169 if (_NS.Change_Directory(path.c_str()))
1171 vector<string> subdirs = _NS.list_subdirs();
1172 for (int i=0; i<subdirs.size(); i++)
1174 string subpath=path + "/" +subdirs[i];
1175 _destroyDirectoryRecurs(subpath);
1177 if (_NS.Change_Directory(path.c_str()))
1179 _NS.Destroy_FullDirectory(path.c_str());
1185 NamingServiceTest::testDestroyFullDirectory()
1187 _NS.Destroy_FullDirectory("/Containers");
1188 CPPUNIT_ASSERT(_NS.Change_Directory("/Containers"));
1189 vector<string> subdirs = _NS.list_subdirs();
1190 CPPUNIT_ASSERT(subdirs.size() >0);
1191 _NS.list_directory_recurs();
1192 string path = "/Containers";
1193 _destroyDirectoryRecurs(path);
1194 CPPUNIT_ASSERT( ! _NS.Change_Directory("/Containers"));
1195 _NS.Change_Directory("/");
1197 _NS.list_directory_recurs();
1200 // ============================================================================
1204 // ============================================================================
1207 NamingServiceTest::testGetIorAddr()
1209 CORBA::String_var root = _NS.getIORaddr();
1210 CORBA::Object_var obj = _orb->string_to_object(root);
1211 CPPUNIT_ASSERT(!CORBA::is_nil(obj));
1214 // ============================================================================
1218 // ============================================================================
1221 // NamingServiceTest::()
1223 // CPPUNIT_ASSERT(0);