#
# SPDX-License-Identifier: Apache-2.0
-from __future__ import print_function
-from __future__ import division
-from builtins import str
-from builtins import range
import argparse
import atexit
import errno
import shutil
import signal
import socket
-import string
import subprocess
import sys
import tempfile
import unittest
import yaml
-try:
- from urllib.parse import urlparse
-except ImportError:
- from urlparse import urlparse
+from urllib.parse import urlparse
MY_DIRNAME = os.path.dirname(os.path.realpath(__file__))
if __name__ == '__main__' and os.path.exists(
if not os.path.exists('tmp/logs'):
os.makedirs('tmp/logs')
- # Install the git repository fixtures.
- gitdir = os.path.join(SERVICES_SRC_DIR, 'api', 'tmp', 'git')
- gittarball = os.path.join(SERVICES_SRC_DIR, 'api', 'test', 'test.git.tar')
- if not os.path.isdir(gitdir):
- os.makedirs(gitdir)
- subprocess.check_output(['tar', '-xC', gitdir, '-f', gittarball])
-
# Customizing the passenger config template is the only documented
# way to override the default passenger_stat_throttle_rate (10 s).
# In the testing environment, we want restart.txt to take effect
for d in api.keep_services().list(filters=[['service_type','=','disk']]).execute()['items']:
api.keep_services().delete(uuid=d['uuid']).execute()
- for d in api.keep_disks().list().execute()['items']:
- api.keep_disks().delete(uuid=d['uuid']).execute()
for d in range(0, num_servers):
port = _start_keep(d, **kwargs)
'service_type': 'disk',
'service_ssl_flag': False,
}}).execute()
- api.keep_disks().create(body={
- 'keep_disk': {'keep_service_uuid': svc['uuid'] }
- }).execute()
# If keepproxy and/or keep-web is running, send SIGHUP to make
# them discover the new keepstore services.
return
kill_server_pid(_pidfile('keepproxy'))
-def run_arv_git_httpd():
- if 'ARVADOS_TEST_PROXY_SERVICES' in os.environ:
- return
- stop_arv_git_httpd()
-
- gitport = internal_port_from_config("GitHTTP")
- env = os.environ.copy()
- env.pop('ARVADOS_API_TOKEN', None)
- logf = open(_logfilename('githttpd'), WRITE_MODE)
- agh = subprocess.Popen(['arvados-server', 'git-httpd'],
- env=env, stdin=open('/dev/null'), stdout=logf, stderr=logf)
- _detachedSubprocesses.append(agh)
- 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('githttpd'))
-
def run_keep_web():
if 'ARVADOS_TEST_PROXY_SERVICES' in os.environ:
return
nginxconf['KEEPWEBSSLPORT'] = external_port_from_config("WebDAV")
nginxconf['KEEPPROXYPORT'] = internal_port_from_config("Keepproxy")
nginxconf['KEEPPROXYSSLPORT'] = external_port_from_config("Keepproxy")
- nginxconf['GITPORT'] = internal_port_from_config("GitHTTP")
- nginxconf['GITSSLPORT'] = external_port_from_config("GitHTTP")
nginxconf['HEALTHPORT'] = internal_port_from_config("Health")
nginxconf['HEALTHSSLPORT'] = external_port_from_config("Health")
nginxconf['WSPORT'] = internal_port_from_config("Websocket")
nginx = subprocess.Popen(
['nginx',
- '-g', 'error_log stderr info; pid '+_pidfile('nginx')+';',
+ '-g', 'error_log stderr notice; pid '+_pidfile('nginx')+';',
'-c', conffile],
env=env, stdin=open('/dev/null'), stdout=sys.stderr)
_detachedSubprocesses.append(nginx)
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()
health_httpd_external_port = find_available_port()
keepproxy_port = find_available_port()
"http://%s:%s"%(localhost, workbench2_port): {},
},
},
- "GitHTTP": {
- "ExternalURL": "https://%s:%s" % (localhost, git_httpd_external_port),
- "InternalURLs": {
- "http://%s:%s"%(localhost, git_httpd_port): {}
- },
- },
"Health": {
"ExternalURL": "https://%s:%s" % (localhost, health_httpd_external_port),
"InternalURLs": {
"BlobSigningKey": "zfhgfenhffzltr9dixws36j1yhksjoll2grmku38mi7yxd66h5j4q9w4jzanezacp8s6q0ro3hxakfye02152hncy6zml2ed0uc",
"TrustAllContent": False,
"ForwardSlashNameSubstitution": "/",
- "TrashSweepInterval": "-1s",
- },
- "Git": {
- "Repositories": os.path.join(SERVICES_SRC_DIR, 'api', 'tmp', 'git', 'test'),
+ "TrashSweepInterval": "-1s", # disable, otherwise test cases can't acquire dblock
},
"Containers": {
- "JobsAPI": {
- "GitInternalDir": os.path.join(SERVICES_SRC_DIR, 'api', 'tmp', 'internal.git'),
- },
"LocalKeepBlobBuffersPerVCPU": 0,
- "Logging": {
- "SweepInterval": 0, # disable, otherwise test cases can't acquire dblock
- },
"SupportedDockerImageFormats": {"v1": {}},
"ShellAccess": {
"Admin": True,
'start_keep', 'stop_keep',
'start_keep_proxy', 'stop_keep_proxy',
'start_keep-web', 'stop_keep-web',
- 'start_githttpd', 'stop_githttpd',
'start_nginx', 'stop_nginx', 'setup_config',
]
parser = argparse.ArgumentParser()
run_keep_proxy()
elif args.action == 'stop_keep_proxy':
stop_keep_proxy()
- elif args.action == 'start_githttpd':
- run_arv_git_httpd()
- elif args.action == 'stop_githttpd':
- stop_arv_git_httpd()
elif args.action == 'start_keep-web':
run_keep_web()
elif args.action == 'stop_keep-web':