62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
|
|
from cereal import log
|
|
from openpilot.selfdrive.monitoring.dmonitoringd import create_driver_monitoring, get_dm_inputs, use_legacy_dm
|
|
from openpilot.selfdrive.monitoring.legacy_policy import DriverMonitoring as LegacyDriverMonitoring
|
|
from openpilot.selfdrive.monitoring.policy import DriverMonitoring as UpstreamDriverMonitoring
|
|
|
|
|
|
@pytest.mark.parametrize("device_type, expected_type", [
|
|
("mici", LegacyDriverMonitoring),
|
|
("tici", UpstreamDriverMonitoring),
|
|
("tizi", UpstreamDriverMonitoring),
|
|
])
|
|
def test_policy_selection(device_type, expected_type):
|
|
assert use_legacy_dm(device_type) == (device_type == "mici")
|
|
assert isinstance(create_driver_monitoring(device_type, False, False), expected_type)
|
|
|
|
|
|
def test_mici_uses_legacy_thresholds():
|
|
dm = create_driver_monitoring("mici", False, False)
|
|
|
|
assert dm.settings._DISTRACTED_TIME == 11.
|
|
assert dm.settings._AWARENESS_TIME == 30.
|
|
assert dm.settings._PHONE_THRESH == 0.75
|
|
|
|
|
|
@pytest.mark.parametrize("enabled, lat_active, expected", [
|
|
(False, False, False),
|
|
(True, False, True),
|
|
(False, True, True),
|
|
(True, True, True),
|
|
])
|
|
def test_iq_enabled_adapter(enabled, lat_active, expected):
|
|
sm = {
|
|
'driverStateV2': object(),
|
|
'liveCalibration': object(),
|
|
'carState': object(),
|
|
'selfdriveState': SimpleNamespace(enabled=enabled),
|
|
'modelV2': object(),
|
|
'carControl': SimpleNamespace(latActive=lat_active),
|
|
}
|
|
|
|
assert get_dm_inputs(sm)['selfdriveState'].enabled == expected
|
|
|
|
|
|
def test_legacy_policy_packet_uses_shared_schema():
|
|
dm = create_driver_monitoring("mici", False, False)
|
|
dm.awareness = 0.
|
|
dm.terminal_alert_cnt = 2
|
|
dm.terminal_time = dm.settings._MAX_TERMINAL_DURATION
|
|
dm.too_distracted = True
|
|
|
|
state = dm.get_state_packet().driverMonitoringState
|
|
|
|
assert state.lockout
|
|
assert state.alert3Count == 2
|
|
assert state.noResponseCount == 1
|
|
assert state.noResponseForceDecel
|
|
assert state.alertLevel == log.DriverMonitoringState.AlertLevel.three
|