89 lines
2.4 KiB
Python
89 lines
2.4 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""Phase-4-Hilfe: Chat-/Kontakte-Singleton zaehlen und pruefen (Win32, keine Patientendaten)."""
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import argparse
|
||
|
|
import sys
|
||
|
|
import time
|
||
|
|
|
||
|
|
from _test_chat_singleton_count import count_azA_chat_windows
|
||
|
|
|
||
|
|
|
||
|
|
def _print_result(r: dict) -> tuple[int, int]:
|
||
|
|
ec = int(r.get("empfang_count", 0))
|
||
|
|
kc = int(r.get("kontakt_count", 0))
|
||
|
|
print(f"empfang_count={ec}")
|
||
|
|
print(f"kontakt_count={kc}")
|
||
|
|
for label, items in (("Empfang", r.get("empfang", [])), ("Kontakt", r.get("kontakt", []))):
|
||
|
|
for hwnd, pid, title in items:
|
||
|
|
print(f" {label}: HWND={hwnd} PID={pid} title={title!r}")
|
||
|
|
return ec, kc
|
||
|
|
|
||
|
|
|
||
|
|
def main() -> int:
|
||
|
|
ap = argparse.ArgumentParser(description="AzA Chat-Singleton Phase-4 Zaehler")
|
||
|
|
ap.add_argument(
|
||
|
|
"--check",
|
||
|
|
action="store_true",
|
||
|
|
help="Exit 1 wenn nicht genau 1 Huelle und 1 Kontakte-Fenster",
|
||
|
|
)
|
||
|
|
ap.add_argument(
|
||
|
|
"--expect-empfang",
|
||
|
|
type=int,
|
||
|
|
default=1,
|
||
|
|
help="Erwartete Empfang-Huellen (Default: 1)",
|
||
|
|
)
|
||
|
|
ap.add_argument(
|
||
|
|
"--expect-kontakt",
|
||
|
|
type=int,
|
||
|
|
default=1,
|
||
|
|
help="Erwartete Kontakte-Fenster (Default: 1)",
|
||
|
|
)
|
||
|
|
ap.add_argument(
|
||
|
|
"--watch",
|
||
|
|
type=float,
|
||
|
|
default=0.0,
|
||
|
|
metavar="SEC",
|
||
|
|
help="Alle SEC Sekunden erneut zaehlen (Strg+C beenden)",
|
||
|
|
)
|
||
|
|
args = ap.parse_args()
|
||
|
|
|
||
|
|
if sys.platform != "win32":
|
||
|
|
print("ERROR: nur Windows")
|
||
|
|
return 2
|
||
|
|
|
||
|
|
def _once() -> int:
|
||
|
|
r = count_azA_chat_windows()
|
||
|
|
if "error" in r:
|
||
|
|
print(f"ERROR: {r['error']}")
|
||
|
|
return 2
|
||
|
|
ec, kc = _print_result(r)
|
||
|
|
if args.check:
|
||
|
|
ok = ec == args.expect_empfang and kc == args.expect_kontakt
|
||
|
|
if ok:
|
||
|
|
print("SINGLETON_OK")
|
||
|
|
return 0
|
||
|
|
print(
|
||
|
|
f"SINGLETON_FAIL expected empfang={args.expect_empfang} "
|
||
|
|
f"kontakt={args.expect_kontakt}"
|
||
|
|
)
|
||
|
|
return 1
|
||
|
|
return 0
|
||
|
|
|
||
|
|
if args.watch and args.watch > 0:
|
||
|
|
try:
|
||
|
|
while True:
|
||
|
|
print("---")
|
||
|
|
code = _once()
|
||
|
|
if args.check and code != 0:
|
||
|
|
return code
|
||
|
|
time.sleep(args.watch)
|
||
|
|
except KeyboardInterrupt:
|
||
|
|
return 0
|
||
|
|
|
||
|
|
return _once()
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
raise SystemExit(main())
|