forked from goodboy/tractor
				
			Add a simpler cancel test
							parent
							
								
									d9aa6119e1
								
							
						
					
					
						commit
						590267ded2
					
				| 
						 | 
					@ -3,6 +3,7 @@ Actor model API testing
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
import time
 | 
					import time
 | 
				
			||||||
from functools import partial, wraps
 | 
					from functools import partial, wraps
 | 
				
			||||||
 | 
					from itertools import repeat
 | 
				
			||||||
import random
 | 
					import random
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import pytest
 | 
					import pytest
 | 
				
			||||||
| 
						 | 
					@ -64,10 +65,12 @@ def test_local_actor_async_func():
 | 
				
			||||||
    assert nums == list(range(10))
 | 
					    assert nums == list(range(10))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					statespace = {'doggy': 10, 'kitty': 4}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# NOTE: this func must be defined at module level in order for the
 | 
					# NOTE: this func must be defined at module level in order for the
 | 
				
			||||||
# interal pickling infra of the forkserver to work
 | 
					# interal pickling infra of the forkserver to work
 | 
				
			||||||
async def spawn(is_arbiter):
 | 
					async def spawn(is_arbiter):
 | 
				
			||||||
    statespace = {'doggy': 10, 'kitty': 4}
 | 
					 | 
				
			||||||
    namespaces = [__name__]
 | 
					    namespaces = [__name__]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await trio.sleep(0.1)
 | 
					    await trio.sleep(0.1)
 | 
				
			||||||
| 
						 | 
					@ -97,7 +100,6 @@ async def spawn(is_arbiter):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_local_arbiter_subactor_global_state():
 | 
					def test_local_arbiter_subactor_global_state():
 | 
				
			||||||
    statespace = {'doggy': 10, 'kitty': 4}
 | 
					 | 
				
			||||||
    result = tractor.run(
 | 
					    result = tractor.run(
 | 
				
			||||||
        spawn,
 | 
					        spawn,
 | 
				
			||||||
        True,
 | 
					        True,
 | 
				
			||||||
| 
						 | 
					@ -187,6 +189,30 @@ def test_remote_error():
 | 
				
			||||||
        tractor.run(main, arbiter_addr=_arb_addr)
 | 
					        tractor.run(main, arbiter_addr=_arb_addr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async def stream_forever():
 | 
				
			||||||
 | 
					    for i in repeat("I can see these little future bubble things"):
 | 
				
			||||||
 | 
					        yield i
 | 
				
			||||||
 | 
					        await trio.sleep(0.01)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@tractor_test
 | 
				
			||||||
 | 
					async def test_cancel_infinite_streamer():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # stream for at most 5 seconds
 | 
				
			||||||
 | 
					    with trio.move_on_after(1) as cancel_scope:
 | 
				
			||||||
 | 
					        async with tractor.open_nursery() as n:
 | 
				
			||||||
 | 
					            portal = await n.start_actor(
 | 
				
			||||||
 | 
					                f'donny',
 | 
				
			||||||
 | 
					                rpc_module_paths=[__name__],
 | 
				
			||||||
 | 
					                outlive_main=True
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            async for letter in await portal.run(__name__, 'stream_forever'):
 | 
				
			||||||
 | 
					                print(letter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert cancel_scope.cancelled_caught
 | 
				
			||||||
 | 
					    assert n.cancelled
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@tractor_test
 | 
					@tractor_test
 | 
				
			||||||
async def test_one_cancels_all():
 | 
					async def test_one_cancels_all():
 | 
				
			||||||
    """Verify one failed actor causes all others in the nursery
 | 
					    """Verify one failed actor causes all others in the nursery
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue