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

Commit

Permalink
Add set_current_relay_chain_state method for benchmarks (#2731)
Browse files Browse the repository at this point in the history
  • Loading branch information
tmpolaczyk authored Aug 18, 2023
1 parent 0fb7334 commit 9f6314b
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions pallets/parachain-system/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1568,6 +1568,13 @@ pub trait RelaychainStateProvider {
///
/// **NOTE**: This is not guaranteed to return monotonically increasing relay parents.
fn current_relay_chain_state() -> RelayChainState;

/// Utility function only to be used in benchmarking scenarios, to be implemented optionally,
/// else a noop.
///
/// It allows for setting a custom RelayChainState.
#[cfg(feature = "runtime-benchmarks")]
fn set_current_relay_chain_state(_state: RelayChainState) {}
}

/// Implements [`BlockNumberProvider`] that returns relay chain block number fetched from validation
Expand Down Expand Up @@ -1611,6 +1618,21 @@ impl<T: Config> RelaychainStateProvider for RelaychainDataProvider<T> {
})
.unwrap_or_default()
}

#[cfg(feature = "runtime-benchmarks")]
fn set_current_relay_chain_state(state: RelayChainState) {
let mut validation_data = Pallet::<T>::validation_data().unwrap_or_else(||
// PersistedValidationData does not impl default in non-std
PersistedValidationData {
parent_head: vec![].into(),
relay_parent_number: Default::default(),
max_pov_size: Default::default(),
relay_parent_storage_root: Default::default(),
});
validation_data.relay_parent_number = state.number;
validation_data.relay_parent_storage_root = state.state_root;
ValidationData::<T>::put(validation_data)
}
}

/// Implements [`BlockNumberProvider`] and [`RelaychainStateProvider`] that returns relevant relay
Expand Down

0 comments on commit 9f6314b

Please sign in to comment.