Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add overhead benchmark to frame-omni-bencher #5891

Merged
merged 50 commits into from
Oct 30, 2024
Merged
Show file tree
Hide file tree
Changes from 39 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
4e63b65
Add overhead benchmark to frame-omni-bencher
skunert Oct 1, 2024
61ead77
Add missing license
skunert Oct 1, 2024
8cfa943
Change ExtrinsicBuilder parameter to function
skunert Oct 2, 2024
8b0e4aa
Compilation fixes
skunert Oct 13, 2024
2c5bb6b
Merge remote-tracking branch 'origin/master' into skunert/overhead-be…
skunert Oct 13, 2024
e514afb
Compilation Fixes
skunert Oct 15, 2024
fbc607e
Remove account generation
skunert Oct 15, 2024
b0327b1
Fixes
skunert Oct 17, 2024
dc2ab11
Allow to specify runtime_name
skunert Oct 17, 2024
9b6103c
Merge branch 'master' into skunert/overhead-benchmark-again
skunert Oct 17, 2024
32ec53a
PrDoc
skunert Oct 17, 2024
7b3046a
Cleanup
skunert Oct 21, 2024
bda1bd1
Remove extrinsic_builder from omni-node-lib
skunert Oct 21, 2024
77c6bc3
Add simple binary test
skunert Oct 21, 2024
6d2067c
Add test to metadata fetching
skunert Oct 21, 2024
88d3b69
Clean up metadata fetching
skunert Oct 21, 2024
9b1886d
Add some more tests
skunert Oct 22, 2024
8188eb9
Use correct proof size
skunert Oct 22, 2024
1081bed
Merge branch 'master' into skunert/overhead-benchmark-again
skunert Oct 22, 2024
170235e
Fmt
skunert Oct 22, 2024
878c156
Apply suggestions from code review
skunert Oct 23, 2024
e3deba7
Reintroduce genesis state patching
skunert Oct 23, 2024
2bae757
Intermediate state with state handler
skunert Oct 23, 2024
272341f
Review comments
skunert Oct 25, 2024
4871d44
Merge branch 'master' into skunert/overhead-benchmark-again
skunert Oct 25, 2024
a375b68
Review comments
skunert Oct 25, 2024
f8f0df4
Improve logging
skunert Oct 25, 2024
0b7c3ea
Fix genesis patching, improve logs, improve tests
skunert Oct 25, 2024
0b96826
PRDOC
skunert Oct 25, 2024
a4b989d
Add more integration tests
skunert Oct 25, 2024
0cc2e85
Review comments
skunert Oct 27, 2024
65ae2b2
Reinstate test
skunert Oct 27, 2024
a2286d8
Fix license issue
skunert Oct 27, 2024
88812f4
Clap improvements
skunert Oct 27, 2024
2a4726e
Fix all balances merge in cumulus-test-runtime
skunert Oct 27, 2024
fc944ac
Merge branch 'master' into skunert/overhead-benchmark-again
skunert Oct 27, 2024
3aeef25
fmt
skunert Oct 27, 2024
420a105
Taplo & Zepter
skunert Oct 27, 2024
e3afe94
Bring back `--dev`.
skunert Oct 28, 2024
0ad7cd9
Apply suggestions from code review
skunert Oct 28, 2024
8589d40
cmd -> command
skunert Oct 28, 2024
2eaec10
Move measuring to closure, fix prdoc
skunert Oct 29, 2024
ddc1754
Move more validation back to code
skunert Oct 29, 2024
4d1d8b9
Variant `none` should be allowed for runtimes in pallet
skunert Oct 29, 2024
ed08f4f
Slight API improvements
skunert Oct 29, 2024
f548ce6
prdoc improvements
skunert Oct 30, 2024
e1a1e7d
Merge branch 'master' into skunert/overhead-benchmark-again
skunert Oct 30, 2024
9cab200
Update PRDOC Bumps
skunert Oct 30, 2024
52458b8
Move remark builders to own file.
skunert Oct 30, 2024
1858d9a
Merge branch 'master' into skunert/overhead-benchmark-again
skunert Oct 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions cumulus/client/parachain-inherent/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ pub const RELAY_CHAIN_SLOT_DURATION_MILLIS: u32 = 6000;
/// in addition to the messages themselves, you must provide some information about
/// your parachain's configuration in order to mock the MQC heads properly.
/// See [`MockXcmConfig`] for more information
#[derive(Default)]
pub struct MockValidationDataInherentDataProvider<R = ()> {
/// The current block number of the local block chain (the parachain).
pub current_para_block: u32,
Expand Down
10 changes: 10 additions & 0 deletions cumulus/polkadot-omni-node/lib/src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,16 @@ pub struct RunConfig {
pub runtime_resolver: Box<dyn RuntimeResolver>,
}

impl RunConfig {
/// Create a new `RunConfig`
pub fn new(
runtime_resolver: Box<dyn RuntimeResolver>,
chain_spec_loader: Box<dyn LoadSpec>,
) -> Self {
RunConfig { chain_spec_loader, runtime_resolver }
}
}

pub fn new_aura_node_spec<Block>(
aura_id: AuraConsensusId,
extra_args: &NodeExtraArgs,
Expand Down
5 changes: 1 addition & 4 deletions cumulus/polkadot-omni-node/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ impl CliConfigT for CliConfig {
fn main() -> color_eyre::eyre::Result<()> {
color_eyre::install()?;

let config = RunConfig {
chain_spec_loader: Box::new(DiskChainSpecLoader),
runtime_resolver: Box::new(DefaultRuntimeResolver),
};
let config = RunConfig::new(Box::new(DefaultRuntimeResolver), Box::new(DiskChainSpecLoader));
Ok(run::<CliConfig>(config)?)
}
8 changes: 4 additions & 4 deletions cumulus/polkadot-parachain/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ impl CliConfigT for CliConfig {
fn main() -> color_eyre::eyre::Result<()> {
color_eyre::install()?;

let config = RunConfig {
chain_spec_loader: Box::new(chain_spec::ChainSpecLoader),
runtime_resolver: Box::new(chain_spec::RuntimeResolver),
};
let config = RunConfig::new(
Box::new(chain_spec::RuntimeResolver),
Box::new(chain_spec::ChainSpecLoader),
);
Ok(run::<CliConfig>(config)?)
}
6 changes: 3 additions & 3 deletions cumulus/test/client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ use sp_consensus_aura::{AuraApi, Slot};
use sp_core::Pair;
use sp_io::TestExternalities;
use sp_keystore::testing::MemoryKeystore;
use sp_runtime::{generic::Era, traits::Header, BuildStorage, SaturatedConversion};
use sp_runtime::{generic::Era, traits::Header, BuildStorage, MultiAddress, SaturatedConversion};
use std::sync::Arc;
pub use substrate_test_client::*;

Expand Down Expand Up @@ -158,7 +158,7 @@ pub fn generate_extrinsic_with_pair(

UncheckedExtrinsic::new_signed(
function,
origin.public().into(),
MultiAddress::Id(origin.public().into()),
Signature::Sr25519(signature),
tx_ext,
)
Expand All @@ -181,7 +181,7 @@ pub fn transfer(
value: Balance,
) -> UncheckedExtrinsic {
let function = RuntimeCall::Balances(pallet_balances::Call::transfer_allow_death {
dest: dest.public().into(),
dest: MultiAddress::Id(dest.public().into()),
value,
});

Expand Down
4 changes: 4 additions & 0 deletions cumulus/test/runtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ workspace = true
[dependencies]
codec = { features = ["derive"], workspace = true }
scale-info = { features = ["derive"], workspace = true }
serde_json = { workspace = true }

# Substrate
frame-executive = { workspace = true }
Expand Down Expand Up @@ -38,6 +39,7 @@ sp-session = { workspace = true }
sp-consensus-aura = { workspace = true }
sp-transaction-pool = { workspace = true }
sp-version = { workspace = true }
sp-keyring = { workspace = true }

# Cumulus
cumulus-pallet-parachain-system = { workspace = true }
Expand Down Expand Up @@ -76,13 +78,15 @@ std = [
"pallet-transaction-payment/std",
"parachain-info/std",
"scale-info/std",
"serde_json/std",
"sp-api/std",
"sp-block-builder/std",
"sp-consensus-aura/std",
"sp-core/std",
"sp-genesis-builder/std",
"sp-inherents/std",
"sp-io/std",
"sp-keyring/std",
"sp-offchain/std",
"sp-runtime/std",
"sp-session/std",
Expand Down
73 changes: 73 additions & 0 deletions cumulus/test/runtime/src/genesis_config_presets.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.

// Cumulus 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.

// Cumulus 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 Cumulus. If not, see <http://www.gnu.org/licenses/>.

use super::{
AccountId, AuraConfig, AuraId, BalancesConfig, ParachainInfoConfig, RuntimeGenesisConfig,
SudoConfig,
};
use alloc::{vec, vec::Vec};

use cumulus_primitives_core::ParaId;
use frame_support::build_struct_json_patch;
use sp_genesis_builder::PresetId;
use sp_keyring::Sr25519Keyring;

fn cumulus_test_runtime(
invulnerables: Vec<AuraId>,
endowed_accounts: Vec<AccountId>,
id: ParaId,
) -> serde_json::Value {
let config = build_struct_json_patch!(RuntimeGenesisConfig {
skunert marked this conversation as resolved.
Show resolved Hide resolved
balances: BalancesConfig {
balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(),
},
sudo: SudoConfig { key: Some(Sr25519Keyring::Alice.public().into()) },
parachain_info: ParachainInfoConfig { parachain_id: id },
aura: AuraConfig { authorities: invulnerables },
});
serde_json::to_value(config).expect("Could not build genesis config.")
skunert marked this conversation as resolved.
Show resolved Hide resolved
}

fn testnet_genesis_with_default_endowed(self_para_id: ParaId) -> serde_json::Value {
let endowed = Sr25519Keyring::well_known().map(|x| x.to_account_id()).collect::<Vec<_>>();

let invulnerables =
Sr25519Keyring::invulnerable().map(|x| x.public().into()).collect::<Vec<_>>();
cumulus_test_runtime(invulnerables, endowed, self_para_id)
}

/// List of supported presets.
pub fn preset_names() -> Vec<PresetId> {
skunert marked this conversation as resolved.
Show resolved Hide resolved
vec![
PresetId::from(sp_genesis_builder::DEV_RUNTIME_PRESET),
PresetId::from(sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET),
]
}

/// Provides the JSON representation of predefined genesis config for given `id`.
pub fn get_preset(id: &PresetId) -> Option<Vec<u8>> {
let patch = match id.try_into() {
Ok(sp_genesis_builder::DEV_RUNTIME_PRESET) |
Ok(sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET) =>
testnet_genesis_with_default_endowed(100.into()),
_ => return None,
};
Some(
serde_json::to_string(&patch)
.expect("serialization to json is expected to work. qed.")
.into_bytes(),
)
}
13 changes: 6 additions & 7 deletions cumulus/test/runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ pub mod elastic_scaling {
include!(concat!(env!("OUT_DIR"), "/wasm_binary_elastic_scaling.rs"));
}

mod genesis_config_presets;
mod test_pallet;

extern crate alloc;
Expand All @@ -45,9 +46,9 @@ use sp_core::{ConstBool, ConstU32, ConstU64, OpaqueMetadata};
use cumulus_primitives_core::{ClaimQueueOffset, CoreSelector};
use sp_runtime::{
create_runtime_str, generic, impl_opaque_keys,
traits::{BlakeTwo256, Block as BlockT, IdentifyAccount, IdentityLookup, Verify},
traits::{BlakeTwo256, Block as BlockT, IdentifyAccount, Verify},
transaction_validity::{TransactionSource, TransactionValidity},
ApplyExtrinsicResult, MultiSignature,
ApplyExtrinsicResult, MultiAddress, MultiSignature,
};
#[cfg(feature = "std")]
use sp_version::NativeVersion;
Expand Down Expand Up @@ -208,8 +209,6 @@ parameter_types! {
impl frame_system::Config for Runtime {
/// The identifier used to distinguish between accounts.
type AccountId = AccountId;
/// The lookup mechanism to get account ID from whatever is passed in dispatchers.
type Lookup = IdentityLookup<AccountId>;
/// The index type for storing how many extrinsics an account has signed.
type Nonce = Nonce;
/// The type for hashing blocks and tries.
Expand Down Expand Up @@ -363,7 +362,7 @@ pub type AccountId = <<Signature as Verify>::Signer as IdentifyAccount>::Account
pub type NodeBlock = generic::Block<Header, sp_runtime::OpaqueExtrinsic>;

/// The address format for describing accounts.
pub type Address = AccountId;
pub type Address = MultiAddress<AccountId, ()>;
/// Block header type as expected by this runtime.
pub type Header = generic::Header<BlockNumber, BlakeTwo256>;
/// Block type as expected by this runtime.
Expand Down Expand Up @@ -544,11 +543,11 @@ impl_runtime_apis! {
}

fn get_preset(id: &Option<sp_genesis_builder::PresetId>) -> Option<Vec<u8>> {
get_preset::<RuntimeGenesisConfig>(id, |_| None)
get_preset::<RuntimeGenesisConfig>(id, genesis_config_presets::get_preset)
}

fn preset_names() -> Vec<sp_genesis_builder::PresetId> {
vec![]
genesis_config_presets::preset_names()
}
}
}
Expand Down
1 change: 1 addition & 0 deletions cumulus/test/service/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ sp-core = { workspace = true, default-features = true }
sp-io = { workspace = true, default-features = true }
sp-api = { workspace = true, default-features = true }
sp-keyring = { workspace = true, default-features = true }
sp-genesis-builder = { workspace = true, default-features = true }
sp-runtime = { workspace = true }
sp-state-machine = { workspace = true, default-features = true }
sp-tracing = { workspace = true, default-features = true }
Expand Down
6 changes: 3 additions & 3 deletions cumulus/test/service/benches/transaction_throughput.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ fn create_account_extrinsics(client: &Client, accounts: &[sr25519::Pair]) -> Vec
SudoCall::sudo {
call: Box::new(
BalancesCall::force_set_balance {
who: AccountId::from(a.public()),
who: AccountId::from(a.public()).into(),
new_free: 0,
}
.into(),
Expand All @@ -69,7 +69,7 @@ fn create_account_extrinsics(client: &Client, accounts: &[sr25519::Pair]) -> Vec
SudoCall::sudo {
call: Box::new(
BalancesCall::force_set_balance {
who: AccountId::from(a.public()),
who: AccountId::from(a.public()).into(),
new_free: 1_000_000_000_000 * ExistentialDeposit::get(),
}
.into(),
Expand All @@ -96,7 +96,7 @@ fn create_benchmark_extrinsics(
construct_extrinsic(
client,
BalancesCall::transfer_allow_death {
dest: Bob.to_account_id(),
dest: Bob.to_account_id().into(),
value: ExistentialDeposit::get(),
},
account.clone(),
Expand Down
5 changes: 4 additions & 1 deletion cumulus/test/service/benches/validate_block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,10 @@ fn create_extrinsics(
let extrinsic: UncheckedExtrinsic = generate_extrinsic_with_pair(
client,
src.clone(),
BalancesCall::transfer_keep_alive { dest: AccountId::from(dst.public()), value: 10000 },
BalancesCall::transfer_keep_alive {
dest: AccountId::from(dst.public()).into(),
value: 10000,
},
None,
);

Expand Down
Loading
Loading