forked from goodboy/tractor
				
			Port remaining tests to pass func refs
							parent
							
								
									493f2efb50
								
							
						
					
					
						commit
						0eba5f4708
					
				| 
						 | 
					@ -137,7 +137,7 @@ def test_cancel_single_subactor(arb_addr, mechanism):
 | 
				
			||||||
            portal = await nursery.start_actor(
 | 
					            portal = await nursery.start_actor(
 | 
				
			||||||
                'nothin', rpc_module_paths=[__name__],
 | 
					                'nothin', rpc_module_paths=[__name__],
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            assert (await portal.run(__name__, 'do_nothing')) is None
 | 
					            assert (await portal.run(do_nothing)) is None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if mechanism == 'nursery_cancel':
 | 
					            if mechanism == 'nursery_cancel':
 | 
				
			||||||
                # would hang otherwise
 | 
					                # would hang otherwise
 | 
				
			||||||
| 
						 | 
					@ -173,7 +173,7 @@ async def test_cancel_infinite_streamer(start_method):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # this async for loop streams values from the above
 | 
					            # this async for loop streams values from the above
 | 
				
			||||||
            # async generator running in a separate process
 | 
					            # async generator running in a separate process
 | 
				
			||||||
            async for letter in await portal.run(__name__, 'stream_forever'):
 | 
					            async for letter in await portal.run(stream_forever):
 | 
				
			||||||
                print(letter)
 | 
					                print(letter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # we support trio's cancellation system
 | 
					    # we support trio's cancellation system
 | 
				
			||||||
| 
						 | 
					@ -247,7 +247,8 @@ async def test_some_cancels_all(num_actors_and_errs, start_method, loglevel):
 | 
				
			||||||
                    # if this function fails then we should error here
 | 
					                    # if this function fails then we should error here
 | 
				
			||||||
                    # and the nursery should teardown all other actors
 | 
					                    # and the nursery should teardown all other actors
 | 
				
			||||||
                    try:
 | 
					                    try:
 | 
				
			||||||
                        await portal.run(__name__, func.__name__, **kwargs)
 | 
					                        await portal.run(func, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    except tractor.RemoteActorError as err:
 | 
					                    except tractor.RemoteActorError as err:
 | 
				
			||||||
                        assert err.type == err_type
 | 
					                        assert err.type == err_type
 | 
				
			||||||
                        # we only expect this first error to propogate
 | 
					                        # we only expect this first error to propogate
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,7 +58,7 @@ async def subs(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async with tractor.find_actor(pub_actor_name) as portal:
 | 
					    async with tractor.find_actor(pub_actor_name) as portal:
 | 
				
			||||||
        stream = await portal.run(
 | 
					        stream = await portal.run(
 | 
				
			||||||
            __name__, 'pubber',
 | 
					            pubber,
 | 
				
			||||||
            topics=which,
 | 
					            topics=which,
 | 
				
			||||||
            seed=seed,
 | 
					            seed=seed,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
| 
						 | 
					@ -76,7 +76,7 @@ async def subs(
 | 
				
			||||||
        await stream.aclose()
 | 
					        await stream.aclose()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        stream = await portal.run(
 | 
					        stream = await portal.run(
 | 
				
			||||||
            __name__, 'pubber',
 | 
					            pubber,
 | 
				
			||||||
            topics=['odd'],
 | 
					            topics=['odd'],
 | 
				
			||||||
            seed=seed,
 | 
					            seed=seed,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,9 +70,9 @@ async def test_movie_theatre_convo(start_method):
 | 
				
			||||||
            rpc_module_paths=[__name__],
 | 
					            rpc_module_paths=[__name__],
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        print(await portal.run(__name__, 'movie_theatre_question'))
 | 
					        print(await portal.run(movie_theatre_question))
 | 
				
			||||||
        # call the subactor a 2nd time
 | 
					        # call the subactor a 2nd time
 | 
				
			||||||
        print(await portal.run(__name__, 'movie_theatre_question'))
 | 
					        print(await portal.run(movie_theatre_question))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # the async with will block here indefinitely waiting
 | 
					        # the async with will block here indefinitely waiting
 | 
				
			||||||
        # for our actor "frank" to complete, we cancel 'frank'
 | 
					        # for our actor "frank" to complete, we cancel 'frank'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@ async def context_stream(ctx, sequence):
 | 
				
			||||||
    assert cs.cancelled_caught
 | 
					    assert cs.cancelled_caught
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async def stream_from_single_subactor(stream_func_name):
 | 
					async def stream_from_single_subactor(stream_func):
 | 
				
			||||||
    """Verify we can spawn a daemon actor and retrieve streamed data.
 | 
					    """Verify we can spawn a daemon actor and retrieve streamed data.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    async with tractor.find_actor('streamerd') as portals:
 | 
					    async with tractor.find_actor('streamerd') as portals:
 | 
				
			||||||
| 
						 | 
					@ -67,8 +67,7 @@ async def stream_from_single_subactor(stream_func_name):
 | 
				
			||||||
                seq = range(10)
 | 
					                seq = range(10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                stream = await portal.run(
 | 
					                stream = await portal.run(
 | 
				
			||||||
                    __name__,
 | 
					                    stream_func,  # one of the funcs above
 | 
				
			||||||
                    stream_func_name,  # one of the funcs above
 | 
					 | 
				
			||||||
                    sequence=list(seq),  # has to be msgpack serializable
 | 
					                    sequence=list(seq),  # has to be msgpack serializable
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
                # it'd sure be nice to have an asyncitertools here...
 | 
					                # it'd sure be nice to have an asyncitertools here...
 | 
				
			||||||
| 
						 | 
					@ -96,7 +95,7 @@ async def stream_from_single_subactor(stream_func_name):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.mark.parametrize(
 | 
					@pytest.mark.parametrize(
 | 
				
			||||||
    'stream_func', ['async_gen_stream', 'context_stream']
 | 
					    'stream_func', [async_gen_stream, context_stream]
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
def test_stream_from_single_subactor(arb_addr, start_method, stream_func):
 | 
					def test_stream_from_single_subactor(arb_addr, start_method, stream_func):
 | 
				
			||||||
    """Verify streaming from a spawned async generator.
 | 
					    """Verify streaming from a spawned async generator.
 | 
				
			||||||
| 
						 | 
					@ -104,7 +103,7 @@ def test_stream_from_single_subactor(arb_addr, start_method, stream_func):
 | 
				
			||||||
    tractor.run(
 | 
					    tractor.run(
 | 
				
			||||||
        partial(
 | 
					        partial(
 | 
				
			||||||
            stream_from_single_subactor,
 | 
					            stream_from_single_subactor,
 | 
				
			||||||
            stream_func_name=stream_func,
 | 
					            stream_func=stream_func,
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        arbiter_addr=arb_addr,
 | 
					        arbiter_addr=arb_addr,
 | 
				
			||||||
        start_method=start_method,
 | 
					        start_method=start_method,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue