Skip to content

Commit 92ac8ca

Browse files
committed
test: add support for ledger and volatile files management in DummyImmutablesDbBuilder
1 parent 4bddc11 commit 92ac8ca

File tree

2 files changed

+61
-9
lines changed

2 files changed

+61
-9
lines changed

mithril-common/src/digesters/cardano_immutable_digester.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ mod tests {
617617
let immutable_db = db_builder("hash_computation_is_quicker_with_a_full_cache")
618618
.with_immutables(&(1..=50).collect::<Vec<ImmutableFileNumber>>())
619619
.append_immutable_trio()
620-
.set_file_size(65536)
620+
.set_immutable_file_size(65536)
621621
.build();
622622
let cache = MemoryImmutableFileDigestCacheProvider::default();
623623
let logger = TestLogger::stdout();

mithril-common/src/digesters/dummy_immutable_db_builder.rs

Lines changed: 60 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ pub struct DummyImmutablesDbBuilder {
1212
immutables_to_write: Vec<ImmutableFileNumber>,
1313
non_immutables_to_write: Vec<String>,
1414
append_uncompleted_trio: bool,
15-
file_size: Option<u64>,
15+
immutable_file_size: Option<u64>,
16+
ledger_files_to_write: Vec<String>,
17+
ledger_file_size: Option<u64>,
18+
volatile_files_to_write: Vec<String>,
19+
volatile_file_size: Option<u64>,
1620
}
1721

1822
/// A dummy cardano immutable db.
@@ -51,7 +55,11 @@ impl DummyImmutablesDbBuilder {
5155
immutables_to_write: vec![],
5256
non_immutables_to_write: vec![],
5357
append_uncompleted_trio: false,
54-
file_size: None,
58+
immutable_file_size: None,
59+
ledger_files_to_write: vec![],
60+
ledger_file_size: None,
61+
volatile_files_to_write: vec![],
62+
volatile_file_size: None,
5563
}
5664
}
5765

@@ -68,6 +76,30 @@ impl DummyImmutablesDbBuilder {
6876
self
6977
}
7078

79+
/// Set ledger files to write to the db in the 'ledger' subdirectory.
80+
pub fn with_ledger_files(&mut self, files: Vec<String>) -> &mut Self {
81+
self.ledger_files_to_write = files;
82+
self
83+
}
84+
85+
/// Set the size of all ledger files written by [build][Self::build] to the given `file_size` in bytes.
86+
pub fn set_ledger_file_size(&mut self, file_size: u64) -> &mut Self {
87+
self.ledger_file_size = Some(file_size);
88+
self
89+
}
90+
91+
/// Set volatile files to write to the db in the 'volatile' subdirectory.
92+
pub fn with_volatile_files(&mut self, files: Vec<String>) -> &mut Self {
93+
self.volatile_files_to_write = files;
94+
self
95+
}
96+
97+
/// Set the size of all volatile files written by [build][Self::build] to the given `file_size` in bytes.
98+
pub fn set_volatile_file_size(&mut self, file_size: u64) -> &mut Self {
99+
self.volatile_file_size = Some(file_size);
100+
self
101+
}
102+
71103
/// Makes [build][Self::build] add another trio of immutables file, that won't be included
72104
/// in its returned vec, to simulate the last 3 'uncompleted / wip' files that can be found in
73105
/// a cardano immutable db.
@@ -76,11 +108,11 @@ impl DummyImmutablesDbBuilder {
76108
self
77109
}
78110

79-
/// Set the size of all files written by [build][Self::build] to the given `file_size` in bytes.
111+
/// Set the size of all immutable files written by [build][Self::build] to the given `file_size` in bytes.
80112
///
81113
/// Note: by default the size of the produced files is less than a 1kb.
82-
pub fn set_file_size(&mut self, file_size: u64) -> &mut Self {
83-
self.file_size = Some(file_size);
114+
pub fn set_immutable_file_size(&mut self, file_size: u64) -> &mut Self {
115+
self.immutable_file_size = Some(file_size);
84116
self
85117
}
86118

@@ -92,7 +124,7 @@ impl DummyImmutablesDbBuilder {
92124

93125
if self.append_uncompleted_trio {
94126
write_immutable_trio(
95-
self.file_size,
127+
self.immutable_file_size,
96128
&self.dir,
97129
match immutable_numbers.last() {
98130
None => 0,
@@ -102,14 +134,34 @@ impl DummyImmutablesDbBuilder {
102134
}
103135

104136
for non_immutable in &self.non_immutables_to_write {
105-
non_immutables_files.push(write_dummy_file(self.file_size, &self.dir, non_immutable));
137+
non_immutables_files.push(write_dummy_file(
138+
self.immutable_file_size,
139+
&self.dir,
140+
non_immutable,
141+
));
142+
}
143+
144+
if !self.ledger_files_to_write.is_empty() {
145+
let ledger_dir = self.dir.parent().unwrap().join("ledger");
146+
std::fs::create_dir_all(&ledger_dir).unwrap();
147+
for filename in &self.ledger_files_to_write {
148+
write_dummy_file(self.ledger_file_size, &ledger_dir, filename);
149+
}
150+
};
151+
152+
if !self.volatile_files_to_write.is_empty() {
153+
let volatile_dir = self.dir.parent().unwrap().join("volatile");
154+
std::fs::create_dir_all(&volatile_dir).unwrap();
155+
for filename in &self.volatile_files_to_write {
156+
write_dummy_file(self.volatile_file_size, &volatile_dir, filename);
157+
}
106158
}
107159

108160
DummyImmutableDb {
109161
dir: self.dir.clone(),
110162
immutables_files: immutable_numbers
111163
.into_iter()
112-
.flat_map(|ifn| write_immutable_trio(self.file_size, &self.dir, ifn))
164+
.flat_map(|ifn| write_immutable_trio(self.immutable_file_size, &self.dir, ifn))
113165
.collect::<Vec<_>>(),
114166
non_immutables_files,
115167
}

0 commit comments

Comments
 (0)