Skip to content

Commit 0e21965

Browse files
authored
Merge pull request #1846 from input-output-hk/ensemble/1755/block_slot_number_type
Replace `BlockNumber` alias with dedicated structure
2 parents 9f8b589 + 664f3e4 commit 0e21965

File tree

78 files changed

+1768
-744
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1768
-744
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.

internal/mithril-persistence/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-persistence"
3-
version = "0.2.18"
3+
version = "0.2.19"
44
description = "Common types, interfaces, and utilities to persist data for Mithril nodes."
55
authors = { workspace = true }
66
edition = { workspace = true }

internal/mithril-persistence/src/database/hydrator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ mod tests {
9797

9898
#[test]
9999
fn hydrate_cardano_transaction_signed_entity_type() {
100-
let expected = SignedEntityType::CardanoTransactions(Epoch(35), 77);
100+
let expected = SignedEntityType::CardanoTransactions(Epoch(35), BlockNumber(77));
101101
let signed_entity = Hydrator::hydrate_signed_entity_type(
102102
SignedEntityTypeDiscriminants::CardanoTransactions.index(),
103103
&expected.get_json_beacon().unwrap(),

internal/mithril-persistence/src/database/query/block_range_root/delete_block_range_root.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,21 +82,24 @@ mod tests {
8282

8383
let cursor = connection
8484
.fetch(
85-
DeleteBlockRangeRootQuery::contains_or_above_block_number_threshold(100).unwrap(),
85+
DeleteBlockRangeRootQuery::contains_or_above_block_number_threshold(BlockNumber(
86+
100,
87+
))
88+
.unwrap(),
8689
)
8790
.expect("pruning shouldn't crash without block range root stored");
8891
assert_eq!(0, cursor.count());
8992
}
9093

9194
#[test]
9295
fn test_prune_all_data_if_given_block_number_is_lower_than_stored_number_of_block() {
93-
parameterized_test_prune_block_range(0, block_range_root_dataset().len());
96+
parameterized_test_prune_block_range(BlockNumber(0), block_range_root_dataset().len());
9497
}
9598

9699
#[test]
97100
fn test_prune_keep_all_block_range_root_if_given_number_of_block_is_greater_than_the_highest_one(
98101
) {
99-
parameterized_test_prune_block_range(100_000, 0);
102+
parameterized_test_prune_block_range(BlockNumber(100_000), 0);
100103
}
101104

102105
#[test]

internal/mithril-persistence/src/database/query/block_range_root/get_block_range_root.rs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ impl GetBlockRangeRootQuery {
1919

2020
pub fn contains_or_below_block_number(block_number: BlockNumber) -> Self {
2121
Self {
22-
condition: WhereCondition::new("start < ?*", vec![Value::Integer(block_number as i64)]),
22+
condition: WhereCondition::new(
23+
"start < ?*",
24+
vec![Value::Integer(*block_number as i64)],
25+
),
2326
}
2427
}
2528

@@ -60,15 +63,15 @@ mod tests {
6063
fn block_range_root_dataset() -> Vec<BlockRangeRootRecord> {
6164
[
6265
(
63-
BlockRange::from_block_number(15),
66+
BlockRange::from_block_number(BlockNumber(15)),
6467
MKTreeNode::from_hex("AAAA").unwrap(),
6568
),
6669
(
67-
BlockRange::from_block_number(30),
70+
BlockRange::from_block_number(BlockNumber(30)),
6871
MKTreeNode::from_hex("BBBB").unwrap(),
6972
),
7073
(
71-
BlockRange::from_block_number(45),
74+
BlockRange::from_block_number(BlockNumber(45)),
7275
MKTreeNode::from_hex("CCCC").unwrap(),
7376
),
7477
]
@@ -82,7 +85,9 @@ mod tests {
8285
let connection = cardano_tx_db_connection().unwrap();
8386

8487
let cursor: Vec<BlockRangeRootRecord> = connection
85-
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(100))
88+
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(
89+
BlockNumber(100),
90+
))
8691
.unwrap();
8792
assert_eq!(Vec::<BlockRangeRootRecord>::new(), cursor);
8893
}
@@ -95,7 +100,7 @@ mod tests {
95100

96101
let cursor: Vec<BlockRangeRootRecord> = connection
97102
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(
98-
10_000,
103+
BlockNumber(10_000),
99104
))
100105
.unwrap();
101106

@@ -109,7 +114,9 @@ mod tests {
109114
insert_block_range_roots(&connection, dataset.clone());
110115

111116
let cursor: Vec<BlockRangeRootRecord> = connection
112-
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(44))
117+
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(
118+
BlockNumber(44),
119+
))
113120
.unwrap();
114121

115122
assert_eq!(&dataset[0..2], &cursor);
@@ -122,7 +129,9 @@ mod tests {
122129
insert_block_range_roots(&connection, dataset.clone());
123130

124131
let cursor: Vec<BlockRangeRootRecord> = connection
125-
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(45))
132+
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(
133+
BlockNumber(45),
134+
))
126135
.unwrap();
127136

128137
assert_eq!(&dataset[0..2], &cursor);
@@ -135,7 +144,9 @@ mod tests {
135144
insert_block_range_roots(&connection, dataset.clone());
136145

137146
let cursor: Vec<BlockRangeRootRecord> = connection
138-
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(46))
147+
.fetch_collect(GetBlockRangeRootQuery::contains_or_below_block_number(
148+
BlockNumber(46),
149+
))
139150
.unwrap();
140151

141152
assert_eq!(dataset, cursor);

internal/mithril-persistence/src/database/query/cardano_transaction/delete_cardano_transaction.rs

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ mod tests {
6767

6868
fn test_transaction_set() -> Vec<CardanoTransactionRecord> {
6969
vec![
70-
CardanoTransactionRecord::new("tx-hash-0", 10, 50, "block-hash-10"),
71-
CardanoTransactionRecord::new("tx-hash-1", 10, 51, "block-hash-10"),
72-
CardanoTransactionRecord::new("tx-hash-2", 11, 52, "block-hash-11"),
73-
CardanoTransactionRecord::new("tx-hash-3", 11, 53, "block-hash-11"),
74-
CardanoTransactionRecord::new("tx-hash-4", 12, 54, "block-hash-12"),
75-
CardanoTransactionRecord::new("tx-hash-5", 12, 55, "block-hash-12"),
70+
CardanoTransactionRecord::new("tx-hash-0", BlockNumber(10), 50, "block-hash-10"),
71+
CardanoTransactionRecord::new("tx-hash-1", BlockNumber(10), 51, "block-hash-10"),
72+
CardanoTransactionRecord::new("tx-hash-2", BlockNumber(11), 52, "block-hash-11"),
73+
CardanoTransactionRecord::new("tx-hash-3", BlockNumber(11), 53, "block-hash-11"),
74+
CardanoTransactionRecord::new("tx-hash-4", BlockNumber(12), 54, "block-hash-12"),
75+
CardanoTransactionRecord::new("tx-hash-5", BlockNumber(12), 55, "block-hash-12"),
7676
]
7777
}
7878

@@ -84,7 +84,10 @@ mod tests {
8484
let connection = cardano_tx_db_connection().unwrap();
8585

8686
let cursor = connection
87-
.fetch(DeleteCardanoTransactionQuery::below_block_number_threshold(100).unwrap())
87+
.fetch(
88+
DeleteCardanoTransactionQuery::below_block_number_threshold(BlockNumber(100))
89+
.unwrap(),
90+
)
8891
.expect("pruning shouldn't crash without transactions stored");
8992
assert_eq!(0, cursor.count());
9093
}
@@ -95,7 +98,8 @@ mod tests {
9598
insert_transactions(&connection, test_transaction_set());
9699

97100
let query =
98-
DeleteCardanoTransactionQuery::below_block_number_threshold(100_000).unwrap();
101+
DeleteCardanoTransactionQuery::below_block_number_threshold(BlockNumber(100_000))
102+
.unwrap();
99103
let cursor = connection.fetch(query).unwrap();
100104
assert_eq!(test_transaction_set().len(), cursor.count());
101105

@@ -108,7 +112,8 @@ mod tests {
108112
let connection = cardano_tx_db_connection().unwrap();
109113
insert_transactions(&connection, test_transaction_set());
110114

111-
let query = DeleteCardanoTransactionQuery::below_block_number_threshold(0).unwrap();
115+
let query = DeleteCardanoTransactionQuery::below_block_number_threshold(BlockNumber(0))
116+
.unwrap();
112117
let cursor = connection.fetch(query).unwrap();
113118
assert_eq!(0, cursor.count());
114119

@@ -121,7 +126,9 @@ mod tests {
121126
let connection = cardano_tx_db_connection().unwrap();
122127
insert_transactions(&connection, test_transaction_set());
123128

124-
let query = DeleteCardanoTransactionQuery::below_block_number_threshold(12).unwrap();
129+
let query =
130+
DeleteCardanoTransactionQuery::below_block_number_threshold(BlockNumber(12))
131+
.unwrap();
125132
let cursor = connection.fetch(query).unwrap();
126133
assert_eq!(4, cursor.count());
127134

@@ -138,7 +145,10 @@ mod tests {
138145
let connection = cardano_tx_db_connection().unwrap();
139146

140147
let cursor = connection
141-
.fetch(DeleteCardanoTransactionQuery::above_block_number_threshold(100).unwrap())
148+
.fetch(
149+
DeleteCardanoTransactionQuery::above_block_number_threshold(BlockNumber(100))
150+
.unwrap(),
151+
)
142152
.expect("pruning shouldn't crash without transactions stored");
143153
assert_eq!(0, cursor.count());
144154
}
@@ -148,7 +158,8 @@ mod tests {
148158
let connection = cardano_tx_db_connection().unwrap();
149159
insert_transactions(&connection, test_transaction_set());
150160

151-
let query = DeleteCardanoTransactionQuery::above_block_number_threshold(0).unwrap();
161+
let query = DeleteCardanoTransactionQuery::above_block_number_threshold(BlockNumber(0))
162+
.unwrap();
152163
let cursor = connection.fetch(query).unwrap();
153164
assert_eq!(test_transaction_set().len(), cursor.count());
154165

@@ -163,7 +174,8 @@ mod tests {
163174
insert_transactions(&connection, test_transaction_set());
164175

165176
let query =
166-
DeleteCardanoTransactionQuery::above_block_number_threshold(100_000).unwrap();
177+
DeleteCardanoTransactionQuery::above_block_number_threshold(BlockNumber(100_000))
178+
.unwrap();
167179
let cursor = connection.fetch(query).unwrap();
168180
assert_eq!(0, cursor.count());
169181

@@ -176,7 +188,9 @@ mod tests {
176188
let connection = cardano_tx_db_connection().unwrap();
177189
insert_transactions(&connection, test_transaction_set());
178190

179-
let query = DeleteCardanoTransactionQuery::above_block_number_threshold(10).unwrap();
191+
let query =
192+
DeleteCardanoTransactionQuery::above_block_number_threshold(BlockNumber(10))
193+
.unwrap();
180194
let cursor = connection.fetch(query).unwrap();
181195
assert_eq!(4, cursor.count());
182196

internal/mithril-persistence/src/database/query/cardano_transaction/get_cardano_transaction.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ impl GetCardanoTransactionQuery {
3737
let condition = WhereCondition::where_in("transaction_hash", hashes_values).and_where(
3838
WhereCondition::new(
3939
"block_number <= ?*",
40-
vec![Value::Integer(up_to_or_equal as i64)],
40+
vec![Value::Integer(*up_to_or_equal as i64)],
4141
),
4242
);
4343

@@ -50,8 +50,8 @@ impl GetCardanoTransactionQuery {
5050
condition = condition.or_where(WhereCondition::new(
5151
"(block_number >= ?* and block_number < ?*)",
5252
vec![
53-
Value::Integer(block_range.start as i64),
54-
Value::Integer(block_range.end as i64),
53+
Value::Integer(*block_range.start as i64),
54+
Value::Integer(*block_range.end as i64),
5555
],
5656
))
5757
}
@@ -62,11 +62,11 @@ impl GetCardanoTransactionQuery {
6262
pub fn between_blocks(range: Range<BlockNumber>) -> Self {
6363
let condition = WhereCondition::new(
6464
"block_number >= ?*",
65-
vec![Value::Integer(range.start as i64)],
65+
vec![Value::Integer(*range.start as i64)],
6666
)
6767
.and_where(WhereCondition::new(
6868
"block_number < ?*",
69-
vec![Value::Integer(range.end as i64)],
69+
vec![Value::Integer(*range.end as i64)],
7070
));
7171

7272
Self { condition }
@@ -132,10 +132,10 @@ mod tests {
132132
insert_transactions(
133133
&connection,
134134
vec![
135-
CardanoTransactionRecord::new("tx-hash-0", 10, 50, "block-hash-10"),
136-
CardanoTransactionRecord::new("tx-hash-1", 10, 51, "block-hash-10"),
137-
CardanoTransactionRecord::new("tx-hash-2", 11, 54, "block-hash-11"),
138-
CardanoTransactionRecord::new("tx-hash-3", 11, 55, "block-hash-11"),
135+
CardanoTransactionRecord::new("tx-hash-0", BlockNumber(10), 50, "block-hash-10"),
136+
CardanoTransactionRecord::new("tx-hash-1", BlockNumber(10), 51, "block-hash-10"),
137+
CardanoTransactionRecord::new("tx-hash-2", BlockNumber(11), 54, "block-hash-11"),
138+
CardanoTransactionRecord::new("tx-hash-3", BlockNumber(11), 55, "block-hash-11"),
139139
],
140140
);
141141

@@ -144,8 +144,8 @@ mod tests {
144144
.unwrap();
145145
assert_eq!(
146146
vec![
147-
CardanoTransactionRecord::new("tx-hash-2", 11, 54, "block-hash-11"),
148-
CardanoTransactionRecord::new("tx-hash-3", 11, 55, "block-hash-11"),
147+
CardanoTransactionRecord::new("tx-hash-2", BlockNumber(11), 54, "block-hash-11"),
148+
CardanoTransactionRecord::new("tx-hash-3", BlockNumber(11), 55, "block-hash-11"),
149149
],
150150
records
151151
);

internal/mithril-persistence/src/database/record/block_range_root.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use sqlite::Row;
22

33
use mithril_common::crypto_helper::MKTreeNode;
4-
use mithril_common::entities::BlockRange;
4+
use mithril_common::entities::{BlockNumber, BlockRange};
55

66
use crate::database::Hydrator;
77
use crate::sqlite::{HydrationError, Projection, SqLiteEntity};
@@ -37,7 +37,7 @@ impl SqLiteEntity for BlockRangeRootRecord {
3737
{
3838
let start = Hydrator::try_to_u64("block_range.start", row.read::<i64, _>(0))?;
3939
let end = Hydrator::try_to_u64("block_range.end", row.read::<i64, _>(1))?;
40-
let range = BlockRange::from_block_number(start);
40+
let range = BlockRange::from_block_number(BlockNumber(start));
4141
let merkle_root = row.read::<&str, _>(2);
4242

4343
if range.start != start || range.end != end {
@@ -71,8 +71,6 @@ impl SqLiteEntity for BlockRangeRootRecord {
7171
mod tests {
7272
use sqlite::Connection;
7373

74-
use mithril_common::entities::BlockNumber;
75-
7674
use super::*;
7775

7876
fn select_block_range_from_db(start: BlockNumber, end: BlockNumber, merkle_root: &str) -> Row {
@@ -86,13 +84,13 @@ mod tests {
8684
fn hydrate_succeed_if_valid_block_range_in_row() {
8785
// A valid block range has both bounds as multiples of block range length and the interval
8886
// size is equal to block range length.
89-
let row = select_block_range_from_db(0, BlockRange::LENGTH, "AAAA");
87+
let row = select_block_range_from_db(BlockNumber(0), BlockRange::LENGTH, "AAAA");
9088
let res = BlockRangeRootRecord::hydrate(row).expect("Expected hydrate to succeed");
9189

9290
assert_eq!(
9391
res,
9492
BlockRangeRootRecord {
95-
range: BlockRange::from_block_number(0),
93+
range: BlockRange::from_block_number(BlockNumber(0)),
9694
merkle_root: MKTreeNode::from_hex("AAAA").unwrap(),
9795
}
9896
);
@@ -102,11 +100,11 @@ mod tests {
102100
fn hydrate_fail_if_invalid_block_range_in_row() {
103101
for invalid_row in [
104102
// Start is not a multiple of block range length
105-
select_block_range_from_db(1, BlockRange::LENGTH, "AAAA"),
103+
select_block_range_from_db(BlockNumber(1), BlockRange::LENGTH, "AAAA"),
106104
// End is not a multiple of block range length
107-
select_block_range_from_db(0, BlockRange::LENGTH - 1, "AAAA"),
105+
select_block_range_from_db(BlockNumber(0), BlockRange::LENGTH - 1, "AAAA"),
108106
// Interval is not equal to block range length
109-
select_block_range_from_db(0, BlockRange::LENGTH * 4, "AAAA"),
107+
select_block_range_from_db(BlockNumber(0), BlockRange::LENGTH * 4, "AAAA"),
110108
] {
111109
let res =
112110
BlockRangeRootRecord::hydrate(invalid_row).expect_err("Expected hydrate to fail");

0 commit comments

Comments
 (0)