Skip to content

Commit 346d53c

Browse files
committed
api helpers and create proxy confs are done
1 parent a9fdb84 commit 346d53c

File tree

2 files changed

+98
-40
lines changed

2 files changed

+98
-40
lines changed

tests/integration/test_actor_api_helpers.py

Lines changed: 76 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -175,14 +175,17 @@ async def main_outer() -> None:
175175
assert run_result_outer is not None
176176
assert run_result_outer['status'] == 'SUCCEEDED'
177177

178-
await inner_actor.last_run().wait_for_finish()
178+
await inner_actor.last_run().wait_for_finish(wait_secs=300)
179179

180180
inner_output_record = await inner_actor.last_run().key_value_store().get_record('OUTPUT')
181181
assert inner_output_record is not None
182182
assert inner_output_record['value'] == f'{test_value}_XXX_{test_value}'
183183

184184

185-
async def test_actor_calls_another_actor(make_actor: ActorFactory) -> None:
185+
async def test_actor_calls_another_actor(
186+
apify_client_async: ApifyClientAsync,
187+
make_actor: ActorFactory,
188+
) -> None:
186189
async def main_inner() -> None:
187190
async with Actor:
188191
await asyncio.sleep(5)
@@ -210,19 +213,26 @@ async def main_outer() -> None:
210213
inner_actor_id = (await inner_actor.get() or {})['id']
211214
test_value = crypto_random_object_id()
212215

213-
outer_run_result = await outer_actor.call(run_input={'test_value': test_value, 'inner_actor_id': inner_actor_id})
216+
outer_call_result = await outer_actor.call(run_input={'test_value': test_value, 'inner_actor_id': inner_actor_id})
217+
assert outer_call_result is not None
218+
219+
run_client_outer = apify_client_async.run(outer_call_result['id'])
220+
run_result_outer = await run_client_outer.wait_for_finish(wait_secs=300)
214221

215-
assert outer_run_result is not None
216-
assert outer_run_result['status'] == 'SUCCEEDED'
222+
assert run_result_outer is not None
223+
assert run_result_outer['status'] == 'SUCCEEDED'
217224

218-
await inner_actor.last_run().wait_for_finish()
225+
await inner_actor.last_run().wait_for_finish(wait_secs=300)
219226

220227
inner_output_record = await inner_actor.last_run().key_value_store().get_record('OUTPUT')
221228
assert inner_output_record is not None
222229
assert inner_output_record['value'] == f'{test_value}_XXX_{test_value}'
223230

224231

225-
async def test_actor_calls_task(make_actor: ActorFactory, apify_client_async: ApifyClientAsync) -> None:
232+
async def test_actor_calls_task(
233+
apify_client_async: ApifyClientAsync,
234+
make_actor: ActorFactory,
235+
) -> None:
226236
async def main_inner() -> None:
227237
async with Actor:
228238
await asyncio.sleep(5)
@@ -255,12 +265,16 @@ async def main_outer() -> None:
255265
task_input={'test_value': test_value},
256266
)
257267

258-
outer_run_result = await outer_actor.call(run_input={'test_value': test_value, 'inner_task_id': task['id']})
268+
outer_call_result = await outer_actor.call(run_input={'test_value': test_value, 'inner_task_id': task['id']})
269+
assert outer_call_result is not None
270+
271+
run_client_outer = apify_client_async.run(outer_call_result['id'])
272+
run_result_outer = await run_client_outer.wait_for_finish(wait_secs=300)
259273

260-
assert outer_run_result is not None
261-
assert outer_run_result['status'] == 'SUCCEEDED'
274+
assert run_result_outer is not None
275+
assert run_result_outer['status'] == 'SUCCEEDED'
262276

263-
await inner_actor.last_run().wait_for_finish()
277+
await inner_actor.last_run().wait_for_finish(wait_secs=300)
264278

265279
inner_output_record = await inner_actor.last_run().key_value_store().get_record('OUTPUT')
266280
assert inner_output_record is not None
@@ -269,7 +283,10 @@ async def main_outer() -> None:
269283
await apify_client_async.task(task['id']).delete()
270284

271285

272-
async def test_actor_aborts_another_actor_run(make_actor: ActorFactory) -> None:
286+
async def test_actor_aborts_another_actor_run(
287+
apify_client_async: ApifyClientAsync,
288+
make_actor: ActorFactory,
289+
) -> None:
273290
async def main_inner() -> None:
274291
async with Actor:
275292
await asyncio.sleep(180)
@@ -290,12 +307,16 @@ async def main_outer() -> None:
290307

