use color_eyre::eyre::Result;
use zebra_chain::{
block,
parameters::Network::{self, *},
};
use crate::common::sync::{
sync_until_with_peers, GenesisPeer, MempoolBehavior, STOP_AT_HEIGHT_REGEX,
STOP_ON_LOAD_TIMEOUT, TINY_CHECKPOINT_TEST_HEIGHT, TINY_CHECKPOINT_TIMEOUT,
};
#[test]
fn sync_one_checkpoint_mainnet() -> Result<()> {
let _init_guard = zebra_test::init();
let genesis_peer = GenesisPeer::spawn(&Mainnet)?;
sync_until_with_peers(
TINY_CHECKPOINT_TEST_HEIGHT,
&Mainnet,
STOP_AT_HEIGHT_REGEX,
TINY_CHECKPOINT_TIMEOUT,
None,
MempoolBehavior::ShouldNotActivate,
true,
true,
genesis_peer.initial_peers(),
)
.map(|_tempdir| ())
}
#[allow(dead_code)]
fn sync_one_checkpoint_testnet() -> Result<()> {
let _init_guard = zebra_test::init();
let network = Network::new_default_testnet();
let genesis_peer = GenesisPeer::spawn(&network)?;
sync_until_with_peers(
TINY_CHECKPOINT_TEST_HEIGHT,
&network,
STOP_AT_HEIGHT_REGEX,
TINY_CHECKPOINT_TIMEOUT,
None,
MempoolBehavior::ShouldNotActivate,
true,
true,
genesis_peer.initial_peers(),
)
.map(|_tempdir| ())
}
#[test]
fn restart_stop_at_height() -> Result<()> {
let _init_guard = zebra_test::init();
restart_stop_at_height_for_network(Network::Mainnet, TINY_CHECKPOINT_TEST_HEIGHT)?;
Ok(())
}
fn restart_stop_at_height_for_network(network: Network, height: block::Height) -> Result<()> {
let genesis_peer = GenesisPeer::spawn(&network)?;
let reuse_tempdir = sync_until_with_peers(
height,
&network,
STOP_AT_HEIGHT_REGEX,
TINY_CHECKPOINT_TIMEOUT,
None,
MempoolBehavior::ShouldNotActivate,
true,
true,
genesis_peer.initial_peers(),
)?;
sync_until_with_peers(
height,
&network,
"state is already at the configured height",
STOP_ON_LOAD_TIMEOUT,
reuse_tempdir,
MempoolBehavior::ShouldNotActivate,
true,
false,
genesis_peer.initial_peers(),
)?;
Ok(())
}