Make use of child storage for testExternalities and basicExternalities (#3009)

* impl test using both storage and child_storage

* few fixes

* remove unused code

* impl PartialEq with children keys

* fmt

* implementation of basic with children + rename new

* assert and test

* no panic in runtime

* address comments

* fix
This commit is contained in:
thiolliere
2019-07-09 21:07:58 +02:00
committed by Gavin Wood
parent 6639ab339a
commit d00a2b28ac
12 changed files with 242 additions and 161 deletions
+10 -20
View File
@@ -260,26 +260,16 @@ impl ExtBuilder {
}
pub fn build(self) -> runtime_io::TestExternalities<Blake2Hasher> {
self.set_associated_consts();
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
t.extend(
balances::GenesisConfig::<Test> {
balances: vec![],
vesting: vec![],
}
.build_storage()
.unwrap()
.0,
);
t.extend(
GenesisConfig::<Test> {
current_schedule: Default::default(),
gas_price: self.gas_price,
}
.build_storage()
.unwrap()
.0,
);
runtime_io::TestExternalities::new(t)
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
balances::GenesisConfig::<Test> {
balances: vec![],
vesting: vec![],
}.assimilate_storage(&mut t.0, &mut t.1).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)
}
}
+6 -6
View File
@@ -238,8 +238,8 @@ mod tests {
}
pub fn build(self) -> runtime_io::TestExternalities<Blake2Hasher> {
self.set_associated_consts();
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![
(1, 10 * self.balance_factor),
(2, 20 * self.balance_factor),
@@ -249,8 +249,8 @@ mod tests {
(6, 60 * self.balance_factor)
],
vesting: vec![],
}.build_storage().unwrap().0);
t.extend(seats::GenesisConfig::<Test> {
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
seats::GenesisConfig::<Test> {
active_council: if self.with_council { vec![
(1, 10),
(2, 10),
@@ -259,8 +259,8 @@ mod tests {
desired_seats: 2,
presentation_duration: 2,
term_duration: 5,
}.build_storage().unwrap().0);
runtime_io::TestExternalities::new(t)
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
runtime_io::TestExternalities::new_with_children(t)
}
}
+5 -5
View File
@@ -1044,13 +1044,13 @@ mod tests {
}
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![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)],
vesting: vec![],
}.build_storage().unwrap().0);
t.extend(GenesisConfig::default().build_storage().unwrap().0);
runtime_io::TestExternalities::new(t)
}.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)
}
type System = system::Module<Test>;
+6 -6
View File
@@ -482,13 +482,13 @@ mod tests {
#[test]
fn balance_transfer_dispatch_works() {
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)],
vesting: vec![],
}.build_storage().unwrap().0);
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
let xt = primitives::testing::TestXt(Some(1), 0, Call::transfer(2, 69));
let mut t = runtime_io::TestExternalities::<Blake2Hasher>::new(t);
let mut t = runtime_io::TestExternalities::<Blake2Hasher>::new_with_children(t);
with_externalities(&mut t, || {
Executive::initialize_block(&Header::new(
1,
@@ -504,8 +504,8 @@ mod tests {
}
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
let mut t = system::GenesisConfig::default().build_storage::<Runtime>().unwrap().0;
t.extend(balances::GenesisConfig::<Runtime>::default().build_storage().unwrap().0);
let mut t = system::GenesisConfig::default().build_storage::<Runtime>().unwrap();
balances::GenesisConfig::<Runtime>::default().assimilate_storage(&mut t.0, &mut t.1).unwrap();
t.into()
}
+6 -6
View File
@@ -327,8 +327,8 @@ mod tests {
#[test]
fn median_works() {
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
with_externalities(&mut TestExternalities::new(t), || {
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
with_externalities(&mut TestExternalities::new_with_children(t), || {
FinalityTracker::update_hint(Some(500));
assert_eq!(FinalityTracker::median(), 250);
assert!(NOTIFICATIONS.with(|n| n.borrow().is_empty()));
@@ -337,8 +337,8 @@ mod tests {
#[test]
fn notifies_when_stalled() {
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
with_externalities(&mut TestExternalities::new(t), || {
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
with_externalities(&mut TestExternalities::new_with_children(t), || {
let mut parent_hash = System::parent_hash();
for i in 2..106 {
System::initialize(&i, &parent_hash, &Default::default(), &Default::default());
@@ -356,8 +356,8 @@ mod tests {
#[test]
fn recent_notifications_prevent_stalling() {
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
with_externalities(&mut TestExternalities::new(t), || {
let t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
with_externalities(&mut TestExternalities::new_with_children(t), || {
let mut parent_hash = System::parent_hash();
for i in 2..106 {
System::initialize(&i, &parent_hash, &Default::default(), &Default::default());
+6 -7
View File
@@ -563,17 +563,16 @@ mod tests {
};
fn new_test_ext() -> runtime_io::TestExternalities<Blake2Hasher> {
TEST_SESSION_CHANGED.with(|l| *l.borrow_mut() = false);
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0;
t.extend(timestamp::GenesisConfig::<Test> {
let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap();
timestamp::GenesisConfig::<Test> {
minimum_period: 5,
}.build_storage().unwrap().0);
t.extend(GenesisConfig::<Test> {
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
GenesisConfig::<Test> {
keys: NEXT_VALIDATORS.with(|l|
l.borrow().iter().cloned().map(|i| (i, UintAuthorityId(i))).collect()
),
}.build_storage().unwrap().0);
runtime_io::TestExternalities::new(t)
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
runtime_io::TestExternalities::new_with_children(t)
}
fn initialize_block(block: u64) {
+12 -12
View File
@@ -364,12 +364,12 @@ mod tests {
#[test]
fn timestamp_works() {
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> {
minimum_period: 5,
}.build_storage().unwrap().0);
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
with_externalities(&mut TestExternalities::new(t), || {
with_externalities(&mut TestExternalities::new_with_children(t), || {
Timestamp::set_timestamp(42);
assert_ok!(Timestamp::dispatch(Call::set(69), Origin::NONE));
assert_eq!(Timestamp::now(), 69);
@@ -379,12 +379,12 @@ mod tests {
#[test]
#[should_panic(expected = "Timestamp must be updated only once in the block")]
fn double_timestamp_should_fail() {
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> {
minimum_period: 5,
}.build_storage().unwrap().0);
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
with_externalities(&mut TestExternalities::new(t), || {
with_externalities(&mut TestExternalities::new_with_children(t), || {
Timestamp::set_timestamp(42);
assert_ok!(Timestamp::dispatch(Call::set(69), Origin::NONE));
let _ = Timestamp::dispatch(Call::set(70), Origin::NONE);
@@ -394,12 +394,12 @@ mod tests {
#[test]
#[should_panic(expected = "Timestamp must increment by at least <MinimumPeriod> between sequential blocks")]
fn block_period_minimum_enforced() {
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> {
minimum_period: 5,
}.build_storage().unwrap().0);
}.assimilate_storage(&mut t.0, &mut t.1).unwrap();
with_externalities(&mut TestExternalities::new(t), || {
with_externalities(&mut TestExternalities::new_with_children(t), || {
Timestamp::set_timestamp(42);
let _ = Timestamp::dispatch(Call::set(46), Origin::NONE);
});