mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 11:38:01 +00:00
Update to libp2p v0.7.0 (#2343)
* Update to libp2p master * Fix tests * More tests fixing
This commit is contained in:
committed by
Gavin Wood
parent
e2bb429711
commit
3f06fe32f3
@@ -34,7 +34,7 @@ use service::{
|
||||
Roles,
|
||||
FactoryExtrinsic,
|
||||
};
|
||||
use network::{multiaddr, SyncProvider, ManageNetwork};
|
||||
use network::{multiaddr, Multiaddr, SyncProvider, ManageNetwork};
|
||||
use network::config::{NetworkConfiguration, NodeKeyConfig, Secret, NonReservedPeerMode};
|
||||
use sr_primitives::traits::As;
|
||||
use sr_primitives::generic::BlockId;
|
||||
@@ -42,8 +42,8 @@ use consensus::{ImportBlock, BlockImport};
|
||||
|
||||
struct TestNet<F: ServiceFactory> {
|
||||
runtime: Runtime,
|
||||
authority_nodes: Vec<(u32, Arc<F::FullService>)>,
|
||||
full_nodes: Vec<(u32, Arc<F::FullService>)>,
|
||||
authority_nodes: Vec<(u32, Arc<F::FullService>, Multiaddr)>,
|
||||
full_nodes: Vec<(u32, Arc<F::FullService>, Multiaddr)>,
|
||||
_light_nodes: Vec<(u32, Arc<F::LightService>)>,
|
||||
chain_spec: FactoryChainSpec<F>,
|
||||
base_port: u16,
|
||||
@@ -54,7 +54,7 @@ impl<F: ServiceFactory> TestNet<F> {
|
||||
pub fn run_until_all_full<P: Send + Sync + Fn(u32, &F::FullService) -> bool + 'static>(&mut self, predicate: P) {
|
||||
let full_nodes = self.full_nodes.clone();
|
||||
let interval = Interval::new_interval(Duration::from_millis(100)).map_err(|_| ()).for_each(move |_| {
|
||||
if full_nodes.iter().all(|&(ref id, ref service)| predicate(*id, service)) {
|
||||
if full_nodes.iter().all(|&(ref id, ref service, _)| predicate(*id, service)) {
|
||||
Err(())
|
||||
} else {
|
||||
Ok(())
|
||||
@@ -152,16 +152,24 @@ impl<F: ServiceFactory> TestNet<F> {
|
||||
let base_port = self.base_port;
|
||||
let spec = self.chain_spec.clone();
|
||||
let executor = self.runtime.executor();
|
||||
self.authority_nodes.extend(authorities.iter().enumerate().map(|(index, key)| ((index + nodes) as u32,
|
||||
Arc::new(F::new_full(node_config::<F>(index as u32, &spec, Roles::AUTHORITY, Some(key.clone()), base_port, &temp), executor.clone())
|
||||
.expect("Error creating test node service")))
|
||||
));
|
||||
self.authority_nodes.extend(authorities.iter().enumerate().map(|(index, key)| {
|
||||
let node_config = node_config::<F>(index as u32, &spec, Roles::AUTHORITY, Some(key.clone()), base_port, &temp);
|
||||
let addr = node_config.network.listen_addresses.iter().next().unwrap().clone();
|
||||
let service = Arc::new(F::new_full(node_config, executor.clone())
|
||||
.expect("Error creating test node service"));
|
||||
let addr = addr.with(multiaddr::Protocol::P2p(service.network().local_peer_id().into()));
|
||||
((index + nodes) as u32, service, addr)
|
||||
}));
|
||||
nodes += authorities.len();
|
||||
|
||||
self.full_nodes.extend((nodes..nodes + full as usize).map(|index| (index as u32,
|
||||
Arc::new(F::new_full(node_config::<F>(index as u32, &spec, Roles::FULL, None, base_port, &temp), executor.clone())
|
||||
.expect("Error creating test node service")))
|
||||
));
|
||||
self.full_nodes.extend((nodes..nodes + full as usize).map(|index| {
|
||||
let node_config = node_config::<F>(index as u32, &spec, Roles::FULL, None, base_port, &temp);
|
||||
let addr = node_config.network.listen_addresses.iter().next().unwrap().clone();
|
||||
let service = Arc::new(F::new_full(node_config, executor.clone())
|
||||
.expect("Error creating test node service"));
|
||||
let addr = addr.with(multiaddr::Protocol::P2p(service.network().local_peer_id().into()));
|
||||
(index as u32, service, addr)
|
||||
}));
|
||||
nodes += full as usize;
|
||||
|
||||
self._light_nodes.extend((nodes..nodes + light as usize).map(|index| (index as u32,
|
||||
@@ -180,9 +188,9 @@ pub fn connectivity<F: ServiceFactory>(spec: FactoryChainSpec<F>) {
|
||||
let runtime = {
|
||||
let mut network = TestNet::<F>::new(&temp, spec.clone(), NUM_NODES, 0, vec![], 30400);
|
||||
info!("Checking star topology");
|
||||
let first_address = network.full_nodes[0].1.network().node_id().expect("No node address");
|
||||
for (_, service) in network.full_nodes.iter().skip(1) {
|
||||
service.network().add_reserved_peer(first_address.clone()).expect("Error adding reserved peer");
|
||||
let first_address = network.full_nodes[0].2.clone();
|
||||
for (_, service, _) in network.full_nodes.iter().skip(1) {
|
||||
service.network().add_reserved_peer(first_address.to_string()).expect("Error adding reserved peer");
|
||||
}
|
||||
network.run_until_all_full(|_index, service|
|
||||
service.network().peers().len() == NUM_NODES as usize - 1
|
||||
@@ -199,10 +207,10 @@ pub fn connectivity<F: ServiceFactory>(spec: FactoryChainSpec<F>) {
|
||||
{
|
||||
let mut network = TestNet::<F>::new(&temp, spec, NUM_NODES, 0, vec![], 30400);
|
||||
info!("Checking linked topology");
|
||||
let mut address = network.full_nodes[0].1.network().node_id().expect("No node address");
|
||||
for (_, service) in network.full_nodes.iter().skip(1) {
|
||||
service.network().add_reserved_peer(address.clone()).expect("Error adding reserved peer");
|
||||
address = service.network().node_id().expect("No node address");
|
||||
let mut address = network.full_nodes[0].2.clone();
|
||||
for (_, service, node_id) in network.full_nodes.iter().skip(1) {
|
||||
service.network().add_reserved_peer(address.to_string()).expect("Error adding reserved peer");
|
||||
address = node_id.clone();
|
||||
}
|
||||
network.run_until_all_full(|_index, service| {
|
||||
service.network().peers().len() == NUM_NODES as usize - 1
|
||||
@@ -232,11 +240,11 @@ where
|
||||
let import_data = block_factory(&first_service);
|
||||
first_service.client().import_block(import_data, HashMap::new()).expect("Error importing test block");
|
||||
}
|
||||
first_service.network().node_id().unwrap()
|
||||
network.full_nodes[0].2.clone()
|
||||
};
|
||||
info!("Running sync");
|
||||
for (_, service) in network.full_nodes.iter().skip(1) {
|
||||
service.network().add_reserved_peer(first_address.clone()).expect("Error adding reserved peer");
|
||||
for (_, service, _) in network.full_nodes.iter().skip(1) {
|
||||
service.network().add_reserved_peer(first_address.to_string()).expect("Error adding reserved peer");
|
||||
}
|
||||
network.run_until_all_full(|_index, service|
|
||||
service.client().info().unwrap().chain.best_number == As::sa(NUM_BLOCKS as u64)
|
||||
@@ -259,20 +267,20 @@ pub fn consensus<F>(spec: FactoryChainSpec<F>, authorities: Vec<String>)
|
||||
let temp = TempDir::new("substrate-conensus-test").expect("Error creating test dir");
|
||||
let mut network = TestNet::<F>::new(&temp, spec.clone(), NUM_NODES / 2, 0, authorities, 30600);
|
||||
info!("Checking consensus");
|
||||
let first_address = network.authority_nodes[0].1.network().node_id().unwrap();
|
||||
for (_, service) in network.full_nodes.iter() {
|
||||
service.network().add_reserved_peer(first_address.clone()).expect("Error adding reserved peer");
|
||||
let first_address = network.authority_nodes[0].2.clone();
|
||||
for (_, service, _) in network.full_nodes.iter() {
|
||||
service.network().add_reserved_peer(first_address.to_string()).expect("Error adding reserved peer");
|
||||
}
|
||||
for (_, service) in network.authority_nodes.iter().skip(1) {
|
||||
service.network().add_reserved_peer(first_address.clone()).expect("Error adding reserved peer");
|
||||
for (_, service, _) in network.authority_nodes.iter().skip(1) {
|
||||
service.network().add_reserved_peer(first_address.to_string()).expect("Error adding reserved peer");
|
||||
}
|
||||
network.run_until_all_full(|_index, service| {
|
||||
service.client().info().unwrap().chain.finalized_number >= As::sa(NUM_BLOCKS / 2)
|
||||
});
|
||||
info!("Adding more peers");
|
||||
network.insert_nodes(&temp, NUM_NODES / 2, 0, vec![]);
|
||||
for (_, service) in network.full_nodes.iter() {
|
||||
service.network().add_reserved_peer(first_address.clone()).expect("Error adding reserved peer");
|
||||
for (_, service, _) in network.full_nodes.iter() {
|
||||
service.network().add_reserved_peer(first_address.to_string()).expect("Error adding reserved peer");
|
||||
}
|
||||
network.run_until_all_full(|_index, service|
|
||||
service.client().info().unwrap().chain.finalized_number >= As::sa(NUM_BLOCKS)
|
||||
|
||||
Reference in New Issue
Block a user