diff --git a/msgq/visionipc/tests/test_visionipc.py b/msgq/visionipc/tests/test_visionipc.py index b938df447..4b1ad7cce 100644 --- a/msgq/visionipc/tests/test_visionipc.py +++ b/msgq/visionipc/tests/test_visionipc.py @@ -1,3 +1,4 @@ +import gc import struct import unittest from typing import Optional @@ -16,24 +17,24 @@ def tearDown(self): self.client = None self.server = None - def setup_vipc(self, name, *stream_types, num_buffers=1, width=100, height=100, conflate=False): - self.server = VisionIpcServer(name) - for stream_type in stream_types: - self.server.create_buffers(stream_type, num_buffers, width, height) - self.server.start_listener() - - if len(stream_types): - self.client = VisionIpcClient(name, stream_types[0], conflate) - assert self.client.connect(True) - else: - self.client = None - - return self.server, self.client + def setup_vipc( + self, name: str, stream_type: int, *other_stream_types: int, + num_buffers: int = 1, width: int = 100, height: int = 100, conflate: bool = False, + ) -> tuple[VisionIpcServer, VisionIpcClient, int]: + self.server = server = VisionIpcServer(name) + for stream in (stream_type, *other_stream_types): + server.create_buffers(stream, num_buffers, width, height) + server.start_listener() + + self.client = client = VisionIpcClient(name, stream_type, conflate) + assert client.connect(True) + buffer_len = client.buffer_len + assert buffer_len is not None + return server, client, buffer_len def test_connect(self): - self.setup_vipc("camerad", 0) - assert self.client is not None - assert self.client.is_connected() + _, client, _ = self.setup_vipc("camerad", 0) + assert client.is_connected() def test_available_streams(self): stream_types = (0, 2) @@ -43,61 +44,101 @@ def test_available_streams(self): def test_buffers(self): width, height, num_buffers = 100, 200, 5 - self.setup_vipc("camerad", 0, num_buffers=num_buffers, width=width, height=height) - assert self.client is not None - assert self.client.width == width - assert self.client.height == height - assert self.client.buffer_len is not None and self.client.buffer_len > 0 - assert self.client.num_buffers == num_buffers + _, client, buffer_len = self.setup_vipc("camerad", 0, num_buffers=num_buffers, width=width, height=height) + assert client.width == width + assert client.height == height + assert buffer_len > 0 + assert client.num_buffers == num_buffers def test_send_single_buffer(self): - self.setup_vipc("camerad", 0) - assert self.server is not None - assert self.client is not None - assert self.client.buffer_len is not None - buf = bytearray(self.client.buffer_len) + server, client, buffer_len = self.setup_vipc("camerad", 0) + buf = bytearray(buffer_len) struct.pack_into("