py-evm icon indicating copy to clipboard operation
py-evm copied to clipboard

Add a nightly build to circleci which runs even the slow blockchain tests

Open lithp opened this issue 6 years ago • 6 comments

Working off https://github.com/ethereum/py-evm/pull/1577/files#r240997519, it might be nice to run the SLOWEST_TESTS more often than never. I'm not sure if this works, I wasn't able to get it to run locally, circleci build --job py36-all-blockchain-tests kept failing with out of disk space errors.

Does anyone know of a better way to test it than merging and waiting for nightfall like this adorable little owl?

Cute Animal Picture

owl

lithp avatar Dec 13 '18 00:12 lithp

Does anyone know of a better way to test it than merging and waiting for nightfall like this adorable little owl?

I feel about as knowledgeable about circle CI cron jobs as that owl looks.

Here is a potentially bad idea: what if we only ran the slowest tests in the nightly job? Even if we do that, I'm a bit worried that the tests will fail based on memory issues. I feel mildly confident that they will if we try to run everything plus the slow tests. Even if we only run slow tests, we might have to break them up further into smaller jobs to convince circle to run them.

carver avatar Dec 13 '18 00:12 carver

Anyone have experience setting up and running a Jenkins server? I think our best route to accomplish this would be having the devops team provisioning a more powerful machine that we can run these more intensive tests on (and maybe the benchmarks too since that machine is likely to have a more stable CPU profile.

pipermerriam avatar Dec 13 '18 02:12 pipermerriam

Might also be worth looking into whether https://github.com/features/actions can help us with this.

pipermerriam avatar Dec 13 '18 02:12 pipermerriam

Heads up!

PR #1579 pulls in tests that routinely consume 3 GiB of RAM when exec'd in a single process, or ~ 8 GiB at peak when allowed to run in parallel. CircleCI crashes for me when using Python 3.6.

These are now certainly listed in SLOWEST_TESTS. There are several (3?..), haven't pinpointed exactly which, but likely something from the top of these 5 pytest runs.

veox avatar Dec 13 '18 14:12 veox

(Unrelated to the above.)

Note that there are other tests that aren't run, which are not in SLOWEST_TESTS:

https://github.com/ethereum/py-evm/blob/7e3b313dbb485fe16729cc40b442310afd750dc2/tests/json-fixtures/test_blockchain.py#L131-L148

Perhaps the function can be reworked to skip/xfail unsupported/incorrect, then check should_run_slow_tests(), then run if so (or not if not).

veox avatar Dec 13 '18 14:12 veox

Opened #1606 to help reduce memory pressure. Hopefully it's enough to stop CircleCI from crashing!

lithp avatar Dec 14 '18 21:12 lithp