mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 16:21: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
|
// register parachain
|
||||||
let _ = alice.call_function(function, Alice).await.unwrap();
|
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 key = Arc::new(sp_core::Pair::generate().0);
|
||||||
let polkadot_config = polkadot_test_service::node_config(
|
let polkadot_config = polkadot_test_service::node_config(
|
||||||
|| {},
|
|| {},
|
||||||
@@ -87,15 +87,43 @@ async fn integration_test(task_executor: TaskExecutor) {
|
|||||||
Charlie,
|
Charlie,
|
||||||
vec![alice.addr.clone(), bob.addr.clone()],
|
vec![alice.addr.clone(), bob.addr.clone()],
|
||||||
);
|
);
|
||||||
let parachain_config = parachain_config(task_executor.clone(), Charlie, vec![], spec).unwrap();
|
let charlie_config =
|
||||||
let (charlie_task_manager, charlie_client) =
|
parachain_config(task_executor.clone(), Charlie, vec![], spec.clone()).unwrap();
|
||||||
crate::service::start_node(parachain_config, key, polkadot_config, para_id, true, true)
|
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();
|
.unwrap();
|
||||||
charlie_client.wait_for_blocks(4).await;
|
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();
|
alice.task_manager.clean_shutdown();
|
||||||
bob.task_manager.clean_shutdown();
|
bob.task_manager.clean_shutdown();
|
||||||
charlie_task_manager.clean_shutdown();
|
charlie_task_manager.clean_shutdown();
|
||||||
|
dave_task_manager.clean_shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parachain_config(
|
pub fn parachain_config(
|
||||||
|
|||||||
@@ -26,11 +26,12 @@ use sc_client_api::{Backend as BackendT, BlockBackend, Finalizer, UsageProvider}
|
|||||||
use sc_executor::native_executor_instance;
|
use sc_executor::native_executor_instance;
|
||||||
pub use sc_executor::NativeExecutor;
|
pub use sc_executor::NativeExecutor;
|
||||||
use sc_informant::OutputFormat;
|
use sc_informant::OutputFormat;
|
||||||
|
use sc_network::NetworkService;
|
||||||
use sc_service::{Configuration, PartialComponents, Role, TFullBackend, TFullClient, TaskManager};
|
use sc_service::{Configuration, PartialComponents, Role, TFullBackend, TFullClient, TaskManager};
|
||||||
use sp_api::ConstructRuntimeApi;
|
use sp_api::ConstructRuntimeApi;
|
||||||
use sp_blockchain::HeaderBackend;
|
use sp_blockchain::HeaderBackend;
|
||||||
use sp_consensus::{BlockImport, Environment, Error as ConsensusError, Proposer};
|
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_runtime::traits::{BlakeTwo256, Block as BlockT};
|
||||||
use sp_trie::PrefixedMemoryDB;
|
use sp_trie::PrefixedMemoryDB;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@@ -217,7 +218,11 @@ fn start_node_impl<RuntimeApi, Executor, RB>(
|
|||||||
validator: bool,
|
validator: bool,
|
||||||
rpc_ext_builder: RB,
|
rpc_ext_builder: RB,
|
||||||
test: bool,
|
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
|
where
|
||||||
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, Executor>>
|
RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, Executor>>
|
||||||
+ Send
|
+ Send
|
||||||
@@ -308,7 +313,10 @@ where
|
|||||||
system_rpc_tx,
|
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 {
|
if validator {
|
||||||
let proposer_factory = sc_basic_authorship::ProposerFactory::new(
|
let proposer_factory = sc_basic_authorship::ProposerFactory::new(
|
||||||
@@ -352,7 +360,7 @@ where
|
|||||||
|
|
||||||
start_network.start_network();
|
start_network.start_network();
|
||||||
|
|
||||||
Ok((task_manager, client))
|
Ok((task_manager, client, network))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Start a normal parachain node.
|
/// Start a normal parachain node.
|
||||||
@@ -366,6 +374,7 @@ pub fn start_node(
|
|||||||
) -> sc_service::error::Result<(
|
) -> sc_service::error::Result<(
|
||||||
TaskManager,
|
TaskManager,
|
||||||
Arc<TFullClient<Block, parachain_runtime::RuntimeApi, RuntimeExecutor>>,
|
Arc<TFullClient<Block, parachain_runtime::RuntimeApi, RuntimeExecutor>>,
|
||||||
|
Arc<NetworkService<Block, H256>>,
|
||||||
)> {
|
)> {
|
||||||
start_node_impl::<parachain_runtime::RuntimeApi, RuntimeExecutor, _>(
|
start_node_impl::<parachain_runtime::RuntimeApi, RuntimeExecutor, _>(
|
||||||
parachain_config,
|
parachain_config,
|
||||||
|
|||||||
Reference in New Issue
Block a user