@@ -283,153 +283,15 @@ impl DependencyManager {
283
283
#[ cfg( test) ]
284
284
pub mod tests {
285
285
use crate :: {
286
- configuration:: ExecutionEnvironment , database:: provider:: StakePoolStore ,
287
- event_store:: TransmitterService ,
288
- stake_distribution_service:: MithrilStakeDistributionService , AggregatorConfig ,
289
- CertificatePendingStore , CertificateStore , Configuration , DependencyManager ,
290
- DumbSnapshotUploader , DumbSnapshotter , LocalSnapshotStore , MithrilSignerRegisterer ,
291
- MultiSignerImpl , ProtocolParametersStore , SingleSignatureStore , SnapshotUploaderType ,
292
- VerificationKeyStore ,
293
- } ;
294
- use mithril_common:: {
295
- api_version:: APIVersionProvider ,
296
- certificate_chain:: MithrilCertificateVerifier ,
297
- chain_observer:: FakeObserver ,
298
- crypto_helper:: { key_encode_hex, ProtocolGenesisSigner } ,
299
- digesters:: { DumbImmutableDigester , DumbImmutableFileObserver } ,
300
- era:: {
301
- adapters:: { EraReaderAdapterType , EraReaderBootstrapAdapter } ,
302
- EraChecker , EraReader ,
303
- } ,
304
- store:: adapter:: MemoryAdapter ,
305
- test_utils:: fake_data,
306
- BeaconProvider , BeaconProviderImpl , CardanoNetwork ,
307
- } ;
308
- use sqlite:: Connection ;
309
- use std:: { path:: PathBuf , sync:: Arc } ;
310
- use tokio:: sync:: {
311
- mpsc:: { self } ,
312
- Mutex , RwLock ,
286
+ dependency_injection:: DependenciesBuilder , AggregatorConfig , Configuration ,
287
+ DependencyManager ,
313
288
} ;
289
+ use mithril_common:: CardanoNetwork ;
314
290
315
291
pub async fn initialize_dependencies ( ) -> ( DependencyManager , AggregatorConfig ) {
316
- let genesis_signer = ProtocolGenesisSigner :: create_deterministic_genesis_signer ( ) ;
317
- let genesis_verifier = Arc :: new ( genesis_signer. create_genesis_verifier ( ) ) ;
318
- let genesis_verification_key = genesis_verifier. to_verification_key ( ) ;
319
- let config = Configuration {
320
- environment : ExecutionEnvironment :: Test ,
321
- cardano_cli_path : PathBuf :: new ( ) ,
322
- cardano_node_socket_path : PathBuf :: new ( ) ,
323
- network_magic : Some ( 42 ) ,
324
- network : "whatever" . to_string ( ) ,
325
- protocol_parameters : fake_data:: protocol_parameters ( ) ,
326
- url_snapshot_manifest : "https://storage.googleapis.com/cardano-testnet/snapshots.json"
327
- . to_string ( ) ,
328
- snapshot_uploader_type : SnapshotUploaderType :: Local ,
329
- snapshot_bucket_name : None ,
330
- server_ip : "0.0.0.0" . to_string ( ) ,
331
- server_port : 8000 ,
332
- run_interval : 5000 ,
333
- db_directory : PathBuf :: new ( ) ,
334
- snapshot_directory : PathBuf :: new ( ) ,
335
- data_stores_directory : PathBuf :: new ( ) ,
336
- genesis_verification_key : key_encode_hex ( genesis_verification_key) . unwrap ( ) ,
337
- store_retention_limit : None ,
338
- era_reader_adapter_type : EraReaderAdapterType :: Bootstrap ,
339
- era_reader_adapter_params : None ,
340
- reset_digests_cache : Some ( true ) ,
341
- } ;
342
- let connection = Arc :: new ( Mutex :: new ( Connection :: open ( ":memory:" ) . unwrap ( ) ) ) ;
343
- let snapshot_store = Arc :: new ( LocalSnapshotStore :: new (
344
- Box :: new ( MemoryAdapter :: new ( None ) . unwrap ( ) ) ,
345
- 20 ,
346
- ) ) ;
347
- let snapshot_uploader = Arc :: new ( DumbSnapshotUploader :: new ( ) ) ;
348
- let certificate_pending_store = Arc :: new ( CertificatePendingStore :: new ( Box :: new (
349
- MemoryAdapter :: new ( None ) . unwrap ( ) ,
350
- ) ) ) ;
351
- let certificate_store = Arc :: new ( CertificateStore :: new ( Box :: new (
352
- MemoryAdapter :: new ( None ) . unwrap ( ) ,
353
- ) ) ) ;
354
- let verification_key_store = Arc :: new ( VerificationKeyStore :: new (
355
- Box :: new ( MemoryAdapter :: new ( None ) . unwrap ( ) ) ,
356
- config. store_retention_limit ,
357
- ) ) ;
358
- let single_signature_store = Arc :: new ( SingleSignatureStore :: new (
359
- Box :: new ( MemoryAdapter :: new ( None ) . unwrap ( ) ) ,
360
- config. store_retention_limit ,
361
- ) ) ;
362
- let protocol_parameters_store = Arc :: new ( ProtocolParametersStore :: new (
363
- Box :: new ( MemoryAdapter :: new ( None ) . unwrap ( ) ) ,
364
- None ,
365
- ) ) ;
366
- let stake_pool_store = Arc :: new ( StakePoolStore :: new ( connection. clone ( ) ) ) ;
367
- let multi_signer = MultiSignerImpl :: new (
368
- verification_key_store. clone ( ) ,
369
- stake_pool_store. clone ( ) ,
370
- single_signature_store. clone ( ) ,
371
- protocol_parameters_store. clone ( ) ,
372
- ) ;
373
- let multi_signer = Arc :: new ( RwLock :: new ( multi_signer) ) ;
374
- let immutable_file_observer = Arc :: new ( DumbImmutableFileObserver :: default ( ) ) ;
375
- let chain_observer = Arc :: new ( FakeObserver :: default ( ) ) ;
376
- let beacon_provider = Arc :: new ( BeaconProviderImpl :: new (
377
- chain_observer. clone ( ) ,
378
- immutable_file_observer. clone ( ) ,
379
- CardanoNetwork :: TestNet ( 42 ) ,
380
- ) ) ;
381
- let stake_distribution_service = Arc :: new ( MithrilStakeDistributionService :: new (
382
- stake_pool_store. clone ( ) ,
383
- chain_observer. clone ( ) ,
384
- ) ) ;
385
- let certificate_verifier = Arc :: new ( MithrilCertificateVerifier :: new ( slog_scope:: logger ( ) ) ) ;
386
- let signer_registerer = Arc :: new ( MithrilSignerRegisterer :: new (
387
- chain_observer. clone ( ) ,
388
- verification_key_store. clone ( ) ,
389
- ) ) ;
390
- let era_reader = Arc :: new ( EraReader :: new ( Arc :: new ( EraReaderBootstrapAdapter ) ) ) ;
391
- let era_epoch_token = era_reader
392
- . read_era_epoch_token ( beacon_provider. get_current_beacon ( ) . await . unwrap ( ) . epoch )
393
- . await
394
- . unwrap ( ) ;
395
- let era_checker = Arc :: new ( EraChecker :: new (
396
- era_epoch_token. get_current_supported_era ( ) . unwrap ( ) ,
397
- era_epoch_token. get_current_epoch ( ) ,
398
- ) ) ;
399
- let event_transmitter = {
400
- let ( tx, mut _rx) = mpsc:: unbounded_channel ( ) ;
401
- Arc :: new ( TransmitterService :: new ( tx) )
402
- } ;
403
-
404
- let api_version_provider = Arc :: new ( APIVersionProvider :: new ( era_checker. clone ( ) ) ) ;
405
-
406
- let dependency_manager = DependencyManager {
407
- sqlite_connection : connection,
408
- stake_store : stake_pool_store,
409
- config,
410
- snapshot_store,
411
- snapshot_uploader,
412
- multi_signer,
413
- certificate_pending_store,
414
- certificate_store,
415
- verification_key_store,
416
- single_signature_store,
417
- protocol_parameters_store,
418
- chain_observer,
419
- beacon_provider,
420
- immutable_file_observer,
421
- digester : Arc :: new ( DumbImmutableDigester :: new ( "digest" , true ) ) ,
422
- snapshotter : Arc :: new ( DumbSnapshotter :: new ( ) ) ,
423
- certificate_verifier,
424
- genesis_verifier,
425
- signer_registerer : signer_registerer. clone ( ) ,
426
- signer_registration_round_opener : signer_registerer,
427
- era_checker,
428
- era_reader,
429
- event_transmitter,
430
- api_version_provider,
431
- stake_distribution_service,
432
- } ;
292
+ let config = Configuration :: default ( ) ;
293
+ let mut builder = DependenciesBuilder :: new ( config) ;
294
+ let dependency_manager = builder. build_dependency_container ( ) . await . unwrap ( ) ;
433
295
434
296
let config = AggregatorConfig :: new (
435
297
dependency_manager. config . run_interval ,
0 commit comments