"""custom-html — UPGRADE overlay (Phase 1d, DG4): data-continuity, extends the generic upgrade. The orchestrator deployed the previous published version ONCE; this overlay seeds a marker into the served volume, performs the in-place upgrade via the shared op helper (`generic.do_upgrade`, which also asserts reconverge + serving), then asserts the data SURVIVED. Assertion-only on the shared deployment (no deploy/teardown here).""" import os import sys sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "runner")) from harness import generic, lifecycle # noqa: E402 MARKER_PATH = "/usr/share/nginx/html/ci-marker.txt" def test_upgrade_preserves_data(live_app, meta): domain = live_app # write a data marker into the served volume (nginx serves /usr/share/nginx/html) lifecycle.exec_in_app(domain, ["sh", "-c", f"echo upgrade-survives > {MARKER_PATH}"]) assert lifecycle.http_fetch(domain, "/ci-marker.txt")[1].strip() == "upgrade-survives" # in-place upgrade previous -> target (reuses the generic op: upgrade + assert reconverge/serving) generic.do_upgrade(domain, os.environ.get("VERSION") or None, meta) # the data written before the upgrade is still there assert ( lifecycle.http_fetch(domain, "/ci-marker.txt")[1].strip() == "upgrade-survives" ), "data did not survive the upgrade"