Measured on a 32-core host, the ci nextest profile runs 1320 tests in 623s wall while the tests only sum to 34 minutes of work, because the serial-live-mainnet group has max-threads = 1 and its members sum to ~10.3 minutes — the whole wall time.
Those members spend the time sleeping, not working. Durations land on the constants in zebrad/tests/common/launch.rs: EXTENDED_LAUNCH_DELAY (45s) for the four unit::config::*ephemeral* tests, LAUNCH_DELAY/BETWEEN_NODES_DELAY (20s each) for unit::cli::start_*, the integration::network::zebra_*_conflict pair-launch tests, integration::database::zebra_state_conflict, and the integration::rpc::*_endpoint* tests.
They are in the serial group because they start a node with the default DNS seeders, so concurrent runs from one IP reject each other handshakes.
Two directions, either of which cuts the job to about a minute: wait on the log line that proves the node reached the state under test instead of a blanket delay, or run these tests without live seeders (they do not test peer connectivity) so they leave the serial group and run concurrently.
Measured on a 32-core host, the
cinextest profile runs 1320 tests in 623s wall while the tests only sum to 34 minutes of work, because theserial-live-mainnetgroup hasmax-threads = 1and its members sum to ~10.3 minutes — the whole wall time.Those members spend the time sleeping, not working. Durations land on the constants in
zebrad/tests/common/launch.rs:EXTENDED_LAUNCH_DELAY(45s) for the fourunit::config::*ephemeral*tests,LAUNCH_DELAY/BETWEEN_NODES_DELAY(20s each) forunit::cli::start_*, theintegration::network::zebra_*_conflictpair-launch tests,integration::database::zebra_state_conflict, and theintegration::rpc::*_endpoint*tests.They are in the serial group because they start a node with the default DNS seeders, so concurrent runs from one IP reject each other handshakes.
Two directions, either of which cuts the job to about a minute: wait on the log line that proves the node reached the state under test instead of a blanket delay, or run these tests without live seeders (they do not test peer connectivity) so they leave the serial group and run concurrently.