Skip to content

Commit 3e4e765

Browse files
committed
refacto: adapt build of container to use a unique temporary snapshot directory
1 parent 2f66acf commit 3e4e765

File tree

6 files changed

+123
-72
lines changed

6 files changed

+123
-72
lines changed

mithril-aggregator/src/dependency_injection/containers.rs

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -311,12 +311,12 @@ impl DependencyContainer {
311311
#[cfg(test)]
312312
pub(crate) mod tests {
313313

314-
use std::path::{Path, PathBuf};
315-
316-
use mithril_common::current_function;
314+
use mithril_common::test_utils::build_function_path;
317315

318316
use crate::{dependency_injection::DependenciesBuilder, Configuration, DependencyContainer};
319317

318+
/// Initialize dependency container with a unique temporary snapshot directory build fril test path.
319+
/// This macro should used directly in a function test to be able to retrieve the function name.
320320
#[macro_export]
321321
macro_rules! initialize_dependencies {
322322
() => {{
@@ -329,36 +329,12 @@ pub(crate) mod tests {
329329
name: N,
330330
) -> DependencyContainer {
331331
let config = Configuration {
332-
snapshot_directory: std::env::temp_dir().join(build_path(module, name)),
332+
snapshot_directory: std::env::temp_dir().join(build_function_path(module, name)),
333333
..Configuration::new_sample()
334334
};
335335

336336
let mut builder = DependenciesBuilder::new_with_stdout_logger(config);
337337

338338
builder.build_dependency_container().await.unwrap()
339339
}
340-
341-
fn build_path<M: Into<String>, N: Into<String>>(module: M, function: N) -> PathBuf {
342-
PathBuf::from(module.into().replace("::", "/")).join(function.into())
343-
}
344-
345-
#[test]
346-
fn test_build_path() {
347-
assert_eq!(
348-
Path::new("module")
349-
.join("sub_module")
350-
.join("file")
351-
.join("function"),
352-
build_path("module::sub_module::file", "function")
353-
);
354-
355-
assert_eq!(
356-
Path::new("mithril_aggregator")
357-
.join("dependency_injection")
358-
.join("containers")
359-
.join("tests")
360-
.join("test_build_path"),
361-
build_path(module_path!(), current_function!())
362-
);
363-
}
364340
}

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,8 @@ mod tests {
190190
era::{EraChecker, SupportedEra},
191191
};
192192

193-
use crate::dependency_injection::DependenciesBuilder;
193+
use crate::initialize_dependencies;
194194
use crate::test_tools::TestLogger;
195-
use crate::Configuration;
196195

197196
use super::*;
198197

@@ -259,12 +258,7 @@ mod tests {
259258

260259
#[tokio::test]
261260
async fn test_404_response_should_include_status_code_and_headers() {
262-
let container = Arc::new(
263-
DependenciesBuilder::new_with_stdout_logger(Configuration::new_sample())
264-
.build_dependency_container()
265-
.await
266-
.unwrap(),
267-
);
261+
let container = Arc::new(initialize_dependencies!().await);
268262
let state = RouterState::new_with_dummy_config(container);
269263
let routes = routes(Arc::new(state));
270264

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

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -192,10 +192,12 @@ mod handlers {
192192
mod tests {
193193
use super::*;
194194

195+
use mithril_common::current_function;
195196
use mithril_common::messages::{
196197
CardanoDatabaseImmutableFilesRestoredMessage, SnapshotDownloadMessage,
197198
};
198199
use mithril_common::test_utils::apispec::APISpec;
200+
use mithril_common::test_utils::build_function_path;
199201
use tokio::sync::mpsc::UnboundedReceiver;
200202

201203
use std::sync::Arc;
@@ -225,10 +227,7 @@ mod tests {
225227

226228
#[tokio::test]
227229
async fn post_statistics_ok() {
228-
let config = Configuration::new_sample();
229-
let mut builder = DependenciesBuilder::new_with_stdout_logger(config);
230-
let mut rx = builder.get_event_transmitter_receiver().await.unwrap();
231-
let dependency_manager = builder.build_dependency_container().await.unwrap();
230+
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
232231
let snapshot_download_message = SnapshotDownloadMessage::dummy();
233232

234233
let method = Method::POST.as_str();
@@ -238,9 +237,9 @@ mod tests {
238237
.method(method)
239238
.json(&snapshot_download_message)
240239
.path(path)
241-
.reply(&setup_router(RouterState::new_with_dummy_config(Arc::new(
240+
.reply(&setup_router(RouterState::new_with_dummy_config(
242241
dependency_manager,
243-
))))
242+
)))
244243
.await;
245244

246245
let result = APISpec::verify_conformity(
@@ -396,8 +395,14 @@ mod tests {
396395
}
397396
}
398397

399-
async fn setup_dependencies() -> (Arc<DependencyContainer>, UnboundedReceiver<EventMessage>) {
400-
let config = Configuration::new_sample();
398+
async fn setup_dependencies(
399+
test_name: &str,
400+
) -> (Arc<DependencyContainer>, UnboundedReceiver<EventMessage>) {
401+
let config = Configuration {
402+
snapshot_directory: std::env::temp_dir()
403+
.join(build_function_path(module_path!(), test_name)),
404+
..Configuration::new_sample()
405+
};
401406
let mut builder = DependenciesBuilder::new_with_stdout_logger(config);
402407
let rx = builder.get_event_transmitter_receiver().await.unwrap();
403408
let dependency_manager = Arc::new(builder.build_dependency_container().await.unwrap());
@@ -412,7 +417,7 @@ mod tests {
412417

413418
#[tokio::test]
414419
async fn conform_to_open_api_when_created() {
415-
let (dependency_manager, _rx) = setup_dependencies().await;
420+
let (dependency_manager, _rx) = setup_dependencies(current_function!()).await;
416421

417422
let response = request()
418423
.method(HTTP_METHOD.as_str())
@@ -438,7 +443,7 @@ mod tests {
438443

439444
#[tokio::test]
440445
async fn should_conform_to_openapi_when_server_error() {
441-
let (dependency_manager, mut rx) = setup_dependencies().await;
446+
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
442447
rx.close();
443448

444449
let response = request()
@@ -464,7 +469,7 @@ mod tests {
464469

465470
#[tokio::test]
466471
async fn should_send_event() {
467-
let (dependency_manager, mut rx) = setup_dependencies().await;
472+
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
468473

469474
request()
470475
.method(HTTP_METHOD.as_str())
@@ -483,7 +488,7 @@ mod tests {
483488

484489
#[tokio::test]
485490
async fn increments_metric() {
486-
let (dependency_manager, _rx) = setup_dependencies().await;
491+
let (dependency_manager, _rx) = setup_dependencies(current_function!()).await;
487492
let metric_counter = dependency_manager
488493
.metrics_service
489494
.get_cardano_database_complete_restoration_since_startup();
@@ -511,7 +516,7 @@ mod tests {
511516

512517
#[tokio::test]
513518
async fn conform_to_open_api_when_created() {
514-
let (dependency_manager, _rx) = setup_dependencies().await;
519+
let (dependency_manager, _rx) = setup_dependencies(current_function!()).await;
515520
let response = request()
516521
.method(HTTP_METHOD.as_str())
517522
.json(&Value::Null)
@@ -536,7 +541,7 @@ mod tests {
536541

537542
#[tokio::test]
538543
async fn should_conform_to_openapi_when_server_error() {
539-
let (dependency_manager, mut rx) = setup_dependencies().await;
544+
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
540545
rx.close();
541546

542547
let response = request()
@@ -562,7 +567,7 @@ mod tests {
562567

563568
#[tokio::test]
564569
async fn should_send_event() {
565-
let (dependency_manager, mut rx) = setup_dependencies().await;
570+
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
566571

567572
request()
568573
.method(HTTP_METHOD.as_str())
@@ -581,7 +586,7 @@ mod tests {
581586

582587
#[tokio::test]
583588
async fn increments_metric() {
584-
let (dependency_manager, _rx) = setup_dependencies().await;
589+
let (dependency_manager, _rx) = setup_dependencies(current_function!()).await;
585590
let metric_counter = dependency_manager
586591
.metrics_service
587592
.get_cardano_database_partial_restoration_since_startup();

mithril-aggregator/src/runtime/runner.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,9 +531,11 @@ pub mod tests {
531531
};
532532
use async_trait::async_trait;
533533
use chrono::{DateTime, Utc};
534+
use mithril_common::current_function;
534535
use mithril_common::entities::{
535536
ChainPoint, Epoch, SignedEntityConfig, SignedEntityTypeDiscriminants,
536537
};
538+
use mithril_common::test_utils::build_function_path;
537539
use mithril_common::{
538540
chain_observer::FakeObserver,
539541
digesters::DumbImmutableFileObserver,
@@ -875,7 +877,11 @@ pub mod tests {
875877
.returning(|_| Ok(()))
876878
.times(1);
877879

878-
let config = Configuration::new_sample();
880+
let config = Configuration {
881+
snapshot_directory: std::env::temp_dir()
882+
.join(build_function_path(module_path!(), current_function!())),
883+
..Configuration::new_sample()
884+
};
879885
let mut deps = DependenciesBuilder::new_with_stdout_logger(config.clone())
880886
.build_dependency_container()
881887
.await

0 commit comments

Comments
 (0)