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

Invest into better test tooling #1277

Open
drahnr opened this issue Feb 12, 2025 — with Linear · 2 comments
Open

Invest into better test tooling #1277

drahnr opened this issue Feb 12, 2025 — with Linear · 2 comments
Assignees

Comments

Copy link
Contributor

drahnr commented Feb 12, 2025

Materializer is our current way to spawn tests programmatically, but it's a) very docker focused b) requires containers as a consequence.

We should try to reduce complexity and allow to launch the nodes as a simple functions call fn launch<ConsensusEngineType>(config: Config) {.. } and make it re-entrant, such that a single process can launch mutliple nodes from within a single unit test.

Copy link

linear bot commented Feb 12, 2025

@raulk
Copy link
Contributor

raulk commented Feb 12, 2025

100%.

Requiring Fendermint to be Dockerized wasn't the original intention. The original goal was to replicate Lotus' itests kit for IPC. We—at Lotus—invested in creating that integration test harness a while back and it proved valuable for writing e2e tests natively without requiring containerization. Take a look at this neat test: https://github.com/filecoin-project/lotus/blob/master/itests/eth_deploy_test.go

Lotus devs use itests to get rapid feedback on their changes. Requiring a full Docker build of the codebase under test, just to be able to test it is rather silly and unproductive. We need a framework that's nimble and delightful to use, not this clunky mess.

While we do need to bite the bullet and accept some containerization—concretely for CometBFT—for everything that lives in this codebase (Fendermint, ipc-cli, Eth API), we should just drive them as libraries through their Rust APIs.

Note: there is some history here, I'm happy to read you into more context if needed, but it doesn't seem relevant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Status: Backlog
Development

No branches or pull requests

2 participants