Skip to content

Commit d582e7b

Browse files
committed
Remove duplication in FakeAggregator
1 parent 1cf3f79 commit d582e7b

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

mithril-signer/tests/test_extensions/certificate_handler.rs

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,29 @@ impl FakeAggregator {
6565

6666
Ok(time_point)
6767
}
68+
69+
async fn get_current_signers(
70+
&self,
71+
store: &HashMap<Epoch, Vec<Signer>>,
72+
) -> Result<Vec<Signer>, AggregatorClientError> {
73+
let time_point = self.get_time_point().await?;
74+
let epoch = time_point
75+
.epoch
76+
.offset_to_signer_retrieval_epoch()
77+
.map_err(|e| AggregatorClientError::RemoteServerTechnical(anyhow!(e)))?;
78+
79+
Ok(store.get(&epoch).cloned().unwrap_or_default())
80+
}
81+
82+
async fn get_next_signers(
83+
&self,
84+
store: &HashMap<Epoch, Vec<Signer>>,
85+
) -> Result<Vec<Signer>, AggregatorClientError> {
86+
let time_point = self.get_time_point().await?;
87+
let epoch = time_point.epoch.offset_to_next_signer_retrieval_epoch();
88+
89+
Ok(store.get(&epoch).cloned().unwrap_or_default())
90+
}
6891
}
6992

7093
#[async_trait]
@@ -75,20 +98,11 @@ impl AggregatorClient for FakeAggregator {
7598
if *self.withhold_epoch_settings.read().await {
7699
Ok(None)
77100
} else {
101+
let store = self.registered_signers.read().await;
78102
let time_point = self.get_time_point().await?;
103+
let current_signers = self.get_current_signers(&store).await?;
104+
let next_signers = self.get_next_signers(&store).await?;
79105

80-
// TODO create method and also use it in retrieve_pending_certificate
81-
let store = self.registered_signers.read().await;
82-
let current_signers = store
83-
.get(&time_point.epoch.offset_to_signer_retrieval_epoch().unwrap())
84-
.cloned()
85-
.unwrap_or_default();
86-
let next_signers = store
87-
.get(&time_point.epoch.offset_to_next_signer_retrieval_epoch())
88-
.cloned()
89-
.unwrap_or_default();
90-
91-
// TODO sans signers into epoch_settings
92106
Ok(Some(EpochSettings {
93107
epoch: time_point.epoch,
94108
current_signers,
@@ -118,15 +132,8 @@ impl AggregatorClient for FakeAggregator {
118132
..fake_data::certificate_pending()
119133
};
120134

121-
let store = self.registered_signers.read().await;
122-
certificate_pending.signers = store
123-
.get(&time_point.epoch.offset_to_signer_retrieval_epoch().unwrap())
124-
.cloned()
125-
.unwrap_or_default();
126-
certificate_pending.next_signers = store
127-
.get(&time_point.epoch.offset_to_next_signer_retrieval_epoch())
128-
.cloned()
129-
.unwrap_or_default();
135+
certificate_pending.signers = self.get_current_signers(&store).await?;
136+
certificate_pending.next_signers = self.get_next_signers(&store).await?;
130137

131138
Ok(Some(certificate_pending))
132139
}
@@ -228,7 +235,7 @@ mod tests {
228235

229236
#[tokio::test]
230237
async fn retrieve_epoch_settings() {
231-
// TODO check signers and next signers
238+
// TODO XXX check signers and next signers
232239
let (chain_observer, fake_aggregator) = init().await;
233240
let fake_signers = fake_data::signers(2);
234241
let epoch = chain_observer.get_current_epoch().await.unwrap().unwrap();

0 commit comments

Comments
 (0)