Redact runtime smoke diagnostics
This commit is contained in:
@@ -56,17 +56,20 @@ class RuntimeImageSmokeTests(unittest.TestCase):
|
|||||||
|
|
||||||
def test_readiness_fails_immediately_when_container_exits(self) -> None:
|
def test_readiness_fails_immediately_when_container_exits(self) -> None:
|
||||||
exited = subprocess.CompletedProcess([], 0, "false\n", "")
|
exited = subprocess.CompletedProcess([], 0, "false\n", "")
|
||||||
logs = subprocess.CompletedProcess([], 0, "fatal startup error\n", "")
|
logs = subprocess.CompletedProcess(
|
||||||
|
[], 0, "fatal startup error db-secret\n", ""
|
||||||
|
)
|
||||||
with patch.object(MODULE, "_run", side_effect=(exited, logs)):
|
with patch.object(MODULE, "_run", side_effect=(exited, logs)):
|
||||||
with self.assertRaisesRegex(
|
with self.assertRaisesRegex(
|
||||||
MODULE.SmokeError,
|
MODULE.SmokeError,
|
||||||
"container exited before readiness: fatal startup error",
|
r"container exited before readiness: fatal startup error \[redacted\]",
|
||||||
):
|
):
|
||||||
MODULE._wait_for(
|
MODULE._wait_for(
|
||||||
"WebUI",
|
"WebUI",
|
||||||
lambda: self.fail("probe must not run for an exited container"),
|
lambda: self.fail("probe must not run for an exited container"),
|
||||||
timeout=60,
|
timeout=60,
|
||||||
container="web",
|
container="web",
|
||||||
|
redactions=("db-secret",),
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_smoke_supplies_the_packaged_web_upstream_and_schema_contract(self) -> None:
|
def test_smoke_supplies_the_packaged_web_upstream_and_schema_contract(self) -> None:
|
||||||
|
|||||||
@@ -105,6 +105,7 @@ def _wait_for(
|
|||||||
*,
|
*,
|
||||||
timeout: float,
|
timeout: float,
|
||||||
container: str | None = None,
|
container: str | None = None,
|
||||||
|
redactions: Sequence[str] = (),
|
||||||
) -> None:
|
) -> None:
|
||||||
deadline = time.monotonic() + timeout
|
deadline = time.monotonic() + timeout
|
||||||
last = ""
|
last = ""
|
||||||
@@ -122,6 +123,9 @@ def _wait_for(
|
|||||||
timeout=30,
|
timeout=30,
|
||||||
)
|
)
|
||||||
detail = _tail(logs.stdout + logs.stderr, limit=8000)
|
detail = _tail(logs.stdout + logs.stderr, limit=8000)
|
||||||
|
for secret in redactions:
|
||||||
|
if secret:
|
||||||
|
detail = detail.replace(secret, "[redacted]")
|
||||||
raise SmokeError(
|
raise SmokeError(
|
||||||
f"{label} container exited before readiness: "
|
f"{label} container exited before readiness: "
|
||||||
f"{detail or 'no diagnostic output'}"
|
f"{detail or 'no diagnostic output'}"
|
||||||
@@ -330,6 +334,7 @@ def run_smoke(
|
|||||||
),
|
),
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
container=names["postgres"],
|
container=names["postgres"],
|
||||||
|
redactions=redactions,
|
||||||
)
|
)
|
||||||
_wait_for(
|
_wait_for(
|
||||||
"Redis",
|
"Redis",
|
||||||
@@ -340,6 +345,7 @@ def run_smoke(
|
|||||||
),
|
),
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
container=names["redis"],
|
container=names["redis"],
|
||||||
|
redactions=redactions,
|
||||||
)
|
)
|
||||||
record("managed_dependencies_ready", began)
|
record("managed_dependencies_ready", began)
|
||||||
|
|
||||||
@@ -447,6 +453,7 @@ def run_smoke(
|
|||||||
),
|
),
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
container=names["api"],
|
container=names["api"],
|
||||||
|
redactions=redactions,
|
||||||
)
|
)
|
||||||
_run(
|
_run(
|
||||||
(
|
(
|
||||||
@@ -506,6 +513,7 @@ def run_smoke(
|
|||||||
),
|
),
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
container=names["web"],
|
container=names["web"],
|
||||||
|
redactions=redactions,
|
||||||
)
|
)
|
||||||
_run(
|
_run(
|
||||||
("docker", "exec", names["web"], "sh", "-c", "test \"$(id -u)\" = 101"),
|
("docker", "exec", names["web"], "sh", "-c", "test \"$(id -u)\" = 101"),
|
||||||
@@ -568,6 +576,7 @@ def run_smoke(
|
|||||||
),
|
),
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
container=names["worker"],
|
container=names["worker"],
|
||||||
|
redactions=redactions,
|
||||||
)
|
)
|
||||||
_run(("docker", "stop", "--time", "20", names["worker"]), timeout=30)
|
_run(("docker", "stop", "--time", "20", names["worker"]), timeout=30)
|
||||||
record("worker_delivery_and_shutdown", began)
|
record("worker_delivery_and_shutdown", began)
|
||||||
|
|||||||
Reference in New Issue
Block a user