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, )
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