def test_queued_messages_are_logged_as_deadletters_after_stop(defer): node = DummyNode() defer(node.stop) deadletter_event_emitted = Events.consume_one(DeadLetter) a = node.spawn(Actor) a.stop() a << 'dummy' eq_(deadletter_event_emitted.get(), DeadLetter(a, 'dummy', sender=None))
def test_queued_messages_are_logged_as_deadletters_after_stop(defer): node = DummyNode() defer(node.stop) deadletter_event_emitted = Events.consume_one(DeadLetter) a = node.spawn(Actor) a.stop() a << 'dummy' eq_(deadletter_event_emitted.get(), DeadLetter(a, 'dummy', sender=None))
def expect_event_not_emitted(ev, during=0.001): result = Events.consume_one(type(ev) if not isinstance(ev, type) else ev) yield sleep(during) ok_( not result.ready() or (not isinstance(result.get(), ev) if isinstance( ev, type) else result.get() != ev), "Event %s should not have been emitted" % (" of type %s" % (ev.__name__, ) if isinstance(ev, type) else ev, ))
def test_stop_and_kill_messages_to_dead_actorrefs_are_discarded(defer): node = DummyNode() defer(node.stop) a = node.spawn(Actor) a.stop() for event in ['_stop', '_kill']: d = Events.consume_one(DeadLetter) a << event ok_(not d.ready(), "message %r sent to a dead actor should be discarded" % (event,))
def test_stop_and_kill_messages_to_dead_actorrefs_are_discarded(defer): node = DummyNode() defer(node.stop) a = node.spawn(Actor) a.stop() for event in ['_stop', '_kill']: d = Events.consume_one(DeadLetter) a << event ok_(not d.ready(), "message %r sent to a dead actor should be discarded" % (event, ))
def expect_failure(exc, message=None, timeout=None): with assert_raises(exc, message=message) as basket: err = Events.consume_one(Error) yield basket try: _, exc, tb = err.get(timeout=timeout) except Timeout: pass else: raise exc, None, tb
def expect_failure(exc, message=None, timeout=None): with assert_raises(exc, message=message) as basket: err = Events.consume_one(Error) yield basket try: _, exc, tb = err.get(timeout=timeout) except Timeout: pass else: raise exc, None, tb
def test_termination_message_to_dead_actor_is_discarded(defer): class Parent(Actor): def pre_start(self): self.watch(self.spawn(Actor)).stop() self.stop() d = Events.consume_one(DeadLetter) node = DummyNode() defer(node.stop) node.spawn(Parent) idle() ok_(not d.ready())
def assert_event_not_emitted(ev): d = Events.consume_one(type(ev) if not isinstance(ev, type) else ev) try: yield except: raise else: assert not d.called or deferred_result(d) != ev, \ "Event %s should not have been emitted" % ( (" of type %s" % (ev.__name__,)) if isinstance(ev, type) else ev,) finally: d.addErrback(lambda f: f.trap(CancelledError)).cancel()
def test_termination_message_to_dead_actor_is_discarded(defer): class Parent(Actor): def pre_start(self): self.watch(self.spawn(Actor)).stop() self.stop() d = Events.consume_one(DeadLetter) node = DummyNode() defer(node.stop) node.spawn(Parent) idle() ok_(not d.ready())
def expect_one_event(ev, timeout=None): result = Events.consume_one(type(ev) if not isinstance(ev, type) else ev) yield try: result = result.get(timeout=timeout) except Timeout: ok_(False, "Event %r should have been emitted but was not" % (ev,) if not isinstance(ev, type) else "Event of type %s should have been emitted but was not" % (ev.__name__,)) if isinstance(ev, type): ok_(isinstance(result, ev), "Event of type %s.%s should have been emitted but was not" % (ev.__module__, ev.__name__)) else: eq_(result, ev, "Event %r should have been emitted but %s was" % (ev, result))
def test_watching_self_is_noop_and_returns_self(defer): class MyActor(Actor): def pre_start(self): eq_(self.watch(self.ref), self.ref) def receive(self, message): ok_(False) node = DummyNode() defer(node.stop) a = node.spawn(MyActor) dead_letter_emitted = Events.consume_one(DeadLetter) a.stop() idle() ok_(not dead_letter_emitted.ready())
def test_watching_self_is_noop_and_returns_self(defer): class MyActor(Actor): def pre_start(self): eq_(self.watch(self.ref), self.ref) def receive(self, message): ok_(False) node = DummyNode() defer(node.stop) a = node.spawn(MyActor) dead_letter_emitted = Events.consume_one(DeadLetter) a.stop() idle() ok_(not dead_letter_emitted.ready())
def assert_one_event(ev): d = Events.consume_one(type(ev) if not isinstance(ev, type) else ev) try: yield except: raise else: assert d.called, ("Event %r should have been emitted but was not" % (ev,) if not isinstance(ev, type) else "Event of type %s should have been emitted but was not" % (ev.__name__,)) result = deferred_result(d) if isinstance(ev, type): assert isinstance(result, ev), "Event of type %s.%s should have been emitted but was not" % (ev.__module__, ev.__name__) else: assert result == ev, "Event %r should have been emitted but %s was" % (ev, result) finally: d.addErrback(lambda f: f.trap(CancelledError)).cancel()
def expect_one_event(ev, timeout=None): result = Events.consume_one(type(ev) if not isinstance(ev, type) else ev) yield try: result = result.get(timeout=timeout) except Timeout: ok_( False, "Event %r should have been emitted but was not" % (ev, ) if not isinstance(ev, type) else "Event of type %s should have been emitted but was not" % (ev.__name__, )) if isinstance(ev, type): ok_( isinstance(result, ev), "Event of type %s.%s should have been emitted but was not" % (ev.__module__, ev.__name__)) else: eq_(result, ev, "Event %r should have been emitted but %s was" % (ev, result))
def expect_event_not_emitted(ev, during=0.001): result = Events.consume_one(type(ev) if not isinstance(ev, type) else ev) yield sleep(during) ok_(not result.ready() or (not isinstance(result.get(), ev) if isinstance(ev, type) else result.get() != ev), "Event %s should not have been emitted" % (" of type %s" % (ev.__name__,) if isinstance(ev, type) else ev,))