From 68261e7b241348089399e7f0ccbb8e05263f7dc9 Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Sun, 29 Jul 2018 17:55:16 +0000 Subject: [PATCH] Streamline selftest output The standard output from a selftest run is much more brief, with the prior verbose information redirected to a capture_tests.log file. --- mudpy/tests/selftest.py | 60 ++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/mudpy/tests/selftest.py b/mudpy/tests/selftest.py index 949488d..799ac50 100644 --- a/mudpy/tests/selftest.py +++ b/mudpy/tests/selftest.py @@ -360,7 +360,7 @@ def stop_service(service): service.terminate() returncode = service.wait(10) if returncode != 0: - print("ERROR: Service exited with code %s." % returncode) + tlog("\nERROR: Service exited with code %s." % returncode) success = False # This cleans up a daemonized and disassociated service @@ -376,21 +376,30 @@ def stop_service(service): os.remove(pidfile) # The PID file didn't disappear, so we have a hung service if os.path.exists(pidfile): - print("ERROR: Hung daemon with PID %s." % pid) + tlog("\nERROR: Hung daemon with PID %s." % pid) success = False # Log the contents of stdout and stderr, if any stdout, stderr = service.communicate() - print("Recording stdout as capture_stdout.log.") + tlog("\nRecording stdout as capture_stdout.log.") serviceout = open("capture_stdout.log", "w") serviceout.write(stdout.decode("utf-8")) - print("Recording stderr as capture_stderr.log.") + tlog("\nRecording stderr as capture_stderr.log.") serviceerr = open("capture_stderr.log", "w") serviceerr.write(stderr.decode("utf-8")) return(success) +def tlog(message, quiet=False): + logfile = "capture_tests.log" + with open(logfile, "a") as logfd: + logfd.write(message + "\n") + if not quiet: + sys.stdout.write(message) + return True + + def main(): captures = ["", "", ""] lusers = [telnetlib.Telnet(), telnetlib.Telnet(), telnetlib.Telnet()] @@ -403,23 +412,24 @@ def main(): for luser in lusers: luser.open("::1", 4000) for test, description in dialogue: - print("\nTesting %s..." % description) + tlog("\nTesting %s..." % description) test_start = time.time() for conversant, question, answer in test: - print("luser%s waiting for: %s" % (conversant, question)) + tlog("luser%s waiting for: %s" % (conversant, question), + quiet=True) try: index, match, received = lusers[conversant].expect( [re.compile(question.encode("utf-8"), flags=re.DOTALL)], 5) captures[conversant] += received.decode("utf-8") except ConnectionResetError: - print("ERROR: Unable to connect to server.") + tlog("\nERROR: Unable to connect to server.") success = False break except EOFError: - print("ERROR: luser%s premature disconnection expecting:\n\n" - "%s\n\n" - "Check the end of capture_%s.log for received data." - % (conversant, question, conversant)) + tlog("\nERROR: luser%s premature disconnection expecting:\n\n" + "%s\n\n" + "Check the end of capture_%s.log for received data." + % (conversant, question, conversant)) success = False break try: @@ -428,30 +438,30 @@ def main(): except Exception: pass if index is not 0: - print("ERROR: luser%s did not receive expected string:\n\n" - "%s\n\n" - "Check the end of capture_%s.log for received data." - % (conversant, question, conversant)) + tlog("\nERROR: luser%s did not receive expected string:\n\n" + "%s\n\n" + "Check the end of capture_%s.log for received data." + % (conversant, question, conversant)) success = False break if type(answer) is str: - print("luser%s sending: %s" % (conversant, answer)) + tlog("luser%s sending: %s" % (conversant, answer), quiet=True) lusers[conversant].write(("%s\r\n" % answer).encode("utf-8")) captures[conversant] += "%s\r\n" % answer elif type(answer) is bytes: - print("luser%s sending raw bytes: %s" % (conversant, answer)) + tlog("luser%s sending raw bytes: %s" % (conversant, answer), + quiet=True) lusers[conversant].get_socket().send(answer) captures[conversant] += "!!!RAW BYTES: %s" % answer else: - print("ERROR: answer provided with unsupported type %s" - % type(answer)) + tlog("\nERROR: answer provided with unsupported type %s" + % type(answer)) success = False break if not success: break - print("Completed in %.3f seconds." % (time.time() - test_start)) + tlog("Completed in %.3f seconds." % (time.time() - test_start)) duration = time.time() - start - print("") for conversant in range(len(captures)): try: captures[conversant] += lusers[ @@ -460,17 +470,17 @@ def main(): pass lusers[conversant].close() logfile = "capture_%s.log" % conversant - print("Recording session %s as %s." % (conversant, logfile)) + tlog("\nRecording session %s as %s." % (conversant, logfile)) log = open(logfile, "w") log.write(captures[conversant]) log.close() if not stop_service(service): success = False - print("\nRan %s tests in %.3f seconds." % (len(dialogue), duration)) + tlog("\nRan %s tests in %.3f seconds." % (len(dialogue), duration)) if success: - print("SUCCESS") + tlog("\nSUCCESS\n") else: - print("FAILURE") + tlog("\nFAILURE\n") sys.exit(1) -- 2.11.0