git.delta.rocks / unique-network / refs/commits / c3c95caf228f

difftreelog

test fix build

Yaroslav Bolyukin2023-10-09parent: #22a5178.patch.diff
in: master

9 files changed

modifiedpallets/collator-selection/src/mock.rsdiffbeforeafterboth
--- a/pallets/collator-selection/src/mock.rs
+++ b/pallets/collator-selection/src/mock.rs
@@ -32,23 +32,22 @@
 
 use frame_support::{
 	ord_parameter_types, parameter_types,
-	traits::{FindAuthor, GenesisBuild, ValidatorRegistration},
+	traits::{ConstU32, FindAuthor, ValidatorRegistration},
 	PalletId,
 };
 use frame_system as system;
 use frame_system::EnsureSignedBy;
-use sp_core::H256;
+use sp_core::{ConstBool, H256};
 use sp_runtime::{
-	testing::{Header, UintAuthorityId},
+	testing::UintAuthorityId,
 	traits::{BlakeTwo256, IdentityLookup, OpaqueKeys},
-	Perbill, RuntimeAppPublic,
+	BuildStorage, Perbill, RuntimeAppPublic,
 };
 
 use super::*;
 use crate as collator_selection;
 
-type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
-type Block = frame_system::mocking::MockBlock<Test>;
+type Block = frame_system::mocking::MockBlockU32<Test>;
 
 // Configure a mock runtime to test the pallet.
 frame_support::construct_runtime!(
@@ -64,12 +63,13 @@
 );
 
 parameter_types! {
-	pub const BlockHashCount: u64 = 250;
+	pub const BlockHashCount: u32 = 250;
 	pub const SS58Prefix: u8 = 42;
 }
 
 impl system::Config for Test {
 	type BaseCallFilter = frame_support::traits::Everything;
+	type Block = Block;
 	type BlockWeights = ();
 	type BlockLength = ();
 	type DbWeight = ();
@@ -90,7 +90,7 @@
 	type SystemWeightInfo = ();
 	type SS58Prefix = SS58Prefix;
 	type OnSetCode = ();
-	type MaxConsumers = frame_support::traits::ConstU32<16>;
+	type MaxConsumers = ConstU32<16>;
 }
 
 parameter_types! {
@@ -113,6 +113,7 @@
 	type FreezeIdentifier = [u8; 16];
 	type MaxHolds = MaxHolds;
 	type MaxFreezes = MaxFreezes;
+	type RuntimeHoldReason = RuntimeHoldReason;
 }
 
 pub struct Author4;
@@ -145,6 +146,7 @@
 	type AuthorityId = sp_consensus_aura::sr25519::AuthorityId;
 	type MaxAuthorities = MaxAuthorities;
 	type DisabledValidators = ();
