def test_stop_handles_actor_already_being_stopped(self): self.mock.stopping = False self.mock.actor_ref = Mock() self.mock.actor_ref.stop.side_effect = pykka.ActorDeadError() self.mock._sock = Mock(spec=socket.SocketType) network.Connection.stop(self.mock, sentinel.reason) self.mock.actor_ref.stop.assert_called_once_with(block=False)
def test_recv_callback_handles_dead_actors(self): self.mock._sock = Mock(spec=socket.SocketType) self.mock._sock.recv.return_value = b"data" self.mock.actor_ref = Mock() self.mock.actor_ref.tell.side_effect = pykka.ActorDeadError() assert network.Connection.recv_callback(self.mock, sentinel.fd, GLib.IO_IN) self.mock.stop.assert_called_once_with(any_unicode)
def test_recv_callback_handles_dead_actors(self): self.mock.sock = Mock(spec=socket.SocketType) self.mock.sock.recv.return_value = 'data' self.mock.actor_ref = Mock() self.mock.actor_ref.send_one_way.side_effect = pykka.ActorDeadError() self.assertTrue( network.Connection.recv_callback(self.mock, sentinel.fd, gobject.IO_IN)) self.mock.stop.assert_called_once_with(any_unicode)
def waiter(timeout): time_start = time.monotonic() while not self._instance: if self._instance_dead: raise pykka.ActorDeadError("{} ({}) was stopped".format( self.actor_class.__name__, self._instance_urn)) elapsed = time.monotonic() - time_start if elapsed >= timeout: raise pykka.Timeout(f"{elapsed} seconds") time.sleep(1) return self._instance
def retrieve_service(self) -> pykka.Future[ActorTypeVar]: future = self.actor_class._create_future() if self._instance: if self._instance.actor_ref.is_alive(): future.set(self._instance) return future else: self._actor_stopped() if self._instance_dead: future.set_exception(( pykka.ActorDeadError, pykka.ActorDeadError("{} ({}) was stopped".format( self.actor_class.__name__, self._instance_urn)), None, )) return future def waiter(timeout): time_start = time.monotonic() while not self._instance: if self._instance_dead: raise pykka.ActorDeadError("{} ({}) was stopped".format( self.actor_class.__name__, self._instance_urn)) elapsed = time.monotonic() - time_start if elapsed >= timeout: raise pykka.Timeout(f"{elapsed} seconds") time.sleep(1) return self._instance future.set_get_hook(waiter) return future