Skip to content

Commit 9390fe6

Browse files
committed
feat: wire the CardanoDatabaseSignableBuilder in the MithrilSignableBuilderService
1 parent e00ca1e commit 9390fe6

File tree

5 files changed

+82
-20
lines changed

5 files changed

+82
-20
lines changed

mithril-aggregator/src/dependency_injection/builder.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ use mithril_common::{
3535
EraChecker, EraMarker, EraReader, EraReaderAdapter, SupportedEra,
3636
},
3737
signable_builder::{
38-
CardanoImmutableFilesFullSignableBuilder, CardanoStakeDistributionSignableBuilder,
39-
CardanoTransactionsSignableBuilder, MithrilSignableBuilderService,
40-
MithrilStakeDistributionSignableBuilder, SignableBuilderService,
41-
SignableBuilderServiceDependencies, SignableSeedBuilder, TransactionsImporter,
38+
CardanoDatabaseSignableBuilder, CardanoImmutableFilesFullSignableBuilder,
39+
CardanoStakeDistributionSignableBuilder, CardanoTransactionsSignableBuilder,
40+
MithrilSignableBuilderService, MithrilStakeDistributionSignableBuilder,
41+
SignableBuilderService, SignableBuilderServiceDependencies, SignableSeedBuilder,
42+
TransactionsImporter,
4243
},
4344
signed_entity_type_lock::SignedEntityTypeLock,
4445
MithrilTickerService, TickerService,
@@ -1128,12 +1129,18 @@ impl DependenciesBuilder {
11281129
let cardano_stake_distribution_builder = Arc::new(
11291130
CardanoStakeDistributionSignableBuilder::new(self.get_stake_store().await?),
11301131
);
1132+
let cardano_database_signable_builder = Arc::new(CardanoDatabaseSignableBuilder::new(
1133+
self.get_immutable_digester().await?,
1134+
&self.configuration.db_directory,
1135+
self.root_logger(),
1136+
));
11311137
let era_checker = self.get_era_checker().await?;
11321138
let signable_builders_dependencies = SignableBuilderServiceDependencies::new(
11331139
mithril_stake_distribution_builder,
11341140
immutable_signable_builder,
11351141
cardano_transactions_builder,
11361142
cardano_stake_distribution_builder,
1143+
cardano_database_signable_builder,
11371144
);
11381145
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
11391146
era_checker,

mithril-common/src/signable_builder/signable_builder_service.rs

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ pub struct MithrilSignableBuilderService {
3333
immutable_signable_builder: Arc<dyn SignableBuilder<CardanoDbBeacon>>,
3434
cardano_transactions_signable_builder: Arc<dyn SignableBuilder<BlockNumber>>,
3535
cardano_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
36+
cardano_database_signable_builder: Arc<dyn SignableBuilder<CardanoDbBeacon>>,
3637
logger: Logger,
3738
}
3839

@@ -42,6 +43,7 @@ pub struct SignableBuilderServiceDependencies {
4243
immutable_signable_builder: Arc<dyn SignableBuilder<CardanoDbBeacon>>,
4344
cardano_transactions_signable_builder: Arc<dyn SignableBuilder<BlockNumber>>,
4445
cardano_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
46+
cardano_database_signable_builder: Arc<dyn SignableBuilder<CardanoDbBeacon>>,
4547
}
4648

4749
impl SignableBuilderServiceDependencies {
@@ -51,12 +53,14 @@ impl SignableBuilderServiceDependencies {
5153
immutable_signable_builder: Arc<dyn SignableBuilder<CardanoDbBeacon>>,
5254
cardano_transactions_signable_builder: Arc<dyn SignableBuilder<BlockNumber>>,
5355
cardano_stake_distribution_builder: Arc<dyn SignableBuilder<Epoch>>,
56+
cardano_database_signable_builder: Arc<dyn SignableBuilder<CardanoDbBeacon>>,
5457
) -> Self {
5558
Self {
5659
mithril_stake_distribution_builder,
5760
immutable_signable_builder,
5861
cardano_transactions_signable_builder,
5962
cardano_stake_distribution_builder,
63+
cardano_database_signable_builder,
6064
}
6165
}
6266
}
@@ -77,6 +81,7 @@ impl MithrilSignableBuilderService {
7781
cardano_transactions_signable_builder: dependencies
7882
.cardano_transactions_signable_builder,
7983
cardano_stake_distribution_builder: dependencies.cardano_stake_distribution_builder,
84+
cardano_database_signable_builder: dependencies.cardano_database_signable_builder,
8085
logger: logger.new_with_component_name::<Self>(),
8186
}
8287
}
@@ -117,11 +122,14 @@ impl MithrilSignableBuilderService {
117122
.with_context(|| format!(
118123
"Signable builder service can not compute protocol message with block_number: '{block_number}'"
119124
))?,
120-
SignedEntityType::CardanoDatabase(_) => {
121-
return Err(anyhow::anyhow!(
122-
"Signable builder service can not compute protocol message for Cardano database because it is not yet implemented."
123-
));
124-
}
125+
SignedEntityType::CardanoDatabase(beacon) =>
126+
self
127+
.cardano_database_signable_builder
128+
.compute_protocol_message(beacon.clone())
129+
.await
130+
.with_context(|| format!(
131+
"Signable builder service can not compute protocol message for Cardano database with beacon: '{beacon}'"
132+
))?,
125133
};
126134

