def test_mqtt_telemetry(): # Create receiver sub = Client(clean_session=True) # def on_message(client, userdata, message): # data = message.payload # print(message) on_message_mock = mock.Mock() sub.on_message = on_message_mock sub.connect(cfg.TELEMETRY_MQTT_BROKER_HOST) sub.loop_start() name = "donkey/%s/telemetry" % cfg.TELEMETRY_DONKEY_NAME sub.subscribe(name) t = MqttTelemetry(cfg, default_inputs=['angle'], default_types=['float']) t.publish() timestamp = t.report({'speed': 16, 'voltage': 12}) t.run(33.3) assert t.qsize == 2 time.sleep(1.5) t.publish() assert t.qsize == 0 time.sleep(0.5) res = str.encode( '[{"ts": %s, "values": {"speed": 16, "voltage": 12, "angle": 33.3}}]' % timestamp) assert on_message_mock.call_args_list[0][0][2].payload == res
def test_mqtt_telemetry(): cfg.TELEMETRY_DEFAULT_INPUTS = 'pilot/angle,pilot/throttle' cfg.TELEMETRY_DONKEY_NAME = 'test{}'.format(randint(0, 1000)) cfg.TELEMETRY_MQTT_JSON_ENABLE = True # Create receiver sub = Client(clean_session=True) # def on_message(client, userdata, message): # data = message.payload # print(message) on_message_mock = mock.Mock() sub.on_message = on_message_mock sub.connect(cfg.TELEMETRY_MQTT_BROKER_HOST) sub.loop_start() name = "donkey/%s/#" % cfg.TELEMETRY_DONKEY_NAME sub.subscribe(name) t = MqttTelemetry(cfg) t.add_step_inputs(inputs=['my/voltage'], types=['float']) t.publish() timestamp = t.report({'my/speed': 16, 'my/voltage': 12}) t.run(33.3, 22.2, 11.1) assert t.qsize == 2 time.sleep(1.5) t.publish() assert t.qsize == 0 time.sleep(0.5) res = str.encode('[{"ts": %s, "values": {"my/speed": 16, "my/voltage": 11.1, "pilot/angle": 33.3, ' '"pilot/throttle": 22.2}}]' % timestamp) assert on_message_mock.call_args_list[0][0][2].payload == res