Skip to content

e2e cannot restart a zetaclient, so cold-start paths are untestable end to end #4625

Description

@kingpinXD

Raised by @julianrubino during review of #4618.

The gap

e2e/e2etests/test_keygen_reset_signing.go reproduces the incident state (keygen record blanked) and proves the signers keep signing through it. It never restarts a zetaclient, so it does not exercise the actual mainnet failure: a cold start against a blanked record, where the whitelist has to come from TssParticipantList because the grantee list is gone.

That path is covered by unit tests on resolveWhitelist, and it was verified by hand during development — a docker restart of a signer against the blanked state comes up logging TSS key already finalized; whitelisting its participants grantees_in_keygen_record=0 followed by TSS service created. But nothing automated covers it.

Why it cannot be fixed in the test today

The e2e runs inside the orchestrator container, which has no way to control its siblings:

  • contrib/localnet/docker-compose.yml mounts /var/run/docker.sock into promtail only, and only under the monitoring profile. The orchestrator service has no such mount.
  • There is no docker client dependency anywhere in go.mod, cmd/zetae2e/ or e2e/.

So Setup only ever runs once per container in an e2e, at process start, before any test body executes. Any test that wants to assert on startup behaviour has no way to trigger it.

What it would take

Give the orchestrator a docker socket and a small restart helper in e2e/runner, so a test can stop and start a named zetaclient container and wait for it to come back healthy.

That unlocks more than this one test — anything about zetaclient startup, config reload, or crash recovery is currently untestable for the same reason.

Deliberately not done in #4618: it is a hotfix headed for two release branches, and adding a docker socket to the orchestrator is an e2e infrastructure change that deserves its own review.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions