diff --git a/client/network/tests/sync_blocks_from_tip_without_connected_collator.rs b/client/network/tests/sync_blocks_from_tip_without_connected_collator.rs deleted file mode 100644 index 6b4f17bc528..00000000000 --- a/client/network/tests/sync_blocks_from_tip_without_connected_collator.rs +++ /dev/null @@ -1,95 +0,0 @@ -// 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 . - -use cumulus_primitives_core::ParaId; -use cumulus_test_service::{initial_head_data, run_relay_chain_validator_node, Keyring::*}; -use futures::join; - -#[substrate_test_utils::test(flavor = "multi_thread")] -#[ignore] -async fn sync_blocks_from_tip_without_being_connected_to_a_collator() { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_colors(false); - let _ = builder.init(); - - let para_id = ParaId::from(100); - let tokio_handle = tokio::runtime::Handle::current(); - - let ws_port = portpicker::pick_unused_port().expect("No free ports"); - // start alice - let alice = run_relay_chain_validator_node( - tokio_handle.clone(), - Alice, - || {}, - Vec::new(), - Some(ws_port), - ); - - // start bob - let bob = run_relay_chain_validator_node( - tokio_handle.clone(), - Bob, - || {}, - vec![alice.addr.clone()], - None, - ); - - // register parachain - alice - .register_parachain( - para_id, - cumulus_test_service::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 charlie as 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 dave as parachain full node - let dave = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle.clone(), Dave) - .connect_to_parachain_node(&charlie) - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .build() - .await; - - // run eve as parachain full node that is only connected to dave - let eve = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle.clone(), Eve) - .connect_to_parachain_node(&dave) - .exclusively_connect_to_registered_parachain_nodes() - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .build() - .await; - - // run eve as parachain full node that is only connected to dave - let ferdie = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle, Ferdie) - .connect_to_parachain_node(&dave) - .exclusively_connect_to_registered_parachain_nodes() - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .use_external_relay_chain_node_at_port(ws_port) - .build() - .await; - - join!(ferdie.wait_for_blocks(7), eve.wait_for_blocks(7)); -} diff --git a/client/pov-recovery/tests/pov_recovery.rs b/client/pov-recovery/tests/pov_recovery.rs deleted file mode 100644 index dd8be634896..00000000000 --- a/client/pov-recovery/tests/pov_recovery.rs +++ /dev/null @@ -1,140 +0,0 @@ -// 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 . - -use cumulus_primitives_core::ParaId; -use cumulus_test_service::{initial_head_data, Keyring::*}; -use futures::join; -use std::sync::Arc; - -/// Tests the PoV recovery. -/// -/// If there is a block of the parachain included/backed by the relay chain that isn't circulated in -/// the parachain network, we need to recover the PoV from the relay chain. Using this PoV we can -/// recover the block, import it and share it with the other nodes of the parachain network. -#[substrate_test_utils::test(flavor = "multi_thread")] -#[ignore] -async fn pov_recovery() { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_colors(false); - let _ = builder.init(); - - let para_id = ParaId::from(100); - let tokio_handle = tokio::runtime::Handle::current(); - - // Start alice - let ws_port = portpicker::pick_unused_port().expect("No free ports"); - let alice = cumulus_test_service::run_relay_chain_validator_node( - tokio_handle.clone(), - Alice, - || {}, - Vec::new(), - Some(ws_port), - ); - - // Start bob - let bob = cumulus_test_service::run_relay_chain_validator_node( - tokio_handle.clone(), - Bob, - || {}, - vec![alice.addr.clone()], - None, - ); - - // Register parachain - alice - .register_parachain( - para_id, - cumulus_test_service::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 charlie as 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]) - .wrap_announce_block(|_| { - // Never announce any block - Arc::new(|_, _| {}) - }) - .build() - .await; - - // Run dave as parachain collator and eve as parachain full node - // - // They will need to recover the pov blocks through availability recovery. - let dave = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle.clone(), Dave) - .enable_collator() - .use_null_consensus() - .connect_to_parachain_node(&charlie) - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .wrap_announce_block(|_| { - // Never announce any block - Arc::new(|_, _| {}) - }) - .build() - .await; - - let eve = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle.clone(), Eve) - .use_null_consensus() - .connect_to_parachain_node(&charlie) - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .wrap_announce_block(|_| { - // Never announce any block - Arc::new(|_, _| {}) - }) - .build() - .await; - - // Run ferdie as parachain RPC collator and one as parachain RPC full node - // - // They will need to recover the pov blocks through availability recovery. - let ferdie = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle.clone(), Ferdie) - .use_null_consensus() - .connect_to_parachain_node(&charlie) - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .use_external_relay_chain_node_at_port(ws_port) - .wrap_announce_block(|_| { - // Never announce any block - Arc::new(|_, _| {}) - }) - .build() - .await; - - let one = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle, One) - .enable_collator() - .use_null_consensus() - .connect_to_parachain_node(&charlie) - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .use_external_relay_chain_node_at_port(ws_port) - .wrap_announce_block(|_| { - // Never announce any block - Arc::new(|_, _| {}) - }) - .build() - .await; - - join!( - dave.wait_for_blocks(7), - eve.wait_for_blocks(7), - ferdie.wait_for_blocks(7), - one.wait_for_blocks(7) - ); -} diff --git a/test/service/tests/full_node_catching_up.rs b/test/service/tests/full_node_catching_up.rs deleted file mode 100644 index 1dee360fc86..00000000000 --- a/test/service/tests/full_node_catching_up.rs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2020-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 . - -use cumulus_primitives_core::ParaId; -use cumulus_test_service::{initial_head_data, run_relay_chain_validator_node, Keyring::*}; -use futures::join; - -#[substrate_test_utils::test(flavor = "multi_thread")] -#[ignore] -async fn test_full_node_catching_up() { - let mut builder = sc_cli::LoggerBuilder::new(""); - builder.with_colors(false); - let _ = builder.init(); - - let para_id = ParaId::from(100); - - let tokio_handle = tokio::runtime::Handle::current(); - - let ws_port = portpicker::pick_unused_port().expect("No free ports"); - // start alice - let alice = run_relay_chain_validator_node( - tokio_handle.clone(), - Alice, - || {}, - Vec::new(), - Some(ws_port), - ); - - // start bob - let bob = run_relay_chain_validator_node( - tokio_handle.clone(), - Bob, - || {}, - vec![alice.addr.clone()], - None, - ); - - // 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; - charlie.wait_for_blocks(5).await; - - // run cumulus dave (a parachain full node) and wait for it to sync some blocks - let dave = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle.clone(), Dave) - .connect_to_parachain_node(&charlie) - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .build() - .await; - - // run cumulus dave (a parachain full node) and wait for it to sync some blocks - let eve = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle, Eve) - .connect_to_parachain_node(&charlie) - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .use_external_relay_chain_node_at_port(ws_port) - .build() - .await; - - join!(dave.wait_for_blocks(7), eve.wait_for_blocks(7)); -} diff --git a/test/service/tests/migrate_solo_to_para.rs b/test/service/tests/migrate_solo_to_para.rs deleted file mode 100644 index 89afd8d42b1..00000000000 --- a/test/service/tests/migrate_solo_to_para.rs +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2020-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 . - -//! Test migration from parachain A to parachain B by returning the header of parachain B. -//! -//! This can be seen as a test of the fundamentals of the solo to parachain migration use case. -//! The prerequisite is to have a running solo chain and a running parachain. The idea is that -//! the solo chain is being stopped at a given point and sends its last header to the running parachain. -//! The parachain will return this header as part of the validation phase on the relay chain to enact -//! this header as its current latest state. As the old running parachain doesn't know this header, it will -//! stop to produce new blocks. However, the old solo chain can now produce blocks using the parachain slot. -//! (Be aware, that this is just a highlevel description and some parts are omitted.) - -use codec::Encode; -use cumulus_primitives_core::ParaId; -use cumulus_test_service::{initial_head_data, run_relay_chain_validator_node, Keyring::*}; -use sc_client_api::{BlockBackend, UsageProvider}; -use sp_runtime::generic::BlockId; - -#[substrate_test_utils::test(flavor = "multi_thread")] -#[ignore] -async fn test_migrate_solo_to_para() { - let mut builder = sc_cli::LoggerBuilder::new(""); - 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::new(), None); - - // start bob - let bob = run_relay_chain_validator_node( - tokio_handle.clone(), - Bob, - || {}, - vec![alice.addr.clone()], - None, - ); - - // 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 the parachain that will be used to return the header of the solo chain. - let parachain = - cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle.clone(), Charlie) - .enable_collator() - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - .build() - .await; - - // run the solo chain (in our case this is also already a parachain, but as it has a different genesis it will not produce any blocks.) - let solo = cumulus_test_service::TestNodeBuilder::new(para_id, tokio_handle, Dave) - .enable_collator() - .connect_to_relay_chain_nodes(vec![&alice, &bob]) - // Set some random value in the genesis state to create a different genesis hash. - .update_storage_parachain(|| { - sp_io::storage::set(b"test", b"test"); - }) - .build() - .await; - - parachain.wait_for_blocks(2).await; - - // Ensure that both chains have a different genesis hash. - assert_ne!( - parachain.client.block_hash(0).ok().flatten().unwrap(), - solo.client.block_hash(0).ok().flatten().unwrap(), - ); - - let solo_chain_header = solo.client.header(&BlockId::Number(0)).ok().flatten().unwrap(); - - // Send the transaction to set the custom header, aka the header of the solo chain. - parachain - .send_extrinsic( - cumulus_test_runtime::TestPalletCall::set_custom_validation_head_data { - custom_header: solo_chain_header.encode(), - }, - Alice, - ) - .await - .unwrap(); - - // Wait until the solo chain produced a block now as a parachain. - solo.wait_for_blocks(1).await; - - let parachain_best = parachain.client.usage_info().chain.best_number; - - // Wait for some more blocks and check that the old parachain doesn't produced/imported any new blocks. - solo.wait_for_blocks(2).await; - assert_eq!(parachain_best, parachain.client.usage_info().chain.best_number); -} diff --git a/test/service/tests/runtime_upgrade.rs b/test/service/tests/runtime_upgrade.rs deleted file mode 100644 index 37eb82d8e04..00000000000 --- a/test/service/tests/runtime_upgrade.rs +++ /dev/null @@ -1,102 +0,0 @@ -// 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 . - -use cumulus_primitives_core::ParaId; -use cumulus_test_service::{initial_head_data, run_relay_chain_validator_node, Keyring::*}; -use futures::StreamExt; -use sc_client_api::BlockchainEvents; -use sp_runtime::generic::BlockId; - -#[substrate_test_utils::test(flavor = "multi_thread")] -#[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::new(), None); - - // start bob - let bob = run_relay_chain_validator_node( - tokio_handle.clone(), - Bob, - || {}, - vec![alice.addr.clone()], - None, - ); - - // 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 - } - } - } -}