mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 05:11:09 +00:00
Child storage tests and genesis fix. (#3185)
* Using child storage, (srml-support only), test failing . * fix simple tests. * Enumerable by requiring owned struct (previous form only allow &'static). Broken tests are from genesis init. * implement for_child_keys_with_prefix * indent * clear_child_prefix fix. * clear_child_prefix fix 2. * fix for storage_impl, if/when allowing child and not child this could be reverted. * Fix lot of urlinked child genesis, still need to look upon actual genesis srml module code. Probably still a lot of broken code needing debugging. * switch well_known_key to their associated module child trie. Fix a genesis init (balance). Complete some testing. Comment some tests before using. * fixing test runtime child keys * latest commit fix broken genesis init * fix system balances child name. * Important fix: storage_root from test externalities need children (it is already the case for ext). * executive root with child calculation * Avoid empty trie on test ext. * Symetric removal of key for system. * commenting changes related tests. * Remove child module specifics. * fix issues. * fix some formatting * fix bench and bump runtime * Remove extend_storage_overlays, assimilate_storage do the same as is proper considering srml macro. * Fix warning for assimilate. * Removing kill as they do not impact any test cases. * Use tuple of storage map instead of two parameters. This changes the behavior of decl_storage genesis build closure (breaking api). * Do not use build storage before assimilate. * fix error * Update core/state-machine/src/backend.rs
This commit is contained in:
@@ -288,7 +288,7 @@ mod tests {
|
||||
// This function basically just builds a genesis storage key/value store according to
|
||||
// our desired mockup.
|
||||
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
system::GenesisConfig::default().build_storage::<Test>().unwrap().0.into()
|
||||
system::GenesisConfig::default().build_storage::<Test>().unwrap().into()
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -74,10 +74,10 @@ impl Trait for Test {
|
||||
}
|
||||
|
||||
pub fn new_test_ext(authorities: Vec<u64>) -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
|
||||
t.extend(GenesisConfig::<Test>{
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
GenesisConfig::<Test>{
|
||||
authorities: authorities.into_iter().map(|a| UintAuthorityId(a).to_public_key()).collect(),
|
||||
}.build_storage().unwrap().0);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
t.into()
|
||||
}
|
||||
|
||||
|
||||
@@ -562,7 +562,7 @@ mod tests {
|
||||
}
|
||||
|
||||
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
|
||||
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
t.into()
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
|
||||
#![cfg(test)]
|
||||
|
||||
use sr_primitives::{Perbill, traits::{Convert, IdentityLookup}, testing::Header, weights::{DispatchInfo, Weight}};
|
||||
use sr_primitives::{Perbill, traits::{Convert, IdentityLookup}, testing::Header,
|
||||
weights::{DispatchInfo, Weight}};
|
||||
use primitives::{H256, Blake2Hasher};
|
||||
use runtime_io;
|
||||
use srml_support::{impl_outer_origin, parameter_types};
|
||||
@@ -179,8 +180,8 @@ impl ExtBuilder {
|
||||
}
|
||||
pub fn build(self) -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
self.set_associated_consts();
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Runtime>().unwrap().0;
|
||||
t.extend(GenesisConfig::<Runtime> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Runtime>().unwrap();
|
||||
GenesisConfig::<Runtime> {
|
||||
balances: if self.monied {
|
||||
vec![
|
||||
(1, 10 * self.existential_deposit),
|
||||
@@ -201,7 +202,7 @@ impl ExtBuilder {
|
||||
} else {
|
||||
vec![]
|
||||
},
|
||||
}.build_storage().unwrap().0);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
t.into()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -433,7 +433,7 @@ mod tests {
|
||||
phantom: Default::default(),
|
||||
}),
|
||||
collective: None,
|
||||
}.build_storage().unwrap().0.into()
|
||||
}.build_storage().unwrap().into()
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -277,12 +277,12 @@ impl ExtBuilder {
|
||||
balances::GenesisConfig::<Test> {
|
||||
balances: vec![],
|
||||
vesting: vec![],
|
||||
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
GenesisConfig::<Test> {
|
||||
current_schedule: Default::default(),
|
||||
gas_price: self.gas_price,
|
||||
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
|
||||
runtime_io::TestExternalities::new_with_children(t)
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
runtime_io::TestExternalities::new(t)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ mod tests {
|
||||
(6, 60 * self.balance_factor)
|
||||
],
|
||||
vesting: vec![],
|
||||
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
seats::GenesisConfig::<Test> {
|
||||
active_council: if self.with_council { vec![
|
||||
(1, 10),
|
||||
@@ -269,8 +269,8 @@ mod tests {
|
||||
desired_seats: 2,
|
||||
presentation_duration: 2,
|
||||
term_duration: 5,
|
||||
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
|
||||
runtime_io::TestExternalities::new_with_children(t)
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
runtime_io::TestExternalities::new(t)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1094,9 +1094,9 @@ mod tests {
|
||||
balances::GenesisConfig::<Test>{
|
||||
balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)],
|
||||
vesting: vec![],
|
||||
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
|
||||
GenesisConfig::default().assimilate_storage(&mut t.0, &mut t.1).unwrap();
|
||||
runtime_io::TestExternalities::new_with_children(t)
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
GenesisConfig::default().assimilate_storage(&mut t).unwrap();
|
||||
runtime_io::TestExternalities::new(t)
|
||||
}
|
||||
|
||||
type System = system::Module<Test>;
|
||||
|
||||
@@ -1314,7 +1314,7 @@ mod tests {
|
||||
presentation_duration: 2,
|
||||
term_duration: 5,
|
||||
}),
|
||||
}.build_storage().unwrap().0.into()
|
||||
}.build_storage().unwrap().into()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -575,15 +575,15 @@ mod tests {
|
||||
// This function basically just builds a genesis storage key/value store according to
|
||||
// our desired mockup.
|
||||
fn new_test_ext() -> sr_io::TestExternalities<Blake2Hasher> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
// We use default for brevity, but you can configure as desired if needed.
|
||||
t.extend(balances::GenesisConfig::<Test>::default().build_storage().unwrap().0);
|
||||
t.extend(GenesisConfig::<Test>{
|
||||
balances::GenesisConfig::<Test>::default().assimilate_storage(&mut t).unwrap();
|
||||
GenesisConfig::<Test>{
|
||||
dummy: 42,
|
||||
// we configure the map with (key, value) pairs.
|
||||
bar: vec![(1, 2), (2, 3)],
|
||||
foo: 24,
|
||||
}.build_storage().unwrap().0);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
t.into()
|
||||
}
|
||||
|
||||
|
||||
@@ -465,10 +465,10 @@ mod tests {
|
||||
balances::GenesisConfig::<Runtime> {
|
||||
balances: vec![(1, 211)],
|
||||
vesting: vec![],
|
||||
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
let xt = sr_primitives::testing::TestXt(sign_extra(1, 0, 0), Call::transfer(2, 69));
|
||||
let weight = xt.get_dispatch_info().weight as u64;
|
||||
let mut t = runtime_io::TestExternalities::<Blake2Hasher>::new_with_children(t);
|
||||
let mut t = runtime_io::TestExternalities::<Blake2Hasher>::new(t);
|
||||
with_externalities(&mut t, || {
|
||||
Executive::initialize_block(&Header::new(
|
||||
1,
|
||||
@@ -485,11 +485,11 @@ mod tests {
|
||||
}
|
||||
|
||||
fn new_test_ext(balance_factor: u64) -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Runtime>().unwrap().0;
|
||||
t.extend(balances::GenesisConfig::<Runtime> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Runtime>().unwrap();
|
||||
balances::GenesisConfig::<Runtime> {
|
||||
balances: vec![(1, 111 * balance_factor)],
|
||||
vesting: vec![],
|
||||
}.build_storage().unwrap().0);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
t.into()
|
||||
}
|
||||
|
||||
|
||||
@@ -338,7 +338,7 @@ mod tests {
|
||||
#[test]
|
||||
fn median_works() {
|
||||
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
with_externalities(&mut TestExternalities::new_with_children(t), || {
|
||||
with_externalities(&mut TestExternalities::new(t), || {
|
||||
FinalityTracker::update_hint(Some(500));
|
||||
assert_eq!(FinalityTracker::median(), 250);
|
||||
assert!(NOTIFICATIONS.with(|n| n.borrow().is_empty()));
|
||||
@@ -348,7 +348,7 @@ mod tests {
|
||||
#[test]
|
||||
fn notifies_when_stalled() {
|
||||
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
with_externalities(&mut TestExternalities::new_with_children(t), || {
|
||||
with_externalities(&mut TestExternalities::new(t), || {
|
||||
let mut parent_hash = System::parent_hash();
|
||||
for i in 2..106 {
|
||||
System::initialize(&i, &parent_hash, &Default::default(), &Default::default());
|
||||
@@ -367,7 +367,7 @@ mod tests {
|
||||
#[test]
|
||||
fn recent_notifications_prevent_stalling() {
|
||||
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
with_externalities(&mut TestExternalities::new_with_children(t), || {
|
||||
with_externalities(&mut TestExternalities::new(t), || {
|
||||
let mut parent_hash = System::parent_hash();
|
||||
for i in 2..106 {
|
||||
System::initialize(&i, &parent_hash, &Default::default(), &Default::default());
|
||||
|
||||
@@ -479,12 +479,11 @@ decl_storage! {
|
||||
config(endowed_accounts): Vec<T::AccountId>;
|
||||
|
||||
build(|
|
||||
storage: &mut sr_primitives::StorageOverlay,
|
||||
_: &mut sr_primitives::ChildrenStorageOverlay,
|
||||
storage: &mut (sr_primitives::StorageOverlay, sr_primitives::ChildrenStorageOverlay),
|
||||
config: &GenesisConfig<T>| {
|
||||
config.assets.iter().for_each(|asset_id| {
|
||||
config.endowed_accounts.iter().for_each(|account_id| {
|
||||
storage.insert(
|
||||
storage.0.insert(
|
||||
<FreeBalance<T>>::key_for(asset_id, account_id),
|
||||
<T::Balance as codec::Encode>::encode(&config.initial_balance)
|
||||
);
|
||||
|
||||
@@ -20,7 +20,11 @@
|
||||
|
||||
#![cfg(test)]
|
||||
|
||||
use sr_primitives::{Perbill, testing::Header, traits::{BlakeTwo256, IdentityLookup}};
|
||||
use sr_primitives::{
|
||||
Perbill,
|
||||
testing::Header,
|
||||
traits::{BlakeTwo256, IdentityLookup},
|
||||
};
|
||||
use primitives::{Blake2Hasher, H256};
|
||||
use support::{parameter_types, impl_outer_event, impl_outer_origin};
|
||||
|
||||
@@ -114,10 +118,9 @@ impl ExtBuilder {
|
||||
|
||||
// builds genesis config
|
||||
pub fn build(self) -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
|
||||
t.extend(
|
||||
GenesisConfig::<Test> {
|
||||
GenesisConfig::<Test> {
|
||||
assets: vec![self.asset_id],
|
||||
endowed_accounts: self.accounts,
|
||||
initial_balance: self.initial_balance,
|
||||
@@ -125,10 +128,7 @@ impl ExtBuilder {
|
||||
staking_asset_id: 16000,
|
||||
spending_asset_id: 16001,
|
||||
}
|
||||
.build_storage()
|
||||
.unwrap()
|
||||
.0,
|
||||
);
|
||||
.assimilate_storage(&mut t).unwrap();
|
||||
|
||||
t.into()
|
||||
}
|
||||
@@ -140,6 +140,5 @@ pub fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
system::GenesisConfig::default()
|
||||
.build_storage::<Test>()
|
||||
.unwrap()
|
||||
.0
|
||||
.into()
|
||||
}
|
||||
|
||||
@@ -82,10 +82,10 @@ pub fn to_authorities(vec: Vec<(u64, u64)>) -> Vec<(AuthorityId, u64)> {
|
||||
}
|
||||
|
||||
pub fn new_test_ext(authorities: Vec<(u64, u64)>) -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
|
||||
t.extend(GenesisConfig {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
GenesisConfig {
|
||||
authorities: to_authorities(authorities),
|
||||
}.build_storage().unwrap().0);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
t.into()
|
||||
}
|
||||
|
||||
|
||||
@@ -102,10 +102,10 @@ pub fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
for i in 1..5 { h.insert(i); }
|
||||
}
|
||||
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Runtime>().unwrap().0;
|
||||
t.extend(GenesisConfig::<Runtime> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Runtime>().unwrap();
|
||||
GenesisConfig::<Runtime> {
|
||||
ids: vec![1, 2, 3, 4]
|
||||
}.build_storage().unwrap().0);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
t.into()
|
||||
}
|
||||
|
||||
|
||||
@@ -64,8 +64,7 @@ decl_storage! {
|
||||
config(members): Vec<T::AccountId>;
|
||||
config(phantom): sr_std::marker::PhantomData<I>;
|
||||
build(|
|
||||
storage: &mut sr_primitives::StorageOverlay,
|
||||
_: &mut sr_primitives::ChildrenStorageOverlay,
|
||||
storage: &mut (sr_primitives::StorageOverlay, sr_primitives::ChildrenStorageOverlay),
|
||||
config: &GenesisConfig<T, I>
|
||||
| {
|
||||
sr_io::with_storage(storage, || {
|
||||
@@ -282,12 +281,12 @@ mod tests {
|
||||
// This function basically just builds a genesis storage key/value store according to
|
||||
// our desired mockup.
|
||||
fn new_test_ext() -> sr_io::TestExternalities<Blake2Hasher> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
// We use default for brevity, but you can configure as desired if needed.
|
||||
t.extend(GenesisConfig::<Test>{
|
||||
GenesisConfig::<Test>{
|
||||
members: vec![10, 20, 30],
|
||||
.. Default::default()
|
||||
}.build_storage().unwrap().0);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
t.into()
|
||||
}
|
||||
|
||||
|
||||
@@ -323,13 +323,12 @@ mod tests {
|
||||
type Historical = Module<Test>;
|
||||
|
||||
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
|
||||
let (storage, _child_storage) = crate::GenesisConfig::<Test> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
crate::GenesisConfig::<Test> {
|
||||
keys: NEXT_VALIDATORS.with(|l|
|
||||
l.borrow().iter().cloned().map(|i| (i, UintAuthorityId(i).into())).collect()
|
||||
),
|
||||
}.build_storage().unwrap();
|
||||
t.extend(storage);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
runtime_io::TestExternalities::new(t)
|
||||
}
|
||||
|
||||
|
||||
@@ -320,8 +320,7 @@ decl_storage! {
|
||||
add_extra_genesis {
|
||||
config(keys): Vec<(T::ValidatorId, T::Keys)>;
|
||||
build(|
|
||||
storage: &mut sr_primitives::StorageOverlay,
|
||||
_: &mut sr_primitives::ChildrenStorageOverlay,
|
||||
storage: &mut (sr_primitives::StorageOverlay, sr_primitives::ChildrenStorageOverlay),
|
||||
config: &GenesisConfig<T>
|
||||
| {
|
||||
runtime_io::with_storage(storage, || {
|
||||
@@ -581,8 +580,8 @@ mod tests {
|
||||
keys: NEXT_VALIDATORS.with(|l|
|
||||
l.borrow().iter().cloned().map(|i| (i, UintAuthorityId(i).into())).collect()
|
||||
),
|
||||
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
|
||||
runtime_io::TestExternalities::new_with_children(t)
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
runtime_io::TestExternalities::new(t)
|
||||
}
|
||||
|
||||
fn initialize_block(block: u64) {
|
||||
|
||||
@@ -634,8 +634,7 @@ decl_storage! {
|
||||
config(stakers):
|
||||
Vec<(T::AccountId, T::AccountId, BalanceOf<T>, StakerStatus<T::AccountId>)>;
|
||||
build(|
|
||||
storage: &mut sr_primitives::StorageOverlay,
|
||||
_: &mut sr_primitives::ChildrenStorageOverlay,
|
||||
storage: &mut (sr_primitives::StorageOverlay, sr_primitives::ChildrenStorageOverlay),
|
||||
config: &GenesisConfig<T>
|
||||
| {
|
||||
with_storage(storage, || {
|
||||
|
||||
@@ -253,7 +253,7 @@ impl ExtBuilder {
|
||||
}
|
||||
pub fn build(self) -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
self.set_associated_consts();
|
||||
let (mut t, mut c) = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
let mut storage = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
let balance_factor = if self.existential_deposit > 0 {
|
||||
256
|
||||
} else {
|
||||
@@ -285,7 +285,7 @@ impl ExtBuilder {
|
||||
(999, 1_000_000_000_000),
|
||||
],
|
||||
vesting: vec![],
|
||||
}.assimilate_storage(&mut t, &mut c);
|
||||
}.assimilate_storage(&mut storage);
|
||||
|
||||
let stake_21 = if self.fair { 1000 } else { 2000 };
|
||||
let stake_31 = if self.validator_pool { balance_factor * 1000 } else { 1 };
|
||||
@@ -310,13 +310,13 @@ impl ExtBuilder {
|
||||
offline_slash: Perbill::from_percent(5),
|
||||
offline_slash_grace: 0,
|
||||
invulnerables: vec![],
|
||||
}.assimilate_storage(&mut t, &mut c);
|
||||
}.assimilate_storage(&mut storage);
|
||||
|
||||
let _ = session::GenesisConfig::<Test> {
|
||||
keys: validators.iter().map(|x| (*x, UintAuthorityId(*x))).collect(),
|
||||
}.assimilate_storage(&mut t, &mut c);
|
||||
}.assimilate_storage(&mut storage);
|
||||
|
||||
let mut ext = t.into();
|
||||
let mut ext = storage.into();
|
||||
runtime_io::with_externalities(&mut ext, || {
|
||||
let validators = Session::validators();
|
||||
SESSION.with(|x|
|
||||
|
||||
@@ -380,7 +380,7 @@ fn decl_store_extra_genesis(
|
||||
}
|
||||
|
||||
let mut has_scall = false;
|
||||
let mut scall = quote!{ ( |_, _, _| {} ) };
|
||||
let mut scall = quote!{ ( |_, _| {} ) };
|
||||
let mut genesis_extrafields = TokenStream2::new();
|
||||
let mut genesis_extrafields_default = TokenStream2::new();
|
||||
|
||||
@@ -536,23 +536,24 @@ fn decl_store_extra_genesis(
|
||||
),
|
||||
String
|
||||
> #fn_where_clause {
|
||||
let mut storage = Default::default();
|
||||
let mut child_storage = Default::default();
|
||||
self.assimilate_storage::<#fn_traitinstance>(&mut storage, &mut child_storage)?;
|
||||
Ok((storage, child_storage))
|
||||
let mut storage = (Default::default(), Default::default());
|
||||
self.assimilate_storage::<#fn_traitinstance>(&mut storage)?;
|
||||
Ok(storage)
|
||||
}
|
||||
|
||||
/// Assimilate the storage for this module into pre-existing overlays.
|
||||
pub fn assimilate_storage #fn_generic (
|
||||
self,
|
||||
r: &mut #scrate::sr_primitives::StorageOverlay,
|
||||
c: &mut #scrate::sr_primitives::ChildrenStorageOverlay,
|
||||
tuple_storage: &mut (
|
||||
#scrate::sr_primitives::StorageOverlay,
|
||||
#scrate::sr_primitives::ChildrenStorageOverlay,
|
||||
),
|
||||
) -> std::result::Result<(), String> #fn_where_clause {
|
||||
let storage = r;
|
||||
let storage = &mut tuple_storage.0;
|
||||
|
||||
#builders
|
||||
|
||||
#scall(storage, c, &self);
|
||||
#scall(tuple_storage, &self);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -564,10 +565,12 @@ fn decl_store_extra_genesis(
|
||||
{
|
||||
fn build_module_genesis_storage(
|
||||
self,
|
||||
r: &mut #scrate::sr_primitives::StorageOverlay,
|
||||
c: &mut #scrate::sr_primitives::ChildrenStorageOverlay,
|
||||
storage: &mut (
|
||||
#scrate::sr_primitives::StorageOverlay,
|
||||
#scrate::sr_primitives::ChildrenStorageOverlay,
|
||||
),
|
||||
) -> std::result::Result<(), String> {
|
||||
self.assimilate_storage::<#fn_traitinstance> (r, c)
|
||||
self.assimilate_storage::<#fn_traitinstance> (storage)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -327,7 +327,7 @@ mod tests {
|
||||
}
|
||||
|
||||
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
GenesisConfig::default().build_storage().unwrap().0.into()
|
||||
GenesisConfig::default().build_storage().unwrap().into()
|
||||
}
|
||||
|
||||
type Map = Data;
|
||||
|
||||
@@ -324,7 +324,7 @@ mod tests {
|
||||
StorageMethod : Option<u32>;
|
||||
}
|
||||
add_extra_genesis {
|
||||
build(|_, _, _| {});
|
||||
build(|_, _| {});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -379,7 +379,7 @@ mod tests {
|
||||
COMPLEXTYPE3: ([u32;25]);
|
||||
}
|
||||
add_extra_genesis {
|
||||
build(|_, _, _| {});
|
||||
build(|_, _| {});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -755,7 +755,7 @@ mod test2 {
|
||||
add_extra_genesis {
|
||||
config(_marker) : ::std::marker::PhantomData<T>;
|
||||
config(extra_field) : u32 = 32;
|
||||
build(|_, _, _| {});
|
||||
build(|_, _| {});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ impl Trait for Test {
|
||||
}
|
||||
|
||||
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
GenesisConfig::<Test>::default().build_storage().unwrap().0.into()
|
||||
GenesisConfig::<Test>::default().build_storage().unwrap().into()
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -75,7 +75,7 @@ mod module1 {
|
||||
|
||||
add_extra_genesis {
|
||||
config(test) : T::BlockNumber;
|
||||
build(|_, _, config: &Self| {
|
||||
build(|_, config: &Self| {
|
||||
println!("{}", config.test);
|
||||
});
|
||||
}
|
||||
@@ -299,7 +299,7 @@ fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
}),
|
||||
module2_Instance2: None,
|
||||
module2_Instance3: None,
|
||||
}.build_storage().unwrap().0.into()
|
||||
}.build_storage().unwrap().into()
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -82,7 +82,7 @@ impl module::Trait for Runtime {
|
||||
}
|
||||
|
||||
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
system::GenesisConfig::default().build_storage::<Runtime>().unwrap().0.into()
|
||||
system::GenesisConfig::default().build_storage::<Runtime>().unwrap().into()
|
||||
}
|
||||
|
||||
fn deposit_events(n: usize) {
|
||||
|
||||
@@ -411,17 +411,16 @@ decl_storage! {
|
||||
config(code): Vec<u8>;
|
||||
|
||||
build(
|
||||
|storage: &mut sr_primitives::StorageOverlay,
|
||||
_: &mut sr_primitives::ChildrenStorageOverlay,
|
||||
|storage: &mut (sr_primitives::StorageOverlay, sr_primitives::ChildrenStorageOverlay),
|
||||
config: &GenesisConfig|
|
||||
{
|
||||
use codec::Encode;
|
||||
|
||||
storage.insert(well_known_keys::CODE.to_vec(), config.code.clone());
|
||||
storage.insert(well_known_keys::EXTRINSIC_INDEX.to_vec(), 0u32.encode());
|
||||
storage.0.insert(well_known_keys::CODE.to_vec(), config.code.clone());
|
||||
storage.0.insert(well_known_keys::EXTRINSIC_INDEX.to_vec(), 0u32.encode());
|
||||
|
||||
if let Some(ref changes_trie_config) = config.changes_trie_config {
|
||||
storage.insert(
|
||||
storage.0.insert(
|
||||
well_known_keys::CHANGES_TRIE_CONFIG.to_vec(),
|
||||
changes_trie_config.encode());
|
||||
}
|
||||
@@ -683,11 +682,11 @@ impl<T: Trait> Module<T> {
|
||||
/// Get the basic externalities for this module, useful for tests.
|
||||
#[cfg(any(feature = "std", test))]
|
||||
pub fn externalities() -> TestExternalities<Blake2Hasher> {
|
||||
TestExternalities::new(map![
|
||||
TestExternalities::new((map![
|
||||
twox_128(&<BlockHash<T>>::key_for(T::BlockNumber::zero())).to_vec() => [69u8; 32].encode(),
|
||||
twox_128(<Number<T>>::key()).to_vec() => T::BlockNumber::one().encode(),
|
||||
twox_128(<ParentHash<T>>::key()).to_vec() => [69u8; 32].encode()
|
||||
])
|
||||
], map![]))
|
||||
}
|
||||
|
||||
/// Set the block number to something in particular. Can be used as an alternative to
|
||||
@@ -803,13 +802,15 @@ impl<T: Trait> Module<T> {
|
||||
/// To be called immediately after `note_applied_extrinsic` of the last extrinsic of the block
|
||||
/// has been called.
|
||||
pub fn note_finished_extrinsics() {
|
||||
let extrinsic_index: u32 = storage::unhashed::take(well_known_keys::EXTRINSIC_INDEX).unwrap_or_default();
|
||||
let extrinsic_index: u32 = storage::unhashed::take(well_known_keys::EXTRINSIC_INDEX)
|
||||
.unwrap_or_default();
|
||||
ExtrinsicCount::put(extrinsic_index);
|
||||
}
|
||||
|
||||
/// Remove all extrinsic data and save the extrinsics trie root.
|
||||
pub fn derive_extrinsics() {
|
||||
let extrinsics = (0..ExtrinsicCount::get().unwrap_or_default()).map(ExtrinsicData::take).collect();
|
||||
let extrinsics = (0..ExtrinsicCount::get().unwrap_or_default())
|
||||
.map(ExtrinsicData::take).collect();
|
||||
let xts_root = extrinsics_data_root::<T::Hashing>(extrinsics);
|
||||
<ExtrinsicsRoot<T>>::put(xts_root);
|
||||
}
|
||||
@@ -1127,7 +1128,7 @@ mod tests {
|
||||
const CALL: &<Test as Trait>::Call = &();
|
||||
|
||||
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
GenesisConfig::default().build_storage::<Test>().unwrap().0.into()
|
||||
GenesisConfig::default().build_storage::<Test>().unwrap().into()
|
||||
}
|
||||
|
||||
fn normal_weight_limit() -> Weight {
|
||||
|
||||
@@ -384,7 +384,7 @@ mod tests {
|
||||
#[test]
|
||||
fn timestamp_works() {
|
||||
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
with_externalities(&mut TestExternalities::new_with_children(t), || {
|
||||
with_externalities(&mut TestExternalities::new(t), || {
|
||||
Timestamp::set_timestamp(42);
|
||||
assert_ok!(Timestamp::dispatch(Call::set(69), Origin::NONE));
|
||||
assert_eq!(Timestamp::now(), 69);
|
||||
@@ -395,7 +395,7 @@ mod tests {
|
||||
#[should_panic(expected = "Timestamp must be updated only once in the block")]
|
||||
fn double_timestamp_should_fail() {
|
||||
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
with_externalities(&mut TestExternalities::new_with_children(t), || {
|
||||
with_externalities(&mut TestExternalities::new(t), || {
|
||||
Timestamp::set_timestamp(42);
|
||||
assert_ok!(Timestamp::dispatch(Call::set(69), Origin::NONE));
|
||||
let _ = Timestamp::dispatch(Call::set(70), Origin::NONE);
|
||||
@@ -406,7 +406,7 @@ mod tests {
|
||||
#[should_panic(expected = "Timestamp must increment by at least <MinimumPeriod> between sequential blocks")]
|
||||
fn block_period_minimum_enforced() {
|
||||
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
with_externalities(&mut TestExternalities::new_with_children(t), || {
|
||||
with_externalities(&mut TestExternalities::new(t), || {
|
||||
Timestamp::set_timestamp(42);
|
||||
let _ = Timestamp::dispatch(Call::set(46), Origin::NONE);
|
||||
});
|
||||
|
||||
@@ -439,11 +439,11 @@ mod tests {
|
||||
type Treasury = Module<Test>;
|
||||
|
||||
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
|
||||
t.extend(balances::GenesisConfig::<Test>{
|
||||
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
|
||||
balances::GenesisConfig::<Test>{
|
||||
balances: vec![(0, 100), (1, 99), (2, 1)],
|
||||
vesting: vec![],
|
||||
}.build_storage().unwrap().0);
|
||||
}.assimilate_storage(&mut t).unwrap();
|
||||
t.into()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user