Skip to content

Commit

Permalink
asset-conversion pallet: Generalise integrity test (paritytech#14289)
Browse files Browse the repository at this point in the history
* integrity test was only working for u32 asset ids.

* cargo fmt

* Update frame/asset-conversion/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

---------

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
  • Loading branch information
2 people authored and nathanwhit committed Jul 19, 2023
1 parent 4d4ede8 commit a2da205
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 22 deletions.
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)]
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.");
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"
);
});
}
}

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

0 comments on commit a2da205

Please sign in to comment.