291308
inner_run_id = (await inner_actor.start())['id']
292309

293-
outer_run_result = await outer_actor.call(run_input={'inner_run_id': inner_run_id})
310+
outer_call_result = await outer_actor.call(run_input={'inner_run_id': inner_run_id})
311+
assert outer_call_result is not None
294312

295-
assert outer_run_result is not None
296-
assert outer_run_result['status'] == 'SUCCEEDED'
313+
run_client_outer = apify_client_async.run(outer_call_result['id'])
314+
run_result_outer = await run_client_outer.wait_for_finish(wait_secs=300)
315+
316+
assert run_result_outer is not None
317+
assert run_result_outer['status'] == 'SUCCEEDED'
297318

298-
await inner_actor.last_run().wait_for_finish()
319+
await inner_actor.last_run().wait_for_finish(wait_secs=300)
299320
inner_actor_last_run = await inner_actor.last_run().get()
300321
assert inner_actor_last_run is not None
301322
assert inner_actor_last_run['status'] == 'ABORTED'
@@ -304,7 +325,10 @@ async def main_outer() -> None:
304325
assert inner_output_record is None
305326

306327

307-
async def test_actor_metamorphs_into_another_actor(make_actor: ActorFactory) -> None:
328+
async def test_actor_metamorphs_into_another_actor(
329+
apify_client_async: ApifyClientAsync,
330+
make_actor: ActorFactory,
331+
) -> None:
308332
async def main_inner() -> None:
309333
import os
310334

@@ -342,10 +366,14 @@ async def main_outer() -> None:
342366
inner_actor_id = (await inner_actor.get() or {})['id']
343367
test_value = crypto_random_object_id()
344368

345-
outer_run_result = await outer_actor.call(run_input={'test_value': test_value, 'inner_actor_id': inner_actor_id})
369+
outer_call_result = await outer_actor.call(run_input={'test_value': test_value, 'inner_actor_id': inner_actor_id})
370+
assert outer_call_result is not None
371+
372+
run_client_outer = apify_client_async.run(outer_call_result['id'])
373+
run_result_outer = await run_client_outer.wait_for_finish(wait_secs=300)
346374

347-
assert outer_run_result is not None
348-
assert outer_run_result['status'] == 'SUCCEEDED'
375+
assert run_result_outer is not None
376+
assert run_result_outer['status'] == 'SUCCEEDED'
349377

350378
outer_run_key_value_store = outer_actor.last_run().key_value_store()
351379

@@ -359,7 +387,10 @@ async def main_outer() -> None:
359387
assert await inner_actor.last_run().get() is None
360388

361389

362-
async def test_actor_reboots_successfully(make_actor: ActorFactory) -> None:
390+
async def test_actor_reboots_successfully(
391+
apify_client_async: ApifyClientAsync,
392+
make_actor: ActorFactory,
393+
) -> None:
363394
async def main() -> None:
364395
async with Actor:
365396
print('Starting...')
@@ -374,7 +405,12 @@ async def main() -> None:
374405
print('Finishing...')
375406

376407
actor = await make_actor('actor_rebooter', main_func=main)
377-
run_result = await actor.call(run_input={'counter_key': 'reboot_counter'})
408+
409+
call_result = await actor.call(run_input={'counter_key': 'reboot_counter'})
410+
assert call_result is not None
411+
412+
run_client = apify_client_async.run(call_result['id'])
413+
run_result = await run_client.wait_for_finish(wait_secs=300)
378414

379415
assert run_result is not None
380416
assert run_result['status'] == 'SUCCEEDED'
@@ -387,7 +423,10 @@ async def main() -> None:
387423
assert reboot_counter['value'] == 2
388424

389425

390-
async def test_actor_adds_webhook_and_receives_event(make_actor: ActorFactory) -> None:
426+
async def test_actor_adds_webhook_and_receives_event(
427+
apify_client_async: ApifyClientAsync,
428+
make_actor: ActorFactory,
429+
) -> None:
391430
async def main_server() -> None:
392431
import os
393432
from http.server import BaseHTTPRequestHandler, HTTPServer
@@ -408,9 +447,7 @@ def do_POST(self) -> None: # noqa: N802
408447
nonlocal webhook_body
409448
content_length = self.headers.get('content-length')
410449
length = int(content_length) if content_length else 0
411-
412450
webhook_body = self.rfile.read(length).decode('utf-8')
413-
414451
self.send_response(200)
415452
self.end_headers()
416453
self.wfile.write(bytes('Hello, world!', encoding='utf-8'))
@@ -445,26 +482,29 @@ async def main_client() -> None:
445482
server_actor_run = await server_actor.start()
446483
server_actor_container_url = server_actor_run['containerUrl']
447484

