mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 19:11:04 +00:00
client/authority-discovery: Remove sentry node logic (#7368)
* client/authority-discovery: Remove sentry node logic The notion of sentry nodes has been deprecated (see [1] for details). This commit removes support for sentry nodes in the `client/authority-discovery` module. While removing `Role::Sentry` this commit also introduces `Role::Discover`, allowing a node to discover addresses of authorities without publishing ones own addresses. This will be needed in Polkadot for collator nodes. [1] https://github.com/paritytech/substrate/issues/6845 * client/authority-discovery/service: Improve PeerId comment
This commit is contained in:
@@ -303,9 +303,8 @@ fn new_registers_metrics() {
|
||||
from_service,
|
||||
test_api,
|
||||
network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(key_store.into()),
|
||||
Role::PublishAndDiscover(key_store.into()),
|
||||
Some(registry.clone()),
|
||||
);
|
||||
|
||||
@@ -332,9 +331,8 @@ fn triggers_dht_get_query() {
|
||||
from_service,
|
||||
test_api,
|
||||
network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(key_store.into()),
|
||||
Role::PublishAndDiscover(key_store.into()),
|
||||
None,
|
||||
);
|
||||
|
||||
@@ -381,9 +379,8 @@ fn publish_discover_cycle() {
|
||||
from_service,
|
||||
test_api,
|
||||
network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(key_store.into()),
|
||||
Role::PublishAndDiscover(key_store.into()),
|
||||
None,
|
||||
);
|
||||
|
||||
@@ -412,9 +409,8 @@ fn publish_discover_cycle() {
|
||||
from_service,
|
||||
test_api,
|
||||
network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(key_store.into()),
|
||||
Role::PublishAndDiscover(key_store.into()),
|
||||
None,
|
||||
);
|
||||
|
||||
@@ -442,6 +438,7 @@ fn publish_discover_cycle() {
|
||||
|
||||
pool.run();
|
||||
}
|
||||
|
||||
/// Don't terminate when sender side of service channel is dropped. Terminate when network event
|
||||
/// stream terminates.
|
||||
#[test]
|
||||
@@ -458,9 +455,8 @@ fn terminate_when_event_stream_terminates() {
|
||||
from_service,
|
||||
test_api,
|
||||
network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(key_store.into()),
|
||||
Role::PublishAndDiscover(key_store.into()),
|
||||
None,
|
||||
).run();
|
||||
futures::pin_mut!(worker);
|
||||
@@ -485,7 +481,8 @@ fn terminate_when_event_stream_terminates() {
|
||||
"Expect the authority discovery module to terminate once the \
|
||||
sending side of the dht event channel is closed.",
|
||||
);
|
||||
});}
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn dont_stop_polling_dht_event_stream_after_bogus_event() {
|
||||
@@ -520,9 +517,8 @@ fn dont_stop_polling_dht_event_stream_after_bogus_event() {
|
||||
from_service,
|
||||
test_api,
|
||||
network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(Arc::new(key_store)),
|
||||
Role::PublishAndDiscover(Arc::new(key_store)),
|
||||
None,
|
||||
);
|
||||
|
||||
@@ -569,79 +565,6 @@ fn dont_stop_polling_dht_event_stream_after_bogus_event() {
|
||||
});
|
||||
}
|
||||
|
||||
/// In the scenario of a validator publishing the address of its sentry node to
|
||||
/// the DHT, said sentry node should not add its own Multiaddr to the
|
||||
/// peerset "authority" priority group.
|
||||
#[test]
|
||||
fn never_add_own_address_to_priority_group() {
|
||||
let validator_key_store = KeyStore::new();
|
||||
let validator_public = block_on(validator_key_store
|
||||
.sr25519_generate_new(key_types::AUTHORITY_DISCOVERY, None))
|
||||
.unwrap();
|
||||
|
||||
let sentry_network: Arc<TestNetwork> = Arc::new(Default::default());
|
||||
|
||||
let sentry_multiaddr = {
|
||||
let peer_id = sentry_network.local_peer_id();
|
||||
let address: Multiaddr = "/ip6/2001:db8:0:0:0:0:0:2/tcp/30333".parse().unwrap();
|
||||
|
||||
address.with(multiaddr::Protocol::P2p(peer_id.into()))
|
||||
};
|
||||
|
||||
// Address of some other sentry node of `validator`.
|
||||
let random_multiaddr = {
|
||||
let peer_id = PeerId::random();
|
||||
let address: Multiaddr = "/ip6/2001:db8:0:0:0:0:0:1/tcp/30333".parse().unwrap();
|
||||
|
||||
address.with(multiaddr::Protocol::P2p(
|
||||
peer_id.into(),
|
||||
))
|
||||
};
|
||||
|
||||
let dht_event = block_on(build_dht_event(
|
||||
vec![sentry_multiaddr, random_multiaddr.clone()],
|
||||
validator_public.into(),
|
||||
&validator_key_store,
|
||||
));
|
||||
|
||||
let (_dht_event_tx, dht_event_rx) = channel(1);
|
||||
let sentry_test_api = Arc::new(TestApi {
|
||||
// Make sure the sentry node identifies its validator as an authority.
|
||||
authorities: vec![validator_public.into()],
|
||||
});
|
||||
|
||||
let (_to_worker, from_service) = mpsc::channel(0);
|
||||
let mut sentry_worker = Worker::new(
|
||||
from_service,
|
||||
sentry_test_api,
|
||||
sentry_network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Sentry,
|
||||
None,
|
||||
);
|
||||
|
||||
block_on(sentry_worker.refill_pending_lookups_queue()).unwrap();
|
||||
sentry_worker.start_new_lookups();
|
||||
|
||||
sentry_worker.handle_dht_value_found_event(vec![dht_event]).unwrap();
|
||||
block_on(sentry_worker.set_priority_group()).unwrap();
|
||||
|
||||
assert_eq!(
|
||||
sentry_network.set_priority_group_call.lock().unwrap().len(), 1,
|
||||
"Expect authority discovery to set the priority set.",
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sentry_network.set_priority_group_call.lock().unwrap()[0],
|
||||
(
|
||||
"authorities".to_string(),
|
||||
HashSet::from_iter(vec![random_multiaddr.clone()].into_iter(),)
|
||||
),
|
||||
"Expect authority discovery to only add `random_multiaddr`."
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn limit_number_of_addresses_added_to_cache_per_authority() {
|
||||
let remote_key_store = KeyStore::new();
|
||||
@@ -670,9 +593,8 @@ fn limit_number_of_addresses_added_to_cache_per_authority() {
|
||||
from_service,
|
||||
Arc::new(TestApi { authorities: vec![remote_public.into()] }),
|
||||
Arc::new(TestNetwork::default()),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Sentry,
|
||||
Role::Discover,
|
||||
None,
|
||||
);
|
||||
|
||||
@@ -713,7 +635,6 @@ fn do_not_cache_addresses_without_peer_id() {
|
||||
|
||||
let (_dht_event_tx, dht_event_rx) = channel(1);
|
||||
let local_test_api = Arc::new(TestApi {
|
||||
// Make sure the sentry node identifies its validator as an authority.
|
||||
authorities: vec![remote_public.into()],
|
||||
});
|
||||
let local_network: Arc<TestNetwork> = Arc::new(Default::default());
|
||||
@@ -724,9 +645,8 @@ fn do_not_cache_addresses_without_peer_id() {
|
||||
from_service,
|
||||
local_test_api,
|
||||
local_network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(Arc::new(local_key_store)),
|
||||
Role::PublishAndDiscover(Arc::new(local_key_store)),
|
||||
None,
|
||||
);
|
||||
|
||||
@@ -759,9 +679,8 @@ fn addresses_to_publish_adds_p2p() {
|
||||
authorities: vec![],
|
||||
}),
|
||||
network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(Arc::new(KeyStore::new())),
|
||||
Role::PublishAndDiscover(Arc::new(KeyStore::new())),
|
||||
Some(prometheus_endpoint::Registry::new()),
|
||||
);
|
||||
|
||||
@@ -794,9 +713,8 @@ fn addresses_to_publish_respects_existing_p2p_protocol() {
|
||||
authorities: vec![],
|
||||
}),
|
||||
network.clone(),
|
||||
vec![],
|
||||
Box::pin(dht_event_rx),
|
||||
Role::Authority(Arc::new(KeyStore::new())),
|
||||
Role::PublishAndDiscover(Arc::new(KeyStore::new())),
|
||||
Some(prometheus_endpoint::Registry::new()),
|
||||
);
|
||||
|
||||
@@ -836,9 +754,8 @@ fn lookup_throttling() {
|
||||
from_service,
|
||||
Arc::new(TestApi { authorities: remote_public_keys.clone() }),
|
||||
network.clone(),
|
||||
vec![],
|
||||
dht_event_rx.boxed(),
|
||||
Role::Sentry,
|
||||
Role::Discover,
|
||||
Some(default_registry().clone()),
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user