Test for not-validator mode (#167)

* WIP

Forked at: 10533db948
Parent branch: origin/master

* WIP

Forked at: 10533db948
Parent branch: origin/master

* CLEANUP

Forked at: 10533db948
Parent branch: origin/master
This commit is contained in:
Cecile Tonglet
2020-09-16 11:44:52 +02:00
committed by GitHub
parent badf52b1e1
commit 56753b7717
2 changed files with 45 additions and 8 deletions
@@ -79,7 +79,7 @@ async fn integration_test(task_executor: TaskExecutor) {
// register parachain
let _ = alice.call_function(function, Alice).await.unwrap();
// run cumulus charlie
// run cumulus charlie (a validator)
let key = Arc::new(sp_core::Pair::generate().0);
let polkadot_config = polkadot_test_service::node_config(
|| {},
@@ -87,15 +87,43 @@ async fn integration_test(task_executor: TaskExecutor) {
Charlie,
vec![alice.addr.clone(), bob.addr.clone()],
);
let parachain_config = parachain_config(task_executor.clone(), Charlie, vec![], spec).unwrap();
let (charlie_task_manager, charlie_client) =
crate::service::start_node(parachain_config, key, polkadot_config, para_id, true, true)
let charlie_config =
parachain_config(task_executor.clone(), Charlie, vec![], spec.clone()).unwrap();
let multiaddr = charlie_config.network.listen_addresses[0].clone();
let (charlie_task_manager, charlie_client, charlie_network) =
crate::service::start_node(charlie_config, key, polkadot_config, para_id, true, true)
.unwrap();
charlie_client.wait_for_blocks(4).await;
let peer_id = charlie_network.local_peer_id().clone();
let charlie_addr = MultiaddrWithPeerId { multiaddr, peer_id };
// run cumulus dave (not a validator)
//
// a collator running in non-validator mode should be able to sync blocks from the tip of the
// parachain
let key = Arc::new(sp_core::Pair::generate().0);
let polkadot_config = polkadot_test_service::node_config(
|| {},
task_executor.clone(),
Dave,
vec![alice.addr.clone(), bob.addr.clone()],
);
let dave_config = parachain_config(
task_executor.clone(),
Dave,
vec![charlie_addr],
spec.clone(),
)
.unwrap();
let (dave_task_manager, dave_client, _dave_network) =
crate::service::start_node(dave_config, key, polkadot_config, para_id, false, true)
.unwrap();
dave_client.wait_for_blocks(4).await;
alice.task_manager.clean_shutdown();
bob.task_manager.clean_shutdown();
charlie_task_manager.clean_shutdown();
dave_task_manager.clean_shutdown();
}
pub fn parachain_config(
+13 -4
View File
@@ -26,11 +26,12 @@ use sc_client_api::{Backend as BackendT, BlockBackend, Finalizer, UsageProvider}
use sc_executor::native_executor_instance;
pub use sc_executor::NativeExecutor;
use sc_informant::OutputFormat;
use sc_network::NetworkService;
use sc_service::{Configuration, PartialComponents, Role, TFullBackend, TFullClient, TaskManager};
use sp_api::ConstructRuntimeApi;
use sp_blockchain::HeaderBackend;
use sp_consensus::{BlockImport, Environment, Error as ConsensusError, Proposer};
use sp_core::crypto::Pair;
use sp_core::{crypto::Pair, H256};
use sp_runtime::traits::{BlakeTwo256, Block as BlockT};
use sp_trie::PrefixedMemoryDB;
use std::sync::Arc;
@@ -217,7 +218,11 @@ fn start_node_impl<RuntimeApi, Executor, RB>(
validator: bool,
rpc_ext_builder: RB,
test: bool,
) -> sc_service::error::Result<(TaskManager, Arc<TFullClient<Block, RuntimeApi, Executor>>)>
) -> sc_service::error::Result<(
TaskManager,
Arc<TFullClient<Block, RuntimeApi, Executor>>,
Arc<NetworkService<Block, H256>>,
)>
where
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, Executor>>
+ Send
@@ -308,7 +313,10 @@ where
system_rpc_tx,
})?;
let announce_block = Arc::new(move |hash, data| network.announce_block(hash, data));
let announce_block = {
let network = network.clone();
Arc::new(move |hash, data| network.announce_block(hash, data))
};
if validator {
let proposer_factory = sc_basic_authorship::ProposerFactory::new(
@@ -352,7 +360,7 @@ where
start_network.start_network();
Ok((task_manager, client))
Ok((task_manager, client, network))
}
/// Start a normal parachain node.
@@ -366,6 +374,7 @@ pub fn start_node(
) -> sc_service::error::Result<(
TaskManager,
Arc<TFullClient<Block, parachain_runtime::RuntimeApi, RuntimeExecutor>>,
Arc<NetworkService<Block, H256>>,
)> {
start_node_impl::<parachain_runtime::RuntimeApi, RuntimeExecutor, _>(
parachain_config,