Skip to content

Commit ec35955

Browse files
committed
Fix test
1 parent feb591d commit ec35955

File tree

1 file changed

+29
-7
lines changed

1 file changed

+29
-7
lines changed

tests/test_activity.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ async def test_get_result(client: Client):
6767
@dataclass
6868
class ActivityInput:
6969
wait_for_signal_workflow_id: str
70+
wait_for_activity_start_workflow_id: str | None = None
7071

7172

7273
@activity.defn
@@ -189,7 +190,9 @@ async def test_manual_failure(client: Client):
189190
activity_id=activity_id,
190191
run_id=activity_handle.run_id,
191192
)
192-
await async_activity_handle.fail(ApplicationError("Test failure"))
193+
await async_activity_handle.fail(
194+
ApplicationError("Test failure", non_retryable=True)
195+
)
193196
with pytest.raises(ActivityFailedError) as err:
194197
await activity_handle.result()
195198
assert isinstance(err.value.cause, ApplicationError)
@@ -201,13 +204,22 @@ async def test_manual_failure(client: Client):
201204

202205
@activity.defn
203206
async def activity_for_testing_heartbeat(input: ActivityInput) -> str:
204-
wait_for_heartbeat_wf_handle = await activity.client().start_workflow(
205-
WaitForSignalWorkflow.run,
206-
id=input.wait_for_signal_workflow_id,
207-
task_queue=activity.info().task_queue,
208-
)
209207
info = activity.info()
210208
if info.attempt == 1:
209+
# Signal that activity has started (only on first attempt)
210+
if input.wait_for_activity_start_workflow_id:
211+
await (
212+
activity.client()
213+
.get_workflow_handle(
214+
workflow_id=input.wait_for_activity_start_workflow_id,
215+
)
216+
.signal(WaitForSignalWorkflow.signal)
217+
)
218+
wait_for_heartbeat_wf_handle = await activity.client().start_workflow(
219+
WaitForSignalWorkflow.run,
220+
id=input.wait_for_signal_workflow_id,
221+
task_queue=activity.info().task_queue,
222+
)
211223
# Wait for test to notify that it has sent heartbeat
212224
await wait_for_heartbeat_wf_handle.result()
213225
raise Exception("Intentional error to force retry")
@@ -223,16 +235,25 @@ async def test_manual_heartbeat(client: Client):
223235
activity_id = str(uuid.uuid4())
224236
task_queue = str(uuid.uuid4())
225237
wait_for_signal_workflow_id = str(uuid.uuid4())
238+
wait_for_activity_start_workflow_id = str(uuid.uuid4())
226239

227240
activity_handle = await client.start_activity(
228241
activity_for_testing_heartbeat,
229242
args=(
230-
ActivityInput(wait_for_signal_workflow_id=wait_for_signal_workflow_id),
243+
ActivityInput(
244+
wait_for_signal_workflow_id=wait_for_signal_workflow_id,
245+
wait_for_activity_start_workflow_id=wait_for_activity_start_workflow_id,
246+
),
231247
), # TODO: overloads
232248
id=activity_id,
233249
task_queue=task_queue,
234250
start_to_close_timeout=timedelta(seconds=5),
235251
)
252+
wait_for_activity_start_wf_handle = await client.start_workflow(
253+
WaitForSignalWorkflow.run,
254+
id=wait_for_activity_start_workflow_id,
255+
task_queue=task_queue,
256+
)
236257
async with Worker(
237258
client,
238259
task_queue=task_queue,
@@ -243,6 +264,7 @@ async def test_manual_heartbeat(client: Client):
243264
activity_id=activity_id,
244265
run_id=activity_handle.run_id,
245266
)
267+
await wait_for_activity_start_wf_handle.result()
246268
await async_activity_handle.heartbeat("Test heartbeat details")
247269
await client.get_workflow_handle(
248270
workflow_id=wait_for_signal_workflow_id,

0 commit comments

Comments
 (0)