def test_heartbeat_timeout(self): """ Initialize the Listener with a heartbeat value, then start the heartbeat. Wait long enough for the heartbeat to timeout MAX_MISSED_HEARTBEATS times, and then assert that the error_callback was called. """ self.resetTestVars() test_recovery_attempts = 1 test_heartbeat = 1 test_max_missed_heartbeats = 5 pa_listener = Listener(None, test_recovery_attempts, delim=None, heartbeat=test_heartbeat, max_missed_heartbeats=test_max_missed_heartbeats, callback_data=self.myGotData, callback_raw=self.myGotRaw, default_callback_error=self.myGotListenerError, local_callback_error=None, user_callback_error=self.myGotError) pa_listener.start_heartbeat_timer() gevent.sleep((test_max_missed_heartbeats * pa_listener.heartbeat) + 4) self.assertFalse(self.rawCallbackCalled) self.assertFalse(self.dataCallbackCalled) self.assertTrue(self.errorCallbackCalled) self.assertFalse(self.listenerCallbackCalled)
def test_heartbeat_timeout(self): """ Initialize the Listener with a heartbeat value, then start the heartbeat. Wait long enough for the heartbeat to timeout MAX_MISSED_HEARTBEATS times, and then assert that the error_callback was called. """ self.resetTestVars() test_recovery_attempts = 1 test_heartbeat = 1 test_max_missed_heartbeats = 5 pa_listener = Listener( None, test_recovery_attempts, delim=None, heartbeat=test_heartbeat, max_missed_heartbeats=test_max_missed_heartbeats, callback_data=self.myGotData, callback_raw=self.myGotRaw, default_callback_error=self.myGotListenerError, local_callback_error=None, user_callback_error=self.myGotError) pa_listener.start_heartbeat_timer() gevent.sleep((test_max_missed_heartbeats * pa_listener.heartbeat) + 4) self.assertFalse(self.rawCallbackCalled) self.assertFalse(self.dataCallbackCalled) self.assertTrue(self.errorCallbackCalled) self.assertFalse(self.listenerCallbackCalled)
def test_heartbeat_timeout(self): """ Initialize the Listener with a heartbeat value, then start the heartbeat. Wait long enough for the heartbeat to timeout MAX_MISSED_HEARTBEATS times, and then assert that the error_callback was called. """ self.resetTestVars() test_heartbeat = 1 test_max_missed_heartbeats = 5 paListener = Listener(None, None, test_heartbeat, test_max_missed_heartbeats, self.myGotData, self.myGotRaw, self.myGotError) paListener.start_heartbeat_timer() gevent.sleep((test_max_missed_heartbeats * paListener.heartbeat) + 4) self.assertFalse(self.rawCallbackCalled) self.assertFalse(self.dataCallbackCalled) self.assertTrue(self.errorCallbackCalled)
def test_set_heartbeat(self): """ Test the set_heart_beat function; make sure it returns False when passed invalid values, and true when valid. Also make sure it adds the HEARTBEAT_FUDGE """ self.resetTestVars() test_recovery_attempts = 1 test_heartbeat = 0 test_max_missed_heartbeats = 5 pa_listener = Listener(None, test_recovery_attempts, None, test_heartbeat, test_max_missed_heartbeats, self.myGotData, self.myGotRaw, self.myGotListenerError, None, self.myGotError) ### # Test valid values ### test_heartbeat = 1 return_value = pa_listener.set_heartbeat(test_heartbeat) self.assertTrue(return_value) self.assertTrue(pa_listener.heartbeat == test_heartbeat + pa_listener.HEARTBEAT_FUDGE) test_heartbeat = pa_listener.MAX_HEARTBEAT_INTERVAL return_value = pa_listener.set_heartbeat(test_heartbeat) self.assertTrue(return_value) self.assertTrue(pa_listener.heartbeat == test_heartbeat + pa_listener.HEARTBEAT_FUDGE) ### # Test that a heartbeat value of zero results in the listener.heartbeat being zero # (and doesn't include HEARTBEAT_FUDGE) ### test_heartbeat = 0 return_value = pa_listener.set_heartbeat(test_heartbeat) self.assertTrue(return_value) self.assertTrue(pa_listener.heartbeat == test_heartbeat) ### # Test invalid values ### test_heartbeat = -1 return_value = pa_listener.set_heartbeat(test_heartbeat) self.assertFalse(return_value) test_heartbeat = pa_listener.MAX_HEARTBEAT_INTERVAL + 1 return_value = pa_listener.set_heartbeat(test_heartbeat) self.assertFalse(return_value)
def test_handle_packet(self): """ Test that a default PortAgentPacket creates a DATA_FROM_DRIVER packet, and that the handle_packet method invokes the raw callback """ pa_listener = Listener(None, None, 0, 0, 5, self.myGotData, self.myGotRaw, self.myGotListenerError, self.myGotError) test_data = "This is a great big test" self.resetTestVars() pa_packet = PortAgentPacket() pa_packet.attach_data(test_data) pa_packet.pack_header() pa_packet.verify_checksum() pa_listener.handle_packet(pa_packet) self.assertTrue(self.rawCallbackCalled) ### # Test DATA_FROM_INSTRUMENT; handle_packet should invoke data and raw # callbacks. ### self.resetTestVars() pa_packet = PortAgentPacket(PortAgentPacket.DATA_FROM_INSTRUMENT) pa_packet.attach_data(test_data) pa_packet.pack_header() pa_packet.verify_checksum() pa_listener.handle_packet(pa_packet) self.assertTrue(self.rawCallbackCalled) self.assertTrue(self.dataCallbackCalled) self.assertFalse(self.errorCallbackCalled) self.assertFalse(self.listenerCallbackCalled) ### # Test PORT_AGENT_COMMAND; handle_packet should invoke raw callback. ### self.resetTestVars() pa_packet = PortAgentPacket(PortAgentPacket.PORT_AGENT_COMMAND) pa_packet.attach_data(test_data) pa_packet.pack_header() pa_packet.verify_checksum() pa_listener.handle_packet(pa_packet) self.assertTrue(self.rawCallbackCalled) self.assertFalse(self.dataCallbackCalled) self.assertFalse(self.errorCallbackCalled) self.assertFalse(self.listenerCallbackCalled) ### # Test PORT_AGENT_STATUS; handle_packet should invoke raw callback. ### self.resetTestVars() pa_packet = PortAgentPacket(PortAgentPacket.PORT_AGENT_STATUS) pa_packet.attach_data(test_data) pa_packet.pack_header() pa_packet.verify_checksum() pa_listener.handle_packet(pa_packet) self.assertTrue(self.rawCallbackCalled) self.assertFalse(self.dataCallbackCalled) self.assertFalse(self.errorCallbackCalled) self.assertFalse(self.listenerCallbackCalled) ### # Test PORT_AGENT_FAULT; handle_packet should invoke raw callback. ### self.resetTestVars() pa_packet = PortAgentPacket(PortAgentPacket.PORT_AGENT_FAULT) pa_packet.attach_data(test_data) pa_packet.pack_header() pa_packet.verify_checksum() pa_listener.handle_packet(pa_packet) self.assertTrue(self.rawCallbackCalled) self.assertFalse(self.dataCallbackCalled) self.assertFalse(self.errorCallbackCalled) self.assertFalse(self.listenerCallbackCalled) ### # Test INSTRUMENT_COMMAND; handle_packet should invoke raw callback. ### self.resetTestVars() pa_packet = PortAgentPacket(PortAgentPacket.DIGI_CMD) pa_packet.attach_data(test_data) pa_packet.pack_header() pa_packet.verify_checksum() pa_listener.handle_packet(pa_packet) self.assertTrue(self.rawCallbackCalled) self.assertFalse(self.dataCallbackCalled) self.assertFalse(self.errorCallbackCalled) self.assertFalse(self.listenerCallbackCalled) ### # Test HEARTBEAT; handle_packet should not invoke any callback. ### self.resetTestVars() pa_packet = PortAgentPacket(PortAgentPacket.HEARTBEAT) pa_packet.attach_data(test_data) pa_packet.pack_header() pa_packet.verify_checksum() pa_listener.handle_packet(pa_packet) self.assertFalse(self.rawCallbackCalled) self.assertFalse(self.dataCallbackCalled) self.assertFalse(self.errorCallbackCalled) self.assertFalse(self.listenerCallbackCalled)