127135
Ok(protocol_message)
@@ -208,6 +216,7 @@ mod tests {
208216
MockSignableBuilderImpl<CardanoDbBeacon>,
209217
mock_cardano_transactions_signable_builder: MockSignableBuilderImpl<BlockNumber>,
210218
mock_cardano_stake_distribution_signable_builder: MockSignableBuilderImpl<Epoch>,
219+
mock_cardano_database_signable_builder: MockSignableBuilderImpl<CardanoDbBeacon>,
211220
}
212221

213222
impl MockDependencyInjector {
@@ -219,6 +228,7 @@ mod tests {
219228
mock_cardano_immutable_files_full_signable_builder: MockSignableBuilderImpl::new(),
220229
mock_cardano_stake_distribution_signable_builder: MockSignableBuilderImpl::new(),
221230
mock_cardano_transactions_signable_builder: MockSignableBuilderImpl::new(),
231+
mock_cardano_database_signable_builder: MockSignableBuilderImpl::new(),
222232
}
223233
}
224234

@@ -228,6 +238,7 @@ mod tests {
228238
Arc::new(self.mock_cardano_immutable_files_full_signable_builder),
229239
Arc::new(self.mock_cardano_transactions_signable_builder),
230240
Arc::new(self.mock_cardano_stake_distribution_signable_builder),
241+
Arc::new(self.mock_cardano_database_signable_builder),
231242
);
232243

233244
MithrilSignableBuilderService::new(
@@ -340,17 +351,21 @@ mod tests {
340351
}
341352

342353
#[tokio::test]
343-
async fn build_cardano_database_signable_when_given_cardano_database_entity_type_return_error(
344-
) {
354+
async fn build_cardano_database_signable_when_given_cardano_database_entity_type() {
345355
let current_era = SupportedEra::Pythagoras;
346-
let mock_container = MockDependencyInjector::new(current_era);
356+
let mut mock_container = build_mock_container(current_era);
357+
mock_container
358+
.mock_cardano_database_signable_builder
359+
.expect_compute_protocol_message()
360+
.once()
361+
.return_once(|_| Ok(ProtocolMessage::new()));
347362
let signable_builder_service = mock_container.build_signable_builder_service();
348363
let signed_entity_type = SignedEntityType::CardanoDatabase(CardanoDbBeacon::default());
349364

350365
signable_builder_service
351366
.compute_protocol_message(signed_entity_type)
352367
.await
353-
.expect_err("Should return error because CardanoDatabase is not implemented yet.");
368+
.unwrap();
354369
}
355370
}
356371

@@ -443,5 +458,23 @@ mod tests {
443458
.await
444459
.unwrap();
445460
}
461+
462+
#[tokio::test]
463+
async fn build_cardano_database_signable_when_given_cardano_database_entity_type() {
464+
let current_era = SupportedEra::Thales;
465+
let mut mock_container = build_mock_container(current_era);
466+
mock_container
467+
.mock_cardano_database_signable_builder
468+
.expect_compute_protocol_message()
469+
.once()
470+
.return_once(|_| Ok(ProtocolMessage::new()));
471+
let signable_builder_service = mock_container.build_signable_builder_service();
472+
let signed_entity_type = SignedEntityType::CardanoDatabase(CardanoDbBeacon::default());
473+
474+
signable_builder_service
475+
.compute_protocol_message(signed_entity_type)
476+
.await
477+
.unwrap();
478+
}
446479
}
447480
}

mithril-signer/src/dependency_injection/builder.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ use mithril_common::digesters::{
2222
};
2323
use mithril_common::era::{EraChecker, EraReader};
2424
use mithril_common::signable_builder::{
25-
CardanoImmutableFilesFullSignableBuilder, CardanoStakeDistributionSignableBuilder,
26-
CardanoTransactionsSignableBuilder, MithrilSignableBuilderService,
27-
MithrilStakeDistributionSignableBuilder, SignableBuilderServiceDependencies,
25+
CardanoDatabaseSignableBuilder, CardanoImmutableFilesFullSignableBuilder,
26+
CardanoStakeDistributionSignableBuilder, CardanoTransactionsSignableBuilder,
27+
MithrilSignableBuilderService, MithrilStakeDistributionSignableBuilder,
28+
SignableBuilderServiceDependencies,
2829
};
2930
use mithril_common::signed_entity_type_lock::SignedEntityTypeLock;
3031
use mithril_common::{MithrilTickerService, StdResult, TickerService};
@@ -328,6 +329,11 @@ impl<'a> DependenciesBuilder<'a> {
328329
let cardano_stake_distribution_signable_builder = Arc::new(
329330
CardanoStakeDistributionSignableBuilder::new(stake_store.clone()),
330331
);
332+
let cardano_database_signable_builder = Arc::new(CardanoDatabaseSignableBuilder::new(
333+
digester.clone(),
334+
&self.config.db_directory,
335+
self.root_logger(),
336+
));
331337
let epoch_service = Arc::new(RwLock::new(MithrilEpochService::new(
332338
stake_store.clone(),
333339
protocol_initializer_store.clone(),
@@ -347,6 +353,7 @@ impl<'a> DependenciesBuilder<'a> {
347353
cardano_immutable_snapshot_builder,
348354
cardano_transactions_builder,
349355
cardano_stake_distribution_signable_builder,
356+
cardano_database_signable_builder,
350357
);
351358
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
352359
era_checker.clone(),

mithril-signer/src/runtime/runner.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,9 @@ impl Runner for SignerRunner {
327327

328328
#[cfg(test)]
329329
mod tests {
330-
use mithril_common::signable_builder::SignableBuilderServiceDependencies;
330+
use mithril_common::signable_builder::{
331+
CardanoDatabaseSignableBuilder, SignableBuilderServiceDependencies,
332+
};
331333
use mockall::mock;
332334
use mockall::predicate::eq;
333335
use std::collections::BTreeSet;
@@ -447,6 +449,11 @@ mod tests {
447449
let cardano_stake_distribution_builder = Arc::new(
448450
CardanoStakeDistributionSignableBuilder::new(stake_store.clone()),
449451
);
452+
let cardano_database_signable_builder = Arc::new(CardanoDatabaseSignableBuilder::new(
453+
digester.clone(),
454+
Path::new(""),
455+
logger.clone(),
456+
));
450457
let protocol_initializer_store = Arc::new(ProtocolInitializerRepository::new(
451458
sqlite_connection.clone(),
452459
None,
@@ -470,6 +477,7 @@ mod tests {
470477
cardano_immutable_signable_builder,
471478
cardano_transactions_builder,
472479
cardano_stake_distribution_builder,
480+
cardano_database_signable_builder,
473481
);
474482
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
475483
era_checker.clone(),

mithril-signer/tests/test_extensions/state_machine_tester.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ use mithril_common::{
2828
},
2929
era::{adapters::EraReaderDummyAdapter, EraChecker, EraMarker, EraReader, SupportedEra},
3030
signable_builder::{
31-
CardanoImmutableFilesFullSignableBuilder, CardanoStakeDistributionSignableBuilder,
32-
CardanoTransactionsSignableBuilder, MithrilSignableBuilderService,
33-
MithrilStakeDistributionSignableBuilder, SignableBuilderServiceDependencies,
31+
CardanoDatabaseSignableBuilder, CardanoImmutableFilesFullSignableBuilder,
32+
CardanoStakeDistributionSignableBuilder, CardanoTransactionsSignableBuilder,
33+
MithrilSignableBuilderService, MithrilStakeDistributionSignableBuilder,
34+
SignableBuilderServiceDependencies,
3435
},
3536
signed_entity_type_lock::SignedEntityTypeLock,
3637
MithrilTickerService, StdError, TickerService,
@@ -211,6 +212,11 @@ impl StateMachineTester {
211212
let cardano_stake_distribution_builder = Arc::new(
212213
CardanoStakeDistributionSignableBuilder::new(stake_store.clone()),
213214
);
215+
let cardano_database_signable_builder = Arc::new(CardanoDatabaseSignableBuilder::new(
216+
digester.clone(),
217+
Path::new(""),
218+
logger.clone(),
219+
));
214220
let epoch_service = Arc::new(RwLock::new(MithrilEpochService::new(
215221
stake_store.clone(),
216222
protocol_initializer_store.clone(),
@@ -230,6 +236,7 @@ impl StateMachineTester {
230236
cardano_immutable_snapshot_builder,
231237
cardano_transactions_builder,
232238
cardano_stake_distribution_builder,
239+
cardano_database_signable_builder,
233240
);
234241
let signable_builder_service = Arc::new(MithrilSignableBuilderService::new(
235242
era_checker.clone(),

0 commit comments

Comments
 (0)