Skip to content

Commit 5ca815f

Browse files
author
Andrei Neagu
committed
refactor logic
1 parent c69358f commit 5ca815f

File tree

2 files changed

+47
-32
lines changed

2 files changed

+47
-32
lines changed

packages/service-library/tests/long_running_interfaces/test__rpc.py

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,21 @@ async def server_rpc_interface(
136136
await server.teardown()
137137

138138

139+
async def _wait_to_be_finished(
140+
client_rpc_interface: ClientRPCInterface, unique_id: JobUniqueId
141+
) -> None:
142+
async for attempt in AsyncRetrying(
143+
wait=wait_fixed(1),
144+
stop=stop_after_delay(10),
145+
retry=retry_if_exception_type(AssertionError),
146+
reraise=True,
147+
):
148+
with attempt:
149+
assert (
150+
await client_rpc_interface.get_status(unique_id) == JobStatus.FINISHED
151+
)
152+
153+
139154
async def test_workflow(
140155
server_rpc_interface: ServerRPCInterface,
141156
client_rpc_interface: ClientRPCInterface,
@@ -157,23 +172,31 @@ async def test_workflow(
157172
with pytest.raises(NoResultIsAvailableError):
158173
assert await client_rpc_interface.get_result(unique_id)
159174

160-
# wait to be finsiehd
161-
async for attempt in AsyncRetrying(
162-
wait=wait_fixed(1),
163-
stop=stop_after_delay(10),
164-
retry=retry_if_exception_type(AssertionError),
165-
reraise=True,
166-
):
167-
with attempt:
168-
assert (
169-
await client_rpc_interface.get_status(unique_id) == JobStatus.FINISHED
170-
)
175+
await _wait_to_be_finished(client_rpc_interface, unique_id)
171176

172177
# result should be ready
173178
assert await client_rpc_interface.get_result(unique_id) == ResultModel(
174179
data=f"{unique_id} done"
175180
)
176181

182+
# result and corresponding task is automatically removed once retruned
183+
with pytest.raises(JobNotFoundError):
184+
await client_rpc_interface.get_result(unique_id)
185+
186+
187+
async def test_finishes_with_error(
188+
server_rpc_interface: ServerRPCInterface,
189+
client_rpc_interface: ClientRPCInterface,
190+
unique_id: JobUniqueId,
191+
initilized_server_interface: _MockServerInterface,
192+
) -> None:
193+
194+
await client_rpc_interface.start(
195+
"handler_name", unique_id, timeout=timedelta(seconds=4)
196+
)
197+
198+
await _wait_to_be_finished(client_rpc_interface, unique_id)
199+
177200
# simulates an error in the result
178201
initilized_server_interface.result_raises = True
179202
result = await client_rpc_interface.get_result(unique_id)

packages/service-library/tests/long_running_interfaces/test_workflow.py

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -211,21 +211,23 @@ async def _cancel_task_in_server(server: Server) -> None:
211211
task.cancel()
212212

213213

214+
async def _to_run(client: Client, retry_count: NonNegativeInt) -> None:
215+
result = await client.ensure_result(
216+
"sleep_for_f",
217+
expected_type=type(None),
218+
timeout=timedelta(seconds=10),
219+
duration=2,
220+
retry_count=retry_count,
221+
)
222+
assert result is None
223+
224+
214225
async def test_cancellation_from_server_retires_and_finishes(
215226
server: Server, client: Client
216227
):
217-
async def _to_run() -> None:
218-
result = await client.ensure_result(
219-
"sleep_for_f",
220-
expected_type=type(None),
221-
timeout=timedelta(seconds=10),
222-
duration=2,
223-
)
224-
assert result is None
225-
226228
await _assert_tasks_count(server, count=0)
227229

228-
task = asyncio.create_task(_to_run())
230+
task = asyncio.create_task(_to_run(client, retry_count=3))
229231
await _assert_tasks_count(server, count=1)
230232

231233
await _cancel_task_in_server(server)
@@ -236,19 +238,9 @@ async def _to_run() -> None:
236238
async def test_cancellation_from_server_fails_if_no_more_retries_available(
237239
server: Server, client: Client
238240
):
239-
async def _to_run() -> None:
240-
result = await client.ensure_result(
241-
"sleep_for_f",
242-
expected_type=type(None),
243-
timeout=timedelta(seconds=10),
244-
duration=2,
245-
retry_count=1,
246-
)
247-
assert result is None
248-
249241
await _assert_tasks_count(server, count=0)
250242

251-
task = asyncio.create_task(_to_run())
243+
task = asyncio.create_task(_to_run(client, retry_count=1))
252244
await _assert_tasks_count(server, count=1)
253245

254246
await _cancel_task_in_server(server)

0 commit comments

Comments
 (0)