Skip to content
Snippets Groups Projects
Commit 2ddae276 authored by Benjamin Gallois's avatar Benjamin Gallois Committed by Hugo Trentesaux
Browse files

Add benchmarks to CI (nodes/rust/duniter-v2s!188)

* fix pallet-certification benchmarks

* fix pallet-identity benchmarks

(cherry picked from commit c2dd6399)

* ci: add benchmark tests

* fix benchmarks for g1
parent 89c4fdb9
Branches
Tags
1 merge request!188Add benchmarks to CI
Pipeline #34227 waiting for manual action
...@@ -185,6 +185,21 @@ build_release_tag: ...@@ -185,6 +185,21 @@ build_release_tag:
IMAGE_TAG: "$CI_COMMIT_TAG" IMAGE_TAG: "$CI_COMMIT_TAG"
PODMAN_BUILD_OPTIONS: "--platform linux/amd64" PODMAN_BUILD_OPTIONS: "--platform linux/amd64"
run_benchmarks:
stage: tests
extends: .docker_build
rules:
- if: $CI_COMMIT_REF_NAME =~ /^wip*$/
when: manual
- if: $CI_COMMIT_TAG
when: never
- if: '$CI_MERGE_REQUEST_ID || $CI_COMMIT_BRANCH == "master"'
- when: manual
variables:
IMAGE_NAME: "duniter/duniter-v2s-test"
IMAGE_TAG: "debug-sha-$CI_COMMIT_SHORT_SHA"
PODMAN_BUILD_OPTIONS: "--target build --build-arg benchmarks=1"
tests: tests:
stage: tests stage: tests
image: rust:1-bullseye image: rust:1-bullseye
......
...@@ -3008,6 +3008,7 @@ dependencies = [ ...@@ -3008,6 +3008,7 @@ dependencies = [
"pallet-quota", "pallet-quota",
"pallet-scheduler", "pallet-scheduler",
"pallet-session", "pallet-session",
"pallet-session-benchmarking",
"pallet-sudo", "pallet-sudo",
"pallet-timestamp", "pallet-timestamp",
"pallet-transaction-payment", "pallet-transaction-payment",
......
...@@ -33,6 +33,11 @@ RUN if [ "$debug" = 0 ]; then \ ...@@ -33,6 +33,11 @@ RUN if [ "$debug" = 0 ]; then \
echo "TARGET_FOLDER=debug" >>/root/dynenv; \ echo "TARGET_FOLDER=debug" >>/root/dynenv; \
fi fi
ARG benchmarks=0
RUN if [ "$benchmarks" != 0 ]; then \
echo "BENCH_OPTIONS=--features\ runtime-benchmarks" >>/root/dynenv; \
fi
# Configure cross-build environment if need be # Configure cross-build environment if need be
RUN set -x && \ RUN set -x && \
if [ "$TARGETPLATFORM" != "$BUILDPLATFORM" ]; then \ if [ "$TARGETPLATFORM" != "$BUILDPLATFORM" ]; then \
...@@ -48,7 +53,7 @@ ARG chain="gdev" ...@@ -48,7 +53,7 @@ ARG chain="gdev"
RUN set -x && \ RUN set -x && \
cat /root/dynenv && \ cat /root/dynenv && \
. /root/dynenv && \ . /root/dynenv && \
cargo build --locked $CARGO_OPTIONS --no-default-features --features $chain --target "$RUST_ARCH_TRIPLET" && \ cargo build --locked $CARGO_OPTIONS --no-default-features $BENCH_OPTIONS --features $chain --target "$RUST_ARCH_TRIPLET" && \
mkdir -p build && \ mkdir -p build && \
mv target/$RUST_ARCH_TRIPLET/$TARGET_FOLDER/duniter build/ mv target/$RUST_ARCH_TRIPLET/$TARGET_FOLDER/duniter build/
...@@ -56,11 +61,17 @@ RUN set -x && \ ...@@ -56,11 +61,17 @@ RUN set -x && \
ARG cucumber=0 ARG cucumber=0
RUN if [ "$cucumber" != 0 ] && [ "$TARGETPLATFORM" = "$BUILDPLATFORM" ]; then \ RUN if [ "$cucumber" != 0 ] && [ "$TARGETPLATFORM" = "$BUILDPLATFORM" ]; then \
cargo ta && \ cargo ta && \
cargo test --workspace --exclude duniter-end2end-tests --exclude duniter-live-tests --features runtime-benchmarks \
cd target/debug/deps/ && \ cd target/debug/deps/ && \
rm cucumber_tests-*.d && \ rm cucumber_tests-*.d && \
mv cucumber_tests* ../../../build/duniter-cucumber; \ mv cucumber_tests* ../../../build/duniter-cucumber; \
fi fi
# Run runtime benchmarks
RUN if [ "$benchmarks" != 0 ]; then \
build/duniter benchmark pallet --chain dev --execution=wasm --wasm-execution=compiled --pallet "*" --extrinsic "*" --steps 2 --repeat 1; \
fi
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Final Stage # Final Stage
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
......
...@@ -56,6 +56,7 @@ benchmarks_instance_pallet! { ...@@ -56,6 +56,7 @@ benchmarks_instance_pallet! {
Pallet::<T, I>::del_cert(RawOrigin::Root.into(), issuer, receiver)?; Pallet::<T, I>::del_cert(RawOrigin::Root.into(), issuer, receiver)?;
let issuer_cert: u32 = StorageIdtyCertMeta::<T, I>::get(issuer).issued_count; let issuer_cert: u32 = StorageIdtyCertMeta::<T, I>::get(issuer).issued_count;
let receiver_cert: u32 = StorageIdtyCertMeta::<T, I>::get(receiver).received_count; let receiver_cert: u32 = StorageIdtyCertMeta::<T, I>::get(receiver).received_count;
frame_system::pallet::Pallet::<T>::set_block_number(T::CertPeriod::get());
}: _<T::RuntimeOrigin>(caller_origin, issuer, receiver) }: _<T::RuntimeOrigin>(caller_origin, issuer, receiver)
verify { verify {
assert_has_event::<T, I>(Event::<T, I>::NewCert{ issuer: issuer, issuer_issued_count: issuer_cert + 1, receiver: receiver, receiver_received_count: receiver_cert + 1 }.into()); assert_has_event::<T, I>(Event::<T, I>::NewCert{ issuer: issuer, issuer_issued_count: issuer_cert + 1, receiver: receiver, receiver_received_count: receiver_cert + 1 }.into());
......
...@@ -87,7 +87,7 @@ fn create_dummy_identity<T: Config>(i: u32) -> Result<(), &'static str> { ...@@ -87,7 +87,7 @@ fn create_dummy_identity<T: Config>(i: u32) -> Result<(), &'static str> {
<Identities<T>>::insert(idty_index, value); <Identities<T>>::insert(idty_index, value);
IdentitiesRemovableOn::<T>::append(removable_on, (idty_index, IdtyStatus::Created)); IdentitiesRemovableOn::<T>::append(removable_on, (idty_index, IdtyStatus::Created));
IdentityIndexOf::<T>::insert(owner_key.clone(), idty_index); IdentityIndexOf::<T>::insert(owner_key.clone(), idty_index);
<IdentitiesNames<T>>::insert(idty_name.clone(), ()); <IdentitiesNames<T>>::insert(idty_name.clone(), idty_index);
Ok(()) Ok(())
} }
......
...@@ -16,16 +16,36 @@ targets = ['x86_64-unknown-linux-gnu'] ...@@ -16,16 +16,36 @@ targets = ['x86_64-unknown-linux-gnu']
[features] [features]
default = ['std'] default = ['std']
runtime-benchmarks = [ runtime-benchmarks = [
'frame-benchmarking', 'common-runtime/runtime-benchmarks',
'frame-benchmarking/runtime-benchmarks',
'frame-support/runtime-benchmarks', 'frame-support/runtime-benchmarks',
'frame-system-benchmarking', 'frame-system-benchmarking',
'frame-system/runtime-benchmarks', 'frame-system/runtime-benchmarks',
'hex-literal', 'hex-literal',
'pallet-authority-members/runtime-benchmarks',
'pallet-babe/runtime-benchmarks',
'pallet-balances/runtime-benchmarks', 'pallet-balances/runtime-benchmarks',
'pallet-certification/runtime-benchmarks',
'pallet-collective/runtime-benchmarks',
'pallet-duniter-test-parameters/runtime-benchmarks',
'pallet-duniter-account/runtime-benchmarks',
'pallet-duniter-wot/runtime-benchmarks',
'pallet-grandpa/runtime-benchmarks',
'pallet-identity/runtime-benchmarks', 'pallet-identity/runtime-benchmarks',
'pallet-membership/runtime-benchmarks',
'pallet-provide-randomness/runtime-benchmarks',
'pallet-im-online/runtime-benchmarks',
'pallet-multisig/runtime-benchmarks',
'pallet-oneshot-account/runtime-benchmarks',
'pallet-preimage/runtime-benchmarks',
'pallet-session-benchmarking/runtime-benchmarks',
'pallet-proxy/runtime-benchmarks',
'pallet-scheduler/runtime-benchmarks',
'pallet-timestamp/runtime-benchmarks',
'pallet-treasury/runtime-benchmarks', 'pallet-treasury/runtime-benchmarks',
'pallet-universal-dividend/runtime-benchmarks', 'pallet-universal-dividend/runtime-benchmarks',
'common-runtime/runtime-benchmarks', 'pallet-upgrade-origin/runtime-benchmarks',
'pallet-utility/runtime-benchmarks',
'sp-runtime/runtime-benchmarks', 'sp-runtime/runtime-benchmarks',
] ]
std = [ std = [
...@@ -155,6 +175,7 @@ pallet-preimage = { git = 'https://github.com/duniter/substrate', branch = 'duni ...@@ -155,6 +175,7 @@ pallet-preimage = { git = 'https://github.com/duniter/substrate', branch = 'duni
pallet-proxy = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false } pallet-proxy = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
pallet-scheduler = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false } pallet-scheduler = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
pallet-session = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false } pallet-session = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
pallet-session-benchmarking = { path = '../../pallets/session-benchmarking', default-features = false }
pallet-sudo = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false } pallet-sudo = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
pallet-timestamp = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false } pallet-timestamp = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
pallet-transaction-payment = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false } pallet-transaction-payment = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.42', default-features = false }
......
...@@ -22,6 +22,10 @@ ...@@ -22,6 +22,10 @@
#[cfg(feature = "std")] #[cfg(feature = "std")]
include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
#[cfg(feature = "runtime-benchmarks")]
#[macro_use]
extern crate frame_benchmarking;
pub mod parameters; pub mod parameters;
pub use self::parameters::*; pub use self::parameters::*;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment