test(e2e): cover multi-node p2p across sandbox churn - #233
Conversation
|
🔍 OpenCodeReview found 3 issue(s) in this PR.
|
| - name: P2P multi-node regression test | ||
| if: ${{ matrix.e2e_name == 'docker-compose' }} | ||
| run: SKIP_BUILD=1 make test-e2e-p2p PROFILE=debug |
There was a problem hiding this comment.
This new regression step has no execution timeout, while the target includes Docker operations and node-local API calls whose helpers do not consistently set network/process deadlines. A stuck docker compose exec or sandbox API request can therefore occupy the runner until GitHub's much larger default job limit. Add a step-level timeout-minutes (or a bounded job-level timeout) appropriate for the two E2E runs.
Suggestion:
| - name: P2P multi-node regression test | |
| if: ${{ matrix.e2e_name == 'docker-compose' }} | |
| run: SKIP_BUILD=1 make test-e2e-p2p PROFILE=debug | |
| - name: P2P multi-node regression test | |
| if: ${{ matrix.e2e_name == 'docker-compose' }} | |
| timeout-minutes: 20 | |
| run: SKIP_BUILD=1 make test-e2e-p2p PROFILE=debug |
| test-e2e-p2p: | ||
| @set -eu; \ |
There was a problem hiding this comment.
| log "Waiting ${P2P_SETTLE_SECONDS}s for sandbox veth link changes to reach netwatch ..." | ||
| sleep "$P2P_SETTLE_SECONDS" | ||
| assert_veth_changed "$NODE_A_SERVICE" "$veth_baseline_a" | ||
| assert_veth_changed "$NODE_B_SERVICE" "$veth_baseline_b" |
There was a problem hiding this comment.
This creation-side check uses a fixed 5-second delay, unlike the deletion-side check below which polls for up to 20 seconds. On a loaded runner, sandbox state can become running before the host-side interface observation settles, causing an otherwise healthy P2P run to fail here. Poll until the veth set differs from the baseline (with a bounded timeout), then perform the assertion; the subsequent P2P fetch loop already follows this asynchronous polling pattern.
What
Validation
make fmtpassedgit diff --checkpassedRefs #138