def test_start_when_disabled(self): timer = MockTimer() eventer = MockDispatcher() eventer.enabled = False h = Heart(timer, eventer) h.start() self.assertFalse(h.tref)
def test_stop(self): timer = MockTimer() eventer = MockDispatcher() h = Heart(timer, eventer, interval=1) h.start() self.assertTrue(h.tref) h.stop() self.assertIsNone(h.tref)
def test_time_raises_TypeError(self): from celery.worker import heartbeat def raises_TypeError(exc): raise TypeError("x") prev_time, heartbeat.time = heartbeat.time, raises_TypeError try: eventer = MockDispatcher() heart = Heart(eventer, interval=0.1) heart.run() self.assertIn("worker-online", eventer.sent) self.assertNotIn("worker-heartbeat", eventer.sent) finally: heartbeat.time = prev_time
def test_start_stop(self): timer = MockTimer() eventer = MockDispatcher() h = Heart(timer, eventer, interval=1) h.start() self.assertTrue(h.tref) h.stop() self.assertIsNone(h.tref) h.stop()
def test_start_stop(self): timer = MockTimer() eventer = MockDispatcher() h = Heart(timer, eventer, interval=1) h.start() assert h.tref h.stop() assert h.tref is None h.stop()
def test_send_sends_signal(self): h = Heart(MockTimer(), MockDispatcher(), interval=1) h._send_sent_signal = None h._send('worker-heartbeat') h._send_sent_signal = Mock(name='send_sent_signal') h._send('worker') h._send_sent_signal.assert_called_with(sender=h)
def test_run(self): eventer = MockDispatcher() heart = Heart(eventer, interval=1) heart._shutdown.set() heart.run() self.assertEqual(heart._state, "RUN") self.assertIn("worker-online", eventer.sent) self.assertIn("worker-heartbeat", eventer.sent) self.assertIn("worker-offline", eventer.sent) heart.stop() heart.stop() self.assertEqual(heart._state, "CLOSE") heart = Heart(eventer, interval=0.00001) heart._shutdown.set() for i in range(10): heart.run()
def test_run_manages_cycle(self): eventer = MockDispatcher() heart = Heart(eventer, interval=0.1) eventer.heart = heart heart.run() self.assertEqual(heart._state, "RUN") self.assertTrue(heart._shutdown.isSet()) heart._shutdown.clear() heart._stopped.clear() eventer.next_iter = 0 heart.run()
def test_run_manages_cycle(self): eventer = MockDispatcher() heart = Heart(MockTimer(), eventer, interval=0.1) eventer.heart = heart heart.start() msecs, fun, args, kwargs = tref = heart.tref self.assertEqual(msecs, 0.1 * 1000) self.assertEqual(tref.fun, eventer.send) self.assertTrue(tref.args) self.assertTrue(tref.kwargs) heart.stop() self.assertTrue(tref.cancelled)
def test_run(self): eventer = MockDispatcher() heart = Heart(eventer, interval=1) heart._shutdown.set() heart.run() self.assertTrue(heart._state == "RUN") self.assertTrue("worker-online" in eventer.sent) self.assertTrue("worker-heartbeat" in eventer.sent) self.assertTrue("worker-offline" in eventer.sent) self.assertTrue(heart._stopped.isSet()) heart.stop() heart.stop() self.assertTrue(heart._state == "CLOSE") heart = Heart(eventer, interval=0.00001) heart._shutdown.set() for i in range(10): heart.run()
def test_message_retries(self): timer = MockTimer() eventer = MockDispatcher() eventer.enabled = True h = Heart(timer, eventer, interval=1) h.start() assert eventer.sent[-1][0] == "worker-online" # Invoke a heartbeat h.tref[1](*h.tref[2], **h.tref[3]) assert eventer.sent[-1][0] == "worker-heartbeat" assert eventer.sent[-1][1]["retry"] h.stop() assert eventer.sent[-1][0] == "worker-offline" assert not eventer.sent[-1][1]["retry"]
def test_stop_when_disabled(self): timer = MockTimer() eventer = MockDispatcher() eventer.enabled = False h = Heart(timer, eventer) h.stop()
def test_run_stopped_is_set_even_if_send_breaks(self): eventer = MockDispatcherRaising() heart = Heart(eventer, interval=1) heart._shutdown.set() self.assertRaises(Exception, heart.run) self.assertTrue(heart._stopped.isSet())
def test_run_exception(self): eventer = MockDispatcherRaising() heart = Heart(eventer, interval=1) heart._shutdown.set() self.assertRaises(Exception, heart.run)