Skip to content
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

E2E Fuzzer Tool for celestia-node tests #1535

Closed
6 tasks
evan-forbes opened this issue Mar 24, 2023 · 9 comments
Closed
6 tasks

E2E Fuzzer Tool for celestia-node tests #1535

evan-forbes opened this issue Mar 24, 2023 · 9 comments
Labels
knuu item is directly related to the usage of knuu testing items that are strictly related to adding or extending test coverage

Comments

@evan-forbes
Copy link
Member

evan-forbes commented Mar 24, 2023

It would be really useful to have a tool to fuzz as many possible scenarios that could happen in celestia-app. This would include things like all possible transactions, validator set changes, block sizes, evidence in the block, and potentially even invalid blocks that are signed over.

We first only target this tool for the non-determinism tests, but in theory (not required to close this issue) could be implemented as a tool that could be applied to any network.

AC

  • create and submit each tx type that we support
    • exception for IBC messages due to the infra required, but those would be a huge bonus
    • ideally this also includes executing the current upgrade, but this is assuming we are using a rolling upgrade. I'm okay with separating this out as well
  • Full blocks

Bonus (not required for merging)

@evan-forbes evan-forbes added the epic item groups other items for easier tracking label Mar 24, 2023
@evan-forbes evan-forbes added this to the Mainnet milestone Mar 24, 2023
@rootulp
Copy link
Collaborator

rootulp commented Mar 30, 2023

Consider adding a fuzz test that generates a valid block that contains strange padding or reorders blobs in a namespace.

@rootulp rootulp added the testing items that are strictly related to adding or extending test coverage label Mar 30, 2023
@evan-forbes
Copy link
Member Author

ref #1162, as simplifying the programmatic signing of txs could be useful

@evan-forbes evan-forbes moved this from Todo to In Progress in Engineering Team Epics Apr 17, 2023
cmwaters added a commit that referenced this issue Apr 20, 2023
Ref: #1256,
#1535

This commit introduces a new package `txsim` for contolled fuzz testing at a
transaction level. It's purpose is to simulate a wide range of possible
user interactions while also being able to apply a considerable load to
the network.
@evan-forbes evan-forbes removed this from the Mainnet milestone Oct 9, 2023
@evan-forbes evan-forbes added this to the v2 milestone Nov 13, 2023
@evan-forbes evan-forbes changed the title EPIC: Ultimate Fuzzer EPIC: E2E Fuzzer Nov 14, 2023
@evan-forbes
Copy link
Member Author

The remaining things for this epic are basically just #2382

@rootulp
Copy link
Collaborator

rootulp commented Nov 15, 2023

Is the tool proposed in this epic: a new stand-alone binary? features added to the existing txsim binary? or something else entirely?

@evan-forbes
Copy link
Member Author

using txsim, or whatever scripts, in the knuu e2e tests to fuzz the e2e test

it should be similar to if we actually had tests for robusta, so fill the blocks for a while, change the validator set dramatically, perhaps even perform an upgrade or restart nodes. The goal is to provide us with a basic set of behaviors that should all work in an predictable way and cover a wide spectrum of potential states of a chain. This is to give us better confidence that a network consisting of 4 nodes works as intended, along with providing celestia-node with a good foundation for attempting to find edge cases there

@rootulp
Copy link
Collaborator

rootulp commented Nov 15, 2023

or whatever scripts, in the knuu e2e tests to fuzz the e2e test

Does this mean: modify make test-e2e to run an additional test suite that does "fill the blocks for a while, change the validator set dramatically, perhaps even perform an upgrade or restart nodes..."

Is that reusable by celestia-node?

@evan-forbes
Copy link
Member Author

I'm not sure what the exact testing suite infrastructure would look like, it could fit into the existing tests or be its own test. Therefore, it would also run when we run the e2e tests, and celestia-node could use the same infrastructure we use the run that test (the e2e package).

celestia-node doesn't have that infra setup atm afaik, however they should be able to import the same package similar to how they are importing the testnode package

@rootulp rootulp added the knuu item is directly related to the usage of knuu label Mar 1, 2024
@rootulp rootulp removed this from the v2 milestone Mar 1, 2024
@evan-forbes evan-forbes changed the title EPIC: E2E Fuzzer E2E Fuzzer May 13, 2024
@evan-forbes evan-forbes removed the epic item groups other items for easier tracking label May 13, 2024
@evan-forbes evan-forbes added needs:grooming items needs a status change, to be closed, or clearer AC. Item should be discussed next sync. and removed needs:grooming items needs a status change, to be closed, or clearer AC. Item should be discussed next sync. labels Jun 20, 2024
@ninabarbakadze ninabarbakadze self-assigned this Jun 20, 2024
@evan-forbes
Copy link
Member Author

moved the AC that this needs to be a tool for celestia-node to use in knuu as a bonus. That might be useful, but doesn't need to be included to close this issue.

@ninabarbakadze ninabarbakadze removed their assignment Jun 21, 2024
@evan-forbes evan-forbes changed the title E2E Fuzzer E2E Fuzzer Tool for celestia-node tests Jul 1, 2024
@evan-forbes
Copy link
Member Author

closing in favor of #3540

if we need a tool for celestia-node to use, then we should create a separate issue for that.

@github-project-automation github-project-automation bot moved this from In Progress to Done in Engineering Team Epics Jul 1, 2024
0xchainlover pushed a commit to celestia-org/celestia-app that referenced this issue Aug 1, 2024
Ref: celestiaorg/celestia-app#1256,
celestiaorg/celestia-app#1535

This commit introduces a new package `txsim` for contolled fuzz testing at a
transaction level. It's purpose is to simulate a wide range of possible
user interactions while also being able to apply a considerable load to
the network.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
knuu item is directly related to the usage of knuu testing items that are strictly related to adding or extending test coverage
Projects
Development

No branches or pull requests

3 participants