def test_on_not_connected(self): config = common.load_config() with Storage() as storage, MqttClient("keeperconnectortest", config) as mc, Connector( config, storage, mc) as connector: connector.on_not_connect() self.assertEqual(connector.attempts, 1) self.assertEqual( storage.get_int(constants.CONNECTOR_FAILED_CONNECTIONS), 1) self.assertEqual( storage.get_int(constants.CONNECTOR_MQTT_RESTARTS), 0) connector.on_not_connect() self.assertEqual(connector.attempts, 2) self.assertEqual( storage.get_int(constants.CONNECTOR_FAILED_CONNECTIONS), 2) self.assertEqual( storage.get_int(constants.CONNECTOR_MQTT_RESTARTS), 0) connector.on_not_connect() self.assertEqual(connector.attempts, 3) self.assertEqual( storage.get_int(constants.CONNECTOR_FAILED_CONNECTIONS), 3) self.assertEqual( storage.get_int(constants.CONNECTOR_MQTT_RESTARTS), 0) connector.on_not_connect() self.assertEqual( storage.get_int(constants.CONNECTOR_MQTT_RESTARTS), 1) self.assertEqual(connector.attempts, 0) connector.on_not_connect() self.assertEqual(connector.attempts, 1) self.assertEqual( storage.get_int(constants.CONNECTOR_FAILED_CONNECTIONS), 4) self.assertEqual( storage.get_int(constants.CONNECTOR_MQTT_RESTARTS), 1)
def test_is_connected(self): config = common.load_config() with MqttClient("keepermqtttest", config) as mqtt_client: mqtt_client.reconnect() self.assertEqual(mqtt_client.connection_status(), 2) self.assertEqual(mqtt_client.connection_status(), 0)
def test_monitor_in_time_no_delay(self): config = common.load_config() with Storage() as storage, MqttClient("keeperconnectortest", config) as mc, Heartbeater(config, storage, mc) as heartbeater: heartbeater.last_message = datetime.now() - timedelta(seconds=config["heartbeat.interval"]) heartbeater.monitor() self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 0)
def test_not_connected(self): config = common.load_config() config["mqtt.broker"] = "1.1.1.1" try: with MqttClient("keepermqtttest", config, False) as mqtt_client: mqtt_client.reconnect() pass except: pass
def test_not_stable(self): config = common.load_config() with Storage() as storage, MqttClient("keeperconnectortest", config) as mc, Connector( config, storage, mc) as connector: now = datetime.now() connector.started_at = now - timedelta(seconds=10) connector.connected_at = now - timedelta(seconds=8) self.assertFalse(connector.is_stable())
def test_monitor_restart_ha(self): config = common.load_config() with Storage() as storage, MqttClient("keeperconnectortest", config) as mc, Heartbeater(config, storage, mc) as heartbeater: diff = config["heartbeat.interval"] + config["heartbeat.delay"] + 1 heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 1) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 1) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 0) heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 2) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 2) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 0) heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 3) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 3) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 0) heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 0) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 3) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 1) heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 1) self.assertEqual(heartbeater.attempts, 1) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 4) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 1) heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 2) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 5) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 1) heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 3) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 6) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 1) heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 0) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 6) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 2) heartbeater.last_message = datetime.now() - timedelta(seconds=diff) heartbeater.monitor() self.assertEqual(heartbeater.misses, 1) self.assertEqual(heartbeater.attempts, 2) self.assertEqual(storage.get_int(constants.HEARTBEATER_MISSED_HEARTBEAT), 7) self.assertEqual(storage.get_int(constants.HEARTBEATER_HA_RESTARTS), 2)
def start(): """ starts this manager and calls it's routine loop which monitors heartbeat messages """ config = load_config() with Storage() as storage, MqttClient("keeperheartbeater", config) as mqtt_client, \ Heartbeater(config, storage, mqtt_client) as heartbeater: del config try: loop(heartbeater, mqtt_client) except Exception as ex: if running: raise ex
def start(): """ starts this manager and calls it's routine loop which monitors mqtt connections """ config = load_config() with Storage() as storage, MqttClient("keeperconnector", config) as mqtt_client, Connector(config, storage, mqtt_client) as connector: del config try: loop(connector, mqtt_client) except Exception as ex: if running: raise ex