Skip to content

Commit ad4d1db

Browse files
committed
refactor+style: Implement changes asked in PR reviews
* Simpify some code docs. * Enhance `delete_buffered_single_signature` tests * Make some naming more clear
1 parent d06bb6e commit ad4d1db

File tree

13 files changed

+101
-81
lines changed

13 files changed

+101
-81
lines changed

mithril-aggregator/src/database/query/buffered_single_signature/delete_buffered_single_signature.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ mod tests {
5656
use mithril_persistence::sqlite::ConnectionExtensions;
5757

5858
use crate::database::query::GetBufferedSingleSignatureQuery;
59+
use crate::database::record::strip_buffered_sigs_date;
5960
use crate::database::test_helper::{insert_buffered_single_signatures, main_db_connection};
6061

6162
use super::*;
@@ -82,10 +83,17 @@ mod tests {
8283
.unwrap();
8384
assert_eq!(2, cursor.count());
8485

85-
let cursor = connection
86-
.fetch(GetBufferedSingleSignatureQuery::all())
86+
let remaining_records: Vec<BufferedSingleSignatureRecord> = connection
87+
.fetch_collect(GetBufferedSingleSignatureQuery::all())
8788
.unwrap();
88-
assert_eq!(3, cursor.count());
89+
assert_eq!(
90+
strip_buffered_sigs_date(&BufferedSingleSignatureRecord::fakes(&[
91+
("party_2", CardanoTransactions),
92+
("party_1", CardanoTransactions),
93+
("party_2", MithrilStakeDistribution),
94+
])),
95+
strip_buffered_sigs_date(&remaining_records)
96+
);
8997

9098
let cursor = connection
9199
.fetch(
@@ -97,9 +105,15 @@ mod tests {
97105
.unwrap();
98106
assert_eq!(2, cursor.count());
99107

100-
let cursor = connection
101-
.fetch(GetBufferedSingleSignatureQuery::all())
108+
let remaining_records: Vec<BufferedSingleSignatureRecord> = connection
109+
.fetch_collect(GetBufferedSingleSignatureQuery::all())
102110
.unwrap();
103-
assert_eq!(1, cursor.count());
111+
assert_eq!(
112+
strip_buffered_sigs_date(&BufferedSingleSignatureRecord::fakes(&[(
113+
"party_2",
114+
MithrilStakeDistribution
115+
),])),
116+
strip_buffered_sigs_date(&remaining_records)
117+
);
104118
}
105119
}

mithril-aggregator/src/database/record/buffered_single_signature_record.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,17 @@ impl SqLiteEntity for BufferedSingleSignatureRecord {
160160
}
161161
}
162162

163+
/// Test only - strip the date from the given records to make them comparable.
164+
#[cfg(test)]
165+
pub(crate) fn strip_buffered_sigs_date(
166+
records: &[BufferedSingleSignatureRecord],
167+
) -> Vec<BufferedSingleSignatureRecord> {
168+
records
169+
.iter()
170+
.map(BufferedSingleSignatureRecord::with_stripped_date)
171+
.collect::<Vec<_>>()
172+
}
173+
163174
#[cfg(test)]
164175
mod tests {
165176
use mithril_common::entities::SignedEntityTypeDiscriminants::{

mithril-aggregator/src/database/repository/buffered_single_signature_repository.rs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -107,18 +107,11 @@ mod tests {
107107
};
108108
use mithril_common::test_utils::fake_keys;
109109

110-
use crate::database::record::BufferedSingleSignatureRecord;
110+
use crate::database::record::{strip_buffered_sigs_date, BufferedSingleSignatureRecord};
111111
use crate::database::test_helper::{insert_buffered_single_signatures, main_db_connection};
112112

113113
use super::*;
114114

115-
fn strip_date(records: &[BufferedSingleSignatureRecord]) -> Vec<BufferedSingleSignatureRecord> {
116-
records
117-
.iter()
118-
.map(BufferedSingleSignatureRecord::with_stripped_date)
119-
.collect::<Vec<_>>()
120-
}
121-
122115
#[test]
123116
fn retrieve_all() {
124117
let connection = main_db_connection().unwrap();
@@ -136,12 +129,12 @@ mod tests {
136129

137130
let buffered_signatures_ctx = store.get_all().unwrap();
138131
assert_eq!(
139-
strip_date(&BufferedSingleSignatureRecord::fakes(&[
132+
strip_buffered_sigs_date(&BufferedSingleSignatureRecord::fakes(&[
140133
("party3", MithrilStakeDistribution),
141134
("party2", CardanoTransactions),
142135
("party1", CardanoTransactions),
143136
])),
144-
strip_date(&buffered_signatures_ctx)
137+
strip_buffered_sigs_date(&buffered_signatures_ctx)
145138
);
146139
}
147140

@@ -164,22 +157,22 @@ mod tests {
164157
.get_by_discriminant::<BufferedSingleSignatureRecord>(CardanoTransactions)
165158
.unwrap();
166159
assert_eq!(
167-
strip_date(&BufferedSingleSignatureRecord::fakes(&[
160+
strip_buffered_sigs_date(&BufferedSingleSignatureRecord::fakes(&[
168161
("party2", CardanoTransactions),
169162
("party1", CardanoTransactions),
170163
])),
171-
strip_date(&buffered_signatures_ctx)
164+
strip_buffered_sigs_date(&buffered_signatures_ctx)
172165
);
173166

174167
let buffered_signatures_msd = store
175168
.get_by_discriminant::<BufferedSingleSignatureRecord>(MithrilStakeDistribution)
176169
.unwrap();
177170
assert_eq!(
178-
strip_date(&BufferedSingleSignatureRecord::fakes(&[(
171+
strip_buffered_sigs_date(&BufferedSingleSignatureRecord::fakes(&[(
179172
"party3",
180173
MithrilStakeDistribution
181174
),])),
182-
strip_date(&buffered_signatures_msd)
175+
strip_buffered_sigs_date(&buffered_signatures_msd)
183176
);
184177
}
185178

@@ -295,11 +288,11 @@ mod tests {
295288

296289
let remaining_msd_sigs = store.get_all().unwrap();
297290
assert_eq!(
298-
strip_date(&BufferedSingleSignatureRecord::fakes(&[
291+
strip_buffered_sigs_date(&BufferedSingleSignatureRecord::fakes(&[
299292
("party4", CardanoTransactions),
300293
("party2", MithrilStakeDistribution),
301294
])),
302-
strip_date(&remaining_msd_sigs)
295+
strip_buffered_sigs_date(&remaining_msd_sigs)
303296
);
304297
}
305298
}

mithril-aggregator/src/http_server/routes/signatures_routes.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ mod handlers {
3636
use crate::{
3737
http_server::routes::reply,
3838
message_adapters::FromRegisterSingleSignatureAdapter,
39-
services::{CertifierService, CertifierServiceError, RegistrationStatus},
39+
services::{CertifierService, CertifierServiceError, SignatureRegistrationStatus},
4040
unwrap_to_internal_server_error, SingleSignatureAuthenticator,
4141
};
4242

@@ -99,8 +99,8 @@ mod handlers {
9999
Ok(reply::server_error(err))
100100
}
101101
},
102-
Ok(RegistrationStatus::Registered) => Ok(reply::empty(StatusCode::CREATED)),
103-
Ok(RegistrationStatus::Buffered) => Ok(reply::empty(StatusCode::ACCEPTED)),
102+
Ok(SignatureRegistrationStatus::Registered) => Ok(reply::empty(StatusCode::CREATED)),
103+
Ok(SignatureRegistrationStatus::Buffered) => Ok(reply::empty(StatusCode::ACCEPTED)),
104104
}
105105
}
106106
}
@@ -119,7 +119,7 @@ mod tests {
119119
use crate::{
120120
http_server::SERVER_BASE_PATH,
121121
initialize_dependencies,
122-
services::{CertifierServiceError, MockCertifierService, RegistrationStatus},
122+
services::{CertifierServiceError, MockCertifierService, SignatureRegistrationStatus},
123123
SingleSignatureAuthenticator,
124124
};
125125

@@ -145,7 +145,7 @@ mod tests {
145145
.expect_register_single_signature()
146146
.withf(|_, signature| signature.is_authenticated())
147147
.once()
148-
.return_once(move |_, _| Ok(RegistrationStatus::Registered));
148+
.return_once(move |_, _| Ok(SignatureRegistrationStatus::Registered));
149149
let mut dependency_manager = initialize_dependencies().await;
150150
dependency_manager.certifier_service = Arc::new(mock_certifier_service);
151151
dependency_manager.single_signer_authenticator =
@@ -210,7 +210,7 @@ mod tests {
210210
let mut mock_certifier_service = MockCertifierService::new();
211211
mock_certifier_service
212212
.expect_register_single_signature()
213-
.return_once(move |_, _| Ok(RegistrationStatus::Registered));
213+
.return_once(move |_, _| Ok(SignatureRegistrationStatus::Registered));
214214
let mut dependency_manager = initialize_dependencies().await;
215215
dependency_manager.certifier_service = Arc::new(mock_certifier_service);
216216

@@ -243,7 +243,7 @@ mod tests {
243243
let mut mock_certifier_service = MockCertifierService::new();
244244
mock_certifier_service
245245
.expect_register_single_signature()
246-
.return_once(move |_, _| Ok(RegistrationStatus::Buffered));
246+
.return_once(move |_, _| Ok(SignatureRegistrationStatus::Buffered));
247247
let mut dependency_manager = initialize_dependencies().await;
248248
dependency_manager.certifier_service = Arc::new(mock_certifier_service);
249249

@@ -276,7 +276,7 @@ mod tests {
276276
let mut mock_certifier_service = MockCertifierService::new();
277277
mock_certifier_service
278278
.expect_register_single_signature()
279-
.return_once(move |_, _| Ok(RegistrationStatus::Registered));
279+
.return_once(move |_, _| Ok(SignatureRegistrationStatus::Registered));
280280
let mut dependency_manager = initialize_dependencies().await;
281281
dependency_manager.certifier_service = Arc::new(mock_certifier_service);
282282

mithril-aggregator/src/multi_signer.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub trait MultiSigner: Sync + Send {
2727
) -> StdResult<()>;
2828

2929
/// Verify a single signature using the stake distribution of the next epoch
30-
async fn verify_single_signature_for_next_epoch(
30+
async fn verify_single_signature_for_next_stake_distribution(
3131
&self,
3232
message: &str,
3333
signatures: &entities::SingleSignatures,
@@ -87,7 +87,7 @@ impl MultiSigner for MultiSignerImpl {
8787
self.run_verify_single_signature(message, single_signature, protocol_multi_signer)
8888
}
8989

90-
async fn verify_single_signature_for_next_epoch(
90+
async fn verify_single_signature_for_next_stake_distribution(
9191
&self,
9292
message: &str,
9393
single_signature: &entities::SingleSignatures,
@@ -190,7 +190,7 @@ mod tests {
190190
.await
191191
.unwrap();
192192

193-
multi_signer.verify_single_signature_for_next_epoch(&message.to_message(), &signature).await.expect_err(
193+
multi_signer.verify_single_signature_for_next_stake_distribution(&message.to_message(), &signature).await.expect_err(
194194
"single signature issued in the current epoch should not be valid for the next epoch",
195195
);
196196
}
@@ -199,7 +199,7 @@ mod tests {
199199
let next_epoch_signature = next_fixture.signers_fixture()[0].sign(&message).unwrap();
200200

201201
multi_signer
202-
.verify_single_signature_for_next_epoch(
202+
.verify_single_signature_for_next_stake_distribution(
203203
&message.to_message(),
204204
&next_epoch_signature,
205205
)

mithril-aggregator/src/services/certifier/buffered_certifier.rs

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ use mithril_common::StdResult;
1010

1111
use crate::entities::OpenMessage;
1212
use crate::services::{
13-
BufferedSingleSignatureStore, CertifierService, CertifierServiceError, RegistrationStatus,
13+
BufferedSingleSignatureStore, CertifierService, CertifierServiceError,
14+
SignatureRegistrationStatus,
1415
};
1516

16-
/// A decorator of [CertifierService] that buffers that can buffer registration of single signatures
17+
/// A decorator of [CertifierService] that can buffer registration of single signatures
1718
/// when the open message is not yet created.
1819
///
1920
/// When an open message is created, buffered single signatures for the open message type are
@@ -90,7 +91,7 @@ impl CertifierService for BufferedCertifierService {
9091
&self,
9192
signed_entity_type: &SignedEntityType,
9293
signature: &SingleSignatures,
93-
) -> StdResult<RegistrationStatus> {
94+
) -> StdResult<SignatureRegistrationStatus> {
9495
match self
9596
.certifier_service
9697
.register_single_signature(signed_entity_type, signature)
@@ -110,7 +111,7 @@ impl CertifierService for BufferedCertifierService {
110111
.buffer_signature(signed_entity_type.into(), signature)
111112
.await?;
112113

113-
Ok(RegistrationStatus::Buffered)
114+
Ok(SignatureRegistrationStatus::Buffered)
114115
}
115116
_ => Err(error),
116117
},
@@ -122,14 +123,8 @@ impl CertifierService for BufferedCertifierService {
122123
signed_entity_type: &SignedEntityType,
123124
protocol_message: &ProtocolMessage,
124125
) -> StdResult<OpenMessage> {
125-
// IMPORTANT: this method should not fail if the open message creation succeeds.
126-
// else:
127-
// 1 - state machine won't create a pending certificate for the signed entity type
128-
// 2 - Without a pending certificate, the signers won't send their signatures
129-
// 3 - state machine will retry the transition to signing and, since an open message was
130-
// opened for the signed entity type, it will try the next on the list.
131-
// 4 - since the state machine never was in signing it will never try to aggregate
132-
// signatures for the signed entity type
126+
// IMPORTANT: this method should not fail if the open message creation succeeds
127+
// Otherwise, the state machine won't aggregate signatures for this open message.
133128

134129
let creation_result = self
135130
.certifier_service
@@ -234,7 +229,10 @@ mod tests {
234229
async fn run_register_signature_scenario(
235230
decorated_certifier_mock_config: impl FnOnce(&mut MockCertifierService),
236231
signature_to_register: &SingleSignatures,
237-
) -> (StdResult<RegistrationStatus>, Vec<SingleSignatures>) {
232+
) -> (
233+
StdResult<SignatureRegistrationStatus>,
234+
Vec<SingleSignatures>,
235+
) {
238236
let store = Arc::new(BufferedSingleSignatureRepository::new(Arc::new(
239237
main_db_connection().unwrap(),
240238
)));
@@ -267,14 +265,14 @@ mod tests {
267265
|mock_certifier| {
268266
mock_certifier
269267
.expect_register_single_signature()
270-
.returning(|_, _| Ok(RegistrationStatus::Registered));
268+
.returning(|_, _| Ok(SignatureRegistrationStatus::Registered));
271269
},
272270
&SingleSignatures::fake("party_1", "a message"),
273271
)
274272
.await;
275273

276274
let status = registration_result.expect("Registration should have succeed");
277-
assert_eq!(status, RegistrationStatus::Registered);
275+
assert_eq!(status, SignatureRegistrationStatus::Registered);
278276
assert_eq!(
279277
buffered_signatures_after_registration,
280278
Vec::<SingleSignatures>::new()
@@ -306,7 +304,7 @@ mod tests {
306304
.await;
307305

308306
let status = registration_result.expect("Registration should have succeed");
309-
assert_eq!(status, RegistrationStatus::Buffered);
307+
assert_eq!(status, SignatureRegistrationStatus::Buffered);
310308
assert_eq!(
311309
buffered_signatures_after_registration,
312310
vec![SingleSignatures::fake("party_1", "a message")]
@@ -379,14 +377,14 @@ mod tests {
379377
eq(SingleSignatures::fake("party_1", "message 1")),
380378
)
381379
.once()
382-
.returning(|_, _| Ok(RegistrationStatus::Registered));
380+
.returning(|_, _| Ok(SignatureRegistrationStatus::Registered));
383381
mock.expect_register_single_signature()
384382
.with(
385383
eq(SignedEntityType::MithrilStakeDistribution(Epoch(5))),
386384
eq(SingleSignatures::fake("party_2", "message 2")),
387385
)
388386
.once()
389-
.returning(|_, _| Ok(RegistrationStatus::Registered));
387+
.returning(|_, _| Ok(SignatureRegistrationStatus::Registered));
390388
}),
391389
store.clone(),
392390
TestLogger::stdout(),
@@ -441,7 +439,7 @@ mod tests {
441439

442440
mock.expect_register_single_signature()
443441
.with(always(), eq(fake_data::single_signatures(vec![1])))
444-
.returning(|_, _| Ok(RegistrationStatus::Registered))
442+
.returning(|_, _| Ok(SignatureRegistrationStatus::Registered))
445443
.once();
446444
mock.expect_register_single_signature()
447445
.with(always(), eq(fake_data::single_signatures(vec![2])))
@@ -455,7 +453,7 @@ mod tests {
455453
.once();
456454
mock.expect_register_single_signature()
457455
.with(always(), eq(fake_data::single_signatures(vec![3])))
458-
.returning(|_, _| Ok(RegistrationStatus::Registered))
456+
.returning(|_, _| Ok(SignatureRegistrationStatus::Registered))
459457
.once();
460458
},
461459
|mock| {
@@ -482,7 +480,7 @@ mod tests {
482480
mock.expect_create_open_message()
483481
.returning(|_, _| Ok(OpenMessage::dummy()));
484482
mock.expect_register_single_signature()
485-
.returning(|_, _| Ok(RegistrationStatus::Registered));
483+
.returning(|_, _| Ok(SignatureRegistrationStatus::Registered));
486484
},
487485
|mock| {
488486
mock.expect_get_buffered_signatures()
@@ -493,7 +491,7 @@ mod tests {
493491
}
494492

495493
#[tokio::test]
496-
async fn do_not_return_an_error_if_getting_registering_signature_fail() {
494+
async fn do_not_return_an_error_if_registering_signature_fail() {
497495
run_scenario(
498496
|mock| {
499497
mock.expect_create_open_message()
@@ -516,7 +514,7 @@ mod tests {
516514
mock.expect_create_open_message()
517515
.returning(|_, _| Ok(OpenMessage::dummy()));
518516
mock.expect_register_single_signature()
519-
.returning(|_, _| Ok(RegistrationStatus::Registered));
517+
.returning(|_, _| Ok(SignatureRegistrationStatus::Registered));
520518
},
521519
|mock| {
522520
mock.expect_get_buffered_signatures()

0 commit comments

Comments
 (0)