Salome HOME
Merge 'master' branch into 'V9_dev' branch
[modules/kernel.git] / bin / appliskel / salome_tester / salome_instance.py
index 76bd6666276f4eaa40ca035b036e6d34d44713f6..3653d14a94e0c11d89ec52ac20508c169ebe9a3f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2015-2017  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -34,31 +34,34 @@ class SalomeInstance(object):
   #
 
   @staticmethod
-  def start(shutdown_servers=False):
+  def start(shutdown_servers=False, with_gui=False, args=[]):
     import tempfile
-    log = tempfile.NamedTemporaryFile(suffix='_nsport.log', delete=False)
+    log = tempfile.NamedTemporaryFile(suffix='_nsport', delete=True)
+    port_log = log.name
     log.close()
-
+    port_log = port_log + "-%s.log"%(os.getpid())
     instance_args = [
-      "--ns-port-log=%s"%log.name,
+      "--ns-port-log=%s"%port_log,
       "--shutdown-servers=%d"%shutdown_servers
-      ]
+      ] + args
+
     salome_instance = SalomeInstance()
-    salome_instance.__run(args=instance_args)
+    salome_instance.__run(args=instance_args, with_gui=with_gui)
 
-    with open(log.name) as f:
+    with open(port_log) as f:
       salome_instance.port = int(f.readline())
 
-    os.remove(log.name)
+    os.remove(port_log)
     return salome_instance
   #
 
-  def __run(self, args=None):
+  def __run(self, args=None, with_gui=False):
     if args is None:
       args = []
+
     sys.argv = ['runSalome'] + args
 
-    if "INGUI" in args:
+    if with_gui:
       # :WARNING: NOT TESTED YET
       sys.argv += ["--gui"]
       sys.argv += ["--show-desktop=1"]
@@ -76,13 +79,14 @@ class SalomeInstance(object):
     import runSalome
     runSalome.runSalome()
 
-    import salome
-    salome.salome_init()
-    session_server = salome.naming_service.Resolve('/Kernel/Session')
-    if session_server:
-      session_server.emitMessage("connect_to_study")
-      session_server.emitMessage("activate_viewer/ParaView")
-      pass
+    if not with_gui:
+      import salome
+      salome.salome_init()
+      session_server = salome.naming_service.Resolve('/Kernel/Session')
+      if session_server:
+        session_server.emitMessage("connect_to_study")
+        session_server.emitMessage("activate_viewer/ParaView")
+        pass
   #
 
   def stop(self):
@@ -99,11 +103,11 @@ class SalomeInstance(object):
 #
 
 if __name__ == "__main__":
-  print "##### Start instance..."
+  print("##### Start instance...")
   salome_instance = SalomeInstance.start()
   port = salome_instance.get_port()
-  print "#####    ...instance started on port %s"%port
+  print("#####    ...instance started on port %s"%port)
 
-  print "##### Terminate instance running on port %s"%port
+  print("##### Terminate instance running on port %s"%port)
   salome_instance.stop()
 #