X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e6f14dd73771fffb1f205729f0755623538c5590..ae92d144610446849eb568247a44f02ae985c281:/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 0cb4151ac3..836776972e 100644 --- a/sdk/python/tests/run_test_server.py +++ b/sdk/python/tests/run_test_server.py @@ -73,6 +73,7 @@ if not os.path.exists(TEST_TMPDIR): my_api_host = None _cached_config = {} _cached_db_config = {} +_already_used_port = {} def find_server_pid(PID_PATH, wait=10): now = time.time() @@ -181,11 +182,15 @@ def find_available_port(): would take care of the races, and this wouldn't be needed at all. """ - sock = socket.socket() - sock.bind(('0.0.0.0', 0)) - port = sock.getsockname()[1] - sock.close() - return port + global _already_used_port + while True: + sock = socket.socket() + sock.bind(('0.0.0.0', 0)) + port = sock.getsockname()[1] + sock.close() + if port not in _already_used_port: + _already_used_port[port] = True + return port def _wait_until_port_listens(port, timeout=10, warn=True): """Wait for a process to start listening on the given port. @@ -468,7 +473,7 @@ def _start_keep(n, blob_signing=False): confdata['Clusters']['zzzzz']['Collections']['BlobSigning'] = blob_signing with open(conf, 'w') as f: yaml.safe_dump(confdata, f) - keep_cmd = ["keepstore", "-config", conf] + keep_cmd = ["arvados-server", "keepstore", "-config", conf] with open(_logfilename('keep{}'.format(n)), WRITE_MODE) as logf: with open('/dev/null') as _stdin: @@ -539,7 +544,7 @@ def run_keep_proxy(): env['ARVADOS_API_TOKEN'] = auth_token('anonymous') logf = open(_logfilename('keepproxy'), WRITE_MODE) kp = subprocess.Popen( - ['keepproxy'], env=env, stdin=open('/dev/null'), stdout=logf, stderr=logf, close_fds=True) + ['arvados-server', 'keepproxy'], env=env, stdin=open('/dev/null'), stdout=logf, stderr=logf, close_fds=True) with open(_pidfile('keepproxy'), 'w') as f: f.write(str(kp.pid)) @@ -576,17 +581,17 @@ def run_arv_git_httpd(): gitport = internal_port_from_config("GitHTTP") env = os.environ.copy() env.pop('ARVADOS_API_TOKEN', None) - logf = open(_logfilename('arv-git-httpd'), WRITE_MODE) - agh = subprocess.Popen(['arv-git-httpd'], + logf = open(_logfilename('githttpd'), WRITE_MODE) + agh = subprocess.Popen(['arvados-server', 'git-httpd'], env=env, stdin=open('/dev/null'), stdout=logf, stderr=logf) - with open(_pidfile('arv-git-httpd'), 'w') as f: + with open(_pidfile('githttpd'), 'w') as f: f.write(str(agh.pid)) _wait_until_port_listens(gitport) def stop_arv_git_httpd(): if 'ARVADOS_TEST_PROXY_SERVICES' in os.environ: return - kill_server_pid(_pidfile('arv-git-httpd')) + kill_server_pid(_pidfile('githttpd')) def run_keep_web(): if 'ARVADOS_TEST_PROXY_SERVICES' in os.environ: @@ -615,6 +620,7 @@ def run_nginx(): nginxconf = {} nginxconf['LISTENHOST'] = 'localhost' nginxconf['CONTROLLERPORT'] = internal_port_from_config("Controller") + nginxconf['ARVADOS_API_HOST'] = "0.0.0.0:" + str(external_port_from_config("Controller")) nginxconf['CONTROLLERSSLPORT'] = external_port_from_config("Controller") nginxconf['KEEPWEBPORT'] = internal_port_from_config("WebDAV") nginxconf['KEEPWEBDLSSLPORT'] = external_port_from_config("WebDAVDownload") @@ -629,11 +635,13 @@ def run_nginx(): nginxconf['WSSSLPORT'] = external_port_from_config("Websocket") nginxconf['WORKBENCH1PORT'] = internal_port_from_config("Workbench1") nginxconf['WORKBENCH1SSLPORT'] = external_port_from_config("Workbench1") + nginxconf['WORKBENCH2PORT'] = internal_port_from_config("Workbench2") + nginxconf['WORKBENCH2SSLPORT'] = external_port_from_config("Workbench2") nginxconf['SSLCERT'] = os.path.join(SERVICES_SRC_DIR, 'api', 'tmp', 'self-signed.pem') nginxconf['SSLKEY'] = os.path.join(SERVICES_SRC_DIR, 'api', 'tmp', 'self-signed.key') nginxconf['ACCESSLOG'] = _logfilename('nginx_access') nginxconf['ERRORLOG'] = _logfilename('nginx_error') - nginxconf['TMPDIR'] = TEST_TMPDIR + nginxconf['TMPDIR'] = TEST_TMPDIR + '/nginx' conftemplatefile = os.path.join(MY_DIRNAME, 'nginx.conf') conffile = os.path.join(TEST_TMPDIR, 'nginx.conf') @@ -648,8 +656,7 @@ def run_nginx(): nginx = subprocess.Popen( ['nginx', - '-g', 'error_log stderr info;', - '-g', 'pid '+_pidfile('nginx')+';', + '-g', 'error_log stderr info; pid '+_pidfile('nginx')+';', '-c', conffile], env=env, stdin=open('/dev/null'), stdout=sys.stderr) _wait_until_port_listens(nginxconf['CONTROLLERSSLPORT']) @@ -662,6 +669,8 @@ def setup_config(): websocket_external_port = find_available_port() workbench1_port = find_available_port() workbench1_external_port = find_available_port() + workbench2_port = find_available_port() + workbench2_external_port = find_available_port() git_httpd_port = find_available_port() git_httpd_external_port = find_available_port() health_httpd_port = find_available_port() @@ -715,6 +724,12 @@ def setup_config(): "http://%s:%s"%(localhost, workbench1_port): {}, }, }, + "Workbench2": { + "ExternalURL": "https://%s:%s/" % (localhost, workbench2_external_port), + "InternalURLs": { + "http://%s:%s"%(localhost, workbench2_port): {}, + }, + }, "GitHTTP": { "ExternalURL": "https://%s:%s" % (localhost, git_httpd_external_port), "InternalURLs": { @@ -750,9 +765,6 @@ def setup_config(): "http://%s:%s"%(localhost, keep_web_dl_port): {}, }, }, - "SSO": { - "ExternalURL": "http://localhost:3002", - }, } config = { @@ -762,12 +774,16 @@ def setup_config(): "SystemRootToken": auth_token('system_user'), "API": { "RequestTimeout": "30s", - "RailsSessionSecretToken": "e24205c490ac07e028fd5f8a692dcb398bcd654eff1aef5f9fe6891994b18483", }, "Login": { - "SSO": { - "ProviderAppID": "arvados-server", - "ProviderAppSecret": "608dbf356a327e2d0d4932b60161e212c2d8d8f5e25690d7b622f850a990cd33", + "Test": { + "Enable": True, + "Users": { + "alice": { + "Email": "alice@example.com", + "Password": "xyzzy" + } + } }, }, "SystemLogs": { @@ -785,6 +801,7 @@ def setup_config(): "UserProfileNotificationAddress": "arvados@example.com", }, "Collections": { + "CollectionVersioning": True, "BlobSigningKey": "zfhgfenhffzltr9dixws36j1yhksjoll2grmku38mi7yxd66h5j4q9w4jzanezacp8s6q0ro3hxakfye02152hncy6zml2ed0uc", "TrustAllContent": False, "ForwardSlashNameSubstitution": "/", @@ -798,6 +815,10 @@ def setup_config(): "GitInternalDir": os.path.join(SERVICES_SRC_DIR, 'api', 'tmp', 'internal.git'), }, "SupportedDockerImageFormats": {"v1": {}}, + "ShellAccess": { + "Admin": True, + "User": True, + }, }, "Volumes": { "zzzzz-nyw5e-%015d"%n: { @@ -921,7 +942,7 @@ if __name__ == "__main__": 'start_keep', 'stop_keep', 'start_keep_proxy', 'stop_keep_proxy', 'start_keep-web', 'stop_keep-web', - 'start_arv-git-httpd', 'stop_arv-git-httpd', + 'start_githttpd', 'stop_githttpd', 'start_nginx', 'stop_nginx', 'setup_config', ] parser = argparse.ArgumentParser() @@ -966,9 +987,9 @@ if __name__ == "__main__": run_keep_proxy() elif args.action == 'stop_keep_proxy': stop_keep_proxy() - elif args.action == 'start_arv-git-httpd': + elif args.action == 'start_githttpd': run_arv_git_httpd() - elif args.action == 'stop_arv-git-httpd': + elif args.action == 'stop_githttpd': stop_arv_git_httpd() elif args.action == 'start_keep-web': run_keep_web()