mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-24 05:31:09 +00:00
fixed actual dispatch weight calculation (#658)
This commit is contained in:
committed by
Bastian Köcher
parent
d630b6f751
commit
8be43d1e63
@@ -379,9 +379,9 @@ decl_module! {
|
|||||||
.messages
|
.messages
|
||||||
.iter()
|
.iter()
|
||||||
.map(T::MessageDispatch::dispatch_weight)
|
.map(T::MessageDispatch::dispatch_weight)
|
||||||
.sum::<Weight>()
|
.fold(0, |sum, weight| sum.saturating_add(&weight))
|
||||||
)
|
)
|
||||||
.sum();
|
.fold(0, |sum, weight| sum.saturating_add(weight));
|
||||||
if dispatch_weight < actual_dispatch_weight {
|
if dispatch_weight < actual_dispatch_weight {
|
||||||
frame_support::debug::trace!(
|
frame_support::debug::trace!(
|
||||||
"Rejecting messages proof because of dispatch weight mismatch: declared={}, expected={}",
|
"Rejecting messages proof because of dispatch weight mismatch: declared={}, expected={}",
|
||||||
@@ -755,8 +755,8 @@ fn verify_and_decode_messages_proof<Chain: SourceHeaderChain<Fee>, Fee, Dispatch
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::mock::{
|
use crate::mock::{
|
||||||
message, run_test, Origin, TestEvent, TestMessageDeliveryAndDispatchPayment, TestMessagesProof, TestRuntime,
|
message, run_test, Origin, TestEvent, TestMessageDeliveryAndDispatchPayment, TestMessagesProof, TestPayload,
|
||||||
PAYLOAD_REJECTED_BY_TARGET_CHAIN, REGULAR_PAYLOAD, TEST_LANE_ID, TEST_RELAYER_A, TEST_RELAYER_B,
|
TestRuntime, PAYLOAD_REJECTED_BY_TARGET_CHAIN, REGULAR_PAYLOAD, TEST_LANE_ID, TEST_RELAYER_A, TEST_RELAYER_B,
|
||||||
};
|
};
|
||||||
use bp_message_lane::UnrewardedRelayersState;
|
use bp_message_lane::UnrewardedRelayersState;
|
||||||
use frame_support::{assert_noop, assert_ok};
|
use frame_support::{assert_noop, assert_ok};
|
||||||
@@ -1291,4 +1291,25 @@ mod tests {
|
|||||||
hex!("87f1ffe31b52878f09495ca7482df1a4e5f83cf83f2127eb47afdc35d6e43fab44a8995dd50b6657a037a7839304535b74657374").to_vec(),
|
hex!("87f1ffe31b52878f09495ca7482df1a4e5f83cf83f2127eb47afdc35d6e43fab44a8995dd50b6657a037a7839304535b74657374").to_vec(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn actual_dispatch_weight_does_not_overlow() {
|
||||||
|
run_test(|| {
|
||||||
|
let message1 = message(1, TestPayload(0, Weight::MAX / 2));
|
||||||
|
let message2 = message(2, TestPayload(0, Weight::MAX / 2));
|
||||||
|
let message3 = message(2, TestPayload(0, Weight::MAX / 2));
|
||||||
|
|
||||||
|
assert_noop!(
|
||||||
|
Module::<TestRuntime, DefaultInstance>::receive_messages_proof(
|
||||||
|
Origin::signed(1),
|
||||||
|
TEST_RELAYER_A,
|
||||||
|
// this may cause overflow if source chain storage is invalid
|
||||||
|
Ok(vec![message1, message2, message3]).into(),
|
||||||
|
3,
|
||||||
|
100,
|
||||||
|
),
|
||||||
|
Error::<TestRuntime, DefaultInstance>::InvalidMessagesDispatchWeight,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user