Companion for Weight v1.5 (#5943)

* fix to latest substrate pr

* update weights

* cargo build -p polkadot-runtime-parachains

* fix xcm-builder

* fix import

* fix a bunch

* fix a bunch of weight stuff

* kusama compile

* unused

* builds

* maybe fix

* cargo test -p polkadot-runtime-parachains

* xcm simulator example

* fix tests

* xcm sim fuzz

* fix runtime tests

* remove unused

* fix integration tests

* scalar div

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>
This commit is contained in:
Shawn Tabrizi
2022-08-31 12:59:39 +01:00
committed by GitHub
parent 138aae0a22
commit 28e94d97dd
231 changed files with 4577 additions and 4514 deletions
@@ -43,7 +43,7 @@ fn create_message_min_size<T: Config>(size: u32) -> Vec<u8> {
// Create a message with an empty remark call to determine the encoding overhead
let msg_size_empty_transact = VersionedXcm::<T>::from(Xcm::<T>(vec![Transact {
origin_type: OriginKind::SovereignAccount,
require_weight_at_most: Weight::MAX,
require_weight_at_most: Weight::MAX.ref_time(),
call: frame_system::Call::<T>::remark_with_event { remark: vec![] }.encode().into(),
}]))
.encode()
@@ -55,7 +55,7 @@ fn create_message_min_size<T: Config>(size: u32) -> Vec<u8> {
remark.resize(size, 0u8);
let msg = VersionedXcm::<T>::from(Xcm::<T>(vec![Transact {
origin_type: OriginKind::SovereignAccount,
require_weight_at_most: Weight::MAX,
require_weight_at_most: Weight::MAX.ref_time(),
call: frame_system::Call::<T>::remark_with_event { remark }.encode().into(),
}]))
.encode();
@@ -70,7 +70,7 @@ fn create_message_overweight<T: Config>() -> Vec<u8> {
let call = frame_system::Call::<T>::set_code { code: vec![] };
VersionedXcm::<T>::from(Xcm::<T>(vec![Transact {
origin_type: OriginKind::Superuser,
require_weight_at_most: max_block_weight,
require_weight_at_most: max_block_weight.ref_time(),
call: call.encode().into(),
}]))
.encode()
@@ -107,7 +107,7 @@ frame_benchmarking::benchmarks! {
service_overweight {
let host_conf = configuration::ActiveConfig::<T>::get();
let weight = host_conf.ump_max_individual_weight + host_conf.ump_max_individual_weight + 1000000;
let weight = host_conf.ump_max_individual_weight + host_conf.ump_max_individual_weight + Weight::from_ref_time(1000000);
let para = ParaId::from(1978);
// The message's weight does not really matter here, as we add service_overweight's
// max_weight parameter to the extrinsic's weight in the weight calculation.
@@ -117,18 +117,18 @@ frame_benchmarking::benchmarks! {
let msg = create_message_overweight::<T>();
// This just makes sure that 0 is not a valid index and we can use it later on.
let _ = Ump::<T>::service_overweight(RawOrigin::Root.into(), 0, 1000);
let _ = Ump::<T>::service_overweight(RawOrigin::Root.into(), 0, Weight::from_ref_time(1000));
// Start with the block number 1. This is needed because should an event be
// emitted during the genesis block they will be implicitly wiped.
frame_system::Pallet::<T>::set_block_number(1u32.into());
queue_upward_msg::<T>(&host_conf, para, msg.clone());
Ump::<T>::process_pending_upward_messages();
assert_last_event_type::<T>(
Event::OverweightEnqueued(para, upward_message_id(&msg), 0, 0).into()
Event::OverweightEnqueued(para, upward_message_id(&msg), 0, Weight::zero()).into()
);
}: _(RawOrigin::Root, 0, Weight::MAX)
verify {
assert_last_event_type::<T>(Event::OverweightServiced(0, 0).into());
assert_last_event_type::<T>(Event::OverweightServiced(0, Weight::zero()).into());
}
}
+28 -14
View File
@@ -38,8 +38,8 @@ impl Default for GenesisConfigBuilder {
max_upward_message_num_per_candidate: 2,
max_upward_queue_count: 4,
max_upward_queue_size: 64,
ump_service_total_weight: 1000,
ump_max_individual_weight: 100,
ump_service_total_weight: Weight::from_ref_time(1000),
ump_max_individual_weight: Weight::from_ref_time(100),
}
}
}
@@ -155,7 +155,11 @@ fn dispatch_resume_after_exceeding_dispatch_stage_weight() {
let q_msg = (500u32, "q_msg").encode();
new_test_ext(
GenesisConfigBuilder { ump_service_total_weight: 500, ..Default::default() }.build(),
GenesisConfigBuilder {
ump_service_total_weight: Weight::from_ref_time(500),
..Default::default()
}
.build(),
)
.execute_with(|| {
queue_upward_msg(q, q_msg.clone());
@@ -199,8 +203,8 @@ fn dispatch_keeps_message_after_weight_exhausted() {
new_test_ext(
GenesisConfigBuilder {
ump_service_total_weight: 500,
ump_max_individual_weight: 300,
ump_service_total_weight: Weight::from_ref_time(500),
ump_max_individual_weight: Weight::from_ref_time(300),
..Default::default()
}
.build(),
@@ -238,7 +242,11 @@ fn dispatch_correctly_handle_remove_of_latest() {
let b_msg_1 = (300u32, "b_msg_1").encode();
new_test_ext(
GenesisConfigBuilder { ump_service_total_weight: 900, ..Default::default() }.build(),
GenesisConfigBuilder {
ump_service_total_weight: Weight::from_ref_time(900),
..Default::default()
}
.build(),
)
.execute_with(|| {
// We want to test here an edge case, where we remove the queue with the highest
@@ -288,7 +296,7 @@ fn service_overweight_unknown() {
// the next test.
new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| {
assert_noop!(
Ump::service_overweight(Origin::root(), 0, 1000),
Ump::service_overweight(Origin::root(), 0, Weight::from_ref_time(1000)),
Error::<Test>::UnknownMessageIndex
);
});
@@ -304,8 +312,8 @@ fn overweight_queue_works() {
new_test_ext(
GenesisConfigBuilder {
ump_service_total_weight: 900,
ump_max_individual_weight: 300,
ump_service_total_weight: Weight::from_ref_time(900),
ump_max_individual_weight: Weight::from_ref_time(300),
..Default::default()
}
.build(),
@@ -326,24 +334,30 @@ fn overweight_queue_works() {
queue_upward_msg(para_a, a_msg_3.clone());
Ump::process_pending_upward_messages();
assert_last_event(
Event::OverweightEnqueued(para_a, upward_message_id(&a_msg_3[..]), 0, 500).into(),
Event::OverweightEnqueued(
para_a,
upward_message_id(&a_msg_3[..]),
0,
Weight::from_ref_time(500),
)
.into(),
);
// Now verify that if we wanted to service this overweight message with less than enough
// weight it will fail.
assert_noop!(
Ump::service_overweight(Origin::root(), 0, 499),
Ump::service_overweight(Origin::root(), 0, Weight::from_ref_time(499)),
Error::<Test>::WeightOverLimit
);
// ... and if we try to service it with just enough weight it will succeed as well.
assert_ok!(Ump::service_overweight(Origin::root(), 0, 500));
assert_last_event(Event::OverweightServiced(0, 500).into());
assert_ok!(Ump::service_overweight(Origin::root(), 0, Weight::from_ref_time(500)));
assert_last_event(Event::OverweightServiced(0, Weight::from_ref_time(500)).into());
// ... and if we try to service a message with index that doesn't exist it will error
// out.
assert_noop!(
Ump::service_overweight(Origin::root(), 1, 1000),
Ump::service_overweight(Origin::root(), 1, Weight::from_ref_time(1000)),
Error::<Test>::UnknownMessageIndex
);
});