logcatd bugfix + tests (#19689)
	
		
	
				
					
				
			* hack to exit cleanly
* move the hack
* add test
* run in ci
* unused
Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 49d4d58201
			
			
				commatwo_master
			
			
		
							parent
							
								
									b7245e4cf5
								
							
						
					
					
						commit
						88566ec71c
					
				
				 4 changed files with 50 additions and 3 deletions
			
			
		| @ -0,0 +1,46 @@ | |||||||
|  | #!/usr/bin/env python3 | ||||||
|  | import os | ||||||
|  | import random | ||||||
|  | import string | ||||||
|  | import time | ||||||
|  | import unittest | ||||||
|  | 
 | ||||||
|  | import cereal.messaging as messaging | ||||||
|  | from selfdrive.test.helpers import with_processes | ||||||
|  | 
 | ||||||
|  | class TestLogcatdAndroid(unittest.TestCase): | ||||||
|  | 
 | ||||||
|  |   @with_processes(['logcatd']) | ||||||
|  |   def test_log(self): | ||||||
|  |     sock = messaging.sub_sock("androidLog", conflate=False) | ||||||
|  | 
 | ||||||
|  |     # make sure sockets are ready | ||||||
|  |     time.sleep(1) | ||||||
|  |     messaging.drain_sock(sock) | ||||||
|  | 
 | ||||||
|  |     # write some log messages | ||||||
|  |     sent_msgs = {} | ||||||
|  |     for _ in range(random.randint(5, 50)): | ||||||
|  |       msg = ''.join([random.choice(string.ascii_letters) for _ in range(random.randrange(2, 200))]) | ||||||
|  |       sent_msgs[msg] = ''.join([random.choice(string.ascii_letters) for _ in range(random.randrange(2, 20))]) | ||||||
|  |       os.system(f"log -t {sent_msgs[msg]} {msg}") | ||||||
|  | 
 | ||||||
|  |     time.sleep(1) | ||||||
|  |     msgs = messaging.drain_sock(sock) | ||||||
|  |     for m in msgs: | ||||||
|  |       self.assertTrue(m.valid) | ||||||
|  |       self.assertLess(time.monotonic() - (m.logMonoTime / 1e9), 30) | ||||||
|  | 
 | ||||||
|  |       recv_msg = m.androidLog.message.strip() | ||||||
|  |       if recv_msg not in sent_msgs: | ||||||
|  |         continue | ||||||
|  | 
 | ||||||
|  |       self.assertEqual(m.androidLog.tag, sent_msgs[recv_msg]) | ||||||
|  |       del sent_msgs[recv_msg] | ||||||
|  | 
 | ||||||
|  |     # ensure we received all the logs we sent | ||||||
|  |     self.assertEqual(len(sent_msgs), 0) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if __name__ == "__main__": | ||||||
|  |   unittest.main() | ||||||
					Loading…
					
					
				
		Reference in new issue