Toss in another tests with daemon subactors
							parent
							
								
									46cc0540ef
								
							
						
					
					
						commit
						22068e95fa
					
				| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					import tractor
 | 
				
			||||||
 | 
					import trio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async def breakpoint_forever():
 | 
				
			||||||
 | 
					    "Indefinitely re-enter debugger in child actor."
 | 
				
			||||||
 | 
					    while True:
 | 
				
			||||||
 | 
					        yield 'yo'
 | 
				
			||||||
 | 
					        await tractor.breakpoint()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async def name_error():
 | 
				
			||||||
 | 
					    "Raise a ``NameError``"
 | 
				
			||||||
 | 
					    getattr(doggypants)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async def main():
 | 
				
			||||||
 | 
					    """Test breakpoint in a streaming actor.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    async with tractor.open_nursery() as n:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        p0 = await n.start_actor('bp_forever', rpc_module_paths=[__name__])
 | 
				
			||||||
 | 
					        p1 = await n.start_actor('name_error', rpc_module_paths=[__name__])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # retreive results
 | 
				
			||||||
 | 
					        stream = await p0.run(__name__, 'breakpoint_forever')
 | 
				
			||||||
 | 
					        await p1.run(__name__, 'name_error')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    tractor.run(main, debug_mode=True, loglevel='error')
 | 
				
			||||||
| 
						 | 
					@ -282,6 +282,34 @@ def test_multi_subactors(spawn):
 | 
				
			||||||
    assert 'bdb.BdbQuit' in before
 | 
					    assert 'bdb.BdbQuit' in before
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_multi_daemon_subactors(spawn):
 | 
				
			||||||
 | 
					    """Multiple daemon subactors, both erroring and breakpointing within a
 | 
				
			||||||
 | 
					    stream.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    child = spawn('multi_daemon_subactors')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    child.expect(r"\(Pdb\+\+\)")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    before = str(child.before.decode())
 | 
				
			||||||
 | 
					    assert "Attaching pdb to actor: ('bp_forever'" in before
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    child.sendline('c')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # first name_error failure
 | 
				
			||||||
 | 
					    child.expect(r"\(Pdb\+\+\)")
 | 
				
			||||||
 | 
					    before = str(child.before.decode())
 | 
				
			||||||
 | 
					    assert "NameError" in before
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    child.sendline('c')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    child.expect(r"\(Pdb\+\+\)")
 | 
				
			||||||
 | 
					    before = str(child.before.decode())
 | 
				
			||||||
 | 
					    assert "tractor._exceptions.RemoteActorError: ('name_error'" in before
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    child.sendline('c')
 | 
				
			||||||
 | 
					    child.expect(pexpect.EOF)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_multi_subactors_root_errors(spawn):
 | 
					def test_multi_subactors_root_errors(spawn):
 | 
				
			||||||
    """Multiple subactors, both erroring and breakpointing as well as
 | 
					    """Multiple subactors, both erroring and breakpointing as well as
 | 
				
			||||||
    a nested subactor erroring.
 | 
					    a nested subactor erroring.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue