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()
 |