Skip to content

Commit 5eaa9d1

Browse files
authored
Add unittests for logger execution (#1196)
1 parent 78f86f3 commit 5eaa9d1

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed

test/test_logger.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
#!/usr/bin/env python
2+
# coding: utf-8
3+
4+
"""
5+
This module tests the functions inside of logger.py
6+
"""
7+
8+
import unittest
9+
from unittest import mock
10+
from unittest.mock import Mock
11+
import sys
12+
import can
13+
import can.logger
14+
15+
from .config import *
16+
17+
18+
class TestLoggerScriptModule(unittest.TestCase):
19+
def setUp(self) -> None:
20+
# Patch VirtualBus object
21+
patcher_virtual_bus = mock.patch("can.interfaces.virtual.VirtualBus", spec=True)
22+
self.MockVirtualBus = patcher_virtual_bus.start()
23+
self.addCleanup(patcher_virtual_bus.stop)
24+
self.mock_virtual_bus = self.MockVirtualBus.return_value
25+
self.mock_virtual_bus.shutdown = Mock()
26+
27+
# Patch Logger object
28+
patcher_logger = mock.patch("can.logger.Logger", spec=True)
29+
self.MockLogger = patcher_logger.start()
30+
self.addCleanup(patcher_logger.stop)
31+
self.mock_logger = self.MockLogger.return_value
32+
self.mock_logger.stop = Mock()
33+
34+
self.MockLoggerUse = self.MockLogger
35+
self.loggerToUse = self.mock_logger
36+
37+
# Patch SizedRotatingLogger object
38+
patcher_logger_sized = mock.patch("can.logger.SizedRotatingLogger", spec=True)
39+
self.MockLoggerSized = patcher_logger_sized.start()
40+
self.addCleanup(patcher_logger_sized.stop)
41+
self.mock_logger_sized = self.MockLoggerSized.return_value
42+
self.mock_logger_sized.stop = Mock()
43+
44+
self.testmsg = can.Message(
45+
arbitration_id=0xC0FFEE, data=[0, 25, 0, 1, 3, 1, 4, 1], is_extended_id=True
46+
)
47+
48+
self.baseargs = [sys.argv[0], "-i", "virtual"]
49+
50+
def assertSuccessfullCleanup(self):
51+
self.MockVirtualBus.assert_called_once()
52+
self.mock_virtual_bus.shutdown.assert_called_once()
53+
54+
self.MockLoggerUse.assert_called_once()
55+
self.loggerToUse.stop.assert_called_once()
56+
57+
def test_log_virtual(self):
58+
self.mock_virtual_bus.recv = Mock(side_effect=[self.testmsg, KeyboardInterrupt])
59+
60+
sys.argv = self.baseargs
61+
can.logger.main()
62+
self.assertSuccessfullCleanup()
63+
self.mock_logger.assert_called_once()
64+
65+
def test_log_virtual_active(self):
66+
self.mock_virtual_bus.recv = Mock(side_effect=[self.testmsg, KeyboardInterrupt])
67+
68+
sys.argv = self.baseargs + ["--active"]
69+
can.logger.main()
70+
self.assertSuccessfullCleanup()
71+
self.mock_logger.assert_called_once()
72+
self.assertEqual(self.mock_virtual_bus.state, can.BusState.ACTIVE)
73+
74+
def test_log_virtual_passive(self):
75+
self.mock_virtual_bus.recv = Mock(side_effect=[self.testmsg, KeyboardInterrupt])
76+
77+
sys.argv = self.baseargs + ["--passive"]
78+
can.logger.main()
79+
self.assertSuccessfullCleanup()
80+
self.mock_logger.assert_called_once()
81+
self.assertEqual(self.mock_virtual_bus.state, can.BusState.PASSIVE)
82+
83+
def test_log_virtual_with_config(self):
84+
self.mock_virtual_bus.recv = Mock(side_effect=[self.testmsg, KeyboardInterrupt])
85+
86+
sys.argv = self.baseargs + [
87+
"--bitrate",
88+
"250000",
89+
"--fd",
90+
"--data_bitrate",
91+
"2000000",
92+
]
93+
can.logger.main()
94+
self.assertSuccessfullCleanup()
95+
self.mock_logger.assert_called_once()
96+
97+
def test_log_virtual_sizedlogger(self):
98+
self.mock_virtual_bus.recv = Mock(side_effect=[self.testmsg, KeyboardInterrupt])
99+
self.MockLoggerUse = self.MockLoggerSized
100+
self.loggerToUse = self.mock_logger_sized
101+
102+
sys.argv = self.baseargs + ["--file_size", "1000000"]
103+
can.logger.main()
104+
self.assertSuccessfullCleanup()
105+
self.mock_logger_sized.assert_called_once()
106+
107+
108+
if __name__ == "__main__":
109+
unittest.main()

0 commit comments

Comments
 (0)