Fixes for PYTHONWARNINGS=error (#29381)

pull/29382/head
Adeeb Shihadeh 2 years ago committed by GitHub
parent 106f49a00f
commit db287496d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      common/spinner.py
  2. 7
      selfdrive/boardd/tests/test_boardd_loopback.py
  3. 14
      selfdrive/statsd.py
  4. 3
      system/loggerd/tests/test_loggerd.py
  5. 7
      tools/bodyteleop/web.py

@ -29,11 +29,11 @@ class Spinner():
def close(self): def close(self):
if self.spinner_proc is not None: if self.spinner_proc is not None:
self.spinner_proc.kill()
try: try:
self.spinner_proc.stdin.close() self.spinner_proc.communicate(timeout=2.)
except BrokenPipeError: except subprocess.TimeoutExpired:
pass print("WARNING: failed to kill spinner")
self.spinner_proc.terminate()
self.spinner_proc = None self.spinner_proc = None
def __del__(self): def __del__(self):

@ -10,7 +10,6 @@ from pprint import pprint
import cereal.messaging as messaging import cereal.messaging as messaging
from cereal import car, log from cereal import car, log
from common.params import Params from common.params import Params
from common.spinner import Spinner
from common.timeout import Timeout from common.timeout import Timeout
from selfdrive.boardd.boardd import can_list_to_can_capnp from selfdrive.boardd.boardd import can_list_to_can_capnp
from selfdrive.car import make_can_msg from selfdrive.car import make_can_msg
@ -24,11 +23,6 @@ class TestBoardd(unittest.TestCase):
def setUpClass(cls): def setUpClass(cls):
os.environ['STARTED'] = '1' os.environ['STARTED'] = '1'
os.environ['BOARDD_LOOPBACK'] = '1' os.environ['BOARDD_LOOPBACK'] = '1'
cls.spinner = Spinner()
@classmethod
def tearDownClass(cls):
cls.spinner.close()
@phone_only @phone_only
@with_processes(['pandad']) @with_processes(['pandad'])
@ -67,7 +61,6 @@ class TestBoardd(unittest.TestCase):
n = 200 n = 200
for i in range(n): for i in range(n):
print(f"boardd loopback {i}/{n}") print(f"boardd loopback {i}/{n}")
self.spinner.update(f"boardd loopback {i}/{n}")
sent_msgs = defaultdict(set) sent_msgs = defaultdict(set)
for _ in range(random.randrange(20, 100)): for _ in range(random.randrange(20, 100)):

@ -23,6 +23,8 @@ class METRIC_TYPE:
class StatLog: class StatLog:
def __init__(self): def __init__(self):
self.pid = None self.pid = None
self.zctx = None
self.sock = None
def connect(self) -> None: def connect(self) -> None:
self.zctx = zmq.Context() self.zctx = zmq.Context()
@ -31,6 +33,12 @@ class StatLog:
self.sock.connect(STATS_SOCKET) self.sock.connect(STATS_SOCKET)
self.pid = os.getpid() self.pid = os.getpid()
def __del__(self):
if self.sock is not None:
self.sock.close()
if self.zctx is not None:
self.zctx.term()
def _send(self, metric: str) -> None: def _send(self, metric: str) -> None:
if os.getpid() != self.pid: if os.getpid() != self.pid:
self.connect() self.connect()
@ -68,7 +76,7 @@ def main() -> NoReturn:
return res return res
# open statistics socket # open statistics socket
ctx = zmq.Context().instance() ctx = zmq.Context.instance()
sock = ctx.socket(zmq.PULL) sock = ctx.socket(zmq.PULL)
sock.bind(STATS_SOCKET) sock.bind(STATS_SOCKET)
@ -92,6 +100,7 @@ def main() -> NoReturn:
last_flush_time = time.monotonic() last_flush_time = time.monotonic()
gauges = {} gauges = {}
samples: Dict[str, List[float]] = defaultdict(list) samples: Dict[str, List[float]] = defaultdict(list)
try:
while True: while True:
started_prev = sm['deviceState'].started started_prev = sm['deviceState'].started
sm.update() sm.update()
@ -156,6 +165,9 @@ def main() -> NoReturn:
idx += 1 idx += 1
else: else:
cloudlog.error("stats dir full") cloudlog.error("stats dir full")
finally:
sock.close()
ctx.term()
if __name__ == "__main__": if __name__ == "__main__":

@ -210,7 +210,8 @@ class TestLoggerd(unittest.TestCase):
for fn in ["console-ramoops", "pmsg-ramoops-0"]: for fn in ["console-ramoops", "pmsg-ramoops-0"]:
path = Path(os.path.join("/sys/fs/pstore/", fn)) path = Path(os.path.join("/sys/fs/pstore/", fn))
if path.is_file(): if path.is_file():
expected_val = open(path, "rb").read() with open(path, "rb") as f:
expected_val = f.read()
bootlog_val = [e.value for e in boot.pstore.entries if e.key == fn][0] bootlog_val = [e.value for e in boot.pstore.entries if e.key == fn][0]
self.assertEqual(expected_val, bootlog_val) self.assertEqual(expected_val, bootlog_val)

@ -6,11 +6,16 @@ import ssl
import uuid import uuid
import time import time
from common.basedir import BASEDIR # aiortc and its dependencies have lots of internal warnings :(
import warnings
warnings.resetwarnings()
warnings.simplefilter("always")
from aiohttp import web from aiohttp import web
from aiortc import RTCPeerConnection, RTCSessionDescription from aiortc import RTCPeerConnection, RTCSessionDescription
import cereal.messaging as messaging import cereal.messaging as messaging
from common.basedir import BASEDIR
from tools.bodyteleop.bodyav import BodyMic, WebClientSpeaker, force_codec, play_sound, MediaBlackhole, EncodedBodyVideo from tools.bodyteleop.bodyav import BodyMic, WebClientSpeaker, force_codec, play_sound, MediaBlackhole, EncodedBodyVideo
logger = logging.getLogger("pc") logger = logging.getLogger("pc")

Loading…
Cancel
Save