448-
# Give the server actor some time to start running
449485
server_actor_initialized = await server_actor.last_run().key_value_store().get_record('INITIALIZED')
450486
while not server_actor_initialized:
451487
server_actor_initialized = await server_actor.last_run().key_value_store().get_record('INITIALIZED')
452488
await asyncio.sleep(1)
453489

454-
client_actor_run_result = await client_actor.call(
455-
run_input={'server_actor_container_url': server_actor_container_url}
456-
)
457-
assert client_actor_run_result is not None
458-
assert client_actor_run_result['status'] == 'SUCCEEDED'
490+
ac_call_result = await client_actor.call(run_input={'server_actor_container_url': server_actor_container_url})
491+
assert ac_call_result is not None
492+
493+
ac_run_client = apify_client_async.run(ac_call_result['id'])
494+
ac_run_result = await ac_run_client.wait_for_finish(wait_secs=300)
495+
496+
assert ac_run_result is not None
497+
assert ac_run_result['status'] == 'SUCCEEDED'
498+
499+
sa_run_result = await server_actor.last_run().wait_for_finish(wait_secs=300)
459500

460-
server_actor_run_result = await server_actor.last_run().wait_for_finish()
461-
assert server_actor_run_result is not None
462-
assert server_actor_run_result['status'] == 'SUCCEEDED'
501+
assert sa_run_result is not None
502+
assert sa_run_result['status'] == 'SUCCEEDED'
463503

464504
webhook_body_record = await server_actor.last_run().key_value_store().get_record('WEBHOOK_BODY')
465505
assert webhook_body_record is not None
466506
assert webhook_body_record['value'] != ''
467507
parsed_webhook_body = json.loads(webhook_body_record['value'])
468508

469-
assert parsed_webhook_body['eventData']['actorId'] == client_actor_run_result['actId']
470-
assert parsed_webhook_body['eventData']['actorRunId'] == client_actor_run_result['id']
509+
assert parsed_webhook_body['eventData']['actorId'] == ac_run_result['actId']
510+
assert parsed_webhook_body['eventData']['actorRunId'] == ac_run_result['id']

tests/integration/test_actor_create_proxy_configuration.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,15 @@
55
from apify import Actor
66

77
if TYPE_CHECKING:
8+
from apify_client import ApifyClientAsync
9+
810
from .conftest import ActorFactory
911

1012

11-
async def test_create_basic_proxy_configuration(make_actor: ActorFactory) -> None:
13+
async def test_create_basic_proxy_configuration(
14+
apify_client_async: ApifyClientAsync,
15+
make_actor: ActorFactory,
16+
) -> None:
1217
async def main() -> None:
1318
groups = ['SHADER']
1419
country_code = 'US'
@@ -26,12 +31,20 @@ async def main() -> None:
2631

2732
actor = await make_actor('proxy-configuration', main_func=main)
2833

29-
run_result = await actor.call()
34+
call_result = await actor.call()
35+
assert call_result is not None
36+
37+
run_client = apify_client_async.run(call_result['id'])
38+
run_result = await run_client.wait_for_finish(wait_secs=300)
39+
3040
assert run_result is not None
3141
assert run_result['status'] == 'SUCCEEDED'
3242

3343

34-
async def test_create_proxy_configuration_with_groups_and_country(make_actor: ActorFactory) -> None:
44+
async def test_create_proxy_configuration_with_groups_and_country(
45+
apify_client_async: ApifyClientAsync,
46+
make_actor: ActorFactory,
47+
) -> None:
3548
async def main() -> None:
3649
await Actor.init()
3750

@@ -64,6 +77,11 @@ async def main() -> None:
6477

6578
actor = await make_actor('proxy-configuration', main_func=main)
6679

67-
run_result = await actor.call()
80+
call_result = await actor.call()
81+
assert call_result is not None
82+
83+
run_client = apify_client_async.run(call_result['id'])
84+
run_result = await run_client.wait_for_finish(wait_secs=300)
85+
6886
assert run_result is not None
6987
assert run_result['status'] == 'SUCCEEDED'

0 commit comments

Comments
 (0)