+	type AllowMultipleBlocksPerSlot = ConstBool<true>;
 }
 
 sp_runtime::impl_opaque_keys! {
@@ -162,27 +164,27 @@
 
 parameter_types! {
 	pub static SessionHandlerCollators: Vec<u64> = Vec::new();
-	pub static SessionChangeBlock: u64 = 0;
+	pub static SessionChangeBlock: u32 = 0;
 }
 
 pub struct TestSessionHandler;
 impl pallet_session::SessionHandler<u64> for TestSessionHandler {
 	const KEY_TYPE_IDS: &'static [sp_runtime::KeyTypeId] = &[UintAuthorityId::ID];
 	fn on_genesis_session<Ks: OpaqueKeys>(keys: &[(u64, Ks)]) {
-		SessionHandlerCollators::set(keys.into_iter().map(|(a, _)| *a).collect::<Vec<_>>())
+		SessionHandlerCollators::set(keys.iter().map(|(a, _)| *a).collect::<Vec<_>>())
 	}
 	fn on_new_session<Ks: OpaqueKeys>(_: bool, keys: &[(u64, Ks)], _: &[(u64, Ks)]) {
 		SessionChangeBlock::set(System::block_number());
 		dbg!(keys.len());
-		SessionHandlerCollators::set(keys.into_iter().map(|(a, _)| *a).collect::<Vec<_>>())
+		SessionHandlerCollators::set(keys.iter().map(|(a, _)| *a).collect::<Vec<_>>())
 	}
 	fn on_before_session_ending() {}
 	fn on_disabled(_: u32) {}
 }
 
 parameter_types! {
-	pub const Offset: u64 = 0;
-	pub const Period: u64 = 10;
+	pub const Offset: u32 = 0;
+	pub const Period: u32 = 10;
 }
 
 impl pallet_session::Config for Test {
@@ -201,7 +203,7 @@
 parameter_types! {
 	pub const MaxCollators: u32 = 5;
 	pub const LicenseBond: u64 = 10;
-	pub const KickThreshold: u64 = 10;
+	pub const KickThreshold: u32 = 10;
 	// the following values do not matter and are meaningless, etc.
 	pub const DefaultWeightToFeeCoefficient: u64 = 100_000;
 	pub const DefaultMinGasPrice: u64 = 100_000;
@@ -230,6 +232,7 @@
 
 impl Config for Test {
 	type RuntimeEvent = RuntimeEvent;
+	type RuntimeHoldReason = RuntimeHoldReason;
 	type UpdateOrigin = EnsureSignedBy<RootAccount, u64>;
 	type PotId = PotId;
 	type MaxCollators = MaxCollators;
@@ -238,7 +241,6 @@
 	type ValidatorId = <Self as frame_system::Config>::AccountId;
 	type ValidatorIdOf = IdentityCollator;
 	type ValidatorRegistration = IsRegistered;
-	type LicenceBondIdentifier = LicenceBondIdentifier;
 	type Currency = Balances;
 	type DesiredCollators = MaxCollators;
 	type LicenseBond = LicenseBond;
@@ -248,8 +250,8 @@
 
 pub fn new_test_ext() -> sp_io::TestExternalities {
 	sp_tracing::try_init_simple();
-	let mut t = frame_system::GenesisConfig::default()
-		.build_storage::<Test>()
+	let mut t = <frame_system::GenesisConfig<Test>>::default()
+		.build_storage()
 		.unwrap();
 	let invulnerables = vec![1, 2];
 
@@ -284,9 +286,9 @@
 	t.into()
 }
 
-pub fn initialize_to_block(n: u64) {
+pub fn initialize_to_block(n: u32) {
 	for i in System::block_number() + 1..=n {
 		System::set_block_number(i);
-		<AllPalletsWithSystem as frame_support::traits::OnInitialize<u64>>::on_initialize(i);
+		<AllPalletsWithSystem as frame_support::traits::OnInitialize<u32>>::on_initialize(i);
 	}
 }
modifiedpallets/collator-selection/src/tests.rsdiffbeforeafterboth
--- a/pallets/collator-selection/src/tests.rs
+++ b/pallets/collator-selection/src/tests.rs
@@ -32,10 +32,10 @@
 
 use frame_support::{
 	assert_noop, assert_ok,
-	traits::{fungible, GenesisBuild, OnInitialize},
+	traits::{fungible, OnInitialize},
 };
 use scale_info::prelude::*;
-use sp_runtime::{traits::BadOrigin, TokenError};
+use sp_runtime::{traits::BadOrigin, BuildStorage, TokenError};
 
 use crate::{self as collator_selection, mock::*, Config, Error};
 
@@ -464,8 +464,8 @@
 #[should_panic = "duplicate invulnerables in genesis."]
 fn cannot_set_genesis_value_twice() {
 	sp_tracing::try_init_simple();
-	let mut t = frame_system::GenesisConfig::default()
-		.build_storage::<Test>()
+	let mut t = <frame_system::GenesisConfig<Test>>::default()
+		.build_storage()
 		.unwrap();
 	let invulnerables = vec![1, 1];
 
modifiedpallets/identity/src/tests.rsdiffbeforeafterboth
--- a/pallets/identity/src/tests.rs
+++ b/pallets/identity/src/tests.rs
@@ -43,7 +43,6 @@
 use parity_scale_codec::{Decode, Encode};
 use sp_core::H256;
 use sp_runtime::{
-	testing::Header,
 	traits::{BadOrigin, BlakeTwo256, IdentityLookup},
 	BuildStorage,
 };
@@ -51,8 +50,7 @@
 use super::*;
 use crate as pallet_identity;
 
-type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
-type Block = frame_system::mocking::MockBlock<Test>;
+type Block = frame_system::mocking::MockBlockU32<Test>;
 
 frame_support::construct_runtime!(
 	pub enum Test {
@@ -79,7 +77,7 @@
 	type AccountId = u64;
 	type Lookup = IdentityLookup<Self::AccountId>;
 	type RuntimeEvent = RuntimeEvent;
-	type BlockHashCount = ConstU64<250>;
+	type BlockHashCount = ConstU32<250>;
 	type DbWeight = ();
 	type Version = ();
 	type PalletInfo = PalletInfo;
modifiedpallets/inflation/src/tests.rsdiffbeforeafterboth
before · pallets/inflation/src/tests.rs
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg(test)]18#![allow(clippy::from_over_into)]19use frame_support::{20	assert_ok, parameter_types,21	traits::{22		fungible::{Balanced, Inspect},23		tokens::Precision,24		ConstU32, Everything, OnInitialize,25	},26	weights::Weight,27};28use frame_system::RawOrigin;29use sp_core::H256;30use sp_runtime::{31	traits::{BlakeTwo256, BlockNumberProvider, IdentityLookup},32	BuildStorage,33};3435use crate as pallet_inflation;3637type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;38type Block = frame_system::mocking::MockBlock<Test>;3940const YEAR: u64 = 5_259_600; // 6-second blocks41							 // const YEAR: u64 = 2_629_800; // 12-second blocks42							 // Expected 100-block inflation for year 1 is 100 * 100_000_000 / YEAR = FIRST_YEAR_BLOCK_INFLATION43const FIRST_YEAR_BLOCK_INFLATION: u64 = 1901;4445parameter_types! {46	pub const ExistentialDeposit: u64 = 1;47	pub const MaxLocks: u32 = 50;48}4950impl pallet_balances::Config for Test {51	type AccountStore = System;52	type Balance = u64;53	type DustRemoval = ();54	type RuntimeEvent = ();55	type ExistentialDeposit = ExistentialDeposit;56	type WeightInfo = ();57	type MaxLocks = MaxLocks;58	type MaxReserves = ();59	type ReserveIdentifier = ();60	type FreezeIdentifier = ();61	type MaxHolds = ();62	type MaxFreezes = ();63}6465frame_support::construct_runtime!(66	pub enum Test {67		Balances: pallet_balances,68		System: frame_system,69		Inflation: pallet_inflation,70	}71);7273parameter_types! {74	pub const BlockHashCount: u64 = 250;75	pub BlockWeights: frame_system::limits::BlockWeights =76		frame_system::limits::BlockWeights::simple_max(Weight::from_parts(1024, 0));77	pub const SS58Prefix: u8 = 42;78}7980impl frame_system::Config for Test {81	type BaseCallFilter = Everything;82	type BlockWeights = ();83	type BlockLength = ();84	type DbWeight = ();85	type RuntimeOrigin = RuntimeOrigin;86	type RuntimeCall = RuntimeCall;87	type Nonce = u64;88	type Hash = H256;89	type Hashing = BlakeTwo256;90	type AccountId = u64;91	type Lookup = IdentityLookup<Self::AccountId>;92	type RuntimeEvent = ();93	type BlockHashCount = BlockHashCount;94	type Version = ();95	type PalletInfo = PalletInfo;96	type AccountData = pallet_balances::AccountData<u64>;97	type OnNewAccount = ();98	type OnKilledAccount = ();99	type SystemWeightInfo = ();100	type SS58Prefix = SS58Prefix;101	type OnSetCode = ();102	type MaxConsumers = ConstU32<16>;103}104105parameter_types! {106	pub TreasuryAccountId: u64 = 1234;107	pub const InflationBlockInterval: u32 = 100; // every time per how many blocks inflation is applied108	pub static MockBlockNumberProvider: u32 = 0;109}110111impl BlockNumberProvider for MockBlockNumberProvider {112	type BlockNumber = u32;113114	fn current_block_number() -> Self::BlockNumber {115		Self::get()116	}117}118119impl pallet_inflation::Config for Test {120	type Currency = Balances;121	type TreasuryAccountId = TreasuryAccountId;122	type InflationBlockInterval = InflationBlockInterval;123	type BlockNumberProvider = MockBlockNumberProvider;124}125126pub fn new_test_ext() -> sp_io::TestExternalities {127	<frame_system::GenesisConfig<Test>>::default()128		.build_storage()129		.unwrap()130		.into()131}132133macro_rules! block_inflation {134	// Block inflation doesn't have any argumets135	() => {136		// Return BlockInflation state variable current value137		<pallet_inflation::BlockInflation<Test>>::get()138	};139}140141#[test]142fn uninitialized_inflation() {143	new_test_ext().execute_with(|| {144		let initial_issuance: u64 = 1_000_000_000;145		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);146		assert_eq!(Balances::free_balance(1234), initial_issuance);147148		// BlockInflation should be set after inflation is started149		// first inflation deposit should be equal to BlockInflation150		MockBlockNumberProvider::set(1);151152		assert_eq!(block_inflation!(), 0);153	});154}155156#[test]157fn inflation_works() {158	new_test_ext().execute_with(|| {159		// Total issuance = 1_000_000_000160		let initial_issuance: u64 = 1_000_000_000;161		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);162		assert_eq!(Balances::free_balance(1234), initial_issuance);163164		// BlockInflation should be set after inflation is started165		// first inflation deposit should be equal to BlockInflation166		MockBlockNumberProvider::set(1);167168		// Start inflation as sudo169		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));170		assert_eq!(block_inflation!(), FIRST_YEAR_BLOCK_INFLATION);171		assert_eq!(172			Balances::free_balance(1234) - initial_issuance,173			block_inflation!()174		);175176		// Trigger inflation177		MockBlockNumberProvider::set(102);178		Inflation::on_initialize(0);179		assert_eq!(180			Balances::free_balance(1234) - initial_issuance,181			2 * block_inflation!()182		);183	});184}185186#[test]187fn inflation_second_deposit() {188	new_test_ext().execute_with(|| {189		// Total issuance = 1_000_000_000190		let initial_issuance: u64 = 1_000_000_000;191		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);192		assert_eq!(Balances::free_balance(1234), initial_issuance);193		MockBlockNumberProvider::set(1);194195		// Start inflation as sudo196		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));197198		// Next inflation deposit happens when block is greater then or equal to NextInflationBlock199		let mut block: u64 = 2;200		let balance_before: u64 = Balances::free_balance(1234);201		while block < <pallet_inflation::NextInflationBlock<Test>>::get() {202			MockBlockNumberProvider::set(block as u64);203			Inflation::on_initialize(0);204			block += 1;205		}206		let balance_just_before: u64 = Balances::free_balance(1234);207		assert_eq!(balance_before, balance_just_before);208209		// The block with inflation210		MockBlockNumberProvider::set(block as u64);211		Inflation::on_initialize(0);212		let balance_after: u64 = Balances::free_balance(1234);213		assert_eq!(balance_after - balance_just_before, block_inflation!());214	});215}216217#[test]218fn inflation_in_1_year() {219	new_test_ext().execute_with(|| {220		// Total issuance = 1_000_000_000221		let initial_issuance: u64 = 1_000_000_000;222		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);223		assert_eq!(Balances::free_balance(1234), initial_issuance);224		MockBlockNumberProvider::set(1);225226		// Start inflation as sudo227		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));228229		// Go through all the block inflations for year 1,230		// total issuance will be updated accordingly231		// Inflation is set to start in block 1, so first iteration is block 101232		for block in (101..YEAR).step_by(100) {233			MockBlockNumberProvider::set(block);234			Inflation::on_initialize(0);235		}236		assert_eq!(237			initial_issuance + (FIRST_YEAR_BLOCK_INFLATION * (YEAR / 100)),238			<Balances as Inspect<_>>::total_issuance()239		);240241		MockBlockNumberProvider::set(YEAR + 1);242		Inflation::on_initialize(0);243		let block_inflation_year_2 = block_inflation!();244		// Expected 100-block inflation for year 2: 100 * 9.33% * initial issuance * 110% / YEAR == 1951245		let expecter_year_2_inflation: u64 = (initial_issuance246			+ FIRST_YEAR_BLOCK_INFLATION * YEAR / 100)247			* 933 * 100 / (10000 * YEAR);248		assert_eq!(block_inflation_year_2 / 10, expecter_year_2_inflation / 10); // divide by 10 for approx. equality249	});250}251252#[test]253fn inflation_start_large_kusama_block() {254	new_test_ext().execute_with(|| {255		// Total issuance = 1_000_000_000256		let initial_issuance: u64 = 1_000_000_000;257		let start_block: u64 = 10457457;258		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);259		assert_eq!(Balances::free_balance(1234), initial_issuance);260		MockBlockNumberProvider::set(start_block);261262		// Start inflation as sudo263		assert_ok!(Inflation::start_inflation(264			RawOrigin::Root.into(),265			start_block266		));267268		// Go through all the block inflations for year 1,269		// total issuance will be updated accordingly270		// Inflation is set to start in block 1, so first iteration is block 101271		for block in (101..YEAR).step_by(100) {272			MockBlockNumberProvider::set(start_block + block);273			Inflation::on_initialize(0);274		}275		assert_eq!(276			initial_issuance + (FIRST_YEAR_BLOCK_INFLATION * (YEAR / 100)),277			<Balances as Inspect<_>>::total_issuance()278		);279280		MockBlockNumberProvider::set(start_block + YEAR + 1);281		Inflation::on_initialize(0);282		let block_inflation_year_2 = block_inflation!();283		// Expected 100-block inflation for year 2: 100 * 9.33% * initial issuance * 110% / YEAR == 1951284		let expecter_year_2_inflation: u64 = (initial_issuance285			+ FIRST_YEAR_BLOCK_INFLATION * YEAR / 100)286			* 933 * 100 / (10000 * YEAR);287		assert_eq!(block_inflation_year_2 / 10, expecter_year_2_inflation / 10); // divide by 10 for approx. equality288	});289}290291#[test]292fn inflation_after_year_10_is_flat() {293	new_test_ext().execute_with(|| {294		// Total issuance = 1_000_000_000295		let initial_issuance: u64 = 1_000_000_000;296		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);297		assert_eq!(Balances::free_balance(1234), initial_issuance);298		MockBlockNumberProvider::set(YEAR * 9 + 1);299300		// Start inflation as sudo301		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));302303		// Let inflation catch up304		for _year in 1..=9 {305			Inflation::on_initialize(0);306		}307308		for year in 10..=20 {309			let block_inflation_year_before = block_inflation!();310			MockBlockNumberProvider::set(YEAR * year + 1);311			Inflation::on_initialize(0);312			let block_inflation_year_after = block_inflation!();313314			// Assert that next year inflation is equal to previous year inflation315			assert_eq!(block_inflation_year_before, block_inflation_year_after);316		}317	});318}319320#[test]321fn inflation_rate_by_year() {322	new_test_ext().execute_with(|| {323		let payouts: u64 = YEAR / InflationBlockInterval::get() as u64;324325		// Inflation starts at 10% and does down by 2/3% every year until year 9 (included),326		// then it is flat.327		let payout_by_year: [u64; 11] = [1000, 933, 867, 800, 733, 667, 600, 533, 467, 400, 400];328329		// For accuracy total issuance = payout0 * payouts * 10;330		let initial_issuance: u64 = payout_by_year[0] * payouts * 10;331		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);332		assert_eq!(Balances::free_balance(1234), initial_issuance);333334		// Start inflation as sudo335		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));336337		for year in 0..=10 {338			// Year first block339			MockBlockNumberProvider::set(YEAR * year + 1);340			Inflation::on_initialize(0);341			let mut actual_payout = block_inflation!();342			assert_eq!(actual_payout, payout_by_year[year as usize]);343344			// Year second block345			MockBlockNumberProvider::set(YEAR * year + 2);346			Inflation::on_initialize(0);347			actual_payout = block_inflation!();348			assert_eq!(actual_payout, payout_by_year[year as usize]);349350			// Year middle block351			MockBlockNumberProvider::set(year * YEAR + YEAR / 2);352			Inflation::on_initialize(0);353			actual_payout = block_inflation!();354			assert_eq!(actual_payout, payout_by_year[year as usize]);355356			// Year last block357			MockBlockNumberProvider::set((year + 1) * YEAR);358			Inflation::on_initialize(0);359			actual_payout = block_inflation!();360			assert_eq!(actual_payout, payout_by_year[year as usize]);361		}362	});363}
after · pallets/inflation/src/tests.rs
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg(test)]18#![allow(clippy::from_over_into)]19use frame_support::{20	assert_ok, parameter_types,21	traits::{22		fungible::{Balanced, Inspect},23		tokens::Precision,24		ConstU32, Everything, OnInitialize,25	},26	weights::Weight,27};28use frame_system::RawOrigin;29use sp_core::H256;30use sp_runtime::{31	traits::{BlakeTwo256, BlockNumberProvider, IdentityLookup},32	BuildStorage,33};3435use crate as pallet_inflation;3637type Block = frame_system::mocking::MockBlockU32<Test>;3839// 6-second blocks40// const YEAR: u32 = 2_629_800; // 12-second blocks41// Expected 100-block inflation for year 1 is 100 * 100_000_000 / YEAR = FIRST_YEAR_BLOCK_INFLATION42const YEAR: u32 = 5_259_600;43const FIRST_YEAR_BLOCK_INFLATION: u64 = 1901;4445parameter_types! {46	pub const ExistentialDeposit: u64 = 1;47	pub const MaxLocks: u32 = 50;48}4950impl pallet_balances::Config for Test {51	type AccountStore = System;52	type Balance = u64;53	type DustRemoval = ();54	type RuntimeEvent = ();55	type ExistentialDeposit = ExistentialDeposit;56	type WeightInfo = ();57	type MaxLocks = MaxLocks;58	type MaxReserves = ();59	type ReserveIdentifier = ();60	type FreezeIdentifier = ();61	type MaxHolds = ();62	type MaxFreezes = ();63	type RuntimeHoldReason = RuntimeHoldReason;64}6566frame_support::construct_runtime!(67	pub enum Test {68		Balances: pallet_balances,69		System: frame_system,70		Inflation: pallet_inflation,71	}72);7374parameter_types! {75	pub const BlockHashCount: u32 = 250;76	pub BlockWeights: frame_system::limits::BlockWeights =77		frame_system::limits::BlockWeights::simple_max(Weight::from_parts(1024, 0));78	pub const SS58Prefix: u8 = 42;79}8081impl frame_system::Config for Test {82	type BaseCallFilter = Everything;83	type Block = Block;84	type BlockWeights = ();85	type BlockLength = ();86	type DbWeight = ();87	type RuntimeOrigin = RuntimeOrigin;88	type RuntimeCall = RuntimeCall;89	type Nonce = u64;90	type Hash = H256;91	type Hashing = BlakeTwo256;92	type AccountId = u64;93	type Lookup = IdentityLookup<Self::AccountId>;94	type RuntimeEvent = ();95	type BlockHashCount = BlockHashCount;96	type Version = ();97	type PalletInfo = PalletInfo;98	type AccountData = pallet_balances::AccountData<u64>;99	type OnNewAccount = ();100	type OnKilledAccount = ();101	type SystemWeightInfo = ();102	type SS58Prefix = SS58Prefix;103	type OnSetCode = ();104	type MaxConsumers = ConstU32<16>;105}106107parameter_types! {108	pub TreasuryAccountId: u64 = 1234;109	pub const InflationBlockInterval: u32 = 100; // every time per how many blocks inflation is applied110	pub static MockBlockNumberProvider: u32 = 0;111}112113impl BlockNumberProvider for MockBlockNumberProvider {114	type BlockNumber = u32;115116	fn current_block_number() -> Self::BlockNumber {117		Self::get()118	}119}120121impl pallet_inflation::Config for Test {122	type Currency = Balances;123	type TreasuryAccountId = TreasuryAccountId;124	type InflationBlockInterval = InflationBlockInterval;125	type BlockNumberProvider = MockBlockNumberProvider;126}127128pub fn new_test_ext() -> sp_io::TestExternalities {129	<frame_system::GenesisConfig<Test>>::default()130		.build_storage()131		.unwrap()132		.into()133}134135macro_rules! block_inflation {136	// Block inflation doesn't have any argumets137	() => {138		// Return BlockInflation state variable current value139		<pallet_inflation::BlockInflation<Test>>::get()140	};141}142143#[test]144fn uninitialized_inflation() {145	new_test_ext().execute_with(|| {146		let initial_issuance: u64 = 1_000_000_000;147		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);148		assert_eq!(Balances::free_balance(1234), initial_issuance);149150		// BlockInflation should be set after inflation is started151		// first inflation deposit should be equal to BlockInflation152		MockBlockNumberProvider::set(1);153154		assert_eq!(block_inflation!(), 0);155	});156}157158#[test]159fn inflation_works() {160	new_test_ext().execute_with(|| {161		// Total issuance = 1_000_000_000162		let initial_issuance: u64 = 1_000_000_000;163		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);164		assert_eq!(Balances::free_balance(1234), initial_issuance);165166		// BlockInflation should be set after inflation is started167		// first inflation deposit should be equal to BlockInflation168		MockBlockNumberProvider::set(1);169170		// Start inflation as sudo171		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));172		assert_eq!(block_inflation!(), FIRST_YEAR_BLOCK_INFLATION);173		assert_eq!(174			Balances::free_balance(1234) - initial_issuance,175			block_inflation!()176		);177178		// Trigger inflation179		MockBlockNumberProvider::set(102);180		Inflation::on_initialize(0);181		assert_eq!(182			Balances::free_balance(1234) - initial_issuance,183			2 * block_inflation!()184		);185	});186}187188#[test]189fn inflation_second_deposit() {190	new_test_ext().execute_with(|| {191		// Total issuance = 1_000_000_000192		let initial_issuance = 1_000_000_000;193		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);194		assert_eq!(Balances::free_balance(1234), initial_issuance);195		MockBlockNumberProvider::set(1);196197		// Start inflation as sudo198		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));199200		// Next inflation deposit happens when block is greater then or equal to NextInflationBlock201		let mut block = 2;202		let balance_before = Balances::free_balance(1234);203		while block < <pallet_inflation::NextInflationBlock<Test>>::get() {204			MockBlockNumberProvider::set(block);205			Inflation::on_initialize(0);206			block += 1;207		}208		let balance_just_before = Balances::free_balance(1234);209		assert_eq!(balance_before, balance_just_before);210211		// The block with inflation212		MockBlockNumberProvider::set(block);213		Inflation::on_initialize(0);214		let balance_after = Balances::free_balance(1234);215		assert_eq!(balance_after - balance_just_before, block_inflation!());216	});217}218219#[test]220fn inflation_in_1_year() {221	new_test_ext().execute_with(|| {222		// Total issuance = 1_000_000_000223		let initial_issuance: u64 = 1_000_000_000;224		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);225		assert_eq!(Balances::free_balance(1234), initial_issuance);226		MockBlockNumberProvider::set(1);227228		// Start inflation as sudo229		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));230231		// Go through all the block inflations for year 1,232		// total issuance will be updated accordingly233		// Inflation is set to start in block 1, so first iteration is block 101234		for block in (101..YEAR).step_by(100) {235			MockBlockNumberProvider::set(block);236			Inflation::on_initialize(0);237		}238		assert_eq!(239			initial_issuance + (FIRST_YEAR_BLOCK_INFLATION * ((YEAR as u64) / 100)),240			<Balances as Inspect<_>>::total_issuance()241		);242243		MockBlockNumberProvider::set(YEAR + 1);244		Inflation::on_initialize(0);245		let block_inflation_year_2 = block_inflation!();246		// Expected 100-block inflation for year 2: 100 * 9.33% * initial issuance * 110% / YEAR == 1951247		let expecter_year_2_inflation: u64 = (initial_issuance248			+ FIRST_YEAR_BLOCK_INFLATION * (YEAR as u64) / 100)249			* 933 * 100 / (10000 * (YEAR as u64));250		assert_eq!(block_inflation_year_2 / 10, expecter_year_2_inflation / 10); // divide by 10 for approx. equality251	});252}253254#[test]255fn inflation_start_large_kusama_block() {256	new_test_ext().execute_with(|| {257		// Total issuance = 1_000_000_000258		let initial_issuance = 1_000_000_000;259		let start_block = 10457457;260		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);261		assert_eq!(Balances::free_balance(1234), initial_issuance);262		MockBlockNumberProvider::set(start_block);263264		// Start inflation as sudo265		assert_ok!(Inflation::start_inflation(266			RawOrigin::Root.into(),267			start_block268		));269270		// Go through all the block inflations for year 1,271		// total issuance will be updated accordingly272		// Inflation is set to start in block 1, so first iteration is block 101273		for block in (101..YEAR).step_by(100) {274			MockBlockNumberProvider::set(start_block + block);275			Inflation::on_initialize(0);276		}277		assert_eq!(278			initial_issuance + (FIRST_YEAR_BLOCK_INFLATION * ((YEAR as u64) / 100)),279			<Balances as Inspect<_>>::total_issuance()280		);281282		MockBlockNumberProvider::set(start_block + YEAR + 1);283		Inflation::on_initialize(0);284		let block_inflation_year_2 = block_inflation!();285		// Expected 100-block inflation for year 2: 100 * 9.33% * initial issuance * 110% / YEAR == 1951286		let expecter_year_2_inflation: u64 = (initial_issuance287			+ FIRST_YEAR_BLOCK_INFLATION * (YEAR as u64) / 100)288			* 933 * 100 / (10000 * (YEAR as u64));289		assert_eq!(block_inflation_year_2 / 10, expecter_year_2_inflation / 10); // divide by 10 for approx. equality290	});291}292293#[test]294fn inflation_after_year_10_is_flat() {295	new_test_ext().execute_with(|| {296		// Total issuance = 1_000_000_000297		let initial_issuance: u64 = 1_000_000_000;298		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);299		assert_eq!(Balances::free_balance(1234), initial_issuance);300		MockBlockNumberProvider::set(YEAR * 9 + 1);301302		// Start inflation as sudo303		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));304305		// Let inflation catch up306		for _year in 1..=9 {307			Inflation::on_initialize(0);308		}309310		for year in 10..=20 {311			let block_inflation_year_before = block_inflation!();312			MockBlockNumberProvider::set(YEAR * year + 1);313			Inflation::on_initialize(0);314			let block_inflation_year_after = block_inflation!();315316			// Assert that next year inflation is equal to previous year inflation317			assert_eq!(block_inflation_year_before, block_inflation_year_after);318		}319	});320}321322#[test]323fn inflation_rate_by_year() {324	new_test_ext().execute_with(|| {325		let payouts = (YEAR / InflationBlockInterval::get()) as u64;326327		// Inflation starts at 10% and does down by 2/3% every year until year 9 (included),328		// then it is flat.329		let payout_by_year: [u64; 11] = [1000, 933, 867, 800, 733, 667, 600, 533, 467, 400, 400];330331		// For accuracy total issuance = payout0 * payouts * 10;332		let initial_issuance = payout_by_year[0] * payouts * 10;333		let _ = <Balances as Balanced<_>>::deposit(&1234, initial_issuance, Precision::Exact);334		assert_eq!(Balances::free_balance(1234), initial_issuance);335336		// Start inflation as sudo337		assert_ok!(Inflation::start_inflation(RawOrigin::Root.into(), 1));338339		for year in 0..=10 {340			// Year first block341			MockBlockNumberProvider::set(YEAR * year + 1);342			Inflation::on_initialize(0);343			let mut actual_payout = block_inflation!();344			assert_eq!(actual_payout, payout_by_year[year as usize]);345346			// Year second block347			MockBlockNumberProvider::set(YEAR * year + 2);348			Inflation::on_initialize(0);349			actual_payout = block_inflation!();350			assert_eq!(actual_payout, payout_by_year[year as usize]);351352			// Year middle block353			MockBlockNumberProvider::set(year * YEAR + YEAR / 2);354			Inflation::on_initialize(0);355			actual_payout = block_inflation!();356			assert_eq!(actual_payout, payout_by_year[year as usize]);357358			// Year last block359			MockBlockNumberProvider::set((year + 1) * YEAR);360			Inflation::on_initialize(0);361			actual_payout = block_inflation!();362			assert_eq!(actual_payout, payout_by_year[year as usize]);363		}364	});365}
modifiedruntime/common/tests/mod.rsdiffbeforeafterboth
--- a/runtime/common/tests/mod.rs
+++ b/runtime/common/tests/mod.rs
@@ -19,7 +19,7 @@
 use sp_runtime::{BuildStorage, Storage};
 use up_common::types::AuraId;
 
-use crate::{BuildGenesisConfig, ParachainInfoConfig, Runtime, RuntimeEvent, System};
+use crate::{ParachainInfoConfig, Runtime, RuntimeEvent, RuntimeGenesisConfig, System};
 pub type Balance = u128;
 
 pub mod xcm;
@@ -51,8 +51,8 @@
 fn new_test_ext(balances: Vec<(AccountId, Balance)>) -> sp_io::TestExternalities {
 	let mut storage = make_basic_storage();
 
-	pallet_balances::BuildGenesisConfig::<Runtime> { balances }
-		.build_storage(&mut storage)
+	pallet_balances::GenesisConfig::<Runtime> { balances }
+		.assimilate_storage(&mut storage)
 		.unwrap();
 
 	let mut ext = sp_io::TestExternalities::new(storage);
@@ -95,7 +95,7 @@
 		.map(|acc| get_account_id_from_seed::<sr25519::Public>(acc))
 		.collect::<Vec<_>>();
 
-	let cfg = BuildGenesisConfig {
+	let cfg = RuntimeGenesisConfig {
 		collator_selection: CollatorSelectionConfig { invulnerables },
 		session: SessionConfig { keys },
 		parachain_info: ParachainInfoConfig {
@@ -112,7 +112,7 @@
 fn make_basic_storage() -> Storage {
 	use crate::AuraConfig;
 
-	let cfg = BuildGenesisConfig {
+	let cfg = RuntimeGenesisConfig {
 		aura: AuraConfig {
 			authorities: vec![
 				get_from_seed::<AuraId>("Alice"),
modifiedruntime/common/tests/xcm.rsdiffbeforeafterboth
--- a/runtime/common/tests/xcm.rs
+++ b/runtime/common/tests/xcm.rs
@@ -52,9 +52,9 @@
 
 		let xcm_event = &last_events(1)[0];
 		match xcm_event {
-			RuntimeEvent::PolkadotXcm(pallet_xcm::Event::<Runtime>::Attempted(
-				Outcome::Incomplete(_weight, Error::NoPermission),
-			)) => { /* Pass */ }
+			RuntimeEvent::PolkadotXcm(pallet_xcm::Event::<Runtime>::Attempted {
+				outcome: Outcome::Incomplete(_weight, Error::NoPermission),
+			}) => { /* Pass */ }
 			_ => panic!(
 				"Expected PolkadotXcm.Attempted(Incomplete(_weight, NoPermission)),\
 				found: {xcm_event:#?}"
addedruntime/tests/src/dispatch.rsdiffbeforeafterboth
--- /dev/null
+++ b/runtime/tests/src/dispatch.rs
@@ -0,0 +1 @@
+../../common/dispatch.rs
\ No newline at end of file
modifiedruntime/tests/src/lib.rsdiffbeforeafterboth
--- a/runtime/tests/src/lib.rs
+++ b/runtime/tests/src/lib.rs
@@ -33,23 +33,20 @@
 use scale_info::TypeInfo;
 use sp_core::{H160, H256, U256};
 use sp_runtime::{
-	testing::Header,
 	traits::{BlakeTwo256, IdentityLookup},
+	BuildStorage,
 };
 use up_data_structs::mapping::{CrossTokenAddressMapping, EvmTokenAddressMapping};
 
-#[path = "../../common/dispatch.rs"]
 mod dispatch;
 
 use dispatch::CollectionDispatchT;
 
-#[path = "../../common/weights/mod.rs"]
 mod weights;
 
 use weights::CommonWeights;
 
-type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
-type Block = frame_system::mocking::MockBlock<Test>;
+type Block = frame_system::mocking::MockBlockU32<Test>;
 
 #[cfg(test)]
 mod tests;
@@ -73,13 +70,14 @@
 );
 
 parameter_types! {
-	pub const BlockHashCount: u64 = 250;
+	pub const BlockHashCount: u32 = 250;
 	pub const SS58Prefix: u8 = 42;
 }
 
 impl system::Config for Test {
 	type RuntimeEvent = RuntimeEvent;
 	type BaseCallFilter = Everything;
+	type Block = Block;
 	type BlockWeights = ();
 	type BlockLength = ();
 	type DbWeight = ();
@@ -120,6 +118,7 @@
 	type MaxFreezes = MaxLocks;
 	type FreezeIdentifier = [u8; 8];
 	type MaxHolds = MaxLocks;
+	type RuntimeHoldReason = RuntimeHoldReason;
 }
 
 parameter_types! {
@@ -232,6 +231,7 @@
 	type OnMethodCall = ();
 	type OnCreate = ();
 	type OnChargeTransaction = ();
+	type OnCheckEvmTransaction = ();
 	type FindAuthor = ();
 	type BlockHashMapping = SubstrateBlockHashMapping<Self>;
 	type Timestamp = Timestamp;
@@ -296,8 +296,8 @@
 
 // Build genesis storage according to the mock runtime.
 pub fn new_test_ext() -> sp_io::TestExternalities {
-	system::GenesisConfig::default()
-		.build_storage::<Test>()
+	<system::GenesisConfig<Test>>::default()
+		.build_storage()
 		.unwrap()
 		.into()
 }
addedruntime/tests/src/weightsdiffbeforeafterboth
--- /dev/null
+++ b/runtime/tests/src/weights
@@ -0,0 +1 @@
+../../common/weights
\ No newline at end of file