Skip to content

Commit 3e0d479

Browse files
Added task def helper tests
1 parent d4500c4 commit 3e0d479

1 file changed

Lines changed: 299 additions & 0 deletions

File tree

Lines changed: 299 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,299 @@
1+
from unittest.mock import Mock
2+
3+
from conductor.shared.worker.task_definition_helper import apply_task_options_to_task_def
4+
from conductor.shared.worker.task_options import TaskOptions
5+
6+
7+
def test_apply_task_options_with_none():
8+
task_def = Mock()
9+
10+
apply_task_options_to_task_def(task_def, None)
11+
12+
task_def.assert_not_called()
13+
14+
15+
def test_apply_all_task_options():
16+
task_def = Mock()
17+
task_options = TaskOptions(
18+
timeout_seconds=3600,
19+
response_timeout_seconds=300,
20+
poll_timeout_seconds=120,
21+
retry_count=5,
22+
retry_logic="EXPONENTIAL_BACKOFF",
23+
retry_delay_seconds=10,
24+
backoff_scale_factor=3,
25+
rate_limit_per_frequency=100,
26+
rate_limit_frequency_in_seconds=60,
27+
concurrent_exec_limit=10,
28+
timeout_policy="TIME_OUT_WF",
29+
owner_email="test@example.com",
30+
description="Test task definition"
31+
)
32+
33+
apply_task_options_to_task_def(task_def, task_options)
34+
35+
assert task_def.timeout_seconds == 3600
36+
assert task_def.response_timeout_seconds == 300
37+
assert task_def.poll_timeout_seconds == 120
38+
assert task_def.retry_count == 5
39+
assert task_def.retry_logic == "EXPONENTIAL_BACKOFF"
40+
assert task_def.retry_delay_seconds == 10
41+
assert task_def.backoff_scale_factor == 3
42+
assert task_def.rate_limit_per_frequency == 100
43+
assert task_def.rate_limit_frequency_in_seconds == 60
44+
assert task_def.concurrent_exec_limit == 10
45+
assert task_def.timeout_policy == "TIME_OUT_WF"
46+
assert task_def.owner_email == "test@example.com"
47+
assert task_def.description == "Test task definition"
48+
49+
50+
def test_apply_partial_task_options():
51+
task_def = Mock()
52+
task_def.timeout_seconds = None
53+
task_def.retry_count = None
54+
task_def.description = None
55+
56+
task_options = TaskOptions(
57+
timeout_seconds=120,
58+
retry_count=3,
59+
description="Partial test"
60+
)
61+
62+
apply_task_options_to_task_def(task_def, task_options)
63+
64+
assert task_def.timeout_seconds == 120
65+
assert task_def.retry_count == 3
66+
assert task_def.description == "Partial test"
67+
68+
69+
def test_apply_timeout_options():
70+
task_def = Mock()
71+
task_options = TaskOptions(
72+
timeout_seconds=3600,
73+
response_timeout_seconds=300,
74+
poll_timeout_seconds=120
75+
)
76+
77+
apply_task_options_to_task_def(task_def, task_options)
78+
79+
assert task_def.timeout_seconds == 3600
80+
assert task_def.response_timeout_seconds == 300
81+
assert task_def.poll_timeout_seconds == 120
82+
83+
84+
def test_apply_retry_options():
85+
task_def = Mock()
86+
task_options = TaskOptions(
87+
retry_count=5,
88+
retry_logic="LINEAR_BACKOFF",
89+
retry_delay_seconds=10,
90+
backoff_scale_factor=2
91+
)
92+
93+
apply_task_options_to_task_def(task_def, task_options)
94+
95+
assert task_def.retry_count == 5
96+
assert task_def.retry_logic == "LINEAR_BACKOFF"
97+
assert task_def.retry_delay_seconds == 10
98+
assert task_def.backoff_scale_factor == 2
99+
100+
101+
def test_apply_rate_limit_options():
102+
task_def = Mock()
103+
task_options = TaskOptions(
104+
rate_limit_per_frequency=100,
105+
rate_limit_frequency_in_seconds=60,
106+
concurrent_exec_limit=10
107+
)
108+
109+
apply_task_options_to_task_def(task_def, task_options)
110+
111+
assert task_def.rate_limit_per_frequency == 100
112+
assert task_def.rate_limit_frequency_in_seconds == 60
113+
assert task_def.concurrent_exec_limit == 10
114+
115+
116+
def test_apply_timeout_policy():
117+
task_def = Mock()
118+
task_options = TaskOptions(timeout_policy="RETRY")
119+
120+
apply_task_options_to_task_def(task_def, task_options)
121+
122+
assert task_def.timeout_policy == "RETRY"
123+
124+
125+
def test_apply_owner_email():
126+
task_def = Mock()
127+
task_options = TaskOptions(owner_email="owner@example.com")
128+
129+
apply_task_options_to_task_def(task_def, task_options)
130+
131+
assert task_def.owner_email == "owner@example.com"
132+
133+
134+
def test_apply_description():
135+
task_def = Mock()
136+
task_options = TaskOptions(description="Test description")
137+
138+
apply_task_options_to_task_def(task_def, task_options)
139+
140+
assert task_def.description == "Test description"
141+
142+
143+
def test_only_sets_non_none_values():
144+
task_def = Mock()
145+
task_def.timeout_seconds = 100
146+
task_def.retry_count = 2
147+
148+
task_options = TaskOptions(
149+
timeout_seconds=200,
150+
retry_count=None
151+
)
152+
153+
apply_task_options_to_task_def(task_def, task_options)
154+
155+
assert task_def.timeout_seconds == 200
156+
assert task_def.retry_count == 2
157+
158+
159+
def test_overwrites_existing_values():
160+
task_def = Mock()
161+
task_def.timeout_seconds = 100
162+
task_def.retry_count = 2
163+
task_def.description = "Old description"
164+
165+
task_options = TaskOptions(
166+
timeout_seconds=3600,
167+
retry_count=5,
168+
description="New description"
169+
)
170+
171+
apply_task_options_to_task_def(task_def, task_options)
172+
173+
assert task_def.timeout_seconds == 3600
174+
assert task_def.retry_count == 5
175+
assert task_def.description == "New description"
176+
177+
178+
def test_apply_fixed_retry_logic():
179+
task_def = Mock()
180+
task_options = TaskOptions(
181+
retry_count=3,
182+
retry_logic="FIXED",
183+
retry_delay_seconds=5
184+
)
185+
186+
apply_task_options_to_task_def(task_def, task_options)
187+
188+
assert task_def.retry_count == 3
189+
assert task_def.retry_logic == "FIXED"
190+
assert task_def.retry_delay_seconds == 5
191+
192+
193+
def test_apply_linear_backoff_retry_logic():
194+
task_def = Mock()
195+
task_options = TaskOptions(
196+
retry_count=3,
197+
retry_logic="LINEAR_BACKOFF",
198+
retry_delay_seconds=5
199+
)
200+
201+
apply_task_options_to_task_def(task_def, task_options)
202+
203+
assert task_def.retry_count == 3
204+
assert task_def.retry_logic == "LINEAR_BACKOFF"
205+
assert task_def.retry_delay_seconds == 5
206+
207+
208+
def test_apply_exponential_backoff_retry_logic():
209+
task_def = Mock()
210+
task_options = TaskOptions(
211+
retry_count=5,
212+
retry_logic="EXPONENTIAL_BACKOFF",
213+
retry_delay_seconds=2,
214+
backoff_scale_factor=3
215+
)
216+
217+
apply_task_options_to_task_def(task_def, task_options)
218+
219+
assert task_def.retry_count == 5
220+
assert task_def.retry_logic == "EXPONENTIAL_BACKOFF"
221+
assert task_def.retry_delay_seconds == 2
222+
assert task_def.backoff_scale_factor == 3
223+
224+
225+
def test_apply_time_out_wf_policy():
226+
task_def = Mock()
227+
task_options = TaskOptions(timeout_policy="TIME_OUT_WF")
228+
229+
apply_task_options_to_task_def(task_def, task_options)
230+
231+
assert task_def.timeout_policy == "TIME_OUT_WF"
232+
233+
234+
def test_apply_alert_only_policy():
235+
task_def = Mock()
236+
task_options = TaskOptions(timeout_policy="ALERT_ONLY")
237+
238+
apply_task_options_to_task_def(task_def, task_options)
239+
240+
assert task_def.timeout_policy == "ALERT_ONLY"
241+
242+
243+
def test_apply_retry_timeout_policy():
244+
task_def = Mock()
245+
task_options = TaskOptions(timeout_policy="RETRY")
246+
247+
apply_task_options_to_task_def(task_def, task_options)
248+
249+
assert task_def.timeout_policy == "RETRY"
250+
251+
252+
def test_apply_zero_values():
253+
task_def = Mock()
254+
task_options = TaskOptions(
255+
timeout_seconds=0,
256+
retry_count=0,
257+
rate_limit_per_frequency=0,
258+
concurrent_exec_limit=0
259+
)
260+
261+
apply_task_options_to_task_def(task_def, task_options)
262+
263+
assert task_def.timeout_seconds == 0
264+
assert task_def.retry_count == 0
265+
assert task_def.rate_limit_per_frequency == 0
266+
assert task_def.concurrent_exec_limit == 0
267+
268+
269+
def test_apply_with_existing_task_def_values():
270+
task_def = Mock()
271+
task_def.timeout_seconds = 100
272+
task_def.response_timeout_seconds = 50
273+
task_def.retry_count = 1
274+
task_def.description = "Existing"
275+
276+
task_options = TaskOptions(
277+
timeout_seconds=200
278+
)
279+
280+
apply_task_options_to_task_def(task_def, task_options)
281+
282+
assert task_def.timeout_seconds == 200
283+
assert task_def.response_timeout_seconds == 50
284+
assert task_def.retry_count == 1
285+
assert task_def.description == "Existing"
286+
287+
288+
def test_apply_empty_task_options():
289+
task_def = Mock()
290+
task_def.timeout_seconds = None
291+
task_def.retry_count = None
292+
293+
task_options = TaskOptions()
294+
295+
apply_task_options_to_task_def(task_def, task_options)
296+
297+
assert task_def.timeout_seconds is None
298+
assert task_def.retry_count is None
299+

0 commit comments

Comments
 (0)