diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index 860ab7849..d30397b5e 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -5,24 +5,15 @@ on: push: branches: - master + - unstable pull_request: workflow_dispatch: jobs: - GossipSub: + Coverage: runs-on: ubuntu-20.04 - strategy: - matrix: - nim-options: [ - "", - "-d:libp2p_pubsub_anonymize=true -d:libp2p_pubsub_sign=false -d:libp2p_pubsub_verify=false", - "-d:libp2p_pubsub_sign=true -d:libp2p_pubsub_verify=true" - ] - test-program: [ - "tests/pubsub/testpubsub", - "tests/pubsub/testfloodsub", - "tests/pubsub/testgossipinternal" - ] + env: + CICOV: YES steps: - uses: actions/checkout@v2 with: @@ -36,105 +27,18 @@ jobs: env MAKE="make -j${NPROC}" bash build_nim.sh Nim csources dist/nimble NimBinaries export PATH="$PATH:$PWD/Nim/bin" nimble install_pinned - export NIM_OPTIONS="--opt:speed -d:debug --verbosity:0 --hints:off --lineDir:on -d:chronicles_log_level=INFO --warning[CaseTransition]:off --warning[ObservableStores]:off --warning[LockLevel]:off --nimcache:nimcache --passC:-fprofile-arcs --passC:-ftest-coverage --passL:-fprofile-arcs --passL:-ftest-coverage ${{ matrix.nim-options }}" - nim c $NIM_OPTIONS -r ${{ matrix.test-program }} - cd nimcache; rm *.c; cd .. + export NIMFLAGS="--lineDir:on --passC:-fprofile-arcs --passC:-ftest-coverage --passL:-fprofile-arcs --passL:-ftest-coverage" + nimble testnative + nimble testpubsub + nimble testfilter + find nimcache -name *.c -delete lcov --capture --directory nimcache --output-file coverage/coverage.info shopt -s globstar ls `pwd`/libp2p/{*,**/*}.nim lcov --extract coverage/coverage.info `pwd`/libp2p/{*,**/*}.nim --output-file coverage/coverage.f.info - export COV_UUID=`cksum <<< "${{ matrix.test-program }} $NIM_OPTIONS" | cut -f 1 -d ' '` - genhtml coverage/coverage.f.info --output-directory coverage/$COV_UUID-output - echo ${{ matrix.test-program }} > coverage/$COV_UUID-nim_options.txt - echo $NIM_OPTIONS >> coverage/$COV_UUID-nim_options.txt + genhtml coverage/coverage.f.info --output-directory coverage/output bash <(curl -s https://codecov.io/bash) -f coverage/coverage.f.info || echo "Codecov did not collect coverage reports" - uses: actions/upload-artifact@master with: name: coverage path: coverage - - Tests: - runs-on: ubuntu-20.04 - strategy: - matrix: - nim-options: [ - "" - ] - test-program: [ - "tests/testnative", - ] - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Run - run: | - sudo apt-get update - sudo apt-get install -y lcov build-essential git curl - mkdir coverage - curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_nim.sh - env MAKE="make -j${NPROC}" bash build_nim.sh Nim csources dist/nimble NimBinaries - export PATH="$PATH:$PWD/Nim/bin" - nimble install_pinned - export NIM_OPTIONS="--opt:speed -d:debug --verbosity:0 --hints:off --lineDir:on -d:chronicles_log_level=INFO --warning[CaseTransition]:off --warning[ObservableStores]:off --warning[LockLevel]:off --nimcache:nimcache --passC:-fprofile-arcs --passC:-ftest-coverage --passL:-fprofile-arcs --passL:-ftest-coverage ${{ matrix.nim-options }} --clearNimblePath --NimblePath:nimbledeps/pkgs" - nim c $NIM_OPTIONS -r ${{ matrix.test-program }} - cd nimcache; rm *.c; cd .. - lcov --capture --directory nimcache --output-file coverage/coverage.info - shopt -s globstar - ls `pwd`/libp2p/{*,**/*}.nim - lcov --extract coverage/coverage.info `pwd`/libp2p/{*,**/*}.nim --output-file coverage/coverage.f.info - export COV_UUID=`cksum <<< "${{ matrix.test-program }} $NIM_OPTIONS" | cut -f 1 -d ' '` - genhtml coverage/coverage.f.info --output-directory coverage/$COV_UUID-output - echo ${{ matrix.test-program }} > coverage/$COV_UUID-nim_options.txt - echo $NIM_OPTIONS >> coverage/$COV_UUID-nim_options.txt - bash <(curl -s https://codecov.io/bash) -f coverage/coverage.f.info || echo "Codecov did not collect coverage reports" - - uses: actions/upload-artifact@master - with: - name: coverage - path: coverage - - Filter: - runs-on: ubuntu-20.04 - strategy: - matrix: - nim-options: [ - "", - "-d:libp2p_pki_schemes=secp256k1", - "-d:libp2p_pki_schemes=secp256k1;ed25519", - "-d:libp2p_pki_schemes=secp256k1;ed25519;ecnist", - ] - test-program: [ - "tests/testpkifilter", - ] - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Run - run: | - sudo apt-get update - sudo apt-get install -y lcov build-essential git curl - mkdir coverage - curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_nim.sh - env MAKE="make -j${NPROC}" bash build_nim.sh Nim csources dist/nimble NimBinaries - export PATH="$PATH:$PWD/Nim/bin" - nimble install_pinned - export NIM_OPTIONS="--opt:speed -d:debug --verbosity:0 --hints:off --lineDir:on -d:chronicles_log_level=INFO --warning[CaseTransition]:off --warning[ObservableStores]:off --warning[LockLevel]:off --nimcache:nimcache --passC:-fprofile-arcs --passC:-ftest-coverage --passL:-fprofile-arcs --passL:-ftest-coverage ${{ matrix.nim-options }}" - nim c $NIM_OPTIONS -r ${{ matrix.test-program }} - cd nimcache; rm *.c; cd .. - lcov --capture --directory nimcache --output-file coverage/coverage.info - shopt -s globstar - ls `pwd`/libp2p/{*,**/*}.nim - lcov --extract coverage/coverage.info `pwd`/libp2p/{*,**/*}.nim --output-file coverage/coverage.f.info - export COV_UUID=`cksum <<< "${{ matrix.test-program }} $NIM_OPTIONS" | cut -f 1 -d ' '` - genhtml coverage/coverage.f.info --output-directory coverage/$COV_UUID-output - echo ${{ matrix.test-program }} > coverage/$COV_UUID-nim_options.txt - echo $NIM_OPTIONS >> coverage/$COV_UUID-nim_options.txt - bash <(curl -s https://codecov.io/bash) -f coverage/coverage.f.info || echo "Codecov did not collect coverage reports" - - uses: actions/upload-artifact@master - with: - name: coverage - path: coverage - - - diff --git a/codecov.yml b/codecov.yml index 8b05b177c..2bf4d4dcf 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,14 +1,8 @@ codecov: notify: require_ci_to_pass: true - # must be the number of coverage report builds - # notice that this number is for PRs; - # like this we disabled notify on pure branches report - # which is fine I guess - after_n_builds: 28 comment: layout: "reach, diff, flags, files" - after_n_builds: 28 # must be the number of coverage report builds coverage: status: project: @@ -16,4 +10,4 @@ coverage: # basic settings target: auto threshold: 5% - base: auto \ No newline at end of file + base: auto diff --git a/libp2p.nimble b/libp2p.nimble index 7dd20dafc..ac1407905 100644 --- a/libp2p.nimble +++ b/libp2p.nimble @@ -19,6 +19,7 @@ requires "nim >= 1.2.0", "websock", "unittest2 >= 0.0.5 & < 0.1.0" +import hashes proc runTest(filename: string, verify: bool = true, sign: bool = true, moreoptions: string = "") = var excstr = "nim c --skipParentCfg --opt:speed -d:debug -d:libp2p_agents_metrics -d:libp2p_protobuf_metrics -d:libp2p_network_protocols_metrics -d:libp2p_mplex_metrics " @@ -29,6 +30,8 @@ proc runTest(filename: string, verify: bool = true, sign: bool = true, excstr.add(" -d:libp2p_pubsub_sign=" & $sign) excstr.add(" -d:libp2p_pubsub_verify=" & $verify) excstr.add(" " & moreoptions & " ") + if getEnv("CICOV").len > 0: + excstr &= " --nimcache:nimcache/" & filename & "-" & $excstr.hash exec excstr & " -r " & " tests/" & filename rmFile "tests/" & filename.toExe