~pedronis/uservice-logging/use-pip-cache-for-dev-n-testing

« back to all changes in this revision

Viewing changes to uservice_logging/tests/test_logging.py

  • Committer: Tanuki Bot
  • Author(s): Samuele Pedroni (Canonical Services Ltd.)
  • Date: 2015-08-03 15:20:39 UTC
  • mfrom: (17.1.9 thread-safe-set-extra-args)
  • Revision ID: tanuki_bot-20150803152039-nvq7bxdob2mx16uz
make extra args per thread with a add_extra_args that is thread-safe instead of set_extra_args add is additive as well over a thread lifetime, have a reset_extra_args as well

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
import sys
24
24
import tempfile
25
25
from textwrap import dedent
 
26
import threading
26
27
 
27
28
from fixtures import Fixture
28
29
from testtools import TestCase
234
235
 
235
236
    def test_can_set_extra_details(self):
236
237
        logger, filt = self.create_log_with_filter()
237
 
        logger.set_extra_args(dict(foo='bar'))
 
238
        logger.add_extra_args(dict(foo='bar'))
238
239
        logger.info("Testing")
239
240
 
240
241
        self.assertThat(filt.log_records[0].foo, Equals('bar'))
260
261
 
261
262
    def test_extra_args_can_be_mixed(self):
262
263
        logger, filt = self.create_log_with_filter()
263
 
        logger.set_extra_args(dict(foo='bar'))
 
264
        logger.add_extra_args(dict(foo='bar'))
264
265
        logger.info("Testing", extra=dict(bar='baz'))
265
266
 
266
267
        self.assertThat(filt.log_records[0].foo, Equals('bar'))
268
269
 
269
270
    def test_log_method_extra_args_take_priority(self):
270
271
        logger, filt = self.create_log_with_filter()
271
 
        logger.set_extra_args(dict(foo='bar'))
 
272
        logger.add_extra_args(dict(foo='bar'))
272
273
        logger.info("Testing", extra=dict(foo='baz'))
273
274
 
274
275
        self.assertThat(filt.log_records[0].foo, Equals('baz'))
 
276
 
 
277
    def test_extra_args_additive_and_reset(self):
 
278
        class XLogger(util_logging.ExtraLogger):
 
279
            extra_args = dict(bar='baz')
 
280
        logger, filt = self.create_log_with_filter(__name__+'.x.add', XLogger)
 
281
        logger.add_extra_args(dict(foo='bar'))
 
282
        logger.info("Testing")
 
283
 
 
284
        self.assertThat(filt.log_records[0].bar, Equals('baz'))
 
285
        self.assertThat(filt.log_records[0].foo, Equals('bar'))
 
286
 
 
287
        logger.reset_extra_args()
 
288
        logger.info("Testing")
 
289
 
 
290
        self.assertThat(filt.log_records[1].bar, Equals('baz'))
 
291
        self.assertFalse(hasattr(filt.log_records[1], 'foo'))
 
292
 
 
293
    def test_extra_args_thread_safe(self):
 
294
        class XLogger(util_logging.ExtraLogger):
 
295
            extra_args = dict(bar='baz')
 
296
        logger, filt = self.create_log_with_filter(__name__+'.x.safe', XLogger)
 
297
        logger.add_extra_args(dict(foo='from1'))
 
298
 
 
299
        def t2():
 
300
            logger.add_extra_args(dict(foo='from2'))
 
301
            logger.info("Testing")
 
302
        th2 = threading.Thread(target=t2)
 
303
        th2.start()
 
304
        th2.join()
 
305
        logger.info("Testing")
 
306
 
 
307
        self.assertThat(filt.log_records[0].bar, Equals('baz'))
 
308
        self.assertThat(filt.log_records[0].foo, Equals('from2'))
 
309
        self.assertThat(filt.log_records[1].bar, Equals('baz'))
 
310
        self.assertThat(filt.log_records[1].foo, Equals('from1'))