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:
Michal Kucharczyk
2023-07-24 18:12:52 +02:00
committed by GitHub
parent 7fdcb83117
commit 53cbda1de6
14 changed files with 730 additions and 24 deletions
+17
View File
@@ -2865,6 +2865,7 @@ dependencies = [
"sp-core",
"sp-core-hashing-proc-macro",
"sp-debug-derive",
"sp-genesis-builder",
"sp-inherents",
"sp-io",
"sp-runtime",
@@ -3916,6 +3917,17 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "json-patch"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f54898088ccb91df1b492cc80029a6fdf1c48ca0db7c6822a8babad69c94658"
dependencies = [
"serde",
"serde_json",
"thiserror",
]
[[package]]
name = "jsonrpsee"
version = "0.16.2"
@@ -12153,6 +12165,7 @@ dependencies = [
"frame-system",
"frame-system-rpc-runtime-api",
"futures",
"json-patch",
"log",
"pallet-babe",
"pallet-balances",
@@ -12160,8 +12173,11 @@ dependencies = [
"parity-scale-codec",
"sc-block-builder",
"sc-executor",
"sc-executor-common",
"sc-service",
"scale-info",
"serde",
"serde_json",
"sp-api",
"sp-application-crypto",
"sp-block-builder",
@@ -12171,6 +12187,7 @@ dependencies = [
"sp-consensus-grandpa",
"sp-core",
"sp-externalities",
"sp-genesis-builder",
"sp-inherents",
"sp-io",
"sp-keyring",