chore: regenerate umbrella crate, fix feature propagation

This commit is contained in:
2025-12-16 11:28:32 +03:00
parent dd6d48f528
commit 620b0e3aa0
1358 changed files with 9464 additions and 7656 deletions
@@ -90,7 +90,9 @@ pub(crate) fn roll_until_next_active(mut end_index: SessionIndex) -> Vec<Account
let planned_era = pezpallet_staking_async::session_rotation::Rotator::<Runtime>::planned_era();
let active_era = pezpallet_staking_async::session_rotation::Rotator::<Runtime>::active_era();
while pezpallet_staking_async::session_rotation::Rotator::<Runtime>::planned_era() == planned_era {
while pezpallet_staking_async::session_rotation::Rotator::<Runtime>::planned_era() ==
planned_era
{
let report = SessionReport {
end_index,
activation_timestamp: None,
@@ -539,7 +541,8 @@ parameter_types! {
static RcClientEventsIndex: usize = 0;
}
pub(crate) fn rc_client_events_since_last_call() -> Vec<pezpallet_staking_async_rc_client::Event<T>> {
pub(crate) fn rc_client_events_since_last_call() -> Vec<pezpallet_staking_async_rc_client::Event<T>>
{
let all: Vec<_> = System::events()
.into_iter()
.filter_map(
@@ -71,7 +71,10 @@ mod tests {
);
// then
assert_eq!(pezframe_system::Pezpallet::<rc::Runtime>::block_number(), rc::Period::get());
assert_eq!(
pezframe_system::Pezpallet::<rc::Runtime>::block_number(),
rc::Period::get()
);
});
shared::in_rc(|| {
@@ -194,7 +197,8 @@ mod tests {
},
true,
);
let migration_start_block_number = pezframe_system::Pezpallet::<rc::Runtime>::block_number();
let migration_start_block_number =
pezframe_system::Pezpallet::<rc::Runtime>::block_number();
// ensure era is still 1 on RC.
// (Session events are received by AHClient and never passed on to staking-classic once
@@ -420,7 +424,10 @@ mod tests {
pezpallet_staking_async::ErasRewardPoints::<ah::Runtime>::get(1).total;
// staking async has always been in NotForcing, not doing anything since no session
// reports come in
assert_eq!(pezpallet_staking_async::ForceEra::<ah::Runtime>::get(), Forcing::NotForcing);
assert_eq!(
pezpallet_staking_async::ForceEra::<ah::Runtime>::get(),
Forcing::NotForcing
);
// Verify all offences were properly queued in staking-async.
// Should have offences for validators 1, 2, and 5 from different sessions (all map to
@@ -580,21 +587,24 @@ mod tests {
// Check for unapplied slashes for all validators with any of the slash fractions
// Check validator 2 slashes
let slash_v2_100_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(2, Perbill::from_percent(100), 0),
)
.is_some();
let slash_v2_90_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(2, Perbill::from_percent(90), 0),
)
.is_some();
let slash_v2_70_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(2, Perbill::from_percent(70), 0),
)
.is_some();
let slash_v2_100_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(2, Perbill::from_percent(100), 0),
)
.is_some();
let slash_v2_90_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(2, Perbill::from_percent(90), 0),
)
.is_some();
let slash_v2_70_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(2, Perbill::from_percent(70), 0),
)
.is_some();
let total_slashes_v2 =
slash_v2_100_present as u8 + slash_v2_90_present as u8 + slash_v2_70_present as u8;
@@ -605,21 +615,24 @@ mod tests {
);
// Check validator 1 slashes
let slash_v1_75_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(1, Perbill::from_percent(75), 0),
)
.is_some();
let slash_v1_85_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(1, Perbill::from_percent(85), 0),
)
.is_some();
let slash_v1_65_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(1, Perbill::from_percent(65), 0),
)
.is_some();
let slash_v1_75_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(1, Perbill::from_percent(75), 0),
)
.is_some();
let slash_v1_85_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(1, Perbill::from_percent(85), 0),
)
.is_some();
let slash_v1_65_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(1, Perbill::from_percent(65), 0),
)
.is_some();
let total_slashes_v1 =
slash_v1_75_present as u8 + slash_v1_85_present as u8 + slash_v1_65_present as u8;
@@ -630,21 +643,24 @@ mod tests {
);
// Check validator 5 slashes
let slash_v5_55_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(5, Perbill::from_percent(55), 0),
)
.is_some();
let slash_v5_45_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(5, Perbill::from_percent(45), 0),
)
.is_some();
let slash_v5_40_present = pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(5, Perbill::from_percent(40), 0),
)
.is_some();
let slash_v5_55_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(5, Perbill::from_percent(55), 0),
)
.is_some();
let slash_v5_45_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(5, Perbill::from_percent(45), 0),
)
.is_some();
let slash_v5_40_present =
pezpallet_staking_async::UnappliedSlashes::<ah::Runtime>::get(
3,
(5, Perbill::from_percent(40), 0),
)
.is_some();
let total_slashes_v5 =
slash_v5_55_present as u8 + slash_v5_45_present as u8 + slash_v5_40_present as u8;
@@ -722,9 +738,18 @@ mod tests {
assert_eq!(
ah::staking_events_since_last_call(),
vec![
pezpallet_staking_async::Event::PagedElectionProceeded { page: 2, result: Ok(4) },
pezpallet_staking_async::Event::PagedElectionProceeded { page: 1, result: Ok(0) },
pezpallet_staking_async::Event::PagedElectionProceeded { page: 0, result: Ok(0) }
pezpallet_staking_async::Event::PagedElectionProceeded {
page: 2,
result: Ok(4)
},
pezpallet_staking_async::Event::PagedElectionProceeded {
page: 1,
result: Ok(0)
},
pezpallet_staking_async::Event::PagedElectionProceeded {
page: 0,
result: Ok(0)
}
]
);
});
@@ -387,23 +387,27 @@ pub fn historical_events_since_last_call() -> Vec<pezpallet_session::historical:
}
pub fn offence_events_since_last_call() -> Vec<pezpallet_offences::Event> {
let all = pezframe_system::Pezpallet::<Runtime>::read_events_for_pallet::<pezpallet_offences::Event>();
let all = pezframe_system::Pezpallet::<Runtime>::read_events_for_pallet::<
pezpallet_offences::Event,
>();
let seen = OffenceEventsIndex::get();
OffenceEventsIndex::set(all.len());
all.into_iter().skip(seen).collect()
}
pub fn session_events_since_last_call() -> Vec<pezpallet_session::Event<Runtime>> {
let all =
pezframe_system::Pezpallet::<Runtime>::read_events_for_pallet::<pezpallet_session::Event<Runtime>>();
let all = pezframe_system::Pezpallet::<Runtime>::read_events_for_pallet::<
pezpallet_session::Event<Runtime>,
>();
let seen = SessionEventsIndex::get();
SessionEventsIndex::set(all.len());
all.into_iter().skip(seen).collect()
}
pub fn ah_client_events_since_last_call() -> Vec<ah_client::Event<Runtime>> {
let all =
pezframe_system::Pezpallet::<Runtime>::read_events_for_pallet::<ah_client::Event<Runtime>>();
let all = pezframe_system::Pezpallet::<Runtime>::read_events_for_pallet::<
ah_client::Event<Runtime>,
>();
let seen = AhClientEventsIndex::get();
AhClientEventsIndex::set(all.len());
all.into_iter().skip(seen).collect()
@@ -487,7 +491,9 @@ impl ExtBuilder {
(112, vec![8, 1]),
]
.into_iter()
.map(|(x, y)| (x, x, INITIAL_STAKE, pezpallet_staking_async::StakerStatus::Nominator(y)));
.map(|(x, y)| {
(x, x, INITIAL_STAKE, pezpallet_staking_async::StakerStatus::Nominator(y))
});
let stakers = validators.chain(nominators).collect::<Vec<_>>();
let balances = stakers
@@ -541,7 +547,8 @@ impl ExtBuilder {
}
/// Progress until `sessions`, receive a `new_validator_set` with `id`, and go forward to `sessions
/// + 1` such that it is queued in pezpallet-session. If `active`, then progress until `sessions + 2`
/// + 1` such that it is queued in pezpallet-session. If `active`, then progress until `sessions +
/// 2`
/// such that it is in the active session validators.
pub(crate) fn receive_validator_set_at(
sessions: SessionIndex,
@@ -193,7 +193,10 @@ fn upon_receiving_election_queue_and_activate_next_session() {
new_validator_set: vec![1, 2, 3, 4],
};
assert_ok!(ah_client::Pezpallet::<Runtime>::validator_set(RuntimeOrigin::root(), report));
assert_ok!(ah_client::Pezpallet::<Runtime>::validator_set(
RuntimeOrigin::root(),
report
));
// session validators are not set yet.
assert!(pezpallet_session::Validators::<Runtime>::get().is_empty());
@@ -275,7 +278,10 @@ fn upon_receiving_election_queue_and_activate_next_session() {
leftover: false,
new_validator_set: vec![1, 2, 3, 5],
};
assert_ok!(ah_client::Pezpallet::<Runtime>::validator_set(RuntimeOrigin::root(), report));
assert_ok!(ah_client::Pezpallet::<Runtime>::validator_set(
RuntimeOrigin::root(),
report
));
// rotate one more session
roll_until_matches(|| pezpallet_session::CurrentIndex::<Runtime>::get() == 6, false);
@@ -971,11 +977,14 @@ mod session_pruning {
);
assert_eq!(
historical_events_since_last_call(),
vec![pezpallet_session::historical::Event::<T>::RootStored { index: i + 1 }]
vec![pezpallet_session::historical::Event::<T>::RootStored {
index: i + 1
}]
)
}
// ensure that we have the root for these recorded in the historical session pezpallet
// ensure that we have the root for these recorded in the historical session
// pezpallet
assert_eq!(pezpallet_session::historical::StoredRange::<T>::get(), Some((2, 12)));
// send back a new validator set, but with some pruning info.
@@ -1374,8 +1383,9 @@ mod splitting {
assert!(ah_client::ValidatorSet::<Runtime>::get().is_none());
assert_eq!(
pezframe_system::Pezpallet::<Runtime>::read_events_for_pallet::<ah_client::Event<Runtime>>(
),
pezframe_system::Pezpallet::<Runtime>::read_events_for_pallet::<
ah_client::Event<Runtime>,
>(),
vec![
ah_client::Event::<T>::ValidatorSetReceived {
id: 0,
@@ -1435,7 +1445,9 @@ mod key_proofs {
assert_eq!(pezpallet_session::historical::StoredRange::<T>::get(), Some((2, 5)));
// generate the proof for one of the validators
use pezsp_runtime::{key_types::DUMMY, testing::UintAuthorityId, traits::OpaqueKeys};
use pezsp_runtime::{
key_types::DUMMY, testing::UintAuthorityId, traits::OpaqueKeys,
};
let key_ids = <SessionKeys as OpaqueKeys>::key_ids();
assert_eq!(key_ids.len(), 1, "we have inserted only one key type in mock");
@@ -1444,9 +1456,11 @@ mod key_proofs {
let our_key = keys.get::<UintAuthorityId>(key_ids[0]);
assert_eq!(key_ids[0], DUMMY);
let proof =
pezpallet_session::historical::Pezpallet::<T>::prove((DUMMY, &our_key.encode()[..]))
.unwrap();
let proof = pezpallet_session::historical::Pezpallet::<T>::prove((
DUMMY,
&our_key.encode()[..],
))
.unwrap();
assert_eq!(proof.session, 3);
assert_eq!(proof.validator_count, 4);
@@ -89,7 +89,8 @@ pub fn migrate_state() {
}
// exposure
for (era, account, overview) in pezpallet_staking::ErasStakersOverview::<rc::Runtime>::drain()
for (era, account, overview) in
pezpallet_staking::ErasStakersOverview::<rc::Runtime>::drain()
{
shared::in_ah(|| {
pezpallet_staking_async::ErasStakersOverview::<ah::Runtime>::insert(