Use JustifiedBlockAnnounceValidator for parachain block announce validator (#96)

This commit is contained in:
Cecile Tonglet
2020-05-19 17:56:31 +02:00
committed by GitHub
parent dfc95f0d0e
commit 1727dc6291
7 changed files with 115 additions and 24 deletions
@@ -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();