mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-08 13:33:42 +08:00
e52e1a6a86
Implement Sentry scanning, notification state and worker cancellation through explicit policies and preferences.
38 lines
1.8 KiB
Python
38 lines
1.8 KiB
Python
import os
|
|
from pathlib import Path
|
|
import tempfile
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from openpilot.common.params import Params
|
|
from openpilot.starpilot.sentry_mode.preferences import KEY, Preferences, encode
|
|
from openpilot.system.manager import process_config
|
|
|
|
|
|
class TestSentryManagerPredicate(unittest.TestCase):
|
|
def test_device_and_pc_matrix_requires_enabled_and_valid_saved_document(self):
|
|
with tempfile.TemporaryDirectory() as directory, patch.dict(os.environ, PARAMS_ROOT=directory, OPENPILOT_PREFIX="sentrymanager",
|
|
STARPILOT_SENTRY_DEVELOPMENT="0"):
|
|
params = Params()
|
|
process = process_config.managed_processes["sentry_motion"]
|
|
sensor = process_config.managed_processes["sensord"]
|
|
self.assertEqual(process.enabled, not process_config.PC)
|
|
self.assertEqual(sensor.enabled, not process_config.PC)
|
|
with patch.dict(os.environ, STARPILOT_SENTRY_DEVELOPMENT="1"):
|
|
self.assertFalse(process_config.sentry_motion(False, params, object()))
|
|
self.assertFalse(process_config.sensord_run(False, params, object()))
|
|
self.assertTrue(process_config.sensord_run(True, params, object()))
|
|
source = Path(params.get_param_path(KEY))
|
|
source.write_bytes(b"invalid")
|
|
self.assertFalse(process_config.sentry_motion(False, params, object()))
|
|
source.write_bytes(encode(Preferences(True)))
|
|
self.assertTrue(process_config.sentry_motion(False, params, object()))
|
|
self.assertTrue(process_config.sensord_run(False, params, object()))
|
|
self.assertFalse(process_config.sentry_motion(True, params, object()))
|
|
self.assertTrue(process_config.sentry_motion(False, params, object()))
|
|
self.assertTrue(process_config.sensord_run(False, params, object()))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|