Skip to content

Commit e57806f

Browse files
committed
refacto: create a temp_dirmacro that create a temporary path from the current function path
1 parent 3e4e765 commit e57806f

21 files changed

+210
-140
lines changed

mithril-aggregator/src/commands/database_command.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ impl MigrateCommand {
4949
environment: ExecutionEnvironment::Production,
5050
data_stores_directory: self.stores_directory.clone(),
5151
// Temporary solution to avoid the need to provide a full configuration
52-
..Configuration::new_sample()
52+
..Configuration::new_sample(std::env::temp_dir())
5353
};
5454
debug!(root_logger, "DATABASE MIGRATE command"; "config" => format!("{config:?}"));
5555
println!(

mithril-aggregator/src/configuration.rs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ impl Default for ZstandardCompressionParameters {
233233

234234
impl Configuration {
235235
/// Create a sample configuration mainly for tests
236-
pub fn new_sample() -> Self {
236+
pub fn new_sample(tmp_path: PathBuf) -> Self {
237237
let genesis_verification_key = ProtocolGenesisSigner::create_deterministic_genesis_signer()
238238
.create_genesis_verifier()
239239
.to_verification_key();
@@ -263,8 +263,9 @@ impl Configuration {
263263
// crate directory.
264264
// Know issue:
265265
// - There may be collision of the `snapshot_directory` between tests. Tests that
266-
// depend on the `snapshot_directory` should specify their own.
267-
snapshot_directory: std::env::temp_dir(),
266+
// depend on the `snapshot_directory` should specify their own,
267+
// and they can use the `temp_dir` macro for that.
268+
snapshot_directory: tmp_path,
268269
data_stores_directory: PathBuf::from(":memory:"),
269270
genesis_verification_key: genesis_verification_key.to_json_hex().unwrap(),
270271
reset_digests_cache: false,
@@ -592,14 +593,16 @@ impl Source for DefaultConfiguration {
592593

593594
#[cfg(test)]
594595
mod test {
596+
use mithril_common::temp_dir;
597+
595598
use super::*;
596599

597600
#[test]
598601
fn safe_epoch_retention_limit_wont_change_a_value_higher_than_three() {
599602
for limit in 4..=10u64 {
600603
let configuration = Configuration {
601604
store_retention_limit: Some(limit as usize),
602-
..Configuration::new_sample()
605+
..Configuration::new_sample(temp_dir!())
603606
};
604607
assert_eq!(configuration.safe_epoch_retention_limit(), Some(limit));
605608
}
@@ -609,7 +612,7 @@ mod test {
609612
fn safe_epoch_retention_limit_wont_change_a_none_value() {
610613
let configuration = Configuration {
611614
store_retention_limit: None,
612-
..Configuration::new_sample()
615+
..Configuration::new_sample(temp_dir!())
613616
};
614617
assert_eq!(configuration.safe_epoch_retention_limit(), None);
615618
}
@@ -619,7 +622,7 @@ mod test {
619622
for limit in 0..=3 {
620623
let configuration = Configuration {
621624
store_retention_limit: Some(limit),
622-
..Configuration::new_sample()
625+
..Configuration::new_sample(temp_dir!())
623626
};
624627
assert_eq!(configuration.safe_epoch_retention_limit(), Some(3));
625628
}
@@ -645,7 +648,7 @@ mod test {
645648
fn compute_allowed_signed_entity_types_discriminants_append_default_discriminants() {
646649
let config = Configuration {
647650
signed_entity_types: None,
648-
..Configuration::new_sample()
651+
..Configuration::new_sample(temp_dir!())
649652
};
650653

651654
assert_eq!(
@@ -660,14 +663,14 @@ mod test {
660663
fn allow_http_serve_directory() {
661664
let config = Configuration {
662665
snapshot_uploader_type: SnapshotUploaderType::Local,
663-
..Configuration::new_sample()
666+
..Configuration::new_sample(temp_dir!())
664667
};
665668

666669
assert!(config.allow_http_serve_directory());
667670

668671
let config = Configuration {
669672
snapshot_uploader_type: SnapshotUploaderType::Gcp,
670-
..Configuration::new_sample()
673+
..Configuration::new_sample(temp_dir!())
671674
};
672675

673676
assert!(!config.allow_http_serve_directory());
@@ -679,7 +682,7 @@ mod test {
679682
server_ip: "1.2.3.4".to_string(),
680683
server_port: 5678,
681684
public_server_url: None,
682-
..Configuration::new_sample()
685+
..Configuration::new_sample(temp_dir!())
683686
};
684687

685688
assert_eq!(
@@ -694,7 +697,7 @@ mod test {
694697
server_ip: "1.2.3.4".to_string(),
695698
server_port: 5678,
696699
public_server_url: Some("https://example.com".to_string()),
697-
..Configuration::new_sample()
700+
..Configuration::new_sample(temp_dir!())
698701
};
699702

700703
assert_eq!(
@@ -709,7 +712,7 @@ mod test {
709712
server_ip: "1.2.3.4".to_string(),
710713
server_port: 6789,
711714
public_server_url: None,
712-
..Configuration::new_sample()
715+
..Configuration::new_sample(temp_dir!())
713716
};
714717

715718
let joined_url = config
@@ -730,7 +733,7 @@ mod test {
730733
public_server_url: Some(format!(
731734
"https://example.com/{subpath_without_trailing_slash}"
732735
)),
733-
..Configuration::new_sample()
736+
..Configuration::new_sample(temp_dir!())
734737
};
735738

736739
let joined_url = config.get_server_url().unwrap().join("some/path").unwrap();
@@ -744,7 +747,7 @@ mod test {
744747
fn is_slave_aggregator_returns_true_when_in_slave_mode() {
745748
let config = Configuration {
746749
master_aggregator_endpoint: Some("some_endpoint".to_string()),
747-
..Configuration::new_sample()
750+
..Configuration::new_sample(temp_dir!())
748751
};
749752

750753
assert!(config.is_slave_aggregator());
@@ -754,7 +757,7 @@ mod test {
754757
fn is_slave_aggregator_returns_false_when_in_master_mode() {
755758
let config = Configuration {
756759
master_aggregator_endpoint: None,
757-
..Configuration::new_sample()
760+
..Configuration::new_sample(temp_dir!())
758761
};
759762

760763
assert!(!config.is_slave_aggregator());

mithril-aggregator/src/dependency_injection/builder/enablers/cardano_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ impl DependenciesBuilder {
184184

185185
#[cfg(test)]
186186
mod tests {
187-
use mithril_common::entities::SignedEntityTypeDiscriminants;
187+
use mithril_common::{entities::SignedEntityTypeDiscriminants, temp_dir};
188188

189189
use crate::Configuration;
190190

@@ -211,7 +211,7 @@ mod tests {
211211
) {
212212
let configuration = Configuration {
213213
signed_entity_types: Some(signed_entity_types),
214-
..Configuration::new_sample()
214+
..Configuration::new_sample(temp_dir!())
215215
};
216216
let mut dep_builder = DependenciesBuilder::new_with_stdout_logger(configuration);
217217

mithril-aggregator/src/dependency_injection/builder/protocol/artifacts.rs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ impl DependenciesBuilder {
409409

410410
#[cfg(test)]
411411
mod tests {
412-
use mithril_common::test_utils::TempDir;
412+
use mithril_common::temp_dir_create;
413413
use mithril_persistence::sqlite::ConnectionBuilder;
414414

415415
use crate::dependency_injection::builder::CARDANO_DB_ARTIFACTS_DIR;
@@ -419,21 +419,17 @@ mod tests {
419419

420420
#[tokio::test]
421421
async fn if_not_local_uploader_create_cardano_database_immutable_dirs() {
422-
let snapshot_directory = TempDir::create(
423-
"builder",
424-
"if_not_local_uploader_create_cardano_database_immutable_dirs",
425-
);
422+
let snapshot_directory = temp_dir_create!();
426423
let cdb_dir = snapshot_directory.join(CARDANO_DB_ARTIFACTS_DIR);
427424
let ancillary_dir = cdb_dir.join("ancillary");
428425
let immutable_dir = cdb_dir.join("immutable");
429426
let digests_dir = cdb_dir.join("digests");
430427

431428
let mut dep_builder = {
432429
let config = Configuration {
433-
snapshot_directory,
434430
// Test environment yield dumb uploaders
435431
environment: ExecutionEnvironment::Test,
436-
..Configuration::new_sample()
432+
..Configuration::new_sample(snapshot_directory)
437433
};
438434

439435
DependenciesBuilder::new_with_stdout_logger(config)
@@ -455,22 +451,18 @@ mod tests {
455451

456452
#[tokio::test]
457453
async fn if_local_uploader_creates_all_cardano_database_subdirs() {
458-
let snapshot_directory = TempDir::create(
459-
"builder",
460-
"if_local_uploader_creates_all_cardano_database_subdirs",
461-
);
454+
let snapshot_directory = temp_dir_create!();
462455
let cdb_dir = snapshot_directory.join(CARDANO_DB_ARTIFACTS_DIR);
463456
let ancillary_dir = cdb_dir.join("ancillary");
464457
let immutable_dir = cdb_dir.join("immutable");
465458
let digests_dir = cdb_dir.join("digests");
466459

467460
let mut dep_builder = {
468461
let config = Configuration {
469-
snapshot_directory,
470462
// Must use production environment to make `snapshot_uploader_type` effective
471463
environment: ExecutionEnvironment::Production,
472464
snapshot_uploader_type: SnapshotUploaderType::Local,
473-
..Configuration::new_sample()
465+
..Configuration::new_sample(snapshot_directory)
474466
};
475467

476468
DependenciesBuilder::new_with_stdout_logger(config)

mithril-aggregator/src/dependency_injection/containers.rs

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

314-
use mithril_common::test_utils::build_function_path;
314+
use std::path::PathBuf;
315315

316316
use crate::{dependency_injection::DependenciesBuilder, Configuration, DependencyContainer};
317317

318-
/// Initialize dependency container with a unique temporary snapshot directory build fril test path.
318+
/// Initialize dependency container with a unique temporary snapshot directory build from test path.
319319
/// 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
() => {{
323-
initialize_dependencies(module_path!(), mithril_common::current_function!())
323+
initialize_dependencies(mithril_common::temp_dir!())
324324
}};
325325
}
326326

327-
pub async fn initialize_dependencies<M: Into<String>, N: Into<String>>(
328-
module: M,
329-
name: N,
330-
) -> DependencyContainer {
331-
let config = Configuration {
332-
snapshot_directory: std::env::temp_dir().join(build_function_path(module, name)),
333-
..Configuration::new_sample()
334-
};
327+
pub async fn initialize_dependencies(tmp_path: PathBuf) -> DependencyContainer {
328+
let config = Configuration::new_sample(tmp_path);
335329

336330
let mut builder = DependenciesBuilder::new_with_stdout_logger(config);
337331

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

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,14 @@ mod handlers {
192192
mod tests {
193193
use super::*;
194194

195-
use mithril_common::current_function;
196195
use mithril_common::messages::{
197196
CardanoDatabaseImmutableFilesRestoredMessage, SnapshotDownloadMessage,
198197
};
198+
use mithril_common::temp_dir;
199199
use mithril_common::test_utils::apispec::APISpec;
200-
use mithril_common::test_utils::build_function_path;
201200
use tokio::sync::mpsc::UnboundedReceiver;
202201

202+
use std::path::PathBuf;
203203
use std::sync::Arc;
204204
use warp::{
205205
http::{Method, StatusCode},
@@ -227,7 +227,7 @@ mod tests {
227227

228228
#[tokio::test]
229229
async fn post_statistics_ok() {
230-
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
230+
let (dependency_manager, mut rx) = setup_dependencies(temp_dir!()).await;
231231
let snapshot_download_message = SnapshotDownloadMessage::dummy();
232232

233233
let method = Method::POST.as_str();
@@ -396,13 +396,9 @@ mod tests {
396396
}
397397

398398
async fn setup_dependencies(
399-
test_name: &str,
399+
snapshot_directory: PathBuf,
400400
) -> (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-
};
401+
let config = Configuration::new_sample(snapshot_directory);
406402
let mut builder = DependenciesBuilder::new_with_stdout_logger(config);
407403
let rx = builder.get_event_transmitter_receiver().await.unwrap();
408404
let dependency_manager = Arc::new(builder.build_dependency_container().await.unwrap());
@@ -417,7 +413,7 @@ mod tests {
417413

418414
#[tokio::test]
419415
async fn conform_to_open_api_when_created() {
420-
let (dependency_manager, _rx) = setup_dependencies(current_function!()).await;
416+
let (dependency_manager, _rx) = setup_dependencies(temp_dir!()).await;
421417

422418
let response = request()
423419
.method(HTTP_METHOD.as_str())
@@ -443,7 +439,7 @@ mod tests {
443439

444440
#[tokio::test]
445441
async fn should_conform_to_openapi_when_server_error() {
446-
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
442+
let (dependency_manager, mut rx) = setup_dependencies(temp_dir!()).await;
447443
rx.close();
448444

449445
let response = request()
@@ -469,7 +465,7 @@ mod tests {
469465

470466
#[tokio::test]
471467
async fn should_send_event() {
472-
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
468+
let (dependency_manager, mut rx) = setup_dependencies(temp_dir!()).await;
473469

474470
request()
475471
.method(HTTP_METHOD.as_str())
@@ -488,7 +484,7 @@ mod tests {
488484

489485
#[tokio::test]
490486
async fn increments_metric() {
491-
let (dependency_manager, _rx) = setup_dependencies(current_function!()).await;
487+
let (dependency_manager, _rx) = setup_dependencies(temp_dir!()).await;
492488
let metric_counter = dependency_manager
493489
.metrics_service
494490
.get_cardano_database_complete_restoration_since_startup();
@@ -516,7 +512,7 @@ mod tests {
516512

517513
#[tokio::test]
518514
async fn conform_to_open_api_when_created() {
519-
let (dependency_manager, _rx) = setup_dependencies(current_function!()).await;
515+
let (dependency_manager, _rx) = setup_dependencies(temp_dir!()).await;
520516
let response = request()
521517
.method(HTTP_METHOD.as_str())
522518
.json(&Value::Null)
@@ -541,7 +537,7 @@ mod tests {
541537

542538
#[tokio::test]
543539
async fn should_conform_to_openapi_when_server_error() {
544-
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
540+
let (dependency_manager, mut rx) = setup_dependencies(temp_dir!()).await;
545541
rx.close();
546542

547543
let response = request()
@@ -567,7 +563,7 @@ mod tests {
567563

568564
#[tokio::test]
569565
async fn should_send_event() {
570-
let (dependency_manager, mut rx) = setup_dependencies(current_function!()).await;
566+
let (dependency_manager, mut rx) = setup_dependencies(temp_dir!()).await;
571567

572568
request()
573569
.method(HTTP_METHOD.as_str())
@@ -586,7 +582,7 @@ mod tests {
586582

587583
#[tokio::test]
588584
async fn increments_metric() {
589-
let (dependency_manager, _rx) = setup_dependencies(current_function!()).await;
585+
let (dependency_manager, _rx) = setup_dependencies(temp_dir!()).await;
590586
let metric_counter = dependency_manager
591587
.metrics_service
592588
.get_cardano_database_partial_restoration_since_startup();

mithril-aggregator/src/runtime/runner.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -531,11 +531,10 @@ pub mod tests {
531531
};
532532
use async_trait::async_trait;
533533
use chrono::{DateTime, Utc};
534-
use mithril_common::current_function;
535534
use mithril_common::entities::{
536535
ChainPoint, Epoch, SignedEntityConfig, SignedEntityTypeDiscriminants,
537536
};
538-
use mithril_common::test_utils::build_function_path;
537+
use mithril_common::temp_dir;
539538
use mithril_common::{
540539
chain_observer::FakeObserver,
541540
digesters::DumbImmutableFileObserver,
@@ -877,11 +876,7 @@ pub mod tests {
877876
.returning(|_| Ok(()))
878877
.times(1);
879878

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-
};
879+
let config = Configuration::new_sample(temp_dir!());
885880
let mut deps = DependenciesBuilder::new_with_stdout_logger(config.clone())
886881
.build_dependency_container()
887882
.await

0 commit comments

Comments
 (0)