mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 01:53:57 +08:00
PlotJuggler CI with build from source (#20166)
* CI attempt
* fixing location
* fix
* fixes
* hardcode test_url for CI
* fixes
* cd fix
* Update tools/plotjuggler/juggle.py
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* Update tools/plotjuggler/test_plotjuggler.py
* fixes
* fixes
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 9144dd7c2f
This commit is contained in:
40
tools/plotjuggler/test_plotjuggler.py
Executable file
40
tools/plotjuggler/test_plotjuggler.py
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import signal
|
||||
import subprocess
|
||||
import time
|
||||
import unittest
|
||||
|
||||
from common.basedir import BASEDIR
|
||||
from common.timeout import Timeout
|
||||
from selfdrive.test.openpilotci import get_url
|
||||
|
||||
class TestPlotJuggler(unittest.TestCase):
|
||||
|
||||
def test_install(self):
|
||||
exit_code = os.system(os.path.join(BASEDIR, "tools/plotjuggler/install.sh"))
|
||||
self.assertEqual(exit_code, 0)
|
||||
|
||||
def test_run(self):
|
||||
|
||||
test_url = get_url("ffccc77938ddbc44|2021-01-04--16-55-41", 0)
|
||||
|
||||
# Launch PlotJuggler with the executable in the bin directory
|
||||
os.environ["PLOTJUGGLER_PATH"] = f'{os.path.join(BASEDIR, "tools/plotjuggler/bin/plotjuggler")}'
|
||||
p = subprocess.Popen(f'QT_QPA_PLATFORM=offscreen {os.path.join(BASEDIR, "tools/plotjuggler/juggle.py")} \
|
||||
"{test_url}"', stderr=subprocess.PIPE, shell=True,
|
||||
start_new_session=True)
|
||||
|
||||
# Wait max 60 seconds for the "Done reading Rlog data" signal from the plugin
|
||||
output = "\n"
|
||||
with Timeout(60, error_msg=output):
|
||||
while output.splitlines()[-1] != "Done reading Rlog data":
|
||||
output += p.stderr.readline().decode("utf-8")
|
||||
|
||||
# ensure plotjuggler didn't crash after exiting the plugin
|
||||
time.sleep(15)
|
||||
self.assertEqual(p.poll(), None)
|
||||
os.killpg(os.getpgid(p.pid), signal.SIGTERM)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user