diff options
author | Rob Austein <sra@hactrn.net> | 2014-09-16 19:19:02 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2014-09-16 19:19:02 +0000 |
commit | bcf3d77c6806571271e2e7870a5140a4ceca7cd8 (patch) | |
tree | bf7b6cf50cfa7d8ff95fe956767054c93c216282 /ca | |
parent | 180a9c09f9705283e11caa2df408e6b2353f3b9d (diff) |
Add a mechanism yamltest can use to signal its parent that it's done
with all its tedious setup actions.
svn path=/branches/tk705/; revision=5957
Diffstat (limited to 'ca')
-rwxr-xr-x | ca/tests/test-rrdp.py | 16 | ||||
-rw-r--r-- | ca/tests/yamltest.py | 6 |
2 files changed, 20 insertions, 2 deletions
diff --git a/ca/tests/test-rrdp.py b/ca/tests/test-rrdp.py index 98918bad..db626a35 100755 --- a/ca/tests/test-rrdp.py +++ b/ca/tests/test-rrdp.py @@ -23,6 +23,7 @@ import os import sys import glob import time +import signal import textwrap import argparse import subprocess @@ -30,7 +31,7 @@ import subprocess parser = argparse.ArgumentParser(description = __doc__) parser.add_argument("--use-smoketest", action = "store_true") parser.add_argument("--yaml-file", default = "smoketest.2.yaml") -parser.add_argument("--delay", type = int, default = 300) +parser.add_argument("--delay", type = int, default = 30) parser.add_argument("--exhaustive", action = "store_true") parser.add_argument("--skip-daemons", action = "store_true") args = parser.parse_args() @@ -80,9 +81,20 @@ elif args.use_smoketest: run("python", "smoketest.py", args.yaml_file) else: run("python", "sql-cleaner.py") - argv = ("python", "yamltest.py", args.yaml_file) + class GotSIGUSR1(Exception): + pass + def handle_sigusr1(signum, frame): + raise GotSIGUSR1 + old_sigusr1 = signal.signal(signal.SIGUSR1, handle_sigusr1) + argv = ("python", "yamltest.py", args.yaml_file, "--notify-when-startup-complete", str(os.getpid())) log("Running: " + " ".join(argv)) yamltest = subprocess.Popen(argv) + log("Waiting for SIGUSR1 from yamltest") + try: + while True: + signal.pause() + except GotSIGUSR1: + signal.signal(signal.SIGUSR1, old_sigusr1) log("Sleeping %s" % args.delay) time.sleep(args.delay) yamltest.terminate() diff --git a/ca/tests/yamltest.py b/ca/tests/yamltest.py index 84355e59..6d1b0cf4 100644 --- a/ca/tests/yamltest.py +++ b/ca/tests/yamltest.py @@ -723,6 +723,8 @@ parser.add_argument("-g", "--run_gui", action = "store_true", help = "enable GUI using django-admin runserver") parser.add_argument("--browser", action = "store_true", help = "create web browser tabs for GUI") +parser.add_argument("--notify-when-startup-complete", type = int, + help = "send SIGUSR1 to this process when startup is complete") parser.add_argument("yaml_file", type = argparse.FileType("r"), help = "YAML description of test network") args = parser.parse_args() @@ -915,6 +917,10 @@ try: # Wait until something terminates. if not args.stop_after_config or args.keep_going: + if args.notify_when_startup_complete: + print + print "Sending SIGUSR1 to process", args.notify_when_startup_complete + os.kill(args.notify_when_startup_complete, signal.SIGUSR1) print print "Waiting for daemons to exit" signal.signal(signal.SIGCHLD, lambda *dont_care: None) |