#!/usr/bin/env python3
import time
import unittest
import cereal . messaging as messaging
from system . hardware import TICI
from selfdrive . test . helpers import with_processes
TEST_TIMESPAN = 10
SENSOR_CONFIGURATIONS = (
{
( ' bmx055 ' , ' acceleration ' ) ,
( ' bmx055 ' , ' gyroUncalibrated ' ) ,
( ' bmx055 ' , ' magneticUncalibrated ' ) ,
( ' bmx055 ' , ' temperature ' ) ,
( ' lsm6ds3 ' , ' acceleration ' ) ,
( ' lsm6ds3 ' , ' gyroUncalibrated ' ) ,
( ' lsm6ds3 ' , ' temperature ' ) ,
( ' rpr0521 ' , ' light ' ) ,
} ,
{
( ' lsm6ds3 ' , ' acceleration ' ) ,
( ' lsm6ds3 ' , ' gyroUncalibrated ' ) ,
( ' lsm6ds3 ' , ' temperature ' ) ,
( ' mmc5603nj ' , ' magneticUncalibrated ' ) ,
( ' rpr0521 ' , ' light ' ) ,
} ,
{
( ' bmx055 ' , ' acceleration ' ) ,
( ' bmx055 ' , ' gyroUncalibrated ' ) ,
( ' bmx055 ' , ' magneticUncalibrated ' ) ,
( ' bmx055 ' , ' temperature ' ) ,
( ' lsm6ds3trc ' , ' acceleration ' ) ,
( ' lsm6ds3trc ' , ' gyroUncalibrated ' ) ,
( ' lsm6ds3trc ' , ' temperature ' ) ,
( ' rpr0521 ' , ' light ' ) ,
} ,
{
( ' lsm6ds3trc ' , ' acceleration ' ) ,
( ' lsm6ds3trc ' , ' gyroUncalibrated ' ) ,
( ' lsm6ds3trc ' , ' temperature ' ) ,
( ' mmc5603nj ' , ' magneticUncalibrated ' ) ,
( ' rpr0521 ' , ' light ' ) ,
} ,
)
class TestSensord ( unittest . TestCase ) :
@classmethod
def setUpClass ( cls ) :
if not TICI :
raise unittest . SkipTest
@with_processes ( [ ' sensord ' ] )
def test_sensors_present ( self ) :
sensor_events = messaging . sub_sock ( " sensorEvents " , timeout = 0.1 )
start_time_sec = time . time ( )
events = [ ]
while time . time ( ) - start_time_sec < TEST_TIMESPAN :
events + = messaging . drain_sock ( sensor_events )
time . sleep ( 0.01 )
seen = set ( )
for event in events :
for measurement in event . sensorEvents :
# Filter out unset events
if measurement . version == 0 :
continue
seen . add ( ( str ( measurement . source ) , measurement . which ( ) ) )
self . assertIn ( seen , SENSOR_CONFIGURATIONS )
if __name__ == " __main__ " :
unittest . main ( )