diff --git a/armi/runLog.py b/armi/runLog.py index f4d222d56..bb8c36945 100644 --- a/armi/runLog.py +++ b/armi/runLog.py @@ -275,14 +275,17 @@ def close(mpiRank=None): LOG._restoreStandardStreams() -def concatenateLogs(): +def concatenateLogs(logDir=None): """ Concatenate the armi run logs and delete them. Should only ever be called by parent. """ + if logDir is None: + logDir = context.LOG_DIR + # find all the logging-module-based log files - stdoutFiles = sorted(glob(os.path.join("logs", "*.stdout"))) + stdoutFiles = sorted(glob(os.path.join(logDir, "*.stdout"))) if not len(stdoutFiles): info("No log files found to concatenate.") return diff --git a/armi/tests/test_runLog.py b/armi/tests/test_runLog.py index 7f1c2e690..f2466fba6 100644 --- a/armi/tests/test_runLog.py +++ b/armi/tests/test_runLog.py @@ -14,6 +14,8 @@ from io import StringIO import logging +import os +from shutil import rmtree import unittest from armi import context, runLog @@ -192,6 +194,35 @@ def test_setVerbosity(self): runLog.LOG.setVerbosity(logging.WARNING + 1) self.assertEqual(runLog.LOG.getVerbosity(), logging.WARNING) + def test_concatenateLogs(self): + """simple test of the concat logs function""" + # create the log dir + logDir = "test_concatenateLogs" + if os.path.exists(logDir): + rmtree(logDir) + context.createLogDir(0, logDir) + + # create as stdout file + stdoutFile = os.path.join(logDir, logDir + ".0.0.stdout") + f = open(stdoutFile, "w") + f.write("hello world\n") + f.close() + self.assertTrue(os.path.exists(stdoutFile)) + + # create a stderr file + stderrFile = os.path.join(logDir, logDir + ".0.0.stderr") + f = open(stderrFile, "w") + f.write("goodbye cruel world\n") + f.close() + self.assertTrue(os.path.exists(stderrFile)) + + # concat logs + runLog.concatenateLogs(logDir=logDir) + + # verify output + self.assertFalse(os.path.exists(stdoutFile)) + self.assertFalse(os.path.exists(stderrFile)) + if __name__ == "__main__": # import sys;sys.argv = ['', 'Test.testName']