Skip to content

Commit 5595afc

Browse files
committed
Use parametrize for all tests
1 parent d4a5f5b commit 5595afc

File tree

1 file changed

+58
-184
lines changed

1 file changed

+58
-184
lines changed

tests/worker/test_workflow.py

Lines changed: 58 additions & 184 deletions
Original file line numberDiff line numberDiff line change
@@ -5412,19 +5412,19 @@ def __init__(self) -> None:
54125412
async def run(
54135413
self,
54145414
workflow_termination_type: Literal[
5415-
"cancellation",
5416-
"failure",
5417-
"continue-as-new",
5418-
"fail-post-continue-as-new-run",
5415+
"-cancellation-",
5416+
"-failure-",
5417+
"-continue-as-new-",
5418+
"-fail-post-continue-as-new-run-",
54195419
],
5420-
handler_registration: Literal["late_registered", "not_late_registered"],
5421-
handler_dynamism: Literal["dynamic", "not_dynamic"],
5420+
handler_registration: Literal["-late-registered-", "-not-late-registered-"],
5421+
handler_dynamism: Literal["-dynamic-", "-not-dynamic-"],
54225422
handler_waiting: Literal[
5423-
"wait_all_handlers_finish", "no_wait_all_handlers_finish"
5423+
"-wait-all-handlers-finish-", "-no-wait-all-handlers-finish-"
54245424
],
54255425
) -> NoReturn:
5426-
if handler_registration == "late_registered":
5427-
if handler_dynamism == "dynamic":
5426+
if handler_registration == "-late-registered-":
5427+
if handler_dynamism == "-dynamic-":
54285428

54295429
async def my_late_registered_dynamic_update(
54305430
self, name: str, args: Sequence[RawValue]
@@ -5455,20 +5455,20 @@ async def my_late_registered_signal(self) -> None:
54555455
"my_late_registered_signal", my_late_registered_signal
54565456
)
54575457

