1 # Copyright (c) 2020 Deutsche Telekom.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
5 # http://www.apache.org/licenses/LICENSE-2.0
7 # Unless required by applicable law or agreed to in writing, software
8 # distributed under the License is distributed on an "AS IS" BASIS,
9 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 if sys.version_info[0] < 3:
15 from mock import MagicMock, patch
16 if sys.version_info[0] >= 3:
17 from unittest.mock import MagicMock, patch
21 from onaplogging.mdcformatter import MDCFormatter
24 class TestMdcFormatter(unittest.TestCase):
26 def test_mdc_formatter_init(self):
27 mdc_formatter = MDCFormatter()
28 self.assertEqual(mdc_formatter.style, "%")
29 self.assertEqual(mdc_formatter._mdc_tag, "%(mdc)s")
30 self.assertEqual(mdc_formatter._mdcFmt, "{reqeustID}")
32 mdc_formatter = MDCFormatter(mdcfmt="{test}")
33 self.assertEqual(mdc_formatter.style, "%")
34 self.assertEqual(mdc_formatter._mdc_tag, "%(mdc)s")
35 self.assertEqual(mdc_formatter._mdcFmt, "{test}")
37 if sys.version_info[0] >= 3:
38 mdc_formatter = MDCFormatter(style="{")
39 self.assertEqual(mdc_formatter.style, "{")
40 self.assertEqual(mdc_formatter._mdc_tag, "{mdc}")
41 self.assertEqual(mdc_formatter._mdcFmt, "{reqeustID}")
43 mdc_formatter = MDCFormatter(style="$")
44 self.assertEqual(mdc_formatter.style, "$")
45 self.assertEqual(mdc_formatter._mdc_tag, "${mdc}")
46 self.assertEqual(mdc_formatter._mdcFmt, "{reqeustID}")
48 with pytest.raises(ValueError):
49 MDCFormatter(style="*")
51 def test_mdc_fmt_key(self):
52 mdc_formatter = MDCFormatter()
53 brace, not_brace = mdc_formatter._mdcfmtKey()
54 self.assertEqual(brace, ["{reqeustID}"])
55 self.assertEqual(list(not_brace), ["reqeustID"])
57 mdc_formatter = MDCFormatter(mdcfmt="{test} {value} {anything}")
58 brace, not_brace = mdc_formatter._mdcfmtKey()
59 self.assertEqual(brace, ["{test}", "{value}", "{anything}"])
60 self.assertEqual(list(not_brace), ["test", "value", "anything"])
62 mdc_formatter = MDCFormatter(mdcfmt="no_braces")
63 brace, not_brace = mdc_formatter._mdcfmtKey()
64 self.assertEqual(brace, [])
65 self.assertIsNone(not_brace)
67 mdc_formatter = MDCFormatter(mdcfmt="}what?{")
68 brace, not_brace = mdc_formatter._mdcfmtKey()
69 self.assertEqual(brace, [])
70 self.assertIsNone(not_brace)
72 mdc_formatter = MDCFormatter(mdcfmt="}{hello}{")
73 brace, not_brace = mdc_formatter._mdcfmtKey()
74 self.assertEqual(brace, ["{hello}"])
75 self.assertEqual(list(not_brace), ["hello"])
77 mdc_formatter = MDCFormatter(mdcfmt="}{}{hel{lo}{")
78 brace, not_brace = mdc_formatter._mdcfmtKey()
79 self.assertEqual(brace, [])
80 self.assertIsNone(not_brace)
82 def test_format(self):
84 with patch("onaplogging.mdcformatter.MarkerFormatter.format") as mock_marker_formatter_format:
85 mdc_formatter = MDCFormatter()
86 mdc_formatter.format(record)
87 mock_marker_formatter_format.assert_called_once_with(record)
88 self.assertEqual(mdc_formatter._fmt, "%(message)s")
90 if sys.version_info[0] >= 3:
91 with patch("onaplogging.mdcformatter.MarkerFormatter.format") as mock_marker_formatter_format:
92 mdc_formatter = MDCFormatter(fmt="{mdc}", style="{", mdcfmt="{key}")
93 mdc_formatter.format(record)
94 mock_marker_formatter_format.assert_called_once_with(record)
95 self.assertEqual(mdc_formatter._fmt, "key=")
97 record.mdc = {"key": 123}
98 with patch("onaplogging.mdcformatter.MarkerFormatter.format") as mock_marker_formatter_format:
99 mdc_formatter = MDCFormatter(fmt="{mdc}", style="{", mdcfmt="no_braces")
100 mdc_formatter.format(record)
101 mock_marker_formatter_format.assert_called_once_with(record)
102 self.assertEqual(mdc_formatter._fmt, "")
104 with patch("onaplogging.mdcformatter.MarkerFormatter.format") as mock_marker_formatter_format:
105 mdc_formatter = MDCFormatter(fmt="{mdc}", style="{", mdcfmt="{key}")
106 mdc_formatter.format(record)
107 mock_marker_formatter_format.assert_called_once_with(record)
108 self.assertEqual(mdc_formatter._fmt, "key=123")