105 lines
4.2 KiB
Python
105 lines
4.2 KiB
Python
import random
|
|
import string
|
|
from unittest import mock
|
|
|
|
from django.test import SimpleTestCase
|
|
|
|
from ...utils.logging import (TAG_DATA_FEED, TAG_PERF, get_logger,
|
|
get_logger_name)
|
|
from .samples import MyClass, my_func
|
|
|
|
|
|
class LoggingTest(SimpleTestCase):
|
|
|
|
def test_get_logger_name(self):
|
|
module_name = __name__
|
|
ext_module_name = my_func.__module__
|
|
|
|
MainType = MyClass
|
|
main_type = MainType(11)
|
|
main_type_logger = f'{ext_module_name}.{MainType.__qualname__}'
|
|
SubType = MyClass.MySubClass
|
|
sub_type = SubType(13)
|
|
sub_type_logger = f'{ext_module_name}.{SubType.__qualname__}'
|
|
|
|
def local_func(a: int, b: int):
|
|
return a + b
|
|
|
|
# None
|
|
self.assertIsNone(get_logger_name())
|
|
self.assertIsNone(get_logger_name(None))
|
|
|
|
# classes natives
|
|
self.assertIsNone(get_logger_name(str))
|
|
self.assertIsNone(get_logger_name(int))
|
|
self.assertIsNone(get_logger_name(dict))
|
|
self.assertIsNone(get_logger_name(list))
|
|
self.assertIsNone(get_logger_name(tuple))
|
|
|
|
# instances de classes natives (mais pas str)
|
|
self.assertIsNone(get_logger_name(1))
|
|
self.assertIsNone(get_logger_name({'a': 'b'}))
|
|
self.assertIsNone(get_logger_name(['c']))
|
|
self.assertIsNone(get_logger_name(('d',)))
|
|
|
|
# fonctions natives
|
|
self.assertIsNone(get_logger_name(str.join))
|
|
|
|
# str
|
|
self.assertEqual(get_logger_name('test'), 'test')
|
|
self.assertEqual(get_logger_name(''), None)
|
|
|
|
# classes
|
|
self.assertEqual(get_logger_name(MainType), main_type_logger)
|
|
self.assertEqual(get_logger_name(SubType), sub_type_logger)
|
|
|
|
# instances de classes
|
|
self.assertEqual(get_logger_name(main_type), main_type_logger)
|
|
self.assertEqual(get_logger_name(sub_type), sub_type_logger)
|
|
|
|
# fonctions et méthodes
|
|
self.assertEqual(get_logger_name(local_func), module_name)
|
|
self.assertEqual(get_logger_name(my_func), ext_module_name)
|
|
self.assertEqual(get_logger_name(MainType.class_met), main_type_logger)
|
|
self.assertEqual(get_logger_name(MainType.static_met), main_type_logger)
|
|
self.assertEqual(get_logger_name(main_type.std_met), main_type_logger)
|
|
self.assertEqual(get_logger_name(SubType.sub_class_met), sub_type_logger)
|
|
self.assertEqual(get_logger_name(SubType.sub_static_met), sub_type_logger)
|
|
self.assertEqual(get_logger_name(sub_type.sub_std_met), sub_type_logger)
|
|
|
|
def test_get_logger_without_tags(self):
|
|
func_1 = MyClass.class_met
|
|
func_2 = MyClass.static_met
|
|
|
|
def given():
|
|
self.assertEqual(get_logger_name(func_1), get_logger_name(func_2), 'le nom de logger doit être le même')
|
|
given()
|
|
|
|
msg = "l'instance doit être la même"
|
|
logger_name = ''.join(random.choice(string.ascii_lowercase) for i in range(10))
|
|
self.assertIs(get_logger(logger_name), get_logger(logger_name), msg)
|
|
self.assertIs(get_logger(func_1), get_logger(func_2), msg)
|
|
|
|
def test_get_logger_with_tags(self):
|
|
func_1 = MyClass.class_met
|
|
func_2 = MyClass.static_met
|
|
|
|
def given():
|
|
self.assertEqual(get_logger_name(func_1), get_logger_name(func_2), 'le nom de logger doit être le même')
|
|
given()
|
|
|
|
msg = "l'instance doit être la même"
|
|
for tags in [TAG_PERF, TAG_DATA_FEED, ('1', '2'), ['3', '4'], set(['5', '6'])]:
|
|
with self.subTest(tags=tags):
|
|
logger_name = ''.join(random.choice(string.ascii_lowercase) for i in range(10))
|
|
self.assertIs(get_logger(logger_name, tags), get_logger(logger_name, tags), msg)
|
|
self.assertIs(get_logger(func_1, tags), get_logger(func_2, tags), msg)
|
|
|
|
prev_logger = None
|
|
logger_name = ''.join(random.choice(string.ascii_lowercase) for i in range(10))
|
|
for i, tags in enumerate([('1', '2', '3', '4'), ['3', '4', '1', '2'], set(['2', '1', '3', '4', '1'])]):
|
|
curr_logger = get_logger(logger_name, tags)
|
|
if i > 0:
|
|
self.assertIs(curr_logger, prev_logger, msg)
|
|
prev_logger = get_logger(logger_name, tags)
|