Skip to content

Commit 3eb9a5a

Browse files
deduplicate visionipc tests (#687)
1 parent ac86ad0 commit 3eb9a5a

6 files changed

Lines changed: 26 additions & 147 deletions

File tree

SConscript

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,5 @@ envCython.Program(f'{visionipc_dir.abspath}/visionipc_pyx.so', f'{visionipc_dir.
3232

3333
if GetOption('extras'):
3434
env.Program('msgq/test_runner', ['msgq/test_runner.cc', 'msgq/msgq_tests.cc'], LIBS=[msgq, common])
35-
env.Program(f'{visionipc_dir.abspath}/test_runner',
36-
[f'{visionipc_dir.abspath}/test_runner.cc', f'{visionipc_dir.abspath}/visionipc_tests.cc'],
37-
LIBS=['pthread'] + vipc_libs)
3835

3936
Export('visionipc', 'msgq', 'msgq_python')

msgq/visionipc/test_runner.cc

Lines changed: 0 additions & 2 deletions
This file was deleted.

msgq/visionipc/tests/test_visionipc.py

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
1-
import random
21
import unittest
32
from typing import Optional
43
import numpy as np
54
from msgq.visionipc import VisionIpcServer, VisionIpcClient, VisionStreamType
65

76

87
class TestVisionIpc(unittest.TestCase):
9-
server: VisionIpcServer
8+
server: Optional[VisionIpcServer]
109
client: Optional[VisionIpcClient]
1110

11+
def setUp(self):
12+
self.server = None
13+
self.client = None
14+
15+
def tearDown(self):
16+
self.client = None
17+
self.server = None
18+
1219
def setup_vipc(self, name, *stream_types, num_buffers=1, width=100, height=100, conflate=False):
1320
self.server = VisionIpcServer(name)
1421
for stream_type in stream_types:
@@ -26,18 +33,13 @@ def setup_vipc(self, name, *stream_types, num_buffers=1, width=100, height=100,
2633
def test_connect(self):
2734
self.setup_vipc("camerad", VisionStreamType.VISION_STREAM_ROAD)
2835
assert self.client is not None
29-
assert self.client.is_connected
30-
del self.client
31-
del self.server
36+
assert self.client.is_connected()
3237

3338
def test_available_streams(self):
34-
for k in range(4):
35-
stream_types = set(random.choices([x.value for x in VisionStreamType], k=k))
36-
self.setup_vipc("camerad", *stream_types)
37-
available_streams = VisionIpcClient.available_streams("camerad", True)
38-
assert available_streams == stream_types
39-
del self.client
40-
del self.server
39+
stream_types = (VisionStreamType.VISION_STREAM_ROAD, VisionStreamType.VISION_STREAM_WIDE_ROAD)
40+
self.setup_vipc("camerad", *stream_types)
41+
available_streams = VisionIpcClient.available_streams("camerad", True)
42+
assert available_streams == {stream.value for stream in stream_types}
4143

4244
def test_buffers(self):
4345
width, height, num_buffers = 100, 200, 5
@@ -47,26 +49,25 @@ def test_buffers(self):
4749
assert self.client.height == height
4850
assert self.client.buffer_len is not None and self.client.buffer_len > 0
4951
assert self.client.num_buffers == num_buffers
50-
del self.client
51-
del self.server
5252

5353
def test_send_single_buffer(self):
5454
self.setup_vipc("camerad", VisionStreamType.VISION_STREAM_ROAD)
55+
assert self.server is not None
5556
assert self.client is not None
5657
assert self.client.buffer_len is not None
5758
buf = np.zeros(self.client.buffer_len, dtype=np.uint8)
58-
buf.view('<i4')[0] = 1234
59+
buf.view('<u8')[0] = 1234
5960
self.server.send(VisionStreamType.VISION_STREAM_ROAD, buf, frame_id=1337)
6061

6162
recv_buf = self.client.recv()
6263
assert recv_buf is not None
63-
assert recv_buf.data.view('<i4')[0] == 1234
64+
assert recv_buf.data.view('<u8')[0] == 1234
6465
assert self.client.frame_id == 1337
65-
del self.client
66-
del self.server
66+
assert recv_buf.frame_id == 1337
6767

6868
def test_no_conflate(self):
6969
self.setup_vipc("camerad", VisionStreamType.VISION_STREAM_ROAD)
70+
assert self.server is not None
7071
assert self.client is not None
7172
assert self.client.buffer_len is not None
7273
buf = np.zeros(self.client.buffer_len, dtype=np.uint8)
@@ -80,11 +81,10 @@ def test_no_conflate(self):
8081
recv_buf = self.client.recv()
8182
assert recv_buf is not None
8283
assert self.client.frame_id == 2
83-
del self.client
84-
del self.server
8584

8685
def test_conflate(self):
8786
self.setup_vipc("camerad", VisionStreamType.VISION_STREAM_ROAD, conflate=True)
87+
assert self.server is not None
8888
assert self.client is not None
8989
assert self.client.buffer_len is not None
9090
buf = np.zeros(self.client.buffer_len, dtype=np.uint8)
@@ -97,5 +97,3 @@ def test_conflate(self):
9797

9898
recv_buf = self.client.recv()
9999
assert recv_buf is None
100-
del self.client
101-
del self.server

msgq/visionipc/visionipc.pxd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ cdef extern from "msgq/visionipc/visionbuf.h":
2121
size_t uv_offset
2222
size_t idx
2323
void set_frame_id(uint64_t id)
24+
uint64_t get_frame_id()
2425

2526
cdef extern from "msgq/visionipc/visionipc.h":
2627
struct VisionIpcBufExtra:

msgq/visionipc/visionipc_pyx.pyx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ cdef class VisionBuf:
6363
def fd(self):
6464
return self.buf.fd
6565

66+
@property
67+
def frame_id(self):
68+
return self.buf.get_frame_id()
69+
6670

6771
cdef class VisionIpcServer:
6872
cdef cppVisionIpcServer * server
@@ -88,6 +92,7 @@ cdef class VisionIpcServer:
8892
extra.frame_id = frame_id
8993
extra.timestamp_sof = timestamp_sof
9094
extra.timestamp_eof = timestamp_eof
95+
extra.valid = False
9196

9297
self.server.send(buf, &extra, False)
9398

msgq/visionipc/visionipc_tests.cc

Lines changed: 0 additions & 120 deletions
This file was deleted.

0 commit comments

Comments
 (0)