Skip to content

test: basic E2E MsgPayForBlobs test #4778

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 25 commits into
base: main
Choose a base branch
from
Draft

Conversation

chatton
Copy link
Collaborator

@chatton chatton commented May 8, 2025

Overview

This PR introduces a new E2E test which deploys a celestia-app, txsim and a bridge node in docker and ensures that the bridge node syncs headers.

This is still using my personal repo here which can be moved into the celestiaorg in the before or after merging this PR.

A nice follow up to this test would be to do something which uses the BlockApi to ensure we don't accidentally break compatibility.

Little bit of scope creep on this PR, but it does the following.

  • deploys celestia-app
  • deploys a bridge-node
  • submits a MsgPayForBlobs
  • deploys a light-node
  • queries blob data from light node

This should ensure the core components are all functioning together. In a follow up, I will update the CI to pass a celestia-app image built on the PR itself to this test.

@chatton chatton requested a review from a team as a code owner May 8, 2025 14:47
@chatton chatton requested review from yarikbratashchuk and cmwaters and removed request for a team May 8, 2025 14:47
@celestia-bot celestia-bot requested a review from evan-forbes May 8, 2025 14:48
@rootulp
Copy link
Collaborator

rootulp commented May 8, 2025

Odd that docker-multiplexer-build CI failed even though this PR appears up to date with main. #4759 is closed b/c #4767 merged.

Copy link
Collaborator

@rootulp rootulp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! Thanks for adding this

@@ -17,6 +17,7 @@ jobs:
testcase:
- TestE2ESimple
- TestCelestiaChainStateSync
- TestE2ENodeSimple
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[uber nit][optional] Simple makes me conflate this with TestE2ESimple. To disambiguate, consider renaming to TestE2EBridgeNode

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also I often find "node" not specific enough to differentiate between consensus node or DA node so I have been trying to clarify via: "consensus node" vs. "bridge node" / "light node"

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes good call, will make this change.

return maps.SetField(bytes, "consensus.params.version.app", appVersion)
},
EncodingConfig: &enc,
AdditionalStartArgs: []string{"--force-no-bbr", "--grpc.enable", "--grpc.address", "0.0.0.0:9090", "--rpc.grpc_laddr=tcp://0.0.0.0:9099"},
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] does the RCP GRPC listen address need to differ from the default 9098?

cfg.RPC.GRPCListenAddress = "tcp://127.0.0.1:9098"

Suggested change
AdditionalStartArgs: []string{"--force-no-bbr", "--grpc.enable", "--grpc.address", "0.0.0.0:9090", "--rpc.grpc_laddr=tcp://0.0.0.0:9099"},
AdditionalStartArgs: []string{"--force-no-bbr", "--grpc.enable", "--grpc.address", "0.0.0.0:9090", "--rpc.grpc_laddr=tcp://0.0.0.0:9098"},

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it shouldn't actually matter which port is used here, but no harm being consistent with the default.

Copy link
Member

@evan-forbes evan-forbes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is dope!!

if we purposefully included a breaking change, then would this test will fail until node implemenets a fix? if so, should we add this in node instead?

@chatton
Copy link
Collaborator Author

chatton commented May 9, 2025

Odd that docker-multiplexer-build CI failed even though this PR appears up to date with main. #4759 is closed b/c #4767 merged.

Ah, the base branch is the other branch that adds E2Es, so likely I haven't rebased on main there 👀

evan-forbes
evan-forbes previously approved these changes May 9, 2025
Copy link
Member

@evan-forbes evan-forbes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks again!

imo, we should keep this not-blocking, and then play it by hear when it is breaking. most changes shouldn't break, but for times we change the square format etc when we expect breaks, we're out of luck until we bump node with those changes.

@celestia-bot celestia-bot requested a review from evan-forbes May 11, 2025 18:10
rootulp
rootulp previously approved these changes May 12, 2025
@evan-forbes evan-forbes linked an issue May 12, 2025 that may be closed by this pull request
2 tasks
@chatton chatton marked this pull request as draft May 15, 2025 07:06
@chatton
Copy link
Collaborator Author

chatton commented May 15, 2025

converting to draft, will bump to the new celestiaorg repo and re-open

Base automatically changed from cian/add-sync-test to main May 15, 2025 17:52
@chatton chatton dismissed stale reviews from rootulp and evan-forbes May 15, 2025 17:52

The base branch was changed.

chatton added a commit that referenced this pull request May 15, 2025
<!--
Please read and fill out this form before submitting your PR.

Please make sure you have reviewed our contributors guide before
submitting your
first PR.
-->

## Overview

closes #4623 (based on #4636 by @tac0turtle )

~NOTE: this PR uses my personal fork of interchaintest. If people like
this approach of testing, we can further clean up the fork and move it
into the celestiaorg and possibly rename.~

This uses a new repo that leverages a lot of the logic that was in
interchaintest to spin up docker nodes, but tailored to celestia.

This PR adds the `E2ESimple` and `TestCelestiaChainStateSync` tests.

Everything is also in a separate go mod to avoid introducing test
dependencies into the main app go mod.

In order to run the sync test locally, you can run the following
commands.

```sh
cd test/docker-e2e
make test-e2e test=TestCelestiaChainStateSync
```

There is a follow up PR which bumps the test library to add support for
bridge nodes #4778


<!-- 
Please provide an explanation of the PR, including the appropriate
context,
background, goal, and rationale. If there is an issue with this
information,
please provide a tl;dr and link the issue. 
-->
@chatton chatton changed the title test: add basic E2E bridge node test test: basic E2E MsgPayForBlobs test May 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Local test with celestia-app v4 and celestia-node
3 participants