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.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.0 KiB
						
					
					
				| #!/usr/bin/env python3
 | |
| """Run boardd with the BOARDD_LOOPBACK envvar before running this test."""
 | |
| 
 | |
| import os
 | |
| import random
 | |
| import time
 | |
| 
 | |
| from selfdrive.boardd.boardd import can_list_to_can_capnp
 | |
| from cereal.messaging import drain_sock, pub_sock, sub_sock
 | |
| 
 | |
| def get_test_string():
 | |
|   return b"test"+os.urandom(10)
 | |
| 
 | |
| BUS = 0
 | |
| 
 | |
| def main():
 | |
|   rcv = sub_sock('can') # port 8006
 | |
|   snd = pub_sock('sendcan') # port 8017
 | |
|   time.sleep(0.3) # wait to bind before send/recv
 | |
| 
 | |
|   for i in range(10):
 | |
|     print("Loop %d" % i)
 | |
|     at = random.randint(1024, 2000)
 | |
|     st = get_test_string()[0:8]
 | |
|     snd.send(can_list_to_can_capnp([[at, 0, st, 0]], msgtype='sendcan').to_bytes())
 | |
|     time.sleep(0.1)
 | |
|     res = drain_sock(rcv, True)
 | |
|     assert len(res) == 1
 | |
| 
 | |
|     res = res[0].can
 | |
|     assert len(res) == 2
 | |
| 
 | |
|     msg0, msg1 = res
 | |
| 
 | |
|     assert msg0.dat == st
 | |
|     assert msg1.dat == st
 | |
| 
 | |
|     assert msg0.address == at
 | |
|     assert msg1.address == at
 | |
| 
 | |
|     assert msg0.src == 0x80 | BUS
 | |
|     assert msg1.src == BUS
 | |
| 
 | |
|   print("Success")
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|   main()
 | |
| 
 |