X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/dcab7519db659e2487db893fda2c8237203c3294..d5f8e84b64d3ad294db793fb99f5b45c3250d5d3:/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 d6febdda6c..45cc3ca32b 100644 --- a/sdk/python/tests/run_test_server.py +++ b/sdk/python/tests/run_test_server.py @@ -4,6 +4,7 @@ from __future__ import print_function import argparse import atexit import errno +import glob import httplib2 import os import pipes @@ -12,8 +13,8 @@ import re import shutil import signal import socket -import subprocess import string +import subprocess import sys import tempfile import time @@ -192,7 +193,7 @@ def _fifo2stderr(label): raise os.mkfifo(fifo, 0700) subprocess.Popen( - ['sed', '-e', 's/^/['+label+'] /', fifo], + ['stdbuf', '-i0', '-oL', '-eL', 'sed', '-e', 's/^/['+label+'] /', fifo], stdout=sys.stderr) return fifo @@ -213,8 +214,14 @@ def run(leave_running_atexit=False): """ global my_api_host - # Delete cached discovery document. - shutil.rmtree(arvados.http_cache('discovery')) + # Delete cached discovery documents. + # + # This will clear cached docs that belong to other processes (like + # concurrent test suites) even if they're still running. They should + # be able to tolerate that. + for fn in glob.glob(os.path.join(arvados.http_cache('discovery'), + '*,arvados,v1,rest,*')): + os.unlink(fn) pid_file = _pidfile('api') pid_file_ok = find_server_pid(pid_file, 0) @@ -422,7 +429,10 @@ def run_keep(blob_signing_key=None, enforce_permissions=False, num_servers=2): # keepstore services. proxypidfile = _pidfile('keepproxy') if os.path.exists(proxypidfile): - os.kill(int(open(proxypidfile).read()), signal.SIGHUP) + try: + os.kill(int(open(proxypidfile).read()), signal.SIGHUP) + except OSError: + os.remove(proxypidfile) def _stop_keep(n): kill_server_pid(_pidfile('keep{}'.format(n)))