5458-
if handler_waiting == "wait_all_handlers_finish":
5458+
if handler_waiting == "-wait-all-handlers-finish-":
54595459
self.handlers_may_finish = True
54605460
await workflow.wait_condition(workflow.all_handlers_finished)
5461-
if workflow_termination_type == "failure":
5461+
if workflow_termination_type == "-failure-":
54625462
raise ApplicationError(
54635463
"Deliberately failing workflow with an unfinished handler"
54645464
)
5465-
elif workflow_termination_type == "fail-post-continue-as-new-run":
5465+
elif workflow_termination_type == "-fail-post-continue-as-new-run-":
54665466
raise ApplicationError("Deliberately failing post-ContinueAsNew run")
5467-
elif workflow_termination_type == "continue-as-new":
5467+
elif workflow_termination_type == "-continue-as-new-":
54685468
# Fail next run so that test terminates
54695469
workflow.continue_as_new(
54705470
args=[
5471-
"fail-post-continue-as-new-run",
5471+
"-fail-post-continue-as-new-run-",
54725472
handler_registration,
54735473
handler_dynamism,
54745474
handler_waiting,
@@ -5497,169 +5497,39 @@ async def my_dynamic_signal(self, name: str, args: Sequence[RawValue]) -> None:
54975497
await workflow.wait_condition(lambda: self.handlers_may_finish)
54985498

54995499

5500+
@pytest.mark.parametrize("handler_type", ["-signal-", "-update-"])
55005501
@pytest.mark.parametrize(
5501-
"handler_registration", ["late_registered", "not_late_registered"]
5502+
"handler_registration", ["-late-registered-", "-not-late-registered-"]
55025503
)
5503-
@pytest.mark.parametrize("handler_dynamism", ["dynamic", "not_dynamic"])
5504+
@pytest.mark.parametrize("handler_dynamism", ["-dynamic-", "-not-dynamic-"])
55045505
@pytest.mark.parametrize(
55055506
"handler_waiting",
5506-
["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5507+
["-wait-all-handlers-finish-", "-no-wait-all-handlers-finish-"],
55075508
)
5508-
async def test_unfinished_update_handler_with_workflow_cancellation(
5509-
client: Client,
5510-
env: WorkflowEnvironment,
5511-
handler_registration: Literal["late_registered", "not_late_registered"],
5512-
handler_dynamism: Literal["dynamic", "not_dynamic"],
5513-
handler_waiting: Literal["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5514-
):
5515-
if env.supports_time_skipping:
5516-
pytest.skip(
5517-
"Java test server: https://github.com/temporalio/sdk-java/issues/1903"
5518-
)
5519-
await _UnfinishedHandlersOnWorkflowTerminationTest(
5520-
client,
5521-
"update",
5522-
"cancellation",
5523-
handler_registration,
5524-
handler_dynamism,
5525-
handler_waiting,
5526-
).test_warning_is_issued_on_exit_with_unfinished_handler()
5527-
5528-
5529-
@pytest.mark.parametrize(
5530-
"handler_registration", ["late_registered", "not_late_registered"]
5531-
)
5532-
@pytest.mark.parametrize("handler_dynamism", ["dynamic", "not_dynamic"])
5533-
@pytest.mark.parametrize(
5534-
"handler_waiting",
5535-
["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5536-
)
5537-
async def test_unfinished_signal_handler_with_workflow_cancellation(
5538-
client: Client,
5539-
handler_registration: Literal["late_registered", "not_late_registered"],
5540-
handler_dynamism: Literal["dynamic", "not_dynamic"],
5541-
handler_waiting: Literal["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5542-
):
5543-
await _UnfinishedHandlersOnWorkflowTerminationTest(
5544-
client,
5545-
"signal",
5546-
"cancellation",
5547-
handler_registration,
5548-
handler_dynamism,
5549-
handler_waiting,
5550-
).test_warning_is_issued_on_exit_with_unfinished_handler()
5551-
5552-
55535509
@pytest.mark.parametrize(
5554-
"handler_registration", ["late_registered", "not_late_registered"]
5510+
"workflow_termination_type", ["-cancellation-", "-failure-", "-continue-as-new-"]
55555511
)
5556-
@pytest.mark.parametrize("handler_dynamism", ["dynamic", "not_dynamic"])
5557-
@pytest.mark.parametrize(
5558-
"handler_waiting",
5559-
["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5560-
)
5561-
async def test_unfinished_update_handler_with_workflow_failure(
5512+
async def test_unfinished_handler_on_workflow_termination(
55625513
client: Client,
55635514
env: WorkflowEnvironment,
5564-
handler_registration: Literal["late_registered", "not_late_registered"],
5565-
handler_dynamism: Literal["dynamic", "not_dynamic"],
5566-
handler_waiting: Literal["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5515+
handler_type: Literal["-signal-", "-update-"],
5516+
handler_registration: Literal["-late-registered-", "-not-late-registered-"],
5517+
handler_dynamism: Literal["-dynamic-", "-not-dynamic-"],
5518+
handler_waiting: Literal[
5519+
"-wait-all-handlers-finish-", "-no-wait-all-handlers-finish-"
5520+
],
5521+
workflow_termination_type: Literal[
5522+
"-cancellation-", "-failure-", "-continue-as-new-"
5523+
],
55675524
):
5568-
if env.supports_time_skipping:
5525+
if handler_type == "-update-" and env.supports_time_skipping:
55695526
pytest.skip(
55705527
"Java test server: https://github.com/temporalio/sdk-java/issues/1903"
55715528
)
55725529
await _UnfinishedHandlersOnWorkflowTerminationTest(
55735530
client,
5574-
"update",
5575-
"failure",
5576-
handler_registration,
5577-
handler_dynamism,
5578-
handler_waiting,
5579-
).test_warning_is_issued_on_exit_with_unfinished_handler()
5580-
5581-
5582-
@pytest.mark.parametrize(
5583-
"handler_registration", ["late_registered", "not_late_registered"]
5584-
)
5585-
@pytest.mark.parametrize("handler_dynamism", ["dynamic", "not_dynamic"])
5586-
@pytest.mark.parametrize(
5587-
"handler_waiting",
5588-
["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5589-
)
5590-
async def test_unfinished_signal_handler_with_workflow_failure(
5591-
client: Client,
5592-
env: WorkflowEnvironment,
5593-
handler_registration: Literal["late_registered", "not_late_registered"],
5594-
handler_dynamism: Literal["dynamic", "not_dynamic"],
5595-
handler_waiting: Literal["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5596-
):
5597-
if env.supports_time_skipping:
5598-
pytest.skip(
5599-
"Java test server: https://github.com/temporalio/sdk-java/issues/2127"
5600-
)
5601-
await _UnfinishedHandlersOnWorkflowTerminationTest(
5602-
client,
5603-
"signal",
5604-
"failure",
5605-
handler_registration,
5606-
handler_dynamism,
5607-
handler_waiting,
5608-
).test_warning_is_issued_on_exit_with_unfinished_handler()
5609-
5610-
5611-
@pytest.mark.parametrize(
5612-
"handler_registration", ["late_registered", "not_late_registered"]
5613-
)
5614-
@pytest.mark.parametrize("handler_dynamism", ["dynamic", "not_dynamic"])
5615-
@pytest.mark.parametrize(
5616-
"handler_waiting",
5617-
["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5618-
)
5619-
async def test_unfinished_update_handler_with_continue_as_new(
5620-
client: Client,
5621-
env: WorkflowEnvironment,
5622-
handler_registration: Literal["late_registered", "not_late_registered"],
5623-
handler_dynamism: Literal["dynamic", "not_dynamic"],
5624-
handler_waiting: Literal["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5625-
):
5626-
if env.supports_time_skipping:
5627-
pytest.skip(
5628-
"Java test server: https://github.com/temporalio/sdk-java/issues/1903"
5629-
)
5630-
await _UnfinishedHandlersOnWorkflowTerminationTest(
5631-
client,
5632-
"update",
5633-
"continue-as-new",
5634-
handler_registration,
5635-
handler_dynamism,
5636-
handler_waiting,
5637-
).test_warning_is_issued_on_exit_with_unfinished_handler()
5638-
5639-
5640-
@pytest.mark.parametrize(
5641-
"handler_registration", ["late_registered", "not_late_registered"]
5642-
)
5643-
@pytest.mark.parametrize("handler_dynamism", ["dynamic", "not_dynamic"])
5644-
@pytest.mark.parametrize(
5645-
"handler_waiting",
5646-
["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5647-
)
5648-
async def test_unfinished_signal_handler_with_continue_as_new(
5649-
client: Client,
5650-
env: WorkflowEnvironment,
5651-
handler_registration: Literal["late_registered", "not_late_registered"],
5652-
handler_dynamism: Literal["dynamic", "not_dynamic"],
5653-
handler_waiting: Literal["wait_all_handlers_finish", "no_wait_all_handlers_finish"],
5654-
):
5655-
if env.supports_time_skipping:
5656-
pytest.skip(
5657-
"Java test server: https://github.com/temporalio/sdk-java/issues/2127"
5658-
)
5659-
await _UnfinishedHandlersOnWorkflowTerminationTest(
5660-
client,
5661-
"signal",
5662-
"continue-as-new",
5531+
handler_type,
5532+
workflow_termination_type,
56635533
handler_registration,
56645534
handler_dynamism,
56655535
handler_waiting,
@@ -5669,17 +5539,21 @@ async def test_unfinished_signal_handler_with_continue_as_new(
56695539
@dataclass
56705540
class _UnfinishedHandlersOnWorkflowTerminationTest:
56715541
client: Client
5672-
handler_type: Literal["update", "signal"]
5673-
workflow_termination_type: Literal["cancellation", "failure", "continue-as-new"]
5674-
handler_registration: Literal["late_registered", "not_late_registered"]
5675-
handler_dynamism: Literal["dynamic", "not_dynamic"]
5676-
handler_waiting: Literal["wait_all_handlers_finish", "no_wait_all_handlers_finish"]
5542+
handler_type: Literal["-signal-", "-update-"]
5543+
workflow_termination_type: Literal[
5544+
"-cancellation-", "-failure-", "-continue-as-new-"
5545+
]
5546+
handler_registration: Literal["-late-registered-", "-not-late-registered-"]
5547+
handler_dynamism: Literal["-dynamic-", "-not-dynamic-"]
5548+
handler_waiting: Literal[
5549+
"-wait-all-handlers-finish-", "-no-wait-all-handlers-finish-"
5550+
]
56775551

56785552
async def test_warning_is_issued_on_exit_with_unfinished_handler(
56795553
self,
56805554
):
56815555
assert await self._run_workflow_and_get_warning() == (
5682-
self.handler_waiting == "no_wait_all_handlers_finish"
5556+
self.handler_waiting == "-no-wait-all-handlers-finish-"
56835557
)
56845558

56855559
async def _run_workflow_and_get_warning(self) -> bool:
@@ -5701,20 +5575,20 @@ async def _run_workflow_and_get_warning(self) -> bool:
57015575
id=workflow_id,
57025576
task_queue=task_queue,
57035577
)
5704-
if self.workflow_termination_type == "cancellation":
5578+
if self.workflow_termination_type == "-cancellation-":
57055579
await handle.cancel()
57065580

5707-
if self.handler_type == "update":
5581+
if self.handler_type == "-update-":
57085582
update_method = (
57095583
"__does_not_exist__"
5710-
if self.handler_dynamism == "dynamic"
5584+
if self.handler_dynamism == "-dynamic-"
57115585
else "my_late_registered_update"
5712-
if self.handler_registration == "late_registered"
5586+
if self.handler_registration == "-late-registered-"
57135587
else UnfinishedHandlersOnWorkflowTerminationWorkflow.my_update
57145588
)
57155589
update_task = asyncio.create_task(
57165590
handle.execute_update(
5717-
update_method,
5591+
update_method, # type: ignore
57185592
id=update_id,
57195593
)
57205594
)
@@ -5725,22 +5599,22 @@ async def _run_workflow_and_get_warning(self) -> bool:
57255599
else:
57265600
signal_method = (
57275601
"__does_not_exist__"
5728-
if self.handler_dynamism == "dynamic"
5602+
if self.handler_dynamism == "-dynamic-"
57295603
else "my_late_registered_signal"
5730-
if self.handler_registration == "late_registered"
5604+
if self.handler_registration == "-late-registered-"
57315605
else UnfinishedHandlersOnWorkflowTerminationWorkflow.my_signal
57325606
)
5733-
await handle.signal(signal_method)
5607+
await handle.signal(signal_method) # type: ignore
57345608

57355609
async with new_worker(
57365610
self.client,
57375611
UnfinishedHandlersOnWorkflowTerminationWorkflow,
57385612
task_queue=task_queue,
57395613
):
57405614
with pytest.WarningsRecorder() as warnings:
5741-
if self.handler_type == "update":
5615+
if self.handler_type == "-update-":
57425616
assert update_task
5743-
if self.handler_waiting == "wait_all_handlers_finish":
5617+
if self.handler_waiting == "-wait-all-handlers-finish-":
57445618
await update_task
57455619
else:
57465620
with pytest.raises(RPCError) as update_err:
@@ -5755,12 +5629,12 @@ async def _run_workflow_and_get_warning(self) -> bool:
57555629
assert isinstance(
57565630
err.value.cause,
57575631
{
5758-
"cancellation": CancelledError,
5759-
"continue-as-new": ApplicationError,
5760-
"failure": ApplicationError,
5632+
"-cancellation-": CancelledError,
5633+
"-continue-as-new-": ApplicationError,
5634+
"-failure-": ApplicationError,
57615635
}[self.workflow_termination_type],
57625636
)
5763-
if self.workflow_termination_type == "continue-as-new":
5637+
if self.workflow_termination_type == "-continue-as-new-":
57645638
assert (
57655639
str(err.value.cause)
57665640
== "Deliberately failing post-ContinueAsNew run"
@@ -5775,8 +5649,8 @@ async def _run_workflow_and_get_warning(self) -> bool:
57755649
@property
57765650
def _unfinished_handler_warning_cls(self) -> Type:
57775651
return {
5778-
"update": workflow.UnfinishedUpdateHandlersWarning,
5779-
"signal": workflow.UnfinishedSignalHandlersWarning,
5652+
"-update-": workflow.UnfinishedUpdateHandlersWarning,
5653+
"-signal-": workflow.UnfinishedSignalHandlersWarning,
57805654
}[self.handler_type]
57815655

57825656

0 commit comments

Comments
 (0)