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:
cheme
2019-08-08 15:05:25 +02:00
committed by Gavin Wood
parent 0067b2d9a2
commit b0e1212d48
59 changed files with 523 additions and 271 deletions
+1 -1
View File
@@ -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]
+3 -3
View File
@@ -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()
}
+1 -1
View File
@@ -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()
}
+5 -4
View File
@@ -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()
}
}
+1 -1
View File
@@ -433,7 +433,7 @@ mod tests {
phantom: Default::default(),
}),
collective: None,
}.build_storage().unwrap().0.into()
}.build_storage().unwrap().into()
}
#[test]
+3 -3
View File
@@ -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)
}
}
+3 -3
View File
@@ -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)
}
}
+3 -3
View File
@@ -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>;
+1 -1
View File
@@ -1314,7 +1314,7 @@ mod tests {
presentation_duration: 2,
term_duration: 5,
}),
}.build_storage().unwrap().0.into()
}.build_storage().unwrap().into()
}
}
+4 -4
View File
@@ -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()
}
+5 -5
View File
@@ -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()
}
+3 -3
View File
@@ -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());
+2 -3
View File
@@ -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)
);
+8 -9
View File
@@ -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()
}
+3 -3
View File
@@ -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()
}
+3 -3
View File
@@ -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()
}
+4 -5
View File
@@ -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()
}
+3 -4
View File
@@ -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)
}
+3 -4
View File
@@ -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) {
+1 -2
View File
@@ -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, || {
+5 -5
View File
@@ -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)
}
}
};
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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]
+1 -1
View File
@@ -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) {
+11 -10
View File
@@ -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 {
+3 -3
View File
@@ -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);
});
+3 -3
View File
@@ -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()
}