Example #1
0
 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)
Example #2
0
 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()
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
 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
Example #6
0
 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
Example #7
0
 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
Example #8
0
 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
Example #9
0
 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)
Example #10
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)
Example #11
0
 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
Example #12
0
 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)
Example #13
0
 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)
Example #14
0
 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)
Example #15
0
 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)
Example #16
0
 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
Example #17
0
 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
Example #18
0
 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
Example #19
0
    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()
Example #20
0
 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, ),
     )
Example #21
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)
Example #22
0
 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)
Example #23
0
 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
Example #24
0
 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)
Example #25
0
 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
Example #26
0
 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)
Example #27
0
 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,
     )
Example #28
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()
Example #29
0
 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)
Example #30
0
 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
Example #31
0
 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
Example #32
0
 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
Example #33
0
 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)
Example #34
0
 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)
Example #35
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 self.assertRaises(socket.error):
         asynloop(*x.args)
     reader.assert_called_with(6)
     self.assertTrue(poller.poll.called)
Example #36
0
    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)
Example #37
0
 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()
Example #38
0
    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,)
Example #39
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()
Example #40
0
 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)
Example #41
0
 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()
Example #42
0
 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)
Example #43
0
    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)
Example #44
0
    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)
Example #45
0
    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()
Example #46
0
    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)
Example #47
0
    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)
Example #48
0
    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)
Example #49
0
    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)
Example #50
0
    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)
Example #51
0
    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)