chore: regenerate umbrella crate, fix feature propagation
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user