mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 12:51:02 +00:00
Test for not-validator mode (#167)
* WIP Forked at:10533db948Parent branch: origin/master * WIP Forked at:10533db948Parent branch: origin/master * CLEANUP Forked at:10533db948Parent branch: origin/master
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user