mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-09 22:13:43 +08:00
22a8575199
Keep official openpilot ancestry and dependency licenses. Store resources directly in Git, remove LFS setup requirements, and leave the downloadable big model outside the source tree.
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import subprocess
|
|
import random
|
|
import time
|
|
from concurrent.futures import ProcessPoolExecutor, as_completed
|
|
from tinygrad.helpers import getenv
|
|
|
|
# checks that HCQ drivers can be killed during operation without causing issues
|
|
|
|
def run_test(i, full_run=False, force_ok=False):
|
|
print(f"\rRunning iteration {i}...", end=" ", flush=True)
|
|
|
|
p = subprocess.Popen(["python3", "test/test_tiny.py", "TestTiny.test_plus"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
|
|
if not full_run:
|
|
time.sleep(random.uniform(0, 1200) / 1000.0)
|
|
p.kill()
|
|
_, stderr = p.communicate()
|
|
else:
|
|
_, stderr = p.communicate()
|
|
stderr_text = stderr.decode()
|
|
assert ("Ran 1 test in" in stderr_text and "OK" in stderr_text) or (not force_ok and "Failed to take lock file" in stderr_text), stderr_text
|
|
|
|
if __name__ == "__main__":
|
|
max_workers = getenv("MAX_WORKERS", 4)
|
|
with ProcessPoolExecutor(max_workers=max_workers) as executor:
|
|
futures = []
|
|
for i in range(1000000):
|
|
if i % 100 == 0:
|
|
# wait for everything we launched so far
|
|
for f in as_completed(futures):
|
|
try:
|
|
f.result()
|
|
except Exception as e:
|
|
print(f"\nError in iteration: {e}")
|
|
futures = []
|
|
|
|
# do a full run in the main proc
|
|
run_test(i, True, force_ok=True)
|
|
else:
|
|
futures.append(executor.submit(run_test, i, bool(getenv("FULL_RUN", 0))))
|
|
|
|
# keep list small
|
|
if len(futures) > max_workers * 2:
|
|
futures = [f for f in futures if not f.done()]
|