You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
2 years ago
|
#!/usr/bin/env python3
|
||
|
import glob
|
||
|
import os
|
||
|
import shutil
|
||
|
import time
|
||
|
import unittest
|
||
|
|
||
|
import cereal.messaging as messaging
|
||
|
from selfdrive.manager.process_config import managed_processes
|
||
|
from system.swaglog import cloudlog, SWAGLOG_DIR
|
||
|
|
||
|
|
||
|
class TestLogmessaged(unittest.TestCase):
|
||
|
|
||
|
def setUp(self):
|
||
|
if os.path.exists(SWAGLOG_DIR):
|
||
|
shutil.rmtree(SWAGLOG_DIR)
|
||
|
|
||
|
managed_processes['logmessaged'].start()
|
||
|
self.sock = messaging.sub_sock("logMessage", timeout=1000, conflate=False)
|
||
|
self.error_sock = messaging.sub_sock("logMessage", timeout=1000, conflate=False)
|
||
|
|
||
|
# ensure sockets are connected
|
||
|
time.sleep(0.2)
|
||
|
messaging.drain_sock(self.sock)
|
||
|
messaging.drain_sock(self.error_sock)
|
||
|
|
||
|
def tearDown(self):
|
||
|
del self.sock
|
||
|
del self.error_sock
|
||
|
managed_processes['logmessaged'].stop(block=True)
|
||
|
|
||
|
def _get_log_files(self):
|
||
|
return list(glob.glob(os.path.join(SWAGLOG_DIR, "swaglog.*")))
|
||
|
|
||
|
def test_simple_log(self):
|
||
|
msgs = [f"abc {i}" for i in range(10)]
|
||
|
for m in msgs:
|
||
|
cloudlog.error(m)
|
||
|
time.sleep(3)
|
||
|
m = messaging.drain_sock(self.sock)
|
||
|
assert len(m) == len(msgs)
|
||
|
assert len(self._get_log_files()) >= 1
|
||
|
|
||
|
def test_big_log(self):
|
||
|
n = 10
|
||
|
msg = "a"*3*1024*1024
|
||
|
for _ in range(n):
|
||
|
cloudlog.info(msg)
|
||
|
time.sleep(3)
|
||
|
|
||
|
msgs = messaging.drain_sock(self.sock)
|
||
|
assert len(msgs) == 0
|
||
|
|
||
|
logsize = sum([os.path.getsize(f) for f in self._get_log_files()])
|
||
|
assert (n*len(msg)) < logsize < (n*(len(msg)+1024))
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
unittest.main()
|