Add some additional checks to the acceptance mempool test (#2880)
* add some additional checks to the acceptance mempool test * add an additional mempool test * do proposed fixes to `sync_until` * Ignore "can't kill an exited process" errors Co-authored-by: teor <teor@riseup.net>
This commit is contained in:
parent
002c533ea8
commit
d88e44ff8d
|
@ -823,6 +823,22 @@ fn sync_large_checkpoints_mainnet() -> Result<()> {
|
||||||
// TODO: We had a `sync_large_checkpoints_testnet` here but it was removed because
|
// TODO: We had a `sync_large_checkpoints_testnet` here but it was removed because
|
||||||
// the testnet is unreliable (#1222). Enable after we have more testnet instances (#1791).
|
// the testnet is unreliable (#1222). Enable after we have more testnet instances (#1791).
|
||||||
|
|
||||||
|
/// Test if `zebrad` can run side by side with the mempool.
|
||||||
|
/// This is done by running the mempool and sync some large checkpoints.
|
||||||
|
#[test]
|
||||||
|
fn running_mempool_mainnet() -> Result<()> {
|
||||||
|
sync_until(
|
||||||
|
LARGE_CHECKPOINT_TEST_HEIGHT,
|
||||||
|
Mainnet,
|
||||||
|
STOP_AT_HEIGHT_REGEX,
|
||||||
|
LARGE_CHECKPOINT_TIMEOUT,
|
||||||
|
None,
|
||||||
|
true,
|
||||||
|
Some(Height(0)),
|
||||||
|
)
|
||||||
|
.map(|_tempdir| ())
|
||||||
|
}
|
||||||
|
|
||||||
/// Sync `network` until `zebrad` reaches `height`, and ensure that
|
/// Sync `network` until `zebrad` reaches `height`, and ensure that
|
||||||
/// the output contains `stop_regex`. If `reuse_tempdir` is supplied,
|
/// the output contains `stop_regex`. If `reuse_tempdir` is supplied,
|
||||||
/// use it as the test's temporary directory.
|
/// use it as the test's temporary directory.
|
||||||
|
@ -887,10 +903,32 @@ fn sync_until(
|
||||||
if enable_mempool_at_height.is_some() {
|
if enable_mempool_at_height.is_some() {
|
||||||
child.expect_stdout_line_matches("enabling mempool for debugging")?;
|
child.expect_stdout_line_matches("enabling mempool for debugging")?;
|
||||||
child.expect_stdout_line_matches("activating mempool")?;
|
child.expect_stdout_line_matches("activating mempool")?;
|
||||||
|
|
||||||
|
// make sure zebra is running with the mempool
|
||||||
|
child.expect_stdout_line_matches("verified checkpoint range")?;
|
||||||
}
|
}
|
||||||
|
|
||||||
child.expect_stdout_line_matches(stop_regex)?;
|
child.expect_stdout_line_matches(stop_regex)?;
|
||||||
|
|
||||||
|
// make sure there is never a mempool if we don't explicity enable it
|
||||||
|
if enable_mempool_at_height.is_none() {
|
||||||
|
// if there is no matching line, the `expect_stdout_line_matches` error kills the `zebrad` child.
|
||||||
|
// the error is delayed until the test timeout, or until the child reaches the stop height and exits.
|
||||||
|
let mempool_is_activated = child
|
||||||
|
.expect_stdout_line_matches("activating mempool")
|
||||||
|
.is_ok();
|
||||||
|
|
||||||
|
// if there is a matching line, we panic and kill the test process.
|
||||||
|
// but we also need to kill the `zebrad` child before the test panics.
|
||||||
|
if mempool_is_activated {
|
||||||
child.kill()?;
|
child.kill()?;
|
||||||
|
panic!("unexpected mempool activation: mempool should not activate while syncing lots of blocks")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure the child process is dead
|
||||||
|
// if it has already exited, ignore that error
|
||||||
|
let _ = child.kill();
|
||||||
|
|
||||||
Ok(child.dir)
|
Ok(child.dir)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue