Skip to content

Commit 777740d

Browse files
committed
chore: added full test e2e make target
Signed-off-by: jeluard <[email protected]>
1 parent 264d9a4 commit 777740d

File tree

4 files changed

+45
-31
lines changed

4 files changed

+45
-31
lines changed

crates/amaru-ledger/src/rules/block.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@ use crate::{
2525
state::FailedTransactions,
2626
};
2727
use amaru_kernel::{
28-
protocol_parameters::ProtocolParameters, AuxiliaryData, HasExUnits, Hash, MintedBlock,
29-
OriginalHash, StakeCredential, TransactionPointer,
28+
protocol_parameters::ProtocolParameters, AuxiliaryData, Hash, MintedBlock, OriginalHash,
29+
StakeCredential, TransactionPointer,
3030
};
3131
use std::ops::{ControlFlow, Deref, FromResidual, Try};
3232
use tracing::{instrument, Level};
3333

34+
#[derive(Debug)]
3435
pub enum InvalidBlock {
3536
Size(InvalidBlockSize),
3637
ExUnits(InvalidExUnits),
@@ -43,6 +44,7 @@ pub enum InvalidBlock {
4344
UncategorizedError(String),
4445
}
4546

47+
#[derive(Debug)]
4648
pub enum BlockValidation {
4749
Valid,
4850
Invalid(InvalidBlock),
@@ -76,6 +78,15 @@ impl FromResidual for BlockValidation {
7678
}
7779
}
7880

81+
impl From<BlockValidation> for Result<(), InvalidBlock> {
82+
fn from(validation: BlockValidation) -> Self {
83+
match validation {
84+
BlockValidation::Valid => Ok(()),
85+
BlockValidation::Invalid(e) => Err(e),
86+
}
87+
}
88+
}
89+
7990
#[instrument(level = Level::TRACE, skip_all)]
8091
pub fn execute<C: ValidationContext<FinalState = S>, S: From<C>>(
8192
context: &mut C,

crates/amaru-ledger/src/rules/block/body_size.rs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use crate::context::ValidationContext;
1818

1919
use super::{BlockValidation, InvalidBlock};
2020

21+
#[derive(Debug)]
2122
pub enum InvalidBlockSize {
2223
SizeMismatch { supplied: usize, actual: usize },
2324
}
@@ -58,9 +59,11 @@ fn calculate_block_body_size(block: &MintedBlock<'_>) -> usize {
5859

5960
#[cfg(test)]
6061
mod tests {
61-
use amaru_kernel::{include_cbor, MintedBlock};
62+
use amaru_kernel::{include_cbor, protocol_parameters::ProtocolParameters, MintedBlock};
6263
use test_case::test_case;
6364

65+
use crate::{context::DefaultValidationContext, rules::block::InvalidBlock};
66+
6467
use super::InvalidBlockSize;
6568

6669
macro_rules! fixture {
@@ -72,13 +75,23 @@ mod tests {
7275
};
7376
}
7477

78+
/*fn aa() {
79+
let mut context = DefaultValidationContext::new(Default::default());
80+
let res = super::block_body_size_valid(&mut context, &block, &ProtocolParameters::default());
81+
matches res {
82+
BlockValidation::Invalid(InvalidBlock::Size(InvalidBlockSize::SizeMismatch {supplied, actual}));
83+
if supplied == 0 && actual == 3411;
84+
} Err(InvalidBlockSize::SizeMismatch {supplied, actual})
85+
if supplied == 0 && actual == 3411;
86+
}*/
87+
7588
#[test_case(fixture!("2667660"); "valid")]
76-
#[test_case(fixture!("2667660", "invalid_block_body_size") =>
77-
matches Err(InvalidBlockSize::SizeMismatch {supplied, actual})
89+
#[test_case(fixture!("2667660", "invalid_block_body_size") =>
90+
matches Err(InvalidBlock::Size(InvalidBlockSize::SizeMismatch {supplied, actual}))
7891
if supplied == 0 && actual == 3411;
79-
"block body size mismatch"
80-
)]
81-
fn test_block_size(block: MintedBlock<'_>) -> Result<(), InvalidBlockSize> {
82-
super::block_body_size_valid(&block.header.header_body, &block)
92+
"block body size mismatch")]
93+
fn test_block_size(block: MintedBlock<'_>) -> Result<(), InvalidBlock> {
94+
let mut context = DefaultValidationContext::new(Default::default());
95+
super::block_body_size_valid(&mut context, &block, &ProtocolParameters::default()).into()
8396
}
8497
}

crates/amaru-ledger/src/rules/block/ex_units.rs

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,15 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
use std::ops::Deref;
16-
1715
use amaru_kernel::{
18-
protocol_parameters::ProtocolParameters, sum_ex_units, ExUnits, MintedBlock, Redeemers,
16+
protocol_parameters::ProtocolParameters, sum_ex_units, ExUnits, HasExUnits, MintedBlock,
1917
};
2018

2119
use crate::context::ValidationContext;
2220

2321
use super::{BlockValidation, InvalidBlock};
2422

23+
#[derive(Debug)]
2524
pub enum InvalidExUnits {
2625
TooMany { provided: ExUnits, max: ExUnits },
2726
}
@@ -32,20 +31,7 @@ pub fn block_ex_units_valid<C: ValidationContext>(
3231
protocol_parameters: &ProtocolParameters,
3332
) -> BlockValidation {
3433
// TODO: rewrite this to use iterators defined on `Redeemers` and `MaybeIndefArray`, ideally
35-
let ex_units = block
36-
.transaction_witness_sets
37-
.iter()
38-
.flat_map(|witness_set| {
39-
witness_set
40-
.redeemer
41-
.iter()
42-
.map(|redeemers| match redeemers.deref() {
43-
Redeemers::List(list) => list.iter().map(|r| r.ex_units).collect::<Vec<_>>(),
44-
Redeemers::Map(map) => map.iter().map(|(_, r)| r.ex_units).collect::<Vec<_>>(),
45-
})
46-
})
47-
.flatten()
48-
.collect::<Vec<_>>();
34+
let ex_units = block.ex_units();
4935

5036
let pp_max_ex_units = protocol_parameters.max_block_ex_units;
5137
let ex_units = ex_units
@@ -67,9 +53,11 @@ pub fn block_ex_units_valid<C: ValidationContext>(
6753

6854
#[cfg(test)]
6955
mod tests {
56+
use crate::{context::DefaultValidationContext, rules::block::InvalidBlock};
57+
7058
use super::InvalidExUnits;
7159
use amaru_kernel::{
72-
include_cbor, protocol_parameters::ProtocolParameters, ExUnits, HasExUnits, MintedBlock,
60+
include_cbor, protocol_parameters::ProtocolParameters, ExUnits, MintedBlock,
7361
};
7462
use test_case::test_case;
7563

@@ -95,11 +83,12 @@ mod tests {
9583
steps: 0
9684
},
9785
..Default::default()
98-
}) => matches Err(InvalidExUnits::TooMany{provided, max: _})
99-
if provided == ExUnits {mem: 1267029, steps: 289959162}; "invalid ex units")]
86+
}) => matches Err(InvalidBlock::ExUnits(InvalidExUnits::TooMany{provided, max: _}))
87+
if provided == ExUnits {mem: 1267029, steps: 289959162}; "invalid ex units")]
10088
fn test_ex_units(
10189
(block, protocol_parameters): (MintedBlock<'_>, ProtocolParameters),
102-
) -> Result<(), InvalidExUnits> {
103-
super::block_ex_units_valid(block.ex_units(), &protocol_parameters)
90+
) -> Result<(), InvalidBlock> {
91+
let mut context = DefaultValidationContext::new(Default::default());
92+
super::block_ex_units_valid(&mut context, &block, &protocol_parameters).into()
10493
}
10594
}

crates/amaru-ledger/src/rules/block/header_size.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use crate::context::ValidationContext;
1818

1919
use super::{BlockValidation, InvalidBlock};
2020

21+
#[derive(Debug)]
2122
pub enum InvalidBlockHeader {
2223
SizeTooBig { supplied: usize, max: usize },
2324
}

0 commit comments

Comments
 (0)