mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 09:21:04 +00:00
Use JustifiedBlockAnnounceValidator for parachain block announce validator (#96)
This commit is contained in:
@@ -42,6 +42,7 @@ sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch
|
||||
# Cumulus dependencies
|
||||
cumulus-consensus = { path = "../../consensus" }
|
||||
cumulus-collator = { path = "../../collator" }
|
||||
cumulus-network = { path = "../../network" }
|
||||
|
||||
# Polkadot dependencies
|
||||
polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "cumulus-branch" }
|
||||
|
||||
@@ -22,6 +22,7 @@ use polkadot_primitives::parachain::CollatorPair;
|
||||
use cumulus_collator::{CollatorBuilder, prepare_collator_config};
|
||||
use futures::FutureExt;
|
||||
pub use sc_executor::NativeExecutor;
|
||||
use cumulus_network::DelayedBlockAnnounceValidator;
|
||||
|
||||
// Our native executor instance.
|
||||
native_executor_instance!(
|
||||
@@ -78,12 +79,17 @@ pub fn run_collator(
|
||||
.register_provider(sp_timestamp::InherentDataProvider)
|
||||
.unwrap();
|
||||
|
||||
let block_announce_validator = DelayedBlockAnnounceValidator::new();
|
||||
let block_announce_validator_copy = block_announce_validator.clone();
|
||||
let service = builder
|
||||
.with_finality_proof_provider(|client, backend| {
|
||||
// GenesisAuthoritySetProvider is implemented for StorageAndProofProvider
|
||||
let provider = client as Arc<dyn StorageAndProofProvider<_, _>>;
|
||||
Ok(Arc::new(GrandpaFinalityProofProvider::new(backend, provider)) as _)
|
||||
})?
|
||||
.with_block_announce_validator(|_client| {
|
||||
Box::new(block_announce_validator_copy)
|
||||
})?
|
||||
.build()?;
|
||||
|
||||
let proposer_factory = sc_basic_authorship::ProposerFactory::new(
|
||||
@@ -104,6 +110,7 @@ pub fn run_collator(
|
||||
crate::PARA_ID,
|
||||
client,
|
||||
announce_block,
|
||||
block_announce_validator,
|
||||
);
|
||||
|
||||
let polkadot_future = polkadot_collator::start_collator(
|
||||
|
||||
@@ -21,6 +21,7 @@ use assert_cmd::cargo::cargo_bin;
|
||||
use async_std::{net, task::sleep};
|
||||
use codec::Encode;
|
||||
use futures::{future::FutureExt, join, pin_mut, select};
|
||||
use jsonrpsee::{raw::RawClient, transport::http::HttpTransportClient};
|
||||
use polkadot_primitives::parachain::{Info, Scheduling};
|
||||
use polkadot_primitives::Hash as PHash;
|
||||
use polkadot_runtime::{Header, OnlyStakingAndClaims, Runtime, SignedExtra, SignedPayload};
|
||||
@@ -144,6 +145,25 @@ async fn wait_for_tcp<A: net::ToSocketAddrs + std::fmt::Display>(address: A) {
|
||||
}
|
||||
}
|
||||
|
||||
/// wait for parachain blocks to be produced
|
||||
async fn wait_for_blocks(number_of_blocks: usize, mut client: &mut RawClient<HttpTransportClient>) {
|
||||
let mut previous_blocks = HashSet::with_capacity(number_of_blocks);
|
||||
|
||||
loop {
|
||||
let current_block_hash = Chain::block_hash(&mut client, None).await.unwrap().unwrap();
|
||||
|
||||
if previous_blocks.insert(current_block_hash) {
|
||||
eprintln!("new parachain block: {}", current_block_hash);
|
||||
|
||||
if previous_blocks.len() == number_of_blocks {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sleep(Duration::from_secs(2)).await;
|
||||
}
|
||||
}
|
||||
|
||||
#[async_std::test]
|
||||
#[ignore]
|
||||
async fn integration_test() {
|
||||
@@ -310,13 +330,13 @@ async fn integration_test() {
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// run cumulus
|
||||
let cumulus_dir = tempdir().unwrap();
|
||||
let mut cumulus = Command::new(cargo_bin("cumulus-test-parachain-collator"))
|
||||
// run cumulus charlie
|
||||
let cumulus_charlie_dir = tempdir().unwrap();
|
||||
let mut cumulus_charlie = Command::new(cargo_bin("cumulus-test-parachain-collator"))
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::piped())
|
||||
.arg("--base-path")
|
||||
.arg(cumulus_dir.path())
|
||||
.arg(cumulus_charlie_dir.path())
|
||||
.arg("--unsafe-rpc-expose")
|
||||
.arg("--rpc-port=27017")
|
||||
.arg("--port=27117")
|
||||
@@ -329,35 +349,51 @@ async fn integration_test() {
|
||||
"--bootnodes=/ip4/127.0.0.1/tcp/27116/p2p/{}",
|
||||
polkadot_bob_id
|
||||
))
|
||||
.arg("--charlie")
|
||||
.spawn()
|
||||
.unwrap();
|
||||
let cumulus_helper = ChildHelper::new("cumulus", &mut cumulus);
|
||||
let cumulus_charlie_helper = ChildHelper::new("cumulus-charlie", &mut cumulus_charlie);
|
||||
wait_for_tcp("127.0.0.1:27017").await;
|
||||
|
||||
// connect rpc client to cumulus
|
||||
let transport_client_cumulus =
|
||||
let transport_client_cumulus_charlie =
|
||||
jsonrpsee::transport::http::HttpTransportClient::new("http://127.0.0.1:27017");
|
||||
let mut client_cumulus = jsonrpsee::raw::RawClient::new(transport_client_cumulus);
|
||||
let mut client_cumulus_charlie =
|
||||
jsonrpsee::raw::RawClient::new(transport_client_cumulus_charlie);
|
||||
|
||||
// wait for parachain blocks to be produced
|
||||
let number_of_blocks = 4;
|
||||
let mut previous_blocks = HashSet::with_capacity(number_of_blocks);
|
||||
loop {
|
||||
let current_block_hash = Chain::block_hash(&mut client_cumulus, None)
|
||||
.await
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
wait_for_blocks(4, &mut client_cumulus_charlie).await;
|
||||
|
||||
if previous_blocks.insert(current_block_hash) {
|
||||
eprintln!("new parachain block: {}", current_block_hash);
|
||||
// run cumulus dave
|
||||
let cumulus_dave_dir = tempdir().unwrap();
|
||||
let mut cumulus_dave = Command::new(cargo_bin("cumulus-test-parachain-collator"))
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::piped())
|
||||
.arg("--base-path")
|
||||
.arg(cumulus_dave_dir.path())
|
||||
.arg("--unsafe-rpc-expose")
|
||||
.arg("--rpc-port=27018")
|
||||
.arg("--port=27118")
|
||||
.arg("--")
|
||||
.arg(format!(
|
||||
"--bootnodes=/ip4/127.0.0.1/tcp/27115/p2p/{}",
|
||||
polkadot_alice_id
|
||||
))
|
||||
.arg(format!(
|
||||
"--bootnodes=/ip4/127.0.0.1/tcp/27116/p2p/{}",
|
||||
polkadot_bob_id
|
||||
))
|
||||
.arg("--dave")
|
||||
.spawn()
|
||||
.unwrap();
|
||||
let cumulus_dave_helper = ChildHelper::new("cumulus-dave", &mut cumulus_dave);
|
||||
wait_for_tcp("127.0.0.1:27018").await;
|
||||
|
||||
if previous_blocks.len() == number_of_blocks {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// connect rpc client to cumulus
|
||||
let transport_client_cumulus_dave =
|
||||
jsonrpsee::transport::http::HttpTransportClient::new("http://127.0.0.1:27018");
|
||||
let mut client_cumulus_dave = jsonrpsee::raw::RawClient::new(transport_client_cumulus_dave);
|
||||
|
||||
sleep(Duration::from_secs(2)).await;
|
||||
}
|
||||
wait_for_blocks(4, &mut client_cumulus_dave).await;
|
||||
}
|
||||
.fuse();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user