diff --git a/local-cluster/src/cluster.rs b/local-cluster/src/cluster.rs index beb47dda5..1a83b05b1 100644 --- a/local-cluster/src/cluster.rs +++ b/local-cluster/src/cluster.rs @@ -38,6 +38,7 @@ impl ClusterValidatorInfo { pub trait Cluster { fn get_node_pubkeys(&self) -> Vec; fn get_validator_client(&self, pubkey: &Pubkey) -> Option; + fn get_contact_info(&self, pubkey: &Pubkey) -> Option<&ContactInfo>; fn exit_node(&mut self, pubkey: &Pubkey) -> ClusterValidatorInfo; fn restart_node(&mut self, pubkey: &Pubkey, cluster_validator_info: ClusterValidatorInfo); fn exit_restart_node(&mut self, pubkey: &Pubkey, config: ValidatorConfig); diff --git a/local-cluster/src/local_cluster.rs b/local-cluster/src/local_cluster.rs index 1d8b2c786..a3d5a4fde 100644 --- a/local-cluster/src/local_cluster.rs +++ b/local-cluster/src/local_cluster.rs @@ -705,6 +705,10 @@ impl Cluster for LocalCluster { cluster_validator_info.config = validator_config; self.restart_node(pubkey, cluster_validator_info); } + + fn get_contact_info(&self, pubkey: &Pubkey) -> Option<&ContactInfo> { + self.validators.get(pubkey).map(|v| &v.info.contact_info) + } } impl Drop for LocalCluster { diff --git a/local-cluster/tests/local_cluster.rs b/local-cluster/tests/local_cluster.rs index b695eb827..fcd120a2d 100644 --- a/local-cluster/tests/local_cluster.rs +++ b/local-cluster/tests/local_cluster.rs @@ -662,8 +662,11 @@ fn test_snapshot_restart_tower() { cluster.restart_node(&validator_id, validator_info); // Test cluster can still make progress and get confirmations in tower + // Use the restarted node as the discovery point so that we get updated + // validator's ContactInfo + let restarted_node_info = cluster.get_contact_info(&validator_id).unwrap(); cluster_tests::spend_and_verify_all_nodes( - &cluster.entry_point_info, + &restarted_node_info, &cluster.funding_keypair, 1, HashSet::new(),