mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 19:21:13 +00:00
test-runtime: GenesisBuilder runtime API impl + tests (#14310)
* test-runtime: GenesisBuilder runtime API impl + tests This PR provides implementation of `GenesisBuilder` API for `substrate-test-runtime`, can be considered as reference imiplementation for other runtimes. The `GenesisBuilder` implementation is gated by `gensis-config` feature. Tested scenarios: - default `GenesisConfig` to JSON blob, - deserialization of `GenesisConfig` from custom JSON, and storing its keys into the Storage (genesis storage creation). - creation of genesis storage using partial JSON definition, - checking if invalid/renamed JSON files causes the runtime to panic, * missing file added * client: GenesisBuilder helper added * feature renamed: genesis-config -> genesis-builder * Update Cargo.toml * Update Cargo.toml * Update Cargo.toml * Update Cargo.toml * redundant function removed * genesis builder helper: introduced RuntimeGenesisBuild * test-runtime: get rid of unused T * redundant bound removed * helper: use GenesisBuild again * tests adjusted for on_genesis * test-runtime: support for BuildGenesisConfig * helper: BuildGenesisConfig support * Update client/genesis-builder/src/lib.rs Co-authored-by: Davide Galassi <davxy@datawok.net> * Update test-utils/runtime/src/test_json/readme.md Co-authored-by: Davide Galassi <davxy@datawok.net> * Update test-utils/runtime/src/test_json/readme.md Co-authored-by: Davide Galassi <davxy@datawok.net> * Update test-utils/runtime/src/genesismap.rs Co-authored-by: Davide Galassi <davxy@datawok.net> * jsons are now human-friendly * fix * improvements * jsons fixed * helper: no_defaults added * test-runtime: no_defaults added * test-runtime: patching fn removed * helper: patching fn removed * helper: moved to frame_support * test-runtime: fixes * Cargo.lock updated * fmt + naming * test-runtime: WasmExecutor used * helper / test-runtime: struct removed * test-runtime: merge fixes * Cargo.lock + test-utils/runtime/Cargo.toml updated * doc fixed * client/rpc: test fixed (new rt api) * client/rpc-spec-v2: test fix * doc fix * test-runtime: disable-genesis-builder feature * fix * fix * ".git/.scripts/commands/fmt/fmt.sh" * test-runtime: rerun added to build script --------- Co-authored-by: Davide Galassi <davxy@datawok.net> Co-authored-by: parity-processbot <>
This commit is contained in:
committed by
GitHub
parent
7fdcb83117
commit
53cbda1de6
@@ -73,10 +73,10 @@ impl Default for GenesisStorageBuilder {
|
||||
}
|
||||
|
||||
impl GenesisStorageBuilder {
|
||||
/// Creates a storage builder for genesis config. `substrage test runtime` `GenesisConfig` is
|
||||
/// initialized with provided `authorities`, `endowed_accounts` with given balance. Key-pairs
|
||||
/// from `extra_storage` will be injected into built storage. `HEAP_PAGES` key and value will
|
||||
/// also be placed into storage.
|
||||
/// Creates a storage builder for genesis config. `substrage test runtime`
|
||||
/// [`RuntimeGenesisConfig`] is initialized with provided `authorities`, `endowed_accounts` with
|
||||
/// given balance. Key-value pairs from `extra_storage` will be injected into built storage.
|
||||
/// `HEAP_PAGES` key and value will also be placed into storage.
|
||||
pub fn new(
|
||||
authorities: Vec<AccountId>,
|
||||
endowed_accounts: Vec<AccountId>,
|
||||
@@ -91,7 +91,7 @@ impl GenesisStorageBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
/// Override default wasm code to be placed into GenesisConfig.
|
||||
/// Override default wasm code to be placed into RuntimeGenesisConfig.
|
||||
pub fn with_wasm_code(mut self, wasm_code: &Option<Vec<u8>>) -> Self {
|
||||
self.wasm_code = wasm_code.clone();
|
||||
self
|
||||
@@ -107,8 +107,8 @@ impl GenesisStorageBuilder {
|
||||
self
|
||||
}
|
||||
|
||||
/// Builds the `GenesisConfig` and returns its storage.
|
||||
pub fn build(self) -> Storage {
|
||||
/// A `RuntimeGenesisConfig` from internal configuration
|
||||
pub fn genesis_config(&self) -> RuntimeGenesisConfig {
|
||||
let authorities_sr25519: Vec<_> = self
|
||||
.authorities
|
||||
.clone()
|
||||
@@ -116,7 +116,7 @@ impl GenesisStorageBuilder {
|
||||
.map(|id| sr25519::Public::from(id))
|
||||
.collect();
|
||||
|
||||
let genesis_config = RuntimeGenesisConfig {
|
||||
RuntimeGenesisConfig {
|
||||
system: frame_system::GenesisConfig {
|
||||
code: self.wasm_code.clone().unwrap_or(wasm_binary_unwrap().to_vec()),
|
||||
..Default::default()
|
||||
@@ -135,11 +135,15 @@ impl GenesisStorageBuilder {
|
||||
..Default::default()
|
||||
},
|
||||
balances: pallet_balances::GenesisConfig { balances: self.balances.clone() },
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
let mut storage = genesis_config
|
||||
/// Builds the `RuntimeGenesisConfig` and returns its storage.
|
||||
pub fn build(self) -> Storage {
|
||||
let mut storage = self
|
||||
.genesis_config()
|
||||
.build_storage()
|
||||
.expect("Build storage from substrate-test-runtime GenesisConfig");
|
||||
.expect("Build storage from substrate-test-runtime RuntimeGenesisConfig");
|
||||
|
||||
if let Some(heap_pages) = self.heap_pages_override {
|
||||
storage.top.insert(well_known_keys::HEAP_PAGES.into(), heap_pages.encode());
|
||||
|
||||
Reference in New Issue
Block a user