Skip to content

Commit c0586cc

Browse files
committed
Add some tests.
1 parent 51c412f commit c0586cc

1 file changed

Lines changed: 84 additions & 0 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import unittest
2+
import logging
3+
from unittest.mock import patch
4+
from apache_beam.utils.logger import log_first_n, log_every_n, log_every_n_seconds, _LOG_COUNTER, _LOG_TIMER
5+
6+
import pytest
7+
8+
9+
@pytest.mark.no_xdist
10+
class TestLogFirstN(unittest.TestCase):
11+
def setUp(self):
12+
_LOG_COUNTER.clear()
13+
_LOG_TIMER.clear()
14+
15+
@patch('apache_beam.utils.logger.logging.getLogger')
16+
def test_log_first_n_once(self, mock_get_logger):
17+
mock_logger = mock_get_logger.return_value
18+
for _ in range(5):
19+
log_first_n(logging.INFO, "Test message", n=1)
20+
mock_logger.log.assert_called_once()
21+
22+
@patch('apache_beam.utils.logger.logging.getLogger')
23+
def test_log_first_n_multiple(self, mock_get_logger):
24+
mock_logger = mock_get_logger.return_value
25+
for _ in range(5):
26+
log_first_n(logging.INFO, "Test message", n=3)
27+
self.assertEqual(mock_logger.log.call_count, 3)
28+
29+
@patch('apache_beam.utils.logger.logging.getLogger')
30+
def test_log_first_n_with_different_callers(self, mock_get_logger):
31+
mock_logger = mock_get_logger.return_value
32+
for _ in range(5):
33+
log_first_n(logging.INFO, "Test message", n=2)
34+
35+
# call from another "caller" (another line)
36+
for _ in range(5):
37+
log_first_n(logging.INFO, "Test message", n=2)
38+
39+
self.assertEqual(mock_logger.log.call_count, 4)
40+
41+
@patch('apache_beam.utils.logger.logging.getLogger')
42+
def test_log_first_n_with_message_key(self, mock_get_logger):
43+
mock_logger = mock_get_logger.return_value
44+
log_first_n(logging.INFO, "Test message", n=1, key="message")
45+
log_first_n(logging.INFO, "Test message", n=1, key="message")
46+
self.assertEqual(mock_logger.log.call_count, 1)
47+
48+
@patch('apache_beam.utils.logger.logging.getLogger')
49+
def test_log_first_n_with_caller_and_message_key(self, mock_get_logger):
50+
mock_logger = mock_get_logger.return_value
51+
for message in ["Test message", "Another message"]:
52+
for _ in range(5):
53+
log_first_n(logging.INFO, message, n=1, key=("caller", "message"))
54+
self.assertEqual(mock_logger.log.call_count, 2)
55+
56+
@patch('apache_beam.utils.logger.logging.getLogger')
57+
def test_log_every_n_multiple(self, mock_get_logger):
58+
mock_logger = mock_get_logger.return_value
59+
for _ in range(9):
60+
log_every_n(logging.INFO, "Test message", n=2)
61+
62+
self.assertEqual(mock_logger.log.call_count, 5)
63+
64+
@patch('apache_beam.utils.logger.logging.getLogger')
65+
@patch('apache_beam.utils.logger.time.time')
66+
def test_log_every_n_seconds_always(self, mock_time, mock_get_logger):
67+
mock_logger = mock_get_logger.return_value
68+
for i in range(3):
69+
mock_time.return_value = i
70+
log_every_n_seconds(logging.INFO, "Test message", n=0)
71+
self.assertEqual(mock_logger.log.call_count, 3)
72+
73+
@patch('apache_beam.utils.logger.logging.getLogger')
74+
@patch('apache_beam.utils.logger.time.time')
75+
def test_log_every_n_seconds_multiple(self, mock_time, mock_get_logger):
76+
mock_logger = mock_get_logger.return_value
77+
for i in range(4):
78+
mock_time.return_value = i
79+
log_every_n_seconds(logging.INFO, "Test message", n=2)
80+
self.assertEqual(mock_logger.log.call_count, 2)
81+
82+
83+
if __name__ == '__main__':
84+
unittest.main()

0 commit comments

Comments
 (0)