Commit 31303809 authored by norvell's avatar norvell
Browse files

Merge branch 'ci/coverage-test' into 'main'

[CI ] coverage test

See merge request !753
parents 38597c33 659bed78
Loading
Loading
Loading
Loading
Loading
+83 −13
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ variables:
  EXIT_CODE_NON_BE: 123
  EXIT_CODE_FAIL: 1
  LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm --use_ltv"
  LONG_TEST_SUITE_NO_RENDERER: "tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_ltv.prm --use_ltv"
  SHORT_TEST_SUITE: "tests/codec_be_on_mr_nonselection"
  TEST_SUITE: ""
  DUT_ENCODER_PATH: "./IVAS_cod"
@@ -40,6 +41,7 @@ variables:
      - 'sanitizer-stv'
      - 'pytest-renderer'
      - 'complexity'
      - 'coverage'
      - 'voip-be-test'


@@ -115,7 +117,7 @@ stages:
    echo "Commit time was $CI_COMMIT_TIMESTAMP"
    date | xargs echo "System time is"

.build-reference-and-dut-binaries: &build-reference-and-dut-binaries
.build-reference-binaries: &build-reference-binaries
- current_commit_sha=$(git rev-parse HEAD)
### build reference binaries
- git checkout $REFERENCE_BRANCH
@@ -125,10 +127,15 @@ stages:
- mv ./IVAS_cod ./$REF_ENCODER_PATH
- mv ./IVAS_dec ./$REF_DECODER_PATH
- mv ./IVAS_rend ./IVAS_rend_ref

  ### build test binaries
### Return to current branch
- git restore .
- git checkout $current_commit_sha


.build-reference-and-dut-binaries: &build-reference-and-dut-binaries
### build reference binaries
  - *build-reference-binaries
### build dut binaries
  - make clean
  - make -j

@@ -216,6 +223,15 @@ stages:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      when: never

.rules-coverage:
  rules:
    - if: $COVERAGE_TEST # Set by scheduled pipeline
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "coverage"
    - if: $CI_PIPELINE_SOURCE == 'push'
      when: never
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      when: never

.rules-pytest-saturation-smoke-test:
  rules:
    - if: $PYTEST_SMOKE_TEST # Set by scheduled pipeline
@@ -1000,6 +1016,60 @@ ivas-smoke-test-saturation:
      - smoke_test_output_hrtf.txt
    expose_as: "saturation smoke test results"


# GCOV/LCOV coverage analysis of self_test suite
coverage-test-on-main-scheduled:
  extends:
    - .test-job-linux
    - .rules-coverage
  stage: test
  timeout: 3 hours
  script:
    - *print-common-info
    - *update-scripts-repo    
    - *update-ltv-repo
    - *copy-ltv-files-to-testv-dir
    - *build-reference-binaries
    # Build DuT binaries with GCOV
    - make clean
    - make GCOV=1 -j
    - cp IVAS_rend IVAS_rend_ref # Copy to ensure instrumented renderer is run in the first pytest call

    - testcase_timeout=$TESTCASE_TIMEOUT_LTV
    - exit_code_dec=0
    - exit_code_enc=0
    - python3 -m pytest --tb=no tests/codec_be_on_mr_nonselection tests/renderer --update_ref 1 -v --create_ref --html=report-dec.html --self-contained-html --junit-xml=report-junit-dec.xml -n auto --testcase_timeout $testcase_timeout --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $DUT_DECODER_PATH  || exit_code_dec=$?
    - lcov -c -d obj -o coverage_dec_rend.info # extract coverage of decoder/renderer

    - python3 -m pytest --tb=no tests/codec_be_on_mr_nonselection --encoder_only -v  --html=report-enc.html --self-contained-html --junit-xml=report-junit-enc.xml -n auto --testcase_timeout $testcase_timeout --dut_encoder_path $DUT_ENCODER_PATH || exit_code_enc=$?
    - lcov -c -d obj -o coverage_enc_dec_rend.info # extract coverage of encoder/decoder/renderer

    # remove apps and lib_util files from coverage
    - lcov -r coverage_dec_rend.info "*apps*" -o coverage_dec_rend.info
    - lcov -r coverage_dec_rend.info "*lib_util*" -o coverage_dec_rend.info
    - lcov -r coverage_enc_dec_rend.info "*apps*" -o coverage_enc_dec_rend.info
    - lcov -r coverage_enc_dec_rend.info "*lib_util*" -o coverage_enc_dec_rend.info

    - commit_sha=$(git rev-parse HEAD)
    - genhtml coverage_enc_dec_rend.info -o coverage_enc_dec_rend -t "Coverage on main enc/dec/rend @ $commit_sha"
    - genhtml coverage_dec_rend.info -o coverage_dec_rend -t "Coverage on main -- dec/rend @ $commit_sha"
  artifacts:
    name: "main-coverage-sha-$CI_COMMIT_SHORT_SHA"
    when: always
    expire_in: 1 week
    paths:
      - coverage_enc_dec_rend.info
      - coverage_dec_rend.info
      - coverage_enc_dec_rend
      - coverage_dec_rend
      - report-dec.html
      - report-enc.html
    expose_as: "Coverage result"
    reports:
      junit:
        - report-junit-dec.xml
        - report-junit-enc.xml

# ---------------------------------------------------------------
# EVS 26.444 test job
# ---------------------------------------------------------------