def test_mqtt(self): loop = asyncio.get_event_loop() s = Scheduler(loop) sensor = make_test_publisher_from_vallist(1, sensor_data) mqtt_writer = MQTTWriter('localhost', topics=[ ('bogus/bogus', 0), ]) sensor.to_json().subscribe(mqtt_writer) s.schedule_periodic(sensor, 0.5) mqtt_reader = MQTTReader("localhost", topics=[ ('bogus/bogus', 0), ]) vs = ValidationSubscriber(sensor_data, self) mqtt_reader.take(5).select(mqtt_msg_to_unicode).from_json(constructor=SensorEvent) \ .output().subscribe(vs) c = s.schedule_on_private_event_loop(mqtt_reader) stop = StopLoopAfter(5, c) mqtt_reader.subscribe(stop) mqtt_reader.print_downstream() sensor.print_downstream() s.run_forever() loop.stop() self.assertTrue(vs.completed) print("that's it")
def test_case(self): """Just run the reader in its own event loop. We stop everything after 4 events. """ s = Scheduler(asyncio.get_event_loop()) m = MQTTReader("localhost", topics=[ ('bogus/bogus', 0), ], mock_class=MockMQTTClient) m.output() c = s.schedule_on_private_event_loop(m) m.subscribe(StopLoopAfter(4, c)) m.print_downstream() s.run_forever() print("that's it")