diff tests/test_logging.py @ 18:56596902e9ae default tip

add some setup + tests
author Jeff Hammel <k0scist@gmail.com>
date Sun, 10 Dec 2017 17:57:03 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_logging.py	Sun Dec 10 17:57:03 2017 -0800
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+
+"""
+unit-type tests for logging
+"""
+
+import json
+import os
+import tempfile
+import unittest
+from lemuriformes.log import ElasticLogger, read_logfile
+
+
+class TestLogging(unittest.TestCase):
+    """test various types of logging supported"""
+
+    def test_log_line(self):
+        """test logging a single JSON line"""
+
+        message = "I was here"
+        logfile = tempfile.mktemp()
+
+        assert not os.path.exists(logfile)
+        logger = ElasticLogger(logfile)
+        logger(message)
+
+        assert os.path.exists(logfile)
+        with open(logfile) as f:
+            data = f.read()
+        assert json.loads(data)['message'] == message
+        os.remove(logfile)
+
+    def test_metadata(self):
+        """test setting global + local data on a logger"""
+
+        message = "I was here"
+        logfile = tempfile.mktemp()
+
+        assert not os.path.exists(logfile)
+        logger = ElasticLogger(logfile, source='truth')
+        logger(message, me="k0s")
+        logger("Hi")
+        logger(message, me="SomeoneElse")
+
+        assert os.path.exists(logfile)
+        log_data = read_logfile(logfile)
+        os.remove(logfile)
+        assert len(log_data) == 3
+        assert all([line.get('source') == 'truth'
+                    for line in log_data])
+        assert log_data[0]['message'] == message
+        assert log_data[-1]['message'] == message
+        assert log_data[0]['me'] == 'k0s'
+        assert log_data[-1]['me'] == 'SomeoneElse'
+
+
+
+if __name__ == '__main__':
+    unittest.main()