diff --git a/Jenkinsfile b/Jenkinsfile index acf8a2e4c..bddec9099 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -156,9 +156,9 @@ pipeline { sh "git config --global --add safe.directory '*'" sh "git submodule update --init --depth=1 --recursive" sh "git lfs pull" - sh "scons --clean && scons --no-cache -j42" + // tests that our build system's dependencies are configured properly, needs a machine with lots of cores sh "scons --clean && scons --no-cache --random -j42" - sh "INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt FILEREADER_CACHE=1 pytest -n42 --dist=loadscope selfdrive/car/tests/test_models.py" + //sh "INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt FILEREADER_CACHE=1 pytest -n42 --dist=loadscope selfdrive/car/tests/test_models.py" } post { diff --git a/selfdrive/test/ciui.py b/selfdrive/test/ciui.py new file mode 100755 index 000000000..291f9f6e4 --- /dev/null +++ b/selfdrive/test/ciui.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +import signal +import subprocess + +signal.signal(signal.SIGINT, signal.SIG_DFL) +signal.signal(signal.SIGTERM, signal.SIG_DFL) + +from PyQt5.QtCore import QTimer # pylint: disable=no-name-in-module, import-error +from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel # pylint: disable=no-name-in-module, import-error +from selfdrive.ui.qt.python_helpers import set_main_window + +class Window(QWidget): + def __init__(self, parent=None): + super(Window, self).__init__(parent) + + layout = QVBoxLayout() + self.setLayout(layout) + + self.l = QLabel("jenkins runner") + layout.addWidget(self.l) + layout.addStretch(1) + layout.setContentsMargins(20, 20, 20, 20) + + cmds = [ + "cat /etc/hostname", + "echo AGNOS v$(cat /VERSION)", + "uptime -p", + ] + self.labels = {} + for c in cmds: + self.labels[c] = QLabel(c) + layout.addWidget(self.labels[c]) + + self.setStyleSheet(""" + * { + color: white; + font-size: 55px; + background-color: black; + font-family: "JetBrains Mono"; + } + """) + + self.timer = QTimer() + self.timer.timeout.connect(self.update) + self.timer.start(10 * 1000) + self.update() + + def update(self): + for cmd, label in self.labels.items(): + out = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + shell=True, check=False, encoding='utf8').stdout + label.setText(out.strip()) + +if __name__ == "__main__": + app = QApplication([]) + w = Window() + set_main_window(w) + app.exec_() diff --git a/selfdrive/test/setup_device_ci.sh b/selfdrive/test/setup_device_ci.sh index 4ac970740..1b99c3103 100755 --- a/selfdrive/test/setup_device_ci.sh +++ b/selfdrive/test/setup_device_ci.sh @@ -42,6 +42,13 @@ while true; do if ! sudo systemctl is-active -q ssh; then sudo systemctl start ssh fi + + if ! pgrep -f 'ciui.py' > /dev/null 2>&1; then + echo 'starting UI' + cp $SOURCE_DIR/selfdrive/test/ciui.py /data/ + /data/ciui.py & + fi + sleep 5s done diff --git a/system/hardware/tici/tests/test_hardware.py b/system/hardware/tici/tests/test_hardware.py index d910b13ec..bb22cb159 100755 --- a/system/hardware/tici/tests/test_hardware.py +++ b/system/hardware/tici/tests/test_hardware.py @@ -15,6 +15,9 @@ class TestHardware(unittest.TestCase): if not TICI: raise unittest.SkipTest + HARDWARE.initialize_hardware() + HARDWARE.set_power_save(False) + def test_power_save_time(self): ts = [] for _ in range(5): @@ -23,7 +26,7 @@ class TestHardware(unittest.TestCase): HARDWARE.set_power_save(on) ts.append(time.monotonic() - st) - assert 0.1 < np.mean(ts) < 0.2 + assert 0.1 < np.mean(ts) < 0.25 assert max(ts) < 0.3