Salome HOME
PR : merge branch V1_2c dans branche principale pour V1_3_0_b1
[modules/kernel.git] / src / TestContainer / TestContainer.cxx
index 14de77051264d06597819352161b42ffd29c4b5b..9849ce584bc5b451081003726348c614417794d4 100644 (file)
@@ -36,7 +36,10 @@ using namespace std;
 
 #include "SALOME_NamingService.hxx"
 #include "OpUtil.hxx"
-
+# include "Utils_ORB_INIT.hxx"
+# include "Utils_SINGLETON.hxx"
+# include "Utils_SALOME_Exception.hxx"
+# include "Utils_CommException.hxx"
 int main (int argc, char * argv[])
 {
 
@@ -51,9 +54,75 @@ int main (int argc, char * argv[])
       //Engines::Container_var iGenFact = Engines::Container::_narrow(obj);
 
       // Obtain a reference to the root POA
-      CORBA::Object_var obj = orb->resolve_initial_references("RootPOA") ;
-      PortableServer::POA_var poa = PortableServer::POA::_narrow(obj) ;
-    
+      //
+     long TIMESleep = 250000000;
+     int NumberOfTries = 40;
+     int a;
+     timespec ts_req;
+     ts_req.tv_nsec=TIMESleep;
+     ts_req.tv_sec=0;
+     timespec ts_rem;
+     ts_rem.tv_nsec=0;
+     ts_rem.tv_sec=0;
+     CosNaming::NamingContext_var inc;
+     PortableServer::POA_var poa;
+     CORBA::Object_var theObj;
+     CORBA::Object_var obj;
+     CORBA::Object_var object;
+     SALOME_Logger::Logger_var log;
+     SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+     int TEST_CONTAINER=0;
+     const char * Env = getenv("USE_LOGGER"); 
+      int EnvL =0;
+      if ((Env!=NULL) && (strlen(Env)))
+       EnvL=1;
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id=CORBA::string_dup("Logger");    
+     PortableServer::POAManager_var manager; 
+     for (int i = 1; i<=NumberOfTries; i++){
+       if (i!=1) 
+        a=nanosleep(&ts_req,&ts_rem);
+       try{ 
+        obj = orb->resolve_initial_references("RootPOA");
+        if(!CORBA::is_nil(obj))
+          poa = PortableServer::POA::_narrow(obj);
+        if(!CORBA::is_nil(poa))
+          manager = poa->the_POAManager();
+        if(!CORBA::is_nil(orb)) 
+          theObj = orb->resolve_initial_references("NameService");
+        if (!CORBA::is_nil(theObj))
+          inc = CosNaming::NamingContext::_narrow(theObj);
+       }
+       catch( CORBA::COMM_FAILURE& )
+        {
+          MESSAGE( "Test Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+            }
+       if(!CORBA::is_nil(inc)) {
+        MESSAGE( "Test Container: Naming Service was found" )
+          if(EnvL==1){
+            for(int j=1; j<=NumberOfTries; j++){
+              if (j!=1) 
+                a=nanosleep(&ts_req, &ts_rem);
+              try{
+                object = inc->resolve(name);
+              }
+              catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Test Container: Logger Server wasn't found" ) }
+              catch(...){ MESSAGE( "Test Container: Unknown exception" ) }
+              if (!CORBA::is_nil(object))
+                log = SALOME_Logger::Logger::_narrow(object);
+              if (!CORBA::is_nil(log)){
+                MESSAGE( "Test Container: Loger Server was found" )
+                  log->ping();
+                TEST_CONTAINER=1;
+                break;
+                 }
+               }}
+         }
+         if ((TEST_CONTAINER==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+            break;
+             }
+      //
       // Use Name Service to find container
       SALOME_NamingService _NS(orb) ;
       string containerName = "/Containers/" ;