test: keep the scenario's status when SCTP wire cleanup fails or hangs

Merged
GO
11d ago
+275-32

The shared SCTP wire harness ran its cleanup under set -e, so one failing
Docker command ended the EXIT handler early: the run's scratch directory
stayed behind and the runner exited with the cleanup's status instead of
the scenario's. A hanging Docker command stopped cleanup for good, and a
SIGINT or SIGTERM during cleanup replaced the status with 130.

Cleanup now carries on past every failing command, bounds each Docker
command it runs (60 s by default, then a forced kill), shields itself from
further SIGINT and SIGTERM, always removes the scratch directory and returns
the scenario's status. The Python harness tests cover failing, hanging and
interrupted cleanup, each under its own deadline, and scripts/check.sh now
runs them in its test step.

The TLS restart runner and its fixture name their test binary, environment
variables and readiness markers after the scenario.

Closes #141.


Summary by cubic

Fixes the shared SCTP wire harness cleanup so a failing, hanging, or interrupted Docker command no longer replaces the scenario's exit status with the cleanup's, and the run's scratch directory is always removed.

  • Cleanup now continues past failing Docker commands, times out each one (60 s default, then a forced kill), ignores further SIGINT and SIGTERM, and returns the scenario's status.
  • The TLS restart runner and fixture now name their binary, environment variables, and readiness markers after the scenario.
  • New Python harness tests cover failing, hanging, and interrupted cleanup; scripts/check.sh runs them in its test step.

Closes #141.