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.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.3 KiB
						
					
					
				#!/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()
 | 
						|
 |