X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/911abf131639401b2ccfd23a6bc3ec983f7ed8f4..231a86fd3f7e30e9f66d71d92ad7c26578637e37:/sdk/python/tests/run_test_server.py diff --git a/sdk/python/tests/run_test_server.py b/sdk/python/tests/run_test_server.py index f7ca6daf6f..9b0676b595 100644 --- a/sdk/python/tests/run_test_server.py +++ b/sdk/python/tests/run_test_server.py @@ -174,7 +174,7 @@ def find_available_port(): sock.close() return port -def _wait_until_port_listens(port, timeout=10): +def _wait_until_port_listens(port, timeout=10, warn=True): """Wait for a process to start listening on the given port. If nothing listens on the port within the specified timeout (given @@ -196,11 +196,13 @@ def _wait_until_port_listens(port, timeout=10): except subprocess.CalledProcessError: time.sleep(0.1) continue - return - print( - "WARNING: Nothing is listening on port {} (waited {} seconds).". - format(port, timeout), - file=sys.stderr) + return True + if warn: + print( + "WARNING: Nothing is listening on port {} (waited {} seconds).". + format(port, timeout), + file=sys.stderr) + return False def _logfilename(label): """Set up a labelled log file, and return a path to write logs to. @@ -375,8 +377,11 @@ def reset(): 'POST', headers={'Authorization': 'OAuth2 {}'.format(token)}) os.environ['ARVADOS_API_HOST_INSECURE'] = 'true' - os.environ['ARVADOS_API_HOST'] = existing_api_host os.environ['ARVADOS_API_TOKEN'] = token + if _wait_until_port_listens(_getport('controller-ssl'), timeout=0.5, warn=False): + os.environ['ARVADOS_API_HOST'] = '0.0.0.0:'+str(_getport('controller-ssl')) + else: + os.environ['ARVADOS_API_HOST'] = existing_api_host def stop(force=False): """Stop the API server, if one is running. @@ -408,14 +413,39 @@ def run_controller(): f.write(""" Clusters: zzzzz: - NodeProfiles: - "*": - "arvados-controller": - Listen: ":{}" - "arvados-api-server": - Listen: ":{}" - TLS: true - """.format(port, rails_api_port)) + EnableBetaController14287: {beta14287} + ManagementToken: e687950a23c3a9bceec28c6223a06c79 + API: + RequestTimeout: 30s + Logging: + Level: "{loglevel}" + HTTPRequestTimeout: 30s + PostgreSQL: + ConnectionPool: 32 + Connection: + host: {dbhost} + dbname: {dbname} + user: {dbuser} + password: {dbpass} + TLS: + Insecure: true + Services: + Controller: + InternalURLs: + "http://localhost:{controllerport}": {{}} + RailsAPI: + InternalURLs: + "https://localhost:{railsport}": {{}} + """.format( + beta14287=('true' if '14287' in os.environ.get('ARVADOS_EXPERIMENTAL', '') else 'false'), + loglevel=('info' if os.environ.get('ARVADOS_DEBUG', '') in ['','0'] else 'debug'), + dbhost=_dbconfig('host'), + dbname=_dbconfig('database'), + dbuser=_dbconfig('username'), + dbpass=_dbconfig('password'), + controllerport=port, + railsport=rails_api_port, + )) logf = open(_logfilename('controller'), 'a') controller = subprocess.Popen( ["arvados-server", "controller", "-config", conf], @@ -561,6 +591,7 @@ def stop_keep(num_servers=2): def run_keep_proxy(): if 'ARVADOS_TEST_PROXY_SERVICES' in os.environ: + os.environ["ARVADOS_KEEP_SERVICES"] = "http://localhost:{}".format(_getport('keepproxy')) return stop_keep_proxy() @@ -610,6 +641,7 @@ def run_arv_git_httpd(): agh = subprocess.Popen( ['arv-git-httpd', '-repo-root='+gitdir+'/test', + '-management-token=e687950a23c3a9bceec28c6223a06c79', '-address=:'+str(gitport)], env=env, stdin=open('/dev/null'), stdout=logf, stderr=logf) with open(_pidfile('arv-git-httpd'), 'w') as f: @@ -634,7 +666,8 @@ def run_keep_web(): keepweb = subprocess.Popen( ['keep-web', '-allow-anonymous', - '-attachment-only-host=download:'+str(keepwebport), + '-attachment-only-host=download', + '-management-token=e687950a23c3a9bceec28c6223a06c79', '-listen=:'+str(keepwebport)], env=env, stdin=open('/dev/null'), stdout=logf, stderr=logf) with open(_pidfile('keep-web'), 'w') as f: @@ -717,7 +750,7 @@ def _getport(program): def _dbconfig(key): global _cached_db_config if not _cached_db_config: - _cached_db_config = yaml.load(open(os.path.join( + _cached_db_config = yaml.safe_load(open(os.path.join( SERVICES_SRC_DIR, 'api', 'config', 'database.yml'))) return _cached_db_config['test'][key] @@ -729,7 +762,7 @@ def _apiconfig(key): fullpath = os.path.join(SERVICES_SRC_DIR, 'api', 'config', f) if not required and not os.path.exists(fullpath): return {} - return yaml.load(fullpath) + return yaml.safe_load(fullpath) cdefault = _load('application.default.yml') csite = _load('application.yml', required=False) _cached_config = {} @@ -748,7 +781,7 @@ def fixture(fix): yaml_file = yaml_file[0:trim_index] except ValueError: pass - return yaml.load(yaml_file) + return yaml.safe_load(yaml_file) def auth_token(token_name): return fixture("api_client_authorizations")[token_name]["api_token"]