Files
pezkuwi-subxt/test/service/tests/runtime_upgrade.rs
T
Chevdor 054cf81b38 Bring apopiak/prepare-v6-release to the release for v6 (#741)
* disable permissionless asset creation for Statemint (#669)

* disable permissionless asset creation for Statemint

* Companion for polkadot#3728 (#693)

* Update mock runtime API

* update Polkadot packages

Co-authored-by: joao-paulo-parity <joao-paulo@parity.io>

* Ensure a bad datastream cannot cause problems (#701)

* Allow Queries and Subscriptions (#700)

* Bump syn to 1.0.81 (#707)

* Update Substrate & Polkadot (#709)

* Udpate polkadot substrate (#713)

* fmt with latest nightly

* Bump subwasm version (#716)

* Companion for `dispatch_as` (#715)

* dispatch as companion

* Upstream Statemine Release v5 Changes to Master (#720)

* set substrate deps for pallet-asset-tx-payment

* add DisabledValidatorsThreshold to parachain template

* add DisabledValidatorsThreshold to mock config

* adjust on_disabled type

* remove on_chain_votes function in ParachainHost impl

* remove ScrapedOnChainVotes

* bump polkadot-collator version

Co-authored-by: Chevdor <chevdor@users.noreply.github.com>

* set spec_versions to 500

* Statemine cannot execute.

* disallow XCM execute on statemint

* remove unnecessary dep on node-primitives

* select parachains-common/std feature when building rococo-runtime with std

* adjust Statemint to the three digit spec_version format

* Add script to generate simple changelogs (#668)

* Update weights from v4 for v5 comparison (#673)

* updates weights

* pallet_unique benchmarks added + weights upstream from v4

* Fix benchmarks after Parachain Template (#677)

* pallet_unique benchmarks added + weights upstream from v4

* benchmarks fix for parachain template

* Weights updates for Statemine v5 (#682)

* pallet_unique benchmarks added + weights upstream from v4

* weights updates for statemine v5

* mention Storage in construct_runtime macro for pallet-xcm (#680)

* Use pallet-xcm for version wrapping (#689)

* use PolkadotXcm for XcmRouter WrapVersion

* use PolkadotXcm for version wrapping

Co-authored-by: Bryan Chen <xlchen1291@gmail.com>

* patch weight for batch_all from rerun

* Runtime version bump to v503 (#694)

* adjust genesis value generation scripts to output entries array + add script to derive encoded call

* add script to generate shell spec from runtime wasm

* Ensure a bad datastream cannot cause problems (#701)

* Ensure a bad datastream cannot cause problems

* update Polkadot (to 0.9.11 169bab55d)

* bump spec versions

* Allow Queries and Subscriptions

* statemint imports

* slight naming changes in script

* add shell genesis data + wasm + chainspec

* adjust generated shell spec with production config values

* update Substrate and Polkadot to master

* swap out bootnodes for statemint shell

* add a script for verifying the shell chain spec

* add sha checksum for head data

* remove verification script

* remove hex wasm file

* update Substrate and Polkadot again and fix compilation

* remove redundant dispatch_as weight

Co-authored-by: Bastian Köcher <info@kchr.de>
Co-authored-by: Chevdor <chevdor@users.noreply.github.com>
Co-authored-by: Gav Wood <gavin@parity.io>
Co-authored-by: Ignacio Palacios <ignacio.palacios.santos@gmail.com>
Co-authored-by: Bryan Chen <xlchen1291@gmail.com>
Co-authored-by: joepetrowski <joe@parity.io>

* Rework the runtime upgrade test (#727)

* Rework the runtime upgrade test

* Update test/service/tests/runtime_upgrade.rs

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* Remove randomness collective flip new (#726)

* randomess collective flip removed

* remove migration for statemint

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>

* adjust XCM unit weights to 1B (#735)

* Align Call Indices between Westmint and Statemint (#731)

* align construct_runtime calls between statemint runtimes

* bump westmint transaction_version

* bump spec_version (#733)

* point back to Polkadot 0.9.12

* adjust code to work with 0.9.12 again

* adjust network test back to polkadot 0.9.12

* Align the Statemint Runtimes  (#736)

* align the different Statemint runtimes so they are more similar in structure

* align Unpaid Execution filter

* revert changes to Unpaid execution filter for Westmint

* Bump spec versions (#742)

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
Co-authored-by: Chris Sosnin <48099298+slumber@users.noreply.github.com>
Co-authored-by: joao-paulo-parity <joao-paulo@parity.io>
Co-authored-by: Gavin Wood <gavin@parity.io>
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Bastian Köcher <info@kchr.de>
Co-authored-by: Ignacio Palacios <ignacio.palacios.santos@gmail.com>
Co-authored-by: Bryan Chen <xlchen1291@gmail.com>
Co-authored-by: joepetrowski <joe@parity.io>
2021-11-11 10:10:02 +01:00

104 lines
3.2 KiB
Rust

// Copyright 2021 Parity Technologies (UK) Ltd.
// This file is part of Substrate.
// Substrate is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Substrate is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Substrate. If not, see <http://www.gnu.org/licenses/>.
use cumulus_primitives_core::ParaId;
use cumulus_test_service::{initial_head_data, run_relay_chain_validator_node, Keyring::*};
use futures::{join, StreamExt};
use sc_client_api::BlockchainEvents;
use sp_runtime::generic::BlockId;
#[substrate_test_utils::test]
#[ignore]
async fn test_runtime_upgrade() {
let mut builder = sc_cli::LoggerBuilder::new("runtime=debug");
builder.with_colors(false);
let _ = builder.init();
let para_id = ParaId::from(100);
let tokio_handle = tokio::runtime::Handle::current();
// start alice
let alice = run_relay_chain_validator_node(tokio_handle.clone(), Alice, || {}, vec![]);
// start bob
let bob =
run_relay_chain_validator_node(tokio_handle.clone(), Bob, || {}, vec![alice.addr.clone()]);
// register parachain
alice
.register_parachain(
para_id,
cumulus_test_runtime::WASM_BINARY
.expect("You need to build the WASM binary to run this test!")
.to_vec(),
initial_head_data(para_id),
)
.await
.unwrap();
// run cumulus charlie (a parachain collator)
let charlie =
cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle.clone(), Charlie)
.enable_collator()
.connect_to_relay_chain_nodes(vec![&alice, &bob])
.build()
.await;
// run cumulus dave (a parachain full node)
let dave = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle, Dave)
.connect_to_parachain_node(&charlie)
.connect_to_relay_chain_nodes(vec![&alice, &bob])
.build()
.await;
// Wait for 2 blocks to be produced
charlie.wait_for_blocks(2).await;
let mut expected_runtime_version = charlie
.client
.runtime_version_at(&BlockId::number(0))
.expect("Runtime version exists");
expected_runtime_version.spec_version += 1;
let wasm = cumulus_test_runtime::wasm_spec_version_incremented::WASM_BINARY
.expect("Wasm binary with incremented spec version should have been built");
// schedule runtime upgrade
charlie.schedule_upgrade(wasm.into()).await.unwrap();
let mut import_stream = dave.client.import_notification_stream();
while let Some(notification) = import_stream.next().await {
if notification.is_new_best {
let runtime_version = dave
.client
.runtime_version_at(&BlockId::Hash(notification.hash))
.expect("Runtime version exists");
if expected_runtime_version == runtime_version {
break
}
}
}
join!(
alice.task_manager.clean_shutdown(),
bob.task_manager.clean_shutdown(),
charlie.task_manager.clean_shutdown(),
dave.task_manager.clean_shutdown(),
);
}