async def test_DeviceManagerImpl_multidevice(task_running) -> None: # GIVEN devman = device.DeviceManagerImpl() dev1 = DeviceStub("one", "One") dev1.stub_set_stream([b"$PGRMZ,+51.1,m,3*10"] * 3) dev1.stub_set_delay(0.1) devman.register(dev1) dev2 = DeviceStub("two", "TWO") dev2.stub_set_stream([b"$PFLAU,0,0,0,1,0,,0,,,*4F"] * 3) dev2.stub_set_delay(0.25) devman.register(dev2) # WHEN with devman.open_nmea() as nmea_stream: # THEN nmea1 = await nmea_stream.read() nmea2 = await nmea_stream.read() nmea3 = await nmea_stream.read() assert nmea1.device_id == "one" assert nmea1.raw_message == "$PGRMZ,+51.1,m,3*10" assert nmea2.device_id == "one" assert nmea2.raw_message == "$PGRMZ,+51.1,m,3*10" assert nmea3.device_id == "two" assert nmea3.raw_message == "$PFLAU,0,0,0,1,0,,0,,,*4F"
def test_DeviceManagerImpl_open_nmea_empty() -> None: # GIVEN devman = device.DeviceManagerImpl() # WHEN with devman.open_nmea() as nmea: # THEN assert nmea is not None
async def test_DeviceManagerImpl_get() -> None: # GIVEN devman = device.DeviceManagerImpl() dev = DeviceStub("one", "One") dev.stub_set_stream([b"$PGRMZ,+51.1,m,3*10"]) devman.register(dev) # WHEN, THEN assert devman.get("one") == dev assert devman.get("two") is None
def __init__(self, screen: ScreenManager, config: str, rootfs: Optional[str]) -> None: self.screen = screen if rootfs is None: self.os = ovos.OpenVarioOSImpl() else: print(f"Simulating Openvario on {rootfs}") self.os = ovos.OpenVarioOSSimulator(rootfs) self.settings = settings.StoredSettingsImpl.load(config) self.devices = device.DeviceManagerImpl() self.processes = process.ProcessManagerImpl() self.extensions = ExtensionManagerImpl() self.apps = AppManagerImpl(self)
async def test_DeviceManagerImpl_open_nmea_stream(task_running) -> None: # GIVEN devman = device.DeviceManagerImpl() dev = DeviceStub("one", "One") dev.stub_set_stream([b"$PGRMZ,+51.1,m,3*10"]) devman.register(dev) # WHEN with devman.open_nmea() as nmea_stream: # THEN nmea = await nmea_stream.read() assert nmea.device_id == "one" assert nmea.raw_message == "$PGRMZ,+51.1,m,3*10"
async def test_DeviceManagerImpl_remove_on_binary() -> None: # When non-ascii is received on device, drop it and try to reconnect again devman = device.DeviceManagerImpl() dev = DeviceStub("one", "One") dev.stub_set_stream([b"GOOD ASCII", b"\xFF"]) dev.stub_set_delay(0.01) devman.register(dev) with devman.open_nmea() as nmea_stream: # THEN with pytest.raises(asyncio.TimeoutError): await asyncio.wait_for(nmea_stream.read(), timeout=0.05) assert len(devman.list()) == 0
async def test_DeviceManagerImpl_bad_nmea() -> None: # GIVEN devman = device.DeviceManagerImpl() dev = DeviceStub("one", "One") dev.stub_set_stream([b"$BAD,nmea", b"$PGRMZ,+51.1,m,3*10"]) devman.register(dev) # WHEN with devman.open_nmea() as nmea_stream: # THEN async for nmea in nmea_stream: break # read only one message assert nmea.device_id == "one" assert nmea.raw_message == "$PGRMZ,+51.1,m,3*10"
async def test_DeviceManagerImpl_remove_device_on_error(task_running) -> None: # GIVEN devman = device.DeviceManagerImpl() dev = DeviceStub("one", "One") devman.register(dev) assert len(devman.list()) == 1 # WHEN with devman.open_nmea() as nmea_stream: # THEN read = nmea_stream.read() with pytest.raises(asyncio.TimeoutError): await asyncio.wait_for(read, timeout=0.01) assert len(devman.list()) == 0