@@ -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
56705540class _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