Files
janssen/Covance/run_test_results_parallel_v1.2.py
2026-06-09 08:22:49 +02:00

56 lines
2.3 KiB
Python

# =============================================================================
# Název: run_test_results_parallel_v1.2.py
# Verze: 1.2
# Datum: 2026-05-29
# Popis: Launcher pro paralelni stahovani Test Results. Spusti N procesu
# download_test_results_v1.4.py, kazdy s --shard i --of N, kazdy
# ve vlastnim konzolovem okne (CREATE_NEW_CONSOLE) a s vlastnim
# profilem browser_profile_{i}. Pocka, az vsechny dobehnou.
# Zmeny v1.2: cili na download_test_results_v1.4.py (retry na urovni reportu).
# Zmeny v1.1: cili na v1.3 (robustni login + okno se pri chybe nezavre),
# STAGGER_S zvysen na 8 s.
# =============================================================================
import subprocess
import sys
import os
import time
N_SHARDS = 4 # pocet soubeznych procesu (oken)
STAGGER_S = 8 # rozestup mezi starty (s) — at se OKTA login
# nezahlti soucasnymi pozadavky najednou
BASE = os.path.dirname(os.path.abspath(__file__))
SCRIPT = os.path.join(BASE, "download_test_results_v1.4.py")
PYEXE = sys.executable # stejny interpreter (.venv), kterym byl spusten launcher
# Vlastni konzolove okno pro kazdy proces (jen Windows) -> logy se neprolinaji.
CREATE_NEW_CONSOLE = getattr(subprocess, "CREATE_NEW_CONSOLE", 0)
def main():
print(f"Launcher: spoustim {N_SHARDS} shardu skriptu {os.path.basename(SCRIPT)}")
procs = []
for shard in range(1, N_SHARDS + 1):
cmd = [PYEXE, SCRIPT, "--shard", str(shard), "--of", str(N_SHARDS)]
print(f" -> shard {shard}/{N_SHARDS}: {' '.join(cmd)}")
p = subprocess.Popen(cmd, cwd=BASE, creationflags=CREATE_NEW_CONSOLE)
procs.append((shard, p))
if shard < N_SHARDS and STAGGER_S:
time.sleep(STAGGER_S) # rozestup startu (login)
print("Launcher: vsechny shardy spusteny, cekam na dokonceni...")
rc = {}
for shard, p in procs:
p.wait()
rc[shard] = p.returncode
print(f"Launcher: shard {shard} skoncil (returncode={p.returncode}).")
failed = [s for s, code in rc.items() if code != 0]
if failed:
print(f"Launcher: HOTOVO, ale shardy {failed} skoncily s chybou (returncode != 0).")
else:
print("Launcher: HOTOVO — vsechny shardy uspesne dokonceny.")
if __name__ == "__main__":
main()