Files
felhom.eu/documentation/audits/gitea-wanderer-2026-10-28/wanderer_mem.py
T

30 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""wanderer_mem.py — R-1338 on 9202: a fresh Wanderer from the drill (v0.21.2 + MEILI_MAX_INDEXING_MEMORY), the cap read
back from the running search container, the fixture's seed, box_walk's own 600 s memory soak, the seed read back, removed."""
import json, os, sys
sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts")
import box_walk as w
import upgrade_fixtures_box as fb
EV = os.environ["EV"]; os.makedirs(EV, exist_ok=True)
rec = {}
w.login()
try:
if w.stack("wanderer").get("deployed"):
w.remove("wanderer")
w.refresh_box_mirror(); w.sync_rescan()
if not w.deploy("wanderer", "hike"):
print("install failed"); sys.exit(1)
rec["cap_in_container"] = [l for l in w.guest("docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' wanderer-search").split("\n") if "MAX_INDEXING" in l]
t = fb.Wanderer().seed(w, "hike", w.say)
rec["seed"] = bool(t)
rec["memory"] = w.soak("wanderer", 600)
rec["read_back"] = bool(t) and fb.Wanderer().verify(w, "hike", t, w.say)
finally:
rec["log"] = w.LOG
json.dump(rec, open(os.path.join(EV, "wanderer-mem-9202.json"), "w"), indent=1, default=str)
if w.stack("wanderer").get("deployed"):
w.remove("wanderer")
c = (rec.get("memory") or {}).get("containers") or {}
print("cap:", rec.get("cap_in_container"), "| read back:", rec.get("read_back"))
print({k: (v.get("anon_peak_pct"), v.get("oom_kill_delta"), v.get("restarts_delta")) for k, v in c.items()})