|
14 | 14 |
|
15 | 15 | import logging |
16 | 16 | import unittest |
| 17 | +from unittest.mock import patch |
17 | 18 | import mock |
18 | 19 |
|
| 20 | +from google.cloud.logging_v2.handlers._monitored_resources import ( |
| 21 | + _FUNCTION_ENV_VARS, |
| 22 | + _GAE_ENV_VARS, |
| 23 | +) |
| 24 | + |
19 | 25 |
|
20 | 26 | class TestCloudLoggingHandler(unittest.TestCase): |
21 | 27 |
|
@@ -165,6 +171,49 @@ def test_setup_logging_excludes(self): |
165 | 171 | self.assertNotIn(handler, excluded_logger.handlers) |
166 | 172 | self.assertFalse(excluded_logger.propagate) |
167 | 173 |
|
| 174 | + @patch.dict("os.environ", {envar: "1" for envar in _FUNCTION_ENV_VARS}) |
| 175 | + def test_remove_handlers_gcf(self): |
| 176 | + logger = logging.getLogger() |
| 177 | + # add fake handler |
| 178 | + added_handler = logging.StreamHandler() |
| 179 | + logger.addHandler(added_handler) |
| 180 | + |
| 181 | + handler = _Handler(logging.INFO) |
| 182 | + self._call_fut(handler) |
| 183 | + self.assertNotIn(added_handler, logger.handlers) |
| 184 | + # handler should be removed from logger |
| 185 | + self.assertEqual(len(logger.handlers), 1) |
| 186 | + |
| 187 | + @patch.dict("os.environ", {envar: "1" for envar in _GAE_ENV_VARS}) |
| 188 | + def test_remove_handlers_gae(self): |
| 189 | + logger = logging.getLogger() |
| 190 | + # add fake handler |
| 191 | + added_handler = logging.StreamHandler() |
| 192 | + logger.addHandler(added_handler) |
| 193 | + |
| 194 | + handler = _Handler(logging.INFO) |
| 195 | + self._call_fut(handler) |
| 196 | + self.assertNotIn(added_handler, logger.handlers) |
| 197 | + # handler should be removed from logger |
| 198 | + self.assertEqual(len(logger.handlers), 1) |
| 199 | + |
| 200 | + def test_keep_handlers_others(self): |
| 201 | + # mock non-cloud environment |
| 202 | + patch = mock.patch( |
| 203 | + "google.cloud.logging_v2.handlers._monitored_resources.retrieve_metadata_server", |
| 204 | + return_value=None, |
| 205 | + ) |
| 206 | + with patch: |
| 207 | + # add fake handler |
| 208 | + added_handler = logging.StreamHandler() |
| 209 | + logger = logging.getLogger() |
| 210 | + logger.addHandler(added_handler) |
| 211 | + |
| 212 | + handler = _Handler(logging.INFO) |
| 213 | + self._call_fut(handler) |
| 214 | + # added handler should remain in logger |
| 215 | + self.assertIn(added_handler, logger.handlers) |
| 216 | + |
168 | 217 | def setUp(self): |
169 | 218 | self._handlers_cache = logging.getLogger().handlers[:] |
170 | 219 |
|
|
0 commit comments