123456789101112131415161718192021222324252627282930313233 |
- import os
- import sys
- import subprocess
- import time
- from yatest.common.network import PortManager
- def __get_port_range():
- port_count = int(sys.argv[1])
- pid_filename = sys.argv[2]
- port_manager = PortManager()
- start_port = port_manager.get_port_range(None, port_count)
- sys.stderr.write(str(start_port) + "\n")
- with open(pid_filename, 'w') as afile:
- afile.write(str(os.getpid()))
- while 1:
- time.sleep(1)
- def get_port_range(port_count=1, pid_filename="recipe_port.pid"):
- env = os.environ.copy()
- env["Y_PYTHON_ENTRY_POINT"] = "library.python.testing.recipe.ports:__get_port_range"
- res = subprocess.Popen([sys.argv[0], str(port_count), pid_filename], env=env, cwd=os.getcwd(), stderr=subprocess.PIPE)
- while not os.path.exists(pid_filename):
- time.sleep(0.01)
- port_start = int(res.stderr.readline())
- return port_start
- def release_port_range(pid_filename="recipe_port.pid"):
- with open(pid_filename, 'r') as afile:
- os.kill(int(afile.read()), 9)
|