def test_poll_raises_ValueError(self): x = X(self.app) x.hub.readers = {6: Mock()} x.close_then_error(x.connection.drain_nowait) x.hub.poller.poll.side_effect = ValueError() asynloop(*x.args) self.assertTrue(x.hub.poller.poll.called)
def test_poll_raises_ValueError(self): x = X(self.app) x.hub.readers = {6: Mock()} poller = x.hub.poller x.close_then_error(poller.poll, exc=ValueError) asynloop(*x.args) poller.poll.assert_called()
def test_poll_raises_ValueError(self): x = X(self.app) x.hub.readers = {6: Mock()} poller = x.hub.poller x.close_then_error(poller.poll, exc=ValueError) asynloop(*x.args) self.assertTrue(poller.poll.called)
def test_poll_writable_none_registered(self): x = X(self.app) x.hub.writers = {6: Mock()} x.close_then_error(x.connection.drain_nowait) x.hub.poller.poll.return_value = [(7, WRITE)] with self.assertRaises(socket.error): asynloop(*x.args) self.assertTrue(x.hub.poller.poll.called)
def test_should_stop(self): x = X(self.app) state.should_stop = True try: with self.assertRaises(SystemExit): asynloop(*x.args) finally: state.should_stop = False
def test_should_stop(self): x = X(self.app) state.should_stop = 303 try: with self.assertRaises(WorkerShutdown): asynloop(*x.args) finally: state.should_stop = None
def test_should_stop(self): x = X(self.app) state.should_stop = True try: with self.assertRaises(WorkerShutdown): asynloop(*x.args) finally: state.should_stop = False
def test_setup_heartbeat(self): x = X(self.app, heartbeat=10) x.hub.call_repeatedly = Mock(name="x.hub.call_repeatedly()") x.blueprint.state = CLOSE asynloop(*x.args) x.consumer.consume.assert_called_with() x.obj.on_ready.assert_called_with() x.hub.call_repeatedly.assert_called_with(10 / 2.0, x.connection.heartbeat_check, 2.0)
def test_poll_unknown_event(self): x = X(self.app) x.hub.writers = {6: Mock()} x.close_then_error(x.connection.drain_nowait) x.hub.poller.poll.return_value = [(6, 0)] with self.assertRaises(socket.error): asynloop(*x.args) self.assertTrue(x.hub.poller.poll.called)
def test_should_stop(self): x = X(self.app) state.should_stop = 303 try: with pytest.raises(WorkerShutdown): asynloop(*x.args) finally: state.should_stop = None
def test_poll_unknown_event(self): x = X(self.app) writer = Mock(name='reader') x.hub.add_writer(6, writer, 6) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), 2)) x.hub.poller.poll.return_value = [(6, 0)] with self.assertRaises(socket.error): asynloop(*x.args) self.assertTrue(x.hub.poller.poll.called)
def test_poll_writable_none_registered(self): x = X(self.app) writer = Mock(name='writer') x.hub.add_writer(6, writer, 6) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), 2)) x.hub.poller.poll.return_value = [(7, WRITE)] with self.assertRaises(socket.error): asynloop(*x.args) self.assertTrue(x.hub.poller.poll.called)
def test_should_terminate(self): x = X(self.app) # XXX why aren't the errors propagated?!? state.should_terminate = True try: with self.assertRaises(WorkerTerminate): asynloop(*x.args) finally: state.should_terminate = None
def test_should_terminate(self): x = X(self.app) # XXX why aren't the errors propagated?!? state.should_terminate = True try: with pytest.raises(WorkerTerminate): asynloop(*x.args) finally: state.should_terminate = None
def test_should_terminate(self): x = X(self.app) # XXX why aren't the errors propagated?!? state.should_terminate = True try: with self.assertRaises(SystemTerminate): asynloop(*x.args) finally: state.should_terminate = False
def test_no_heartbeat_support(self): x = X(self.app) x.connection.supports_heartbeats = False x.hub.timer.call_repeatedly = Mock( name='x.hub.timer.call_repeatedly()') x.hub.on_tick.add(x.closer(mod=2)) asynloop(*x.args) x.hub.timer.call_repeatedly.assert_not_called()
def test_setup_heartbeat(self): x = X(self.app, heartbeat=10) x.blueprint.state = CLOSE asynloop(*x.args) x.consumer.consume.assert_called_with() x.obj.on_ready.assert_called_with() x.hub.timer.apply_interval.assert_called_with( 10 * 1000.0 / 2.0, x.connection.heartbeat_check, (2.0, ), )
def test_poll_err_readable(self): x = X(self.app) x.hub.readers = {6: Mock()} x.close_then_error(x.connection.drain_nowait) x.hub.poller.poll.return_value = [(6, ERR)] with self.assertRaises(socket.error): asynloop(*x.args) x.hub.readers[6].assert_called_with(6, ERR) self.assertTrue(x.hub.poller.poll.called)
def test_poll_readable_raises_Empty(self): x = X(self.app) x.hub.readers = {6: Mock()} x.close_then_error(x.connection.drain_nowait) x.hub.poller.poll.return_value = [(6, READ)] x.hub.readers[6].side_effect = Empty() with self.assertRaises(socket.error): asynloop(*x.args) x.hub.readers[6].assert_called_with(6, READ) self.assertTrue(x.hub.poller.poll.called)
def test_should_terminate_hub_close_raises(self): x = X(self.app) # XXX why aren't the errors propagated?!? state.should_terminate = EX_FAILURE x.hub.close.side_effect = MemoryError() try: with pytest.raises(WorkerTerminate): asynloop(*x.args) finally: state.should_terminate = None
def test_poll_empty(self): x = X(self.app) x.hub.readers = {6: Mock()} x.hub.timer._queue = [1] x.close_then_error(x.hub.poller.poll) x.hub.fire_timers.return_value = 33.37 x.hub.poller.poll.return_value = [] with self.assertRaises(socket.error): asynloop(*x.args) x.hub.poller.poll.assert_called_with(33.37)
def test_should_terminate_hub_close_raises(self): x = X(self.app) # XXX why aren't the errors propagated?!? state.should_terminate = True x.hub.close.side_effect = MemoryError() try: with self.assertRaises(SystemTerminate): asynloop(*x.args) finally: state.should_terminate = False
def test_poll_err_readable(self): x = X(self.app) reader = Mock(name='reader') x.hub.add_reader(6, reader, 6, 24) x.hub.on_tick.add(x.close_then_error(Mock(), 2)) x.hub.poller.poll.return_value = [(6, ERR)] with self.assertRaises(socket.error): asynloop(*x.args) reader.assert_called_with(6, 24) self.assertTrue(x.hub.poller.poll.called)
def test_setup_heartbeat(self): x = X(self.app, heartbeat=10) x.hub.call_repeatedly = Mock(name='x.hub.call_repeatedly()') x.blueprint.state = CLOSE asynloop(*x.args) x.consumer.consume.assert_called_with() x.obj.on_ready.assert_called_with() x.hub.call_repeatedly.assert_called_with( 10 / 2.0, x.connection.heartbeat_check, 2.0, )
def test_poll_empty(self): x = X(self.app) x.hub.readers = {6: Mock()} x.close_then_error(x.connection.drain_nowait) x.hub.fire_timers.return_value = 33.37 x.hub.poller.poll.return_value = [] with self.assertRaises(socket.error): asynloop(*x.args) x.hub.poller.poll.assert_called_with(33.37) x.connection.transport.on_poll_empty.assert_called_with()
def test_should_terminate(self, should_stop): x = X(self.app) state.should_stop = should_stop state.should_terminate = True try: with pytest.raises(WorkerTerminate): asynloop(*x.args) finally: state.should_stop = None state.should_terminate = None
def test_poll_readable_raises_Empty(self): x = X(self.app) reader = Mock(name='reader') x.hub.add_reader(6, reader, 6) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), 2)) x.hub.poller.poll.return_value = [(6, READ)] reader.side_effect = Empty() with self.assertRaises(socket.error): asynloop(*x.args) reader.assert_called_with(6) self.assertTrue(x.hub.poller.poll.called)
def test_poll_readable(self): x = X(self.app) reader = Mock(name='reader') x.hub.add_reader(6, reader, 6) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), mod=4)) poller = x.hub.poller poller.poll.return_value = [(6, READ)] with self.assertRaises(socket.error): asynloop(*x.args) reader.assert_called_with(6) self.assertTrue(poller.poll.called)
def test_heartbeat_error(self): x = X(self.app, heartbeat=10) x.connection.heartbeat_check = Mock( side_effect=RuntimeError("Heartbeat error")) def call_repeatedly(rate, fn, args): fn(*args) x.hub.timer.call_repeatedly = call_repeatedly with pytest.raises(RuntimeError): asynloop(*x.args)
def test_poll_err_writable(self): x = X(self.app) writer = Mock(name='writer') x.hub.add_writer(6, writer, 6, 48) x.hub.on_tick.add(x.close_then_error(Mock(), 2)) poller = x.hub.poller poller.poll.return_value = [(6, ERR)] with pytest.raises(socket.error): asynloop(*x.args) writer.assert_called_with(6, 48) poller.poll.assert_called()
def test_setup_heartbeat(self): x = X(self.app, heartbeat=10) x.hub.timer.call_repeatedly = Mock(name='x.hub.call_repeatedly()') x.blueprint.state = CLOSE asynloop(*x.args) x.consumer.consume.assert_called_with() x.obj.on_ready.assert_called_with() last_call_args, _ = x.hub.timer.call_repeatedly.call_args assert last_call_args[0] == 10 / 2.0 assert last_call_args[2] == (2.0,)
def test_poll_readable(self): x = X(self.app) reader = Mock(name='reader') x.hub.add_reader(6, reader, 6) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), mod=4)) poller = x.hub.poller poller.poll.return_value = [(6, READ)] with pytest.raises(socket.error): asynloop(*x.args) reader.assert_called_with(6) poller.poll.assert_called()
def test_poll_err_writable(self): x = X(self.app) writer = Mock(name='writer') x.hub.add_writer(6, writer, 6, 48) x.hub.on_tick.add(x.close_then_error(Mock(), 2)) poller = x.hub.poller poller.poll.return_value = [(6, ERR)] with self.assertRaises(socket.error): asynloop(*x.args) writer.assert_called_with(6, 48) self.assertTrue(poller.poll.called)
def test_poll_writable(self): x = X(self.app) writer = Mock(name='writer') x.hub.add_writer(6, writer, 6) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), 2)) poller = x.hub.poller poller.poll.return_value = [(6, WRITE)] with pytest.raises(socket.error): asynloop(*x.args) writer.assert_called_with(6) poller.poll.assert_called()
def test_poll_keep_draining_disabled(self): x = X(self.app) x.hub.writers = {6: Mock()} poll = x.hub.poller.poll def se(*args, **kwargs): poll.side_effect = socket.error() poll.side_effect = se x.hub.poller.poll.return_value = [(6, 0)] with self.assertRaises(socket.error): asynloop(*x.args) self.assertTrue(x.hub.poller.poll.called)
def test_updates_qos(self): x = X(self.app) x.qos.prev = 3 x.qos.value = 3 asynloop(*x.args, sleep=x.closer()) self.assertFalse(x.qos.update.called) x = X(self.app) x.qos.prev = 1 x.qos.value = 6 asynloop(*x.args, sleep=x.closer()) x.qos.update.assert_called_with() x.hub.fire_timers.assert_called_with(propagate=(socket.error, )) x.connection.transport.on_poll_start.assert_called_with()
def test_poll_write_generator_raises(self): x = X(self.app) def Gen(): raise ValueError('foo') yield gen = Gen() x.hub.writers = {6: gen} x.close_then_error(x.connection.drain_nowait) x.hub.poller.poll.return_value = [(6, WRITE)] with self.assertRaises(ValueError): asynloop(*x.args) self.assertIsNone(gen.gi_frame) x.hub.remove.assert_called_with(6)
def test_poll_write_generator_stopped(self): x = X(self.app) def Gen(): raise StopIteration() yield gen = Gen() x.hub.add_writer(6, gen) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), 2)) x.hub.poller.poll.return_value = [(6, WRITE)] x.hub.remove = Mock(name='hub.remove()') with self.assertRaises(socket.error): asynloop(*x.args) self.assertIsNone(gen.gi_frame)
def test_poll_write_generator_raises(self): x = X(self.app) def Gen(): raise ValueError('foo') yield gen = Gen() x.hub.add_writer(6, gen) x.hub.remove = Mock(name='hub.remove()') x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), 2)) x.hub.poller.poll.return_value = [(6, WRITE)] with self.assertRaises(ValueError): asynloop(*x.args) self.assertIsNone(gen.gi_frame) x.hub.remove.assert_called_with(6)
def test_poll_write_generator(self): x = X(self.app) def Gen(): yield 1 yield 2 gen = Gen() x.hub.writers = {6: gen} x.close_then_error(x.connection.drain_nowait) x.hub.poller.poll.return_value = [(6, WRITE)] with self.assertRaises(socket.error): asynloop(*x.args) self.assertTrue(gen.gi_frame.f_lasti != -1) self.assertFalse(x.hub.remove.called)
def test_poll_write_generator(self): x = X(self.app) x.hub.remove = Mock(name='hub.remove()') def Gen(): yield 1 yield 2 gen = Gen() x.hub.add_writer(6, gen) x.hub.on_tick.add(x.close_then_error(Mock(name='tick'), 2)) x.hub.poller.poll.return_value = [(6, WRITE)] with self.assertRaises(socket.error): asynloop(*x.args) self.assertTrue(gen.gi_frame.f_lasti != -1) self.assertFalse(x.hub.remove.called)