test: e2e initial setup - #1275
Merged
Merged
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts: # proto/buf.gen.yaml
gjermundgaraba
marked this pull request as ready for review
July 15, 2026 03:39
|
Too many files changed for review. ( Bypass the limit by tagging |
Replace the mock transport with the real solidity-ibc-eureka contracts. The harness deploys ICS26Router, ICS20Transfer, ICS27GMP, and their logic contracts behind ERC1967 proxies on every IBC instance, registers a permissive DummyLightClient per connection end, and opens the relaying selectors to the public role. The stub relayer is rewritten as link/internal/ibcrelay: it scans SendPacket, submits recvPacket with empty proofs, extracts the ack from the receipt (falling back to a WriteAcknowledgement scan for Noop races), and completes the ack or timeout leg on the source. Traffic coverage now exercises the real applications: ICS20 transfers with voucher-mint verification, ICS27 GMP calls against a Counter, and IFT burn/mint transfers (on top of GMP) including timeout refunds. The MockIFT/MockGMP contracts, the test-apps CLI, and their bindings are deleted; test-app compilation moves into the harness contracts workspace with generated bindings checked by make check-test-apps. go-ethereum aligns at v1.17.4 across modules, the harness go.mod ignores Go sources vendored under the bun contracts workspace, and the e2e lane timeout rises to 60m for the slower per-test deploys. All three lanes pass: anvil 103s, anvil-interval 1257s, besu 1410s.
# Conflicts: # link/.mockery.yaml # link/Makefile # link/api/v2/attestor/attestor.pb.go # link/api/v2/client.go # link/api/v2/relayer/relayer.pb.go # link/api/v2/types.go # link/go.mod # link/go.sum # link/internal/service/attestor/service_test.go # link/internal/types/v2/attestor/attestor.mock.go # link/internal/types/v2/relayer/relayer.mock.go # proto/link/attestor.proto
# Conflicts: # link/.mockery.yaml # link/cmd/ibc/relayer.go # link/go.mod # link/internal/service/attestor/service_test.go # link/internal/tests/mocks/attestor.go # link/internal/tests/mocks/relayerapi.go
The relayer command now boots bootstrap.BuildRelayer (migrate, server on an ephemeral port, readiness JSON on stdout, dispatch loop, graceful shutdown) and the ibcrelay stub relayer it replaces is deleted; only the config-validate piece remains. The e2e harness drives the relayer over its connect RPCs in dual mode: one local attestor per chain, sqlite in the workdir, finalityOffset 1, and 1s packet batch timeouts. Fixes surfaced by relaying through the real stack: - sqlite WAL was never enabled (journal_mode passed as a bare query param the driver ignores) and there was no busy_timeout, so writers blocked readers and concurrent statements failed with SQLITE_BUSY - the state finisher ignored WriteAckStatus, so error acknowledgements completed as COMPLETE_WITH_ACK - PacketStatus gains write_ack_error; Relay of an unknown transaction reports CodeNotFound instead of an internal error The mining-pause tests now assert stable-pending while paused and completion after resume: the relayer refuses to submit to a chain whose clock is stale and needs a block past the recv for ack finality. The transfer timeout shrinks to 15s because the pipeline gates timeouts on the relayer's own clock, which AdvanceTime cannot move.
Fold ibc config new/validate into cmd/ibc directly, slim the relayer readiness event to event/chainsConnected/http, and drop the unused Assess/Requirements machinery from the e2e harness along with the lint-ibcrelay-tests target and stale dependencies.
The child's stderr only reaches the log writer once cmd.Wait drains the exec pipe, so building a readiness-failure error immediately after a stdout EOF could report an empty log tail. Wait (bounded) for the process handle before snapshotting the tail.
Rename environment/assessment.go to capabilities.go to match its remaining contents, and drop the stale 'temporary' wording from the e2etest package and Signers doc comments now that the acceptance tests drive the real relayer.
The nested Go module duplicated dependency files, lint runs, and CI wiring while the internal/ path rule already enforces the import boundary. Fold its requirements into e2e/go.mod, lint once, and key the harness CI test steps off a matrix flag instead of a module path. Also drop a stale AGENTS.md reference to a harness-local golangci config that no longer exists.
swift1337
reviewed
Jul 27, 2026
| @@ -0,0 +1,92 @@ | |||
| name: Link and E2E | |||
Member
There was a problem hiding this comment.
We already have ibc-link CI; let's extract only e2e part and name it e2e.yml
Contributor
Author
There was a problem hiding this comment.
agreed. done
Link lint, build, and tests are already covered by ibc-link-ci.yml with a stronger setup (path filters, concurrency cancellation, merge_group, postgres-backed tests), and its verify-codegen job subsumes check-proto. Keep link/** and proto/** as triggers since e2e builds the Link binary.
The handler injection in relayercmd.NewCommand existed so the removed ibcrelay shim could share the command; with one caller left, define the relayer commands as plain vars like the attestor does. relayercmd keeps only the wire contract types the e2e suite imports.
The fallback lookup (auto-append .json, auto-prepend keys/) is existing behavior whose removal does not belong in this PR; dropping it can be proposed separately.
Like the key file fallbacks, removing this operator flag does not belong in this PR; dropping it can be proposed separately.
swift1337
approved these changes
Jul 27, 2026
| flagConfigValidateLive bool | ||
|
|
||
| // if true, fail on unknown fields in the config file | ||
| flagConfigValidateLive bool |
Contributor
Author
There was a problem hiding this comment.
yeah, fixed! good catch
An overzealous cleanup pass stripped doc comments, a tracked todo, and formatting that do not belong in this PR. Keep the one real fix: pass the --strict flag through to LoadFromFile instead of hardcoding false.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.