Refactor sync test to be more flexible
And add documentation
This commit is contained in:
parent
17a3612b36
commit
6fe3cc56dd
|
|
@ -457,23 +457,34 @@ fn valid_generated_config(command: &str, expected_output: &str) -> Result<()> {
|
||||||
|
|
||||||
/// Test if `zebrad` can sync the first checkpoint on mainnet.
|
/// Test if `zebrad` can sync the first checkpoint on mainnet.
|
||||||
///
|
///
|
||||||
/// If your test environment does not have network access, skip
|
/// The first checkpoint contains a single genesis block.
|
||||||
/// this test by setting the `ZEBRA_SKIP_NETWORK_TESTS` env var.
|
|
||||||
#[test]
|
#[test]
|
||||||
fn sync_one_checkpoint_mainnet() -> Result<()> {
|
fn sync_one_checkpoint_mainnet() -> Result<()> {
|
||||||
sync_one_checkpoint(Mainnet)
|
sync_until(
|
||||||
|
"verified checkpoint range",
|
||||||
|
Mainnet,
|
||||||
|
Duration::from_secs(20),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Test if `zebrad` can sync the first checkpoint on testnet.
|
/// Test if `zebrad` can sync the first checkpoint on testnet.
|
||||||
///
|
///
|
||||||
/// If your test environment does not have network access, skip
|
/// The first checkpoint contains a single genesis block.
|
||||||
/// this test by setting the `ZEBRA_SKIP_NETWORK_TESTS` env var.
|
|
||||||
#[test]
|
#[test]
|
||||||
fn sync_one_checkpoint_testnet() -> Result<()> {
|
fn sync_one_checkpoint_testnet() -> Result<()> {
|
||||||
sync_one_checkpoint(Testnet)
|
sync_until(
|
||||||
|
"verified checkpoint range",
|
||||||
|
Testnet,
|
||||||
|
Duration::from_secs(20),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sync_one_checkpoint(network: Network) -> Result<()> {
|
/// Sync `network` until `zebrad` outputs `regex`.
|
||||||
|
/// Returns an error if `timeout` elapses before `regex` is output.
|
||||||
|
///
|
||||||
|
/// If your test environment does not have network access, skip
|
||||||
|
/// this test by setting the `ZEBRA_SKIP_NETWORK_TESTS` env var.
|
||||||
|
fn sync_until(regex: &str, network: Network, timeout: Duration) -> Result<()> {
|
||||||
zebra_test::init();
|
zebra_test::init();
|
||||||
|
|
||||||
if env::var_os("ZEBRA_SKIP_NETWORK_TESTS").is_some() {
|
if env::var_os("ZEBRA_SKIP_NETWORK_TESTS").is_some() {
|
||||||
|
|
@ -483,6 +494,7 @@ fn sync_one_checkpoint(network: Network) -> Result<()> {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use a persistent state, so we can handle large syncs
|
||||||
let mut config = persistent_test_config()?;
|
let mut config = persistent_test_config()?;
|
||||||
// TODO: add a convenience method?
|
// TODO: add a convenience method?
|
||||||
config.network.network = network;
|
config.network.network = network;
|
||||||
|
|
@ -490,11 +502,11 @@ fn sync_one_checkpoint(network: Network) -> Result<()> {
|
||||||
let mut child = testdir()?
|
let mut child = testdir()?
|
||||||
.with_config(config)?
|
.with_config(config)?
|
||||||
.spawn_child(&["start"])?
|
.spawn_child(&["start"])?
|
||||||
.with_timeout(Duration::from_secs(20));
|
.with_timeout(timeout);
|
||||||
|
|
||||||
// TODO: is there a way to check for testnet or mainnet here?
|
// TODO: is there a way to check for testnet or mainnet here?
|
||||||
// For example: "network=Mainnet" or "network=Testnet"
|
// For example: "network=Mainnet" or "network=Testnet"
|
||||||
child.expect_stdout("verified checkpoint range")?;
|
child.expect_stdout(regex)?;
|
||||||
child.kill()?;
|
child.kill()?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue