Skip to content
Snippets Groups Projects
  • Liam Aharon's avatar
    MBM `try-runtime` support (#4251) · cc6a5130
    Liam Aharon authored
    
    # MBM try-runtime support
    
    This MR adds support to the try-runtime trait such that the
    try-runtime-CLI will be able to support MBM testing
    [here](https://github.com/paritytech/try-runtime-cli/pull/90). It mainly
    adds two feature-gated hooks to the `SteppedMigration` hook to
    facilitate testing. These hooks are named `pre_upgrade` and
    `post_upgrade` and have the same signature and implications as for
    single-block migrations.
    
    ## Integration
    
    To make use of this in your Multi-Block-Migration, just implement the
    two new hooks and test pre- and post-conditions in them:
    
    ```rust
    #[cfg(feature = "try-runtime")]
    fn pre_upgrade() -> Result<Vec<u8>, frame_support::sp_runtime::TryRuntimeError> {
    	// ...
    }
    
    #[cfg(feature = "try-runtime")]
    fn post_upgrade(prev: Vec<u8>) -> Result<(), frame_support::sp_runtime::TryRuntimeError> {
        // ...
    }
    ```
    
    You may return an error or panic in these functions to indicate failure.
    This will then show up in the try-runtime-CLI and can be used in CI for
    testing.
    
    Changes:
    - Adds `try-runtime` gated methods `pre_upgrade` and `post_upgrade` on
    `SteppedMigration`
    - Adds `try-runtime` gated methods `nth_pre_upgrade` and
    `nth_post_upgrade` on `SteppedMigrations`
    - Modifies `pallet_migrations` implementation to run pre_upgrade and
    post_upgrade steps at the appropriate times, and panic in the event of
    migration failure.
    
    ---------
    
    Signed-off-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
    Signed-off-by: default avatargeorgepisaltu <george.pisaltu@parity.io>
    Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
    Co-authored-by: default avatarclaravanstaden <claravanstaden64@gmail.com>
    Co-authored-by: default avatarggwpez <ggwpez@users.noreply.github.com>
    Co-authored-by: default avatargeorgepisaltu <george.pisaltu@parity.io>
    Unverified
    cc6a5130
Code owners
Assign users and groups as approvers for specific file changes. Learn more.