krb5 commit: Display daemon output in Python test scripts
Greg Hudson
ghudson at mit.edu
Mon Aug 5 21:18:04 EDT 2019
https://github.com/krb5/krb5/commit/97b79e95e4fed3ccd825bc416e85509c0a1b3fff
commit 97b79e95e4fed3ccd825bc416e85509c0a1b3fff
Author: Greg Hudson <ghudson at mit.edu>
Date: Sat Aug 3 12:42:26 2019 -0400
Display daemon output in Python test scripts
In k5test.py, if a daemon process exits before we terminate it,
display the exit status. If a daemon process generates output beyond
the sentinel, display the output before terminating the process.
src/util/k5test.py | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/src/util/k5test.py b/src/util/k5test.py
index da2782e..e4191bf 100644
--- a/src/util/k5test.py
+++ b/src/util/k5test.py
@@ -371,6 +371,7 @@ command-line flags. These are documented in the --help output.
"""
import atexit
+import fcntl
import optparse
import os
import shlex
@@ -471,6 +472,7 @@ def _onexit():
sys.stdout.flush()
sys.stdin.readline()
for proc in _daemons:
+ check_daemon(proc)
os.kill(proc.pid, signal.SIGTERM)
if not _success:
print
@@ -812,7 +814,26 @@ def _start_daemon(args, env, sentinel):
return proc
+# Check a daemon's status prior to terminating it. Display its return
+# code if it already exited, and display any output it has generated.
+def check_daemon(proc):
+ code = proc.poll()
+ if code is not None:
+ output('*** Daemon pid %d exited with code %d\n' % (proc.pid, code))
+
+ flags = fcntl.fcntl(proc.stdout, fcntl.F_GETFL)
+ fcntl.fcntl(proc.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)
+ try:
+ out = proc.stdout.read()
+ except:
+ return
+
+ output('*** Daemon pid %d output:\n' % proc.pid)
+ output(out)
+
+
def stop_daemon(proc):
+ check_daemon(proc)
output('*** Terminating process %d\n' % proc.pid)
os.kill(proc.pid, signal.SIGTERM)
proc.wait()
More information about the cvs-krb5
mailing list