CI: codecov for multiprocessing (#30432)

old-commit-hash: 2629417320
testing-closet
Justin Newberry 1 year ago committed by GitHub
parent d483edb8f6
commit a0b0c1c4e7
  1. 2
      .github/workflows/selfdrive_tests.yaml
  2. 3
      pyproject.toml
  3. 15
      selfdrive/athena/tests/test_athenad.py

@ -213,6 +213,7 @@ jobs:
run: | run: |
${{ env.RUN }} "CI=1 coverage run selfdrive/test/process_replay/test_processes.py -j$(nproc) && \ ${{ env.RUN }} "CI=1 coverage run selfdrive/test/process_replay/test_processes.py -j$(nproc) && \
chmod -R 777 /tmp/comma_download_cache && \ chmod -R 777 /tmp/comma_download_cache && \
coverage combine && \
coverage xml" coverage xml"
- name: Print diff - name: Print diff
id: print-diff id: print-diff
@ -282,6 +283,7 @@ jobs:
run: | run: |
${{ env.RUN_CL }} "unset PYTHONWARNINGS && \ ${{ env.RUN_CL }} "unset PYTHONWARNINGS && \
ONNXCPU=1 CI=1 NO_NAV=1 coverage run selfdrive/test/process_replay/model_replay.py && \ ONNXCPU=1 CI=1 NO_NAV=1 coverage run selfdrive/test/process_replay/model_replay.py && \
coverage combine && \
coverage xml" coverage xml"
- name: Run unit tests - name: Run unit tests
timeout-minutes: 4 timeout-minutes: 4

@ -199,3 +199,6 @@ flake8-implicit-str-concat.allow-multiline=false
"system".msg = "Use openpilot.system" "system".msg = "Use openpilot.system"
"third_party".msg = "Use openpilot.third_party" "third_party".msg = "Use openpilot.third_party"
"tools".msg = "Use openpilot.tools" "tools".msg = "Use openpilot.tools"
[tool.coverage.run]
concurrency = ["multiprocessing", "thread"]

@ -1,5 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import json import json
import multiprocessing
import os import os
import requests import requests
import shutil import shutil
@ -12,7 +13,6 @@ from datetime import datetime, timedelta
from parameterized import parameterized from parameterized import parameterized
from typing import Optional from typing import Optional
from multiprocessing import Process
from pympler.tracker import SummaryTracker from pympler.tracker import SummaryTracker
from unittest import mock from unittest import mock
from websocket import ABNF from websocket import ABNF
@ -75,24 +75,25 @@ class TestAthenadMethods(unittest.TestCase):
with self.assertRaises(TimeoutError) as _: with self.assertRaises(TimeoutError) as _:
dispatcher["getMessage"]("controlsState") dispatcher["getMessage"]("controlsState")
def send_deviceState(): end_event = multiprocessing.Event()
messaging.context = messaging.Context()
pub_sock = messaging.pub_sock("deviceState") pub_sock = messaging.pub_sock("deviceState")
start = time.time()
while time.time() - start < 1: def send_deviceState():
while not end_event.is_set():
msg = messaging.new_message('deviceState') msg = messaging.new_message('deviceState')
pub_sock.send(msg.to_bytes()) pub_sock.send(msg.to_bytes())
time.sleep(0.01) time.sleep(0.01)
p = Process(target=send_deviceState) p = multiprocessing.Process(target=send_deviceState)
p.start() p.start()
time.sleep(0.1) time.sleep(0.1)
try: try:
deviceState = dispatcher["getMessage"]("deviceState") deviceState = dispatcher["getMessage"]("deviceState")
assert deviceState['deviceState'] assert deviceState['deviceState']
finally: finally:
p.terminate() end_event.set()
p.join()
def test_listDataDirectory(self): def test_listDataDirectory(self):
route = '2021-03-29--13-32-47' route = '2021-03-29--13-32-47'

Loading…
Cancel
Save