Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

asset-conversion pallet: Generalise integrity test #14289

Merged
merged 3 commits into from
Jun 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions frame/asset-conversion/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ pub mod pallet {
type WeightInfo: WeightInfo;

/// The benchmarks need a way to create asset ids from u32s.
#[cfg(feature = "runtime-benchmarks")]
#[cfg(any(test, feature = "runtime-benchmarks"))]
type BenchmarkHelper: BenchmarkHelper<Self::AssetId>;
}

Expand Down Expand Up @@ -352,24 +352,24 @@ pub mod pallet {
#[pallet::hooks]
impl<T: Config> Hooks<T::BlockNumber> for Pallet<T> {
fn integrity_test() {
sp_std::if_std! {
sp_io::TestExternalities::new_empty().execute_with(|| {
// ensure that the `AccountId` is set properly and doesn't generate the same
// pool account for different pool ids.
let native = T::MultiAssetIdConverter::get_native();
// Decode the asset ids from bytes.
let asset_1 = T::MultiAssetIdConverter::into_multiasset_id(&T::AssetId::decode(&mut vec![0u8, 0, 0, 1].as_slice()).unwrap());
let asset_2 = T::MultiAssetIdConverter::into_multiasset_id(&T::AssetId::decode(&mut vec![255u8, 255, 255, 255].as_slice()).unwrap());
assert!(asset_1 != asset_2, "unfortunatly decoded to be the same asset.");
let pool_account_1 = Self::get_pool_account(&(native.clone(), asset_1));
let pool_account_2 = Self::get_pool_account(&(native, asset_2));
assert!(sp_std::mem::size_of::<T::AccountId>() >= sp_std::mem::size_of::<u128>());
assert!(
pool_account_1 != pool_account_2,
"AccountId should be set at least to u128"
);
});
}
#[cfg(test)]
gilescope marked this conversation as resolved.
Show resolved Hide resolved
sp_io::TestExternalities::new_empty().execute_with(|| {
// ensure that the `AccountId` is set properly and doesn't generate the same
// pool account for different pool ids.
let native = T::MultiAssetIdConverter::get_native();
let asset_1 =
T::MultiAssetIdConverter::into_multiasset_id(&T::BenchmarkHelper::asset_id(1));
let asset_2 =
T::MultiAssetIdConverter::into_multiasset_id(&T::BenchmarkHelper::asset_id(2));
assert!(asset_1 != asset_2, "must return different assets for different ids.");
gilescope marked this conversation as resolved.
Show resolved Hide resolved
let pool_account_1 = Self::get_pool_account(&(native.clone(), asset_1));
let pool_account_2 = Self::get_pool_account(&(native, asset_2));
assert!(sp_std::mem::size_of::<T::AccountId>() >= sp_std::mem::size_of::<u128>());
gilescope marked this conversation as resolved.
Show resolved Hide resolved
assert!(
pool_account_1 != pool_account_2,
"AccountId should be set at least to u128"
gilescope marked this conversation as resolved.
Show resolved Hide resolved
);
});
}
}

Expand Down
2 changes: 1 addition & 1 deletion frame/asset-conversion/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ impl Config for Test {
type MultiAssetId = NativeOrAssetId<u32>;
type MultiAssetIdConverter = NativeOrAssetIdConverter<u32>;

#[cfg(feature = "runtime-benchmarks")]
#[cfg(any(test, feature = "runtime-benchmarks"))]
type BenchmarkHelper = ();
}

Expand Down
4 changes: 2 additions & 2 deletions frame/asset-conversion/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@ pub trait MultiAssetIdConverter<MultiAssetId, AssetId> {
}

/// Benchmark Helper
#[cfg(feature = "runtime-benchmarks")]
#[cfg(any(test, feature = "runtime-benchmarks"))]
pub trait BenchmarkHelper<AssetId> {
/// Returns an asset id from a given integer.
fn asset_id(asset_id: u32) -> AssetId;
}

#[cfg(feature = "runtime-benchmarks")]
#[cfg(any(test, feature = "runtime-benchmarks"))]
impl<AssetId> BenchmarkHelper<AssetId> for ()
where
AssetId: From<u32>,
Expand Down