From 37706a61993216db1cb9037a7b7bc48e38cbe4ac Mon Sep 17 00:00:00 2001 From: Nicolo' Padovani <69471887+nicopado@users.noreply.github.com> Date: Fri, 29 Jul 2022 12:16:33 +0200 Subject: [PATCH] Npg 2500 split tests in ci (#4052) * added new files for CI * moved networking tests in its own file, added evm tests * changed jobs names * removed windows and macos from network and evm tests * cleaned up and fixed actions * corrected wrong test * corrected block_number_json_deserialize * changed action names * fmt * removed debug mode for networking tests --- .github/workflows/test.yml | 18 +- .github/workflows/test_evm.yml | 211 +++++++++++++++++ .github/workflows/test_networking.yml | 214 ++++++++++++++++++ .../src/jrpc/eth_types/block_number.rs | 11 +- jormungandr/src/jrpc/eth_types/number.rs | 4 +- 5 files changed, 438 insertions(+), 20 deletions(-) create mode 100644 .github/workflows/test_evm.yml create mode 100644 .github/workflows/test_networking.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d5dc473c6..1fa4755c1b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: CI +name: CI-Tests on: push: @@ -12,7 +12,6 @@ on: - modules/** - testing/** - Cargo.* - - '!**.md' - .github/workflows/test.yml pull_request: paths: @@ -23,7 +22,6 @@ on: - modules/** - testing/** - Cargo.* - - '!**.md' - .github/workflows/test.yml jobs: @@ -214,20 +212,6 @@ jobs: TMPDIR: ${{ runner.temp }} TMP: ${{ runner.temp }} - - name: Run network tests - # Network tests are a bit flaky when run on debug builds - if: ${{ matrix.profile == 'release' }} - uses: actions-rs/cargo@v1 - timeout-minutes: 90 - with: - command: test - args: --tests ${{ env.CARGO_FLAGS }} --features network - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # TMPDIR and TMP are used respectively on unix and windows - TMPDIR: ${{ runner.temp }} - TMP: ${{ runner.temp }} - - name: Pack logs from failed tests if: ${{ failure() }} uses: actions/upload-artifact@v2 diff --git a/.github/workflows/test_evm.yml b/.github/workflows/test_evm.yml new file mode 100644 index 0000000000..1588a4070f --- /dev/null +++ b/.github/workflows/test_evm.yml @@ -0,0 +1,211 @@ +name: CI-Evm-Tests + +on: + push: + branches: + - master + paths: + - doc/api/**.yaml + - jormungandr-lib/** + - jormungandr/** + - jcli/** + - modules/** + - testing/** + - Cargo.* + - .github/workflows/test_evm.yml + pull_request: + paths: + - doc/api/**.yaml + - jormungandr-lib/** + - jormungandr/** + - jcli/** + - modules/** + - testing/** + - Cargo.* + - .github/workflows/test_evm.yml + +jobs: + cache_info: + name: Bootstrap cache + runs-on: ubuntu-latest + outputs: + crates-io-index-head: ${{ steps.ls-crates-io-index.outputs.head }} + cargo-lock-hash: ${{ steps.hash-cargo-lock.outputs.hash }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - id: ls-crates-io-index + name: Get head commit hash of crates.io registry index + run: | + commit=$( + git ls-remote --heads https://github.com/rust-lang/crates.io-index.git master | + cut -f 1 + ) + echo "$commit" + echo "::set-output name=head::$commit" + + - id: hash-cargo-lock + name: Calculate dependency cache key + run: | + hash=$( + ci/strip-own-version-from-cargo-lock.pl Cargo.lock | + sha1sum | cut -d ' ' -f 1 + ) + echo "$hash" + echo "::set-output name=hash::$hash" + + update_deps: + name: Update dependencies + needs: cache_info + runs-on: ubuntu-latest + steps: + # This is only needed because a crate manifest uses edition2021 + # that has been stabilized in a very recent Rust release. + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + default: true + + - name: Cache cargo registry index + uses: actions/cache@v2 + with: + path: ~/.cargo/registry/index + key: cargo-index-${{ needs.cache_info.outputs.crates-io-index-head }} + restore-keys: cargo-index- + + - id: cargo-deps + name: Cache cargo dependencies + uses: actions/cache@v2 + with: + path: | + ~/.cargo/registry/cache + ~/.cargo/git/db + key: cargo-deps-v1-${{ needs.cache_info.outputs.cargo-lock-hash }} + + - name: Check out the repository + uses: actions/checkout@v2 + with: + submodules: true + + - name: Fetch dependencies and update cargo registry + run: cargo fetch --locked + + tests: + name: Evm Tests + needs: [cache_info, update_deps] + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + profile: [debug, release] + toolchain: [stable] + include: + - os: ubuntu-latest + profile: debug + toolchain: nightly + env: + RUSTFLAGS: -D warnings + RUST_BACKTRACE: 1 + CARGO_FLAGS: --verbose --locked + CARGO_INCREMENTAL: 0 + steps: + - name: Set up environment variables and cargo config + shell: bash + run: | + if [ '${{ matrix.profile }}' == release ]; then + echo "CARGO_FLAGS=$CARGO_FLAGS --release" >> $GITHUB_ENV + fi + case '${{ matrix.os }}' in + ubuntu-latest) features=systemd,gelf ;; + *) features=gelf ;; + esac + echo "JORMUNGANDR_FEATURES=$features" >> $GITHUB_ENV + + if [ '${{ matrix.profile }}' == debug ] && [ '${{ matrix.os }}' == windows-latest ]; then + echo "RUSTFLAGS=$RUSTFLAGS -C link-args=/STACK:2000000" >> $GITHUB_ENV + fi + + mkdir .cargo + cat > .cargo/config.toml <> $GITHUB_ENV + fi + case '${{ matrix.os }}' in + ubuntu-latest) features=systemd,gelf ;; + *) features=gelf ;; + esac + echo "JORMUNGANDR_FEATURES=$features" >> $GITHUB_ENV + + if [ '${{ matrix.profile }}' == debug ] && [ '${{ matrix.os }}' == windows-latest ]; then + echo "RUSTFLAGS=$RUSTFLAGS -C link-args=/STACK:2000000" >> $GITHUB_ENV + fi + + mkdir .cargo + cat > .cargo/config.toml < Visitor<'a> for BlockNumberVisitor { { Ok(BlockNumber::Num(value)) } + + fn visit_u64(self, value: u64) -> Result + where + E: Error, + { + Ok(BlockNumber::Num(value.try_into().map_err( + |e: TryFromIntError| Error::custom(e.to_string()), + )?)) + } } #[cfg(test)] diff --git a/jormungandr/src/jrpc/eth_types/number.rs b/jormungandr/src/jrpc/eth_types/number.rs index 6edbcad449..79c189bf02 100644 --- a/jormungandr/src/jrpc/eth_types/number.rs +++ b/jormungandr/src/jrpc/eth_types/number.rs @@ -97,8 +97,8 @@ mod tests { ); assert_eq!( - serde_json::to_string(&vec![Number(10), Number(42), Number(69)]).unwrap(), - r#"["0xa", "0xa", "0x2a", "0x45"]"# + serde_json::to_string(&vec![Number(10), Number(10), Number(42), Number(69)]).unwrap(), + r#"["0xa","0xa","0x2a","0x45"]"# ); } }