From 35176e903bcb5549b6299e5c50519044903dd6b9 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Jul 11 2017 06:31:05 +0000 Subject: Include logger tests. --- diff --git a/tests/test_logger.py b/tests/test_logger.py new file mode 100644 index 0000000..31c2103 --- /dev/null +++ b/tests/test_logger.py @@ -0,0 +1,99 @@ +# Copyright (c) 2017 Red Hat, Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# Written by Jan Kaluza + + +import unittest +import os +from module_build_service import log +from module_build_service.logger import ModuleBuildLogs +from module_build_service.scheduler.consumer import MBSConsumer +from mock import patch, PropertyMock + + +class TestLogger(unittest.TestCase): + + def setUp(self): + self.build_log = ModuleBuildLogs("/tmp") + self.paths = [] + + def tearDown(self): + MBSConsumer.current_module_build_id = None + for path in self.paths: + if os.path.exists(path): + os.unlink(path) + + def test_module_build_logs(self): + """ + Tests that ModuleBuildLogs is logging properly to build log file. + """ + # Initialize logging, get the build log path and remove it to + # ensure we are not using some garbage from previous failed test. + self.build_log.start(1) + path = self.build_log.path(1) + self.paths.append(path) + self.assertEqual(path, "/tmp/build-1.log") + if os.path.exists(path): + os.unlink(path) + + # Try logging without the MBSConsumer.current_module_build_id set. + # No log file should be created. + log.debug("ignore this test msg") + log.info("ignore this test msg") + log.warn("ignore this test msg") + log.error("ignore this test msg") + self.build_log.stop(1) + self.assertTrue(not os.path.exists(path)) + + # Try logging with current_module_build_id set to 1 and then to 2. + # Only messages with current_module_build_id set to 1 should appear in + # the log. + self.build_log.start(1) + MBSConsumer.current_module_build_id = 1 + log.debug("ignore this test msg1") + log.info("ignore this test msg1") + log.warn("ignore this test msg1") + log.error("ignore this test msg1") + + MBSConsumer.current_module_build_id = 2 + log.debug("ignore this test msg2") + log.info("ignore this test msg2") + log.warn("ignore this test msg2") + log.error("ignore this test msg2") + + self.build_log.stop(1) + self.assertTrue(os.path.exists(path)) + with open(path, "r") as f: + data = f.read() + for level in ["DEBUG", "INFO", "WARNING", "ERROR"]: + self.assertTrue(data.find("%s - ignore this test msg1" % level) != -1) + + # Try to log more messages when build_log for module 1 is stopped. + # New messages should not appear in a log. + MBSConsumer.current_module_build_id = 1 + log.debug("ignore this test msg3") + log.info("ignore this test msg3") + log.warn("ignore this test msg3") + log.error("ignore this test msg3") + self.build_log.stop(1) + with open(path, "r") as f: + data = f.read() + self.assertTrue(data.find("ignore this test msg3") == -1)