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.
		
		
		
		
			
				
					50 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					50 lines
				
				1.3 KiB
			| 
								 
											5 years ago
										 
									 | 
							
								#!/usr/bin/env python3
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import random
							 | 
						||
| 
								 | 
							
								import subprocess
							 | 
						||
| 
								 | 
							
								import time
							 | 
						||
| 
								 | 
							
								from pathlib import Path
							 | 
						||
| 
								 | 
							
								from common.basedir import BASEDIR
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								os.environ["LD_LIBRARY_PATH"] = ""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# pull this from the provisioning tests
							 | 
						||
| 
								 | 
							
								play_sound = os.path.join(BASEDIR, "selfdrive/ui/test/play_sound")
							 | 
						||
| 
								 | 
							
								waste = os.path.join(BASEDIR, "scripts/waste")
							 | 
						||
| 
								 | 
							
								sound_path = Path(os.path.join(BASEDIR, "selfdrive/assets/sounds"))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def sound_test():
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # max volume
							 | 
						||
| 
								 | 
							
								  vol = 15
							 | 
						||
| 
								 | 
							
								  sound_files = [p.absolute() for p in sound_path.iterdir() if str(p).endswith(".wav")]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # start waste
							 | 
						||
| 
								 | 
							
								  p = subprocess.Popen([waste], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  start_time = time.monotonic()
							 | 
						||
| 
								 | 
							
								  frame = 0
							 | 
						||
| 
								 | 
							
								  while True:
							 | 
						||
| 
								 | 
							
								    # start a few processes
							 | 
						||
| 
								 | 
							
								    procs = []
							 | 
						||
| 
								 | 
							
								    for _ in range(random.randint(5, 20)):
							 | 
						||
| 
								 | 
							
								      sound = random.choice(sound_files)
							 | 
						||
| 
								 | 
							
								      p = subprocess.Popen([play_sound, str(sound), str(vol)], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
							 | 
						||
| 
								 | 
							
								      procs.append(p)
							 | 
						||
| 
								 | 
							
								      time.sleep(random.uniform(0, 0.75))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # and kill them
							 | 
						||
| 
								 | 
							
								    time.sleep(random.uniform(0, 5))
							 | 
						||
| 
								 | 
							
								    for p in procs:
							 | 
						||
| 
								 | 
							
								      p.terminate()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # write stats
							 | 
						||
| 
								 | 
							
								    stats = f"running time {time.monotonic() - start_time}s, cycle {frame}"
							 | 
						||
| 
								 | 
							
								    with open("/tmp/sound_stats.txt", "a") as f:
							 | 
						||
| 
								 | 
							
								      f.write(stats)
							 | 
						||
| 
								 | 
							
								    print(stats)
							 | 
						||
| 
								 | 
							
								    frame +=1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == "__main__":
							 | 
						||
| 
								 | 
							
								  sound_test()
							 |