From 72e076b6941446188d40fc917f8738b010c10600 Mon Sep 17 00:00:00 2001 From: Vlad <129996061+vvysokikh1@users.noreply.github.com> Date: Thu, 27 Mar 2025 23:40:36 +0000 Subject: [PATCH] test: enable compile time param to change reference fee value (#5159) Adds an extra CI pipeline to perform unit tests using different values for fees. --- .github/workflows/nix.yml | 54 +++++++++++++++++++++++++++++++++ cmake/RippledCore.cmake | 3 ++ cmake/RippledSettings.cmake | 6 ++++ src/test/jtx/impl/envconfig.cpp | 2 +- 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 1660103bd3..c4507c8440 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -163,6 +163,60 @@ jobs: run: | ${build_dir}/rippled --unittest --unittest-jobs $(nproc) + reference-fee-test: + strategy: + fail-fast: false + matrix: + platform: + - linux + compiler: + - gcc + configuration: + - Debug + cmake-args: + - "-DUNIT_TEST_REFERENCE_FEE=200" + - "-DUNIT_TEST_REFERENCE_FEE=1000" + needs: dependencies + runs-on: [self-hosted, heavy] + container: rippleci/rippled-build-ubuntu:aaf5e3e + env: + build_dir: .build + steps: + - name: upgrade conan + run: | + pip install --upgrade "conan<2" + - name: download cache + uses: actions/download-artifact@v4 + with: + name: ${{ matrix.platform }}-${{ matrix.compiler }}-${{ matrix.configuration }} + - name: extract cache + run: | + mkdir -p ~/.conan + tar -xzf conan.tar -C ~/.conan + - name: check environment + run: | + env | sort + echo ${PATH} | tr ':' '\n' + conan --version + cmake --version + - name: checkout + uses: actions/checkout@v4 + - name: dependencies + uses: ./.github/actions/dependencies + env: + CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/conan-non-prod + with: + configuration: ${{ matrix.configuration }} + - name: build + uses: ./.github/actions/build + with: + generator: Ninja + configuration: ${{ matrix.configuration }} + cmake-args: "-Dassert=TRUE -Dwerr=TRUE ${{ matrix.cmake-args }}" + - name: test + run: | + ${build_dir}/rippled --unittest --unittest-jobs $(nproc) + coverage: strategy: fail-fast: false diff --git a/cmake/RippledCore.cmake b/cmake/RippledCore.cmake index fc0576872a..1ef5a4ad68 100644 --- a/cmake/RippledCore.cmake +++ b/cmake/RippledCore.cmake @@ -136,6 +136,9 @@ if(xrpld) add_executable(rippled) if(tests) target_compile_definitions(rippled PUBLIC ENABLE_TESTS) + target_compile_definitions(rippled PRIVATE + UNIT_TEST_REFERENCE_FEE=${UNIT_TEST_REFERENCE_FEE} + ) endif() target_include_directories(rippled PRIVATE diff --git a/cmake/RippledSettings.cmake b/cmake/RippledSettings.cmake index 58877e1885..b2d7b0d9a5 100644 --- a/cmake/RippledSettings.cmake +++ b/cmake/RippledSettings.cmake @@ -11,6 +11,12 @@ option(assert "Enables asserts, even in release builds" OFF) option(xrpld "Build xrpld" ON) option(tests "Build tests" ON) +if(tests) + # This setting allows making a separate workflow to test fees other than default 10 + if(NOT UNIT_TEST_REFERENCE_FEE) + set(UNIT_TEST_REFERENCE_FEE "10" CACHE STRING "") + endif() +endif() option(unity "Creates a build using UNITY support in cmake. This is the default" ON) if(unity) diff --git a/src/test/jtx/impl/envconfig.cpp b/src/test/jtx/impl/envconfig.cpp index 8c565e8b1f..dd9c735465 100644 --- a/src/test/jtx/impl/envconfig.cpp +++ b/src/test/jtx/impl/envconfig.cpp @@ -33,7 +33,7 @@ setupConfigForUnitTests(Config& cfg) using namespace jtx; // Default fees to old values, so tests don't have to worry about changes in // Config.h - cfg.FEES.reference_fee = 10; + cfg.FEES.reference_fee = UNIT_TEST_REFERENCE_FEE; cfg.FEES.account_reserve = XRP(200).value().xrp().drops(); cfg.FEES.owner_reserve = XRP(50).value().xrp().drops();