Example #1
0
 def test_process_result(self):
     x = asynpool.ResultHandler(
         Mock(),
         Mock(),
         {},
         Mock(),
         Mock(),
         Mock(),
         Mock(),
         Mock(),
         fileno_to_outq={},
         on_process_alive=Mock(),
         on_job_ready=Mock(),
     )
     assert x
     hub = Mock(name='hub')
     recv = x._recv_message = Mock(name='recv_message')
     recv.return_value = iter([])
     x.on_state_change = Mock()
     x.register_with_event_loop(hub)
     proc = x.fileno_to_outq[3] = Mock()
     reader = proc.outq._reader
     reader.poll.return_value = False
     x.handle_event(6)  # KeyError
     x.handle_event(3)
     x._recv_message.assert_called_with(
         hub.add_reader,
         3,
         x.on_state_change,
     )
Example #2
0
    def test_process_result(self):
        x = asynpool.ResultHandler(
            Mock(),
            Mock(),
            {},
            Mock(),
            Mock(),
            Mock(),
            Mock(),
            Mock(),
            fileno_to_outq={},
            on_process_alive=Mock(),
            on_job_ready=Mock(),
        )
        self.assertTrue(x)
        hub = Mock(name='hub')
        x.register_with_event_loop(hub)
        x.on_state_change = Mock()
        proc = x.fileno_to_outq[3] = Mock()
        reader = proc.outq._reader
        reader.poll.return_value = False
        x.handle_event(6)  # KeyError
        x.handle_event(3)
        reader.poll.assert_called_with(0)
        self.assertFalse(x.on_state_change.called)

        reader.poll.reset()
        reader.poll.return_value = True
        task = reader.recv.return_value = (1, (2, 3))
        x.handle_event(3)
        reader.poll.assert_called_with(0)
        reader.recv.assert_called_with()
        x.on_state_change.assert_called_with(task)
        self.assertTrue(x._it)

        reader.recv.return_value = None
        x.handle_event(3)
        self.assertIsNone(x._it)

        x._state = asynpool.TERMINATE
        it = x._process_result()
        next(it)
        with self.assertRaises(asynpool.CoroStop):
            it.send(3)
        x.handle_event(3)
        self.assertIsNone(x._it)
        x._state == asynpool.RUN

        reader.recv.side_effect = EOFError()
        it = x._process_result()
        next(it)
        with self.assertRaises(asynpool.CoroStop):
            it.send(3)
        reader.recv.side_effect = None