Run all the test cases defined here in an embedded Lotus devnet. For now, it's sufficient to:
Set up a timer-based CI running every 4 hours.
Against specific branches of Lotus configured in the CI config.
To set up the devnet, I would use the itests framework. We should be able to set up a go command that uses the itests framework to spin up an "embedded Lotus devnet" with an arbitrary block time.
Embedded Lotus devnet
Create a Go program that sets up an itests ensemble, makes it run to infinity, and sets up an HTTP endpoint for control on a designated localhost port (e.g. 1111).
Call ready and wait until it returns an HTTP 200 OK.
Call urls to get the URLs to interact with the ensemble, so we can set up the tests.
Run the tests.
When the tests are done, call kill.
Considerations
Wallet => tests may need the private keys of Ethereum accounts that have been prefunded. The ensemble is already set up with a default wallet account, so maybe the CI scripts need to send funds to f410 accounts and then seed them through env variables to the tests.
@raulk Instead of having a long-running lotus node, it's cleaner to have each integration test file launch its lotus node in the test setup and kill the node when the test ends. How do you think?
Goal
Run all the test cases defined here in an embedded Lotus devnet. For now, it's sufficient to:
To set up the devnet, I would use the itests framework. We should be able to set up a go command that uses the itests framework to spin up an "embedded Lotus devnet" with an arbitrary block time.
Embedded Lotus devnet
CI job
ready
and wait until it returns an HTTP 200 OK.urls
to get the URLs to interact with the ensemble, so we can set up the tests.kill
.Considerations