X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=bin%2FsearchFreePort.py;h=cdf304eba8e60a085a5c649bb443b24c57df2fcc;hb=e72332cd1cce863d7efbdecfb2055b8d9ee0630f;hp=99005ef9d8ba20acc1b4e389369e1bf2640e68b1;hpb=f876c49e5d46d086f1d741abada5ae86494bb5bb;p=modules%2Fkernel.git diff --git a/bin/searchFreePort.py b/bin/searchFreePort.py old mode 100644 new mode 100755 index 99005ef9d..cdf304eba --- a/bin/searchFreePort.py +++ b/bin/searchFreePort.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -64,65 +64,6 @@ def __setup_config(nsport, args, save_config): # # -def searchFreePort_withoutPortManager(args={}, save_config=1, use_port=None): - # :NOTE: Under windows: - # netstat options -l and -t are unavailable - # grep command is unavailable - from subprocess import Popen, PIPE - (stdout, stderr) = Popen(['netstat','-an'], stdout=PIPE).communicate() - import StringIO - buf = StringIO.StringIO(stdout) - ports = buf.readlines() - - # - def portIsUsed(port, data): - import re - regObj = re.compile( ".*tcp.*:([0-9]+).*:.*listen", re.IGNORECASE ); - for item in data: - try: - p = int(regObj.match(item).group(1)) - if p == port: return True - pass - except: - pass - pass - return False - # - - if use_port: - print "Check if port can be used: %d" % use_port, - if not portIsUsed(use_port, ports): - print "- OK" - __setup_config(use_port, args, save_config) - return - else: - print "- KO: port is busy" - pass - # - - print "Searching for a free port for naming service:", - # - - NSPORT=2810 - limit=NSPORT+100 - # - - while 1: - if not portIsUsed(NSPORT, ports): - print "%s - OK"%(NSPORT) - __setup_config(NSPORT, args, save_config) - break - print "%s"%(NSPORT), - if NSPORT == limit: - msg = "\n" - msg += "Can't find a free port to launch omniNames\n" - msg += "Try to kill the running servers and then launch SALOME again.\n" - raise RuntimeError, msg - NSPORT=NSPORT+1 - pass - # -# - def searchFreePort_withPortManager(queue, args={}, save_config=1, use_port=None): from PortManager import getPort port = getPort(use_port) @@ -132,6 +73,9 @@ def searchFreePort_withPortManager(queue, args={}, save_config=1, use_port=None) if port == use_port and port != -1: print "- OK" __setup_config(use_port, args, save_config) + queue.put([os.environ['OMNIORB_CONFIG'], + os.environ['NSPORT'], + os.environ['NSHOST']]) return else: print "- KO: port is busy" @@ -158,7 +102,6 @@ def __savePortToFile(args): if args.has_key('ns_port_log_file'): omniorbUserPath = os.getenv("OMNIORB_USER_PATH") file_name = os.path.join(omniorbUserPath, args["ns_port_log_file"]) - print file_name, os.environ['NSPORT'] with open(file_name, "w") as f: f.write(os.environ['NSPORT']) # @@ -168,7 +111,6 @@ def searchFreePort(args={}, save_config=1, use_port=None): Search free port for SALOME session. Returns first found free port number. """ - try: import PortManager # mandatory from multiprocessing import Process, Queue @@ -179,11 +121,11 @@ def searchFreePort(args={}, save_config=1, use_port=None): os.environ['OMNIORB_CONFIG'] = info[0] os.environ['NSPORT'] = info[1] + args['port'] = os.environ['NSPORT'] os.environ['NSHOST'] = info[2] __savePortToFile(args) p.join() # this blocks until the process terminates except ImportError: - searchFreePort_withoutPortManager(args, save_config, use_port) - __savePortToFile(args) + raise Exception('PortManager module not found') #