Salome HOME
PR: merge from BR_UnitTests (tag mergeto_trunk_18oct05)
authorprascle <prascle>
Tue, 18 Oct 2005 15:07:13 +0000 (15:07 +0000)
committerprascle <prascle>
Tue, 18 Oct 2005 15:07:13 +0000 (15:07 +0000)
improvement trace when shutdown

bin/addToKillList.py
src/Container/Container_i.cxx
src/Container/SALOME_ContainerManager.cxx
src/LifeCycleCORBA/Test/TestLifeCycleCORBA.py
src/SALOMELocalTrace/FileTraceCollector.cxx
src/SALOMELocalTrace/LocalTraceBufferPool.cxx
src/SALOMELocalTrace/LocalTraceCollector.cxx
src/SALOMETraceCollector/SALOMETraceCollector.cxx

index 7dad20eb1564d50492cc003e97dc2bffab43e4b0..2d26f669871a93420d686db53f9365dcad47de48 100755 (executable)
@@ -1,26 +1,34 @@
 #!/usr/bin/env python
 
-import os, sys, pickle, string
+import os, sys, pickle, string, signal
 
 ########## adds to the kill list of SALOME one more process ##########
-def addToKillList(command_pid, command):
-    command=(command.split(" "))[0]
 
-    my_port = 2809
-    try:
-      file = open(os.environ["OMNIORB_CONFIG"], "r")
-      s = file.read()
-      while len(s):
-        l = string.split(s, ":")
-        if string.split(l[0], " ")[0] == "ORBInitRef" or string.split(l[0], " ")[0] == "InitRef" :
-          my_port = int(l[len(l)-1])
-          pass
-        s = file.read()
+def findFileDict():
+    if os.environ.has_key('NSPORT'):
+        my_port = os.environ['NSPORT']
         pass
-    except:
-       pass
-    #print "myport = ", my_port
-
+    else:
+        my_port = 2809
+        try:
+            file = open(os.environ["OMNIORB_CONFIG"], "r")
+            s = file.read()
+            while len(s):
+                l = string.split(s, ":")
+                if string.split(l[0], " ")[0] == "ORBInitRef" or string.split(l[0], " ")[0] == "InitRef" :
+                    my_port = int(l[len(l)-1])
+                    pass
+                s = file.read()
+                pass
+            pass
+        except:
+            pass
+        pass
+    print "myport = ", my_port
+    return my_port
+    
+def addToKillList(command_pid, command):
+    my_port = findFileDict()
     filedict=os.getenv("HOME")+'/'+os.getenv('USER')+"_"+str(my_port)+'_SALOME_pidict'
     try:
         fpid=open(filedict, 'r')
@@ -37,8 +45,11 @@ def addToKillList(command_pid, command):
             #print "see process %s : %s"% (pid, cmd[0])
            if pid == command_pid:
                already_in=1
+                pass
+            pass
         pass
 
+    command=(command.split(" "))[0]
     if already_in == 0:
         try:
            process_ids.append({command_pid: [command]})
@@ -49,6 +60,34 @@ def addToKillList(command_pid, command):
            print "addToKillList: can not add command %s to the kill list"% filedict
            pass
        pass
+    pass
+
+def killList():
+    my_port = findFileDict()
+    filedict=os.getenv("HOME")+'/'+os.getenv('USER')+"_"+str(my_port)+'_SALOME_pidict'
+    try:
+        fpid=open(filedict, 'r')
+        process_ids=pickle.load(fpid)
+        fpid.close()
+    except:
+        process_ids=[{}]
+        pass
+
+    for process_id in process_ids:
+        print process_id
+        for pid, cmd in process_id.items():
+            print "stop process %s : %s"% (pid, cmd[0])
+            try:
+                os.kill(int(pid),signal.SIGKILL)
+            except:
+                print "  ------------------ process %s : %s inexistant"% (pid, cmd[0])
+                pass
+            pass
+        pass
+    os.remove(filedict)
+    pass
+  
+
 
 if __name__ == "__main__":
     print sys.argv
index 62b58f98a438ba85468db47dba26ec300b076ca5..a893cbf03851b51028f55f91d8d7a8a6a19c1b80 100644 (file)
@@ -262,6 +262,7 @@ void Engines_Container_i::Shutdown()
   //_poa->deactivate_object(*_id);
   if(_isServantAloneInProcess)
     {
+      MESSAGE("Effective Shutdown of container Begins...");
       LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
       bp1->deleteInstance(bp1);
       _orb->shutdown(0);
index de43d8696ac1fc84cf34466a64fe9e0f43c16375..b7a3c708e1c68133adde04f27734be07ee527cf7 100644 (file)
@@ -97,7 +97,11 @@ void SALOME_ContainerManager::ShutdownContainers()
       CORBA::Object_var obj=_NS->Resolve((*iter).c_str());
       Engines::Container_var cont=Engines::Container::_narrow(obj);
       if(!CORBA::is_nil(cont))
-       cont->Shutdown();
+       {
+         MESSAGE("ShutdownContainers: " << (*iter));
+         cont->Shutdown();
+       }
+      else MESSAGE("ShutdownContainers: no container ref for " << (*iter));
     }
 }
 
index a1c7135fe7a76e9d37df6252418d6c6b0da0c40c..0b6d0e6a3ce6716768fd40242850c40bdf6b27de 100644 (file)
@@ -3,6 +3,7 @@ import sys, os,signal,string,commands
 import runSalome
 import orbmodule
 import TestKiller
+import addToKillList
 
 # get SALOME environment :
 
@@ -62,6 +63,8 @@ import Engines
 containerManager = clt.waitNS("/ContainerManager",Engines.ContainerManager)
 containerManager.Shutdown()
 
-# kill Test process 
+# kill Test process
+
+addToKillList.killList()
 
 TestKiller.killProcess(runSalome.process_id)
index ce198400fb0c7cc2f36403e85a4a7dac9e564196..ba880f6aeeb31fed3a7676ef0fad2b9ee506e92d 100644 (file)
@@ -57,7 +57,7 @@ BaseTraceCollector* FileTraceCollector::instance(const char *fileName)
       if (_singleton == 0)                     // another thread may have got
        {                                      // the lock after the first test
          DEVTRACE("FileTraceCollector:: instance()");
-         _singleton = new FileTraceCollector();
+         BaseTraceCollector* myInstance = new FileTraceCollector();
          _fileName = fileName;
          DEVTRACE(" _fileName: " << _fileName);
 
@@ -67,6 +67,7 @@ BaseTraceCollector* FileTraceCollector::instance(const char *fileName)
          int re2 = pthread_create(&traceThread, NULL,
                                   FileTraceCollector::run, (void *)bid);
          sem_wait(&_sem);
+         _singleton = myInstance; // _singleton known only when init done
          DEVTRACE("FileTraceCollector:: instance()-end");
        }
       ret = pthread_mutex_unlock(&_singletonMutex); // release lock
index d875fe5bee8572ed42f6758b866ac8de2da65814..2613d8714c805f48b399a9cdb053e881f7fcc16d 100644 (file)
@@ -82,10 +82,10 @@ LocalTraceBufferPool* LocalTraceBufferPool::instance()
       ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
       if (_singleton == 0)                     // another thread may have got
        {                                      // the lock after the first test
-         _singleton = new LocalTraceBufferPool(); 
+        LocalTraceBufferPool* myInstance = new LocalTraceBufferPool(); 
 
          DESTRUCTOR_OF<LocalTraceBufferPool> *ptrDestroy =
-           new DESTRUCTOR_OF<LocalTraceBufferPool> (*_singleton);
+           new DESTRUCTOR_OF<LocalTraceBufferPool> (*myInstance);
 
          // --- start a trace Collector
 
@@ -140,6 +140,7 @@ LocalTraceBufferPool* LocalTraceBufferPool::instance()
                  exit(1);        // in case assert is deactivated
                }             
            }
+         _singleton = myInstance;
        }
       ret = pthread_mutex_unlock(&_singletonMutex); // release lock
     }
index 36f4fea933bef225e5f9bdfeb63a05808f78edaa..559216ac9ff8213877f7ff489fd36d10919e4678 100644 (file)
@@ -52,7 +52,7 @@ BaseTraceCollector* LocalTraceCollector::instance()
       ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
       if (_singleton == 0)                     // another thread may have got
        {                                      // the lock after the first test
-         _singleton = new LocalTraceCollector();
+         BaseTraceCollector* myInstance = new LocalTraceCollector();
 
          sem_init(&_sem,0,0); // to wait until run thread is initialized
          pthread_t traceThread;
@@ -60,6 +60,7 @@ BaseTraceCollector* LocalTraceCollector::instance()
          int re2 = pthread_create(&traceThread, NULL,
                                   LocalTraceCollector::run, (void *)bid);
          sem_wait(&_sem);
+         _singleton = myInstance; // _singleton known only when init done
        }
       ret = pthread_mutex_unlock(&_singletonMutex); // release lock
     }
index bc1e71ad711bde023f261877b386e8c39935632c..6fd76763f1a541152da63b8070ce5d3983bee295 100644 (file)
@@ -59,7 +59,7 @@ BaseTraceCollector* SALOMETraceCollector::instance()
       ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
       if (_singleton == 0)                     // another thread may have got
        {                                      // the lock after the first test
-         _singleton = new SALOMETraceCollector();
+         BaseTraceCollector* myInstance = new SALOMETraceCollector();
          int argc=0;
          char *_argv=0;
          char ** argv = &_argv;
@@ -71,6 +71,7 @@ BaseTraceCollector* SALOMETraceCollector::instance()
          int re2 = pthread_create(&traceThread, NULL,
                                   SALOMETraceCollector::run, (void *)bid);
          sem_wait(&_sem);
+         _singleton = myInstance; // _singleton known only when init done
        }
       ret = pthread_mutex_unlock(&_singletonMutex); // release lock
     }