Skip to content

Commit 4b2f0b1

Browse files
committed
Improve task grouping unit tests
1 parent db6dca5 commit 4b2f0b1

File tree

1 file changed

+39
-2
lines changed

1 file changed

+39
-2
lines changed

eb_sqs/tests/worker/tests_worker.py

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@
1818
def dummy_task(msg):
1919
return msg
2020

21+
@task()
22+
def repeating_group_task(count):
23+
if count > 0:
24+
repeating_group_task.delay(count - 1, group_id='group-id', execute_inline=True)
25+
26+
@task(max_retries=5)
27+
def max_retries_group_task():
28+
repeating_group_task.delay(3, group_id='group-id', execute_inline=True)
29+
max_retries_group_task.retry()
30+
2131
global_group_mock = Mock()
2232

2333
class WorkerTest(TestCase):
@@ -81,7 +91,7 @@ def test_delay_with_group(self):
8191
def test_group_callback(self):
8292
settings.GROUP_CALLBACK_TASK = Mock()
8393

84-
self.worker.delay('group-id', 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 3, True)
94+
self.worker.delay('group-id', 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 0, True)
8595

8696
self.group_mock.remove.assert_called_once()
8797
settings.GROUP_CALLBACK_TASK.delay.assert_called_once()
@@ -91,13 +101,40 @@ def test_group_callback(self):
91101
def test_group_callback_string(self):
92102
settings.GROUP_CALLBACK_TASK = 'eb_sqs.tests.worker.tests_worker.global_group_mock'
93103

94-
self.worker.delay('group-id', 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 3, True)
104+
self.worker.delay('group-id', 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, False, 0, True)
95105

96106
self.group_mock.remove.assert_called_once()
97107
global_group_mock.delay.assert_called_once()
98108

99109
settings.GROUP_CALLBACK_TASK = None
100110

111+
def test_group(self):
112+
settings.GROUP_CALLBACK_TASK = Mock()
113+
114+
group_set = set()
115+
self.group_mock.add.side_effect = lambda task: group_set.add(task.id)
116+
self.group_mock.remove.side_effect = lambda task: len(group_set) == 0 if group_set.discard(task.id) is None else False
117+
118+
repeating_group_task.delay(3, group_id='group-id', execute_inline=True)
119+
120+
settings.GROUP_CALLBACK_TASK.delay.assert_called_once()
121+
122+
settings.GROUP_CALLBACK_TASK = None
123+
124+
def test_group_match_retries_reached(self):
125+
settings.GROUP_CALLBACK_TASK = Mock()
126+
127+
group_set = set()
128+
self.group_mock.add.side_effect = lambda task: group_set.add(task.id)
129+
self.group_mock.remove.side_effect = lambda task: len(group_set) == 0 if group_set.discard(
130+
task.id) is None else False
131+
132+
max_retries_group_task.delay(group_id='group-id', execute_inline=True)
133+
134+
settings.GROUP_CALLBACK_TASK.delay.assert_called_once()
135+
136+
settings.GROUP_CALLBACK_TASK = None
137+
101138
def test_retry_execution(self):
102139
task = WorkerTask('id', None, 'queue', dummy_task, [], {'msg': 'Hello World!'}, 5, 0, False)
103140
self.assertEqual(dummy_task.retry_num, 0)

0 commit comments

Comments
 (0)