nopenpilot/selfdrive/ui/tests/test_sound_stability.py

50 lines
1.3 KiB
Python
Executable File

#!/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()