Skip to content

Commit 9f4f380

Browse files
authored
Merge pull request #2442 from input-output-hk/djo/2436/hydra-ci-flaky-on-file-logger
test: use a in memory logger for tests that needs to check logs
2 parents 29719ca + 3917613 commit 9f4f380

File tree

21 files changed

+499
-417
lines changed

21 files changed

+499
-417
lines changed

Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-aggregator"
3-
version = "0.7.43"
3+
version = "0.7.44"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-aggregator/src/artifact_builder/cardano_database_artifacts/ancillary.rs

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -275,33 +275,25 @@ mod tests {
275275

276276
#[tokio::test]
277277
async fn upload_ancillary_archive_should_log_upload_errors() {
278-
let log_path = TempDir::create(
279-
"ancillary",
280-
"upload_ancillary_archive_should_log_upload_errors",
281-
)
282-
.join("test.log");
283-
278+
let (logger, log_inspector) = TestLogger::memory();
284279
let mut uploader = MockAncillaryFileUploader::new();
285280
uploader
286281
.expect_upload()
287282
.return_once(|_, _| Err(anyhow!("Failure while uploading...")));
288283

289-
{
290-
let builder = AncillaryArtifactBuilder::new(
291-
vec![Arc::new(uploader)],
292-
Arc::new(DumbSnapshotter::default()),
293-
CardanoNetwork::DevNet(123),
294-
TestLogger::file(&log_path),
295-
)
296-
.unwrap();
284+
let builder = AncillaryArtifactBuilder::new(
285+
vec![Arc::new(uploader)],
286+
Arc::new(DumbSnapshotter::default()),
287+
CardanoNetwork::DevNet(123),
288+
logger,
289+
)
290+
.unwrap();
297291

298-
let _ = builder
299-
.upload_ancillary_archive(&FileArchive::dummy())
300-
.await;
301-
}
292+
let _ = builder
293+
.upload_ancillary_archive(&FileArchive::dummy())
294+
.await;
302295

303-
let logs = std::fs::read_to_string(&log_path).unwrap();
304-
assert!(logs.contains("Failure while uploading..."));
296+
assert!(log_inspector.contains_log("Failure while uploading..."));
305297
}
306298

307299
#[tokio::test]

mithril-aggregator/src/artifact_builder/cardano_database_artifacts/digest.rs

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -444,36 +444,30 @@ mod tests {
444444
#[tokio::test]
445445
async fn upload_digest_file_should_log_upload_errors() {
446446
let temp_dir = TempDir::create("digest", current_function!());
447-
let log_path = temp_dir.join("test.log");
448-
447+
let (logger, log_inspector) = TestLogger::memory();
449448
let mut uploader = MockDigestFileUploader::new();
450449
uploader
451450
.expect_upload()
452451
.return_once(|_, _| Err(anyhow!("Failure while uploading...")));
453452

454-
{
455-
let builder = DigestArtifactBuilder::new(
456-
SanitizedUrlWithTrailingSlash::parse("https://aggregator/").unwrap(),
457-
vec![Arc::new(uploader)],
458-
DigestSnapshotter {
459-
file_archiver: Arc::new(FileArchiver::new_for_test(
460-
temp_dir.join("verification"),
461-
)),
462-
target_location: temp_dir.clone(),
463-
compression_algorithm: CompressionAlgorithm::Gzip,
464-
},
465-
CardanoNetwork::DevNet(123),
466-
PathBuf::from("/tmp/whatever"),
467-
Arc::new(MockImmutableFileDigestMapper::new()),
468-
TestLogger::file(&log_path),
469-
)
470-
.unwrap();
453+
let builder = DigestArtifactBuilder::new(
454+
SanitizedUrlWithTrailingSlash::parse("https://aggregator/").unwrap(),
455+
vec![Arc::new(uploader)],
456+
DigestSnapshotter {
457+
file_archiver: Arc::new(FileArchiver::new_for_test(temp_dir.join("verification"))),
458+
target_location: temp_dir.clone(),
459+
compression_algorithm: CompressionAlgorithm::Gzip,
460+
},
461+
CardanoNetwork::DevNet(123),
462+
PathBuf::from("/tmp/whatever"),
463+
Arc::new(MockImmutableFileDigestMapper::new()),
464+
logger,
465+
)
466+
.unwrap();
471467

472-
let _ = builder.upload_digest_file(&FileArchive::dummy()).await;
473-
}
468+
let _ = builder.upload_digest_file(&FileArchive::dummy()).await;
474469

475-
let logs = std::fs::read_to_string(&log_path).unwrap();
476-
assert!(logs.contains("Failure while uploading..."));
470+
assert!(log_inspector.contains_log("Failure while uploading..."));
477471
}
478472

479473
#[tokio::test]

mithril-aggregator/src/artifact_builder/cardano_database_artifacts/immutable.rs

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use crate::{
1717
DumbUploader, FileUploader,
1818
};
1919

20-
fn immmutable_file_number_extractor(file_uri: &str) -> StdResult<Option<String>> {
20+
fn immutable_file_number_extractor(file_uri: &str) -> StdResult<Option<String>> {
2121
let regex = Regex::new(r".*(\d{5})")?;
2222

2323
Ok(regex
@@ -63,7 +63,7 @@ impl ImmutableFilesUploader for DumbUploader {
6363

6464
let template_uri = MultiFilesUri::extract_template_from_uris(
6565
vec![self.upload(last_file_path).await?.into()],
66-
immmutable_file_number_extractor,
66+
immutable_file_number_extractor,
6767
)?
6868
.ok_or_else(|| {
6969
anyhow!("No matching template found in the uploaded files with 'DumbUploader'")
@@ -89,7 +89,7 @@ impl ImmutableFilesUploader for LocalUploader {
8989
}
9090

9191
let template_uri =
92-
MultiFilesUri::extract_template_from_uris(file_uris, immmutable_file_number_extractor)?
92+
MultiFilesUri::extract_template_from_uris(file_uris, immutable_file_number_extractor)?
9393
.ok_or_else(|| {
9494
anyhow!("No matching template found in the uploaded files with 'LocalUploader'")
9595
})?;
@@ -114,7 +114,7 @@ impl ImmutableFilesUploader for GcpUploader {
114114
}
115115

116116
let template_uri =
117-
MultiFilesUri::extract_template_from_uris(file_uris, immmutable_file_number_extractor)?
117+
MultiFilesUri::extract_template_from_uris(file_uris, immutable_file_number_extractor)?
118118
.ok_or_else(|| {
119119
anyhow!("No matching template found in the uploaded files with 'GcpUploader'")
120120
})?;
@@ -695,8 +695,6 @@ mod tests {
695695
}
696696

697697
mod upload {
698-
use mithril_common::test_utils::TempDir;
699-
700698
use super::MockImmutableFilesUploader;
701699

702700
use super::*;
@@ -715,36 +713,28 @@ mod tests {
715713

716714
#[tokio::test]
717715
async fn upload_immutable_archives_should_log_upload_errors() {
718-
let log_path = TempDir::create(
719-
"immutable",
720-
"upload_immutable_archives_should_log_upload_errors",
721-
)
722-
.join("test.log");
723-
716+
let (logger, log_inspector) = TestLogger::memory();
724717
let mut uploader = MockImmutableFilesUploader::new();
725718
uploader
726719
.expect_batch_upload()
727720
.return_once(|_, _| Err(anyhow!("Failure while uploading...")));
728721

729-
{
730-
let builder = ImmutableArtifactBuilder::new(
731-
get_builder_work_dir("upload_immutable_archives_should_log_upload_errors"),
732-
vec![Arc::new(uploader)],
733-
Arc::new(MockSnapshotter::new()),
734-
TestLogger::file(&log_path),
735-
)
736-
.unwrap();
722+
let builder = ImmutableArtifactBuilder::new(
723+
get_builder_work_dir("upload_immutable_archives_should_log_upload_errors"),
724+
vec![Arc::new(uploader)],
725+
Arc::new(MockSnapshotter::new()),
726+
logger,
727+
)
728+
.unwrap();
737729

738-
let _ = builder
739-
.upload_immutable_archives(
740-
&[PathBuf::from("01.tar.gz"), PathBuf::from("02.tar.gz")],
741-
CompressionAlgorithm::Gzip,
742-
)
743-
.await;
744-
}
730+
let _ = builder
731+
.upload_immutable_archives(
732+
&[PathBuf::from("01.tar.gz"), PathBuf::from("02.tar.gz")],
733+
CompressionAlgorithm::Gzip,
734+
)
735+
.await;
745736

746-
let logs = std::fs::read_to_string(&log_path).unwrap();
747-
assert!(logs.contains("Failure while uploading..."));
737+
assert!(log_inspector.contains_log("Failure while uploading..."));
748738
}
749739

750740
#[tokio::test]
@@ -953,15 +943,14 @@ mod tests {
953943

954944
#[test]
955945
fn returns_none_when_not_templatable_without_5_digits() {
956-
let template = immmutable_file_number_extractor("not-templatable.tar.gz").unwrap();
946+
let template = immutable_file_number_extractor("not-templatable.tar.gz").unwrap();
957947

958948
assert!(template.is_none());
959949
}
960950

961951
#[test]
962952
fn returns_template() {
963-
let template =
964-
immmutable_file_number_extractor("http://whatever/00001.tar.gz").unwrap();
953+
let template = immutable_file_number_extractor("http://whatever/00001.tar.gz").unwrap();
965954

966955
assert_eq!(
967956
template,
@@ -972,7 +961,7 @@ mod tests {
972961
#[test]
973962
fn replaces_last_occurence_of_5_digits() {
974963
let template =
975-
immmutable_file_number_extractor("http://00001/whatever/00001.tar.gz").unwrap();
964+
immutable_file_number_extractor("http://00001/whatever/00001.tar.gz").unwrap();
976965

977966
assert_eq!(
978967
template,
@@ -983,7 +972,7 @@ mod tests {
983972
#[test]
984973
fn replaces_last_occurence_when_more_than_5_digits() {
985974
let template =
986-
immmutable_file_number_extractor("http://whatever/123456789.tar.gz").unwrap();
975+
immutable_file_number_extractor("http://whatever/123456789.tar.gz").unwrap();
987976

988977
assert_eq!(
989978
template,

mithril-aggregator/src/lib.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,15 @@ static GLOBAL: Jemalloc = Jemalloc;
7070

7171
#[cfg(test)]
7272
pub(crate) mod test_tools {
73-
use std::fs::File;
7473
use std::io;
7574
use std::sync::Arc;
7675

7776
use slog::{Drain, Logger};
7877
use slog_async::Async;
7978
use slog_term::{CompactFormat, PlainDecorator};
8079

80+
use mithril_common::test_utils::{MemoryDrainForTest, MemoryDrainForTestInspector};
81+
8182
pub struct TestLogger;
8283

8384
impl TestLogger {
@@ -92,8 +93,9 @@ pub(crate) mod test_tools {
9293
Self::from_writer(slog_term::TestStdoutWriter)
9394
}
9495

95-
pub fn file(filepath: &std::path::Path) -> Logger {
96-
Self::from_writer(File::create(filepath).unwrap())
96+
pub fn memory() -> (Logger, MemoryDrainForTestInspector) {
97+
let (drain, inspector) = MemoryDrainForTest::new();
98+
(Logger::root(drain.fuse(), slog::o!()), inspector)
9799
}
98100
}
99101
}

0 commit comments

Comments
 (0)