Commit cb0384fa authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

add jobs to coverage test:

- LTV tests with differing decoder framesizes
- LTV jobs for renderer
- Split rendering test
- VoIP BE tests
- BE vs EXT test
- LC3plus wrapper unit test
parent 91d6421f
Loading
Loading
Loading
Loading
Loading
+46 −8
Original line number Diff line number Diff line
@@ -2203,31 +2203,69 @@ coverage-test-on-main-scheduled:
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh
    - make GCOV=1 -j
    # compile with coverage enabled
    - cmake -B cmake-build -G "Unix Makefiles" -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true -DGCOV=ON
    - cmake --build cmake-build -- -j
    - cp IVAS_rend IVAS_rend_ref # Copy exec to be able to run renderer script

    # -- Run short test vector suite to check coverage of that first
    # codec smoke test
    - bash ci/smoke_test.sh coverage
    # default renderer framesize is 20ms
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v -n auto --update_ref 1 --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec

    # for different renderer framesizes, only the decoder needs to be tested, so use --decoder_only
    # need to ignore non-zero exit codes as limiter is active and thus the different framesiszes will not be BE in all cases
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --dut_encoder_path ./IVAS_cod --dut_decoder_path ./IVAS_dec --dut_fr 5 --decoder_only || true
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --dut_encoder_path ./IVAS_cod --dut_decoder_path ./IVAS_dec --dut_fr 10 --decoder_only || true
    # run renderer smoke test - needed for REFVEC tests
    - python3 -m pytest -q -n auto tests/renderer/test_renderer.py
    # run renderer test only with REF creation stage - no CUT needed since executables are identical
    - python3 -m pytest -q -n auto tests/renderer/test_renderer.py --create_ref
    - python3 -m pytest -q -n auto tests/renderer/test_renderer.py --create_cut    
    - lcov -c -d obj -o coverage_stv.info # extract coverage of short test vectors here
    # remove apps and lib_util files from coverage
    # run split rendering smoke test and REF creation
    - python3 -m pytest -n auto tests/split_rendering/test_split_rendering.py
    - python3 -m pytest -n auto tests/split_rendering/test_split_rendering.py --create_ref
    # VoIP BE test
    - python3 -m pytest tests/test_be_for_jbm_neutral_dly_profile.py
    # split rendering VoIP BE test
    - python3 -m pytest -n auto tests/split_rendering/test_voip_be_splitrend_vs_binaural.py
    # TODO first frame SID - this script runs a `make clean` and needs to be checked/adapted
    # - bash ci/run-first-frame-is-sid-test.sh
    # TODO consider HRTF binary loading test, or probably already covered by PRM files
    # - python3 -m pytest tests/hrtf_binary_loading
    # run BE vs EXT test
    - python3 -m pytest tests/test_be_for_ext_outputs.py
    # run LC3plus wrapper unit test
    - scripts/split_rendering/lc3plus_float/ivas_lc3plus_unit_test
    # TODO consider including check-clipping, but this scales ALL testv files. could be added at end of this job

    # -- Extract coverage of short testvectors
    - lcov -c -d cmake-build -o coverage_stv.info
    # -- Remove apps and lib_util files from coverage
    - lcov -r coverage_stv.info "*apps*" -o coverage_stv.info
    - lcov -r coverage_stv.info "*lib_util*" -o coverage_stv.info

    # -- Add extended coverage of EVS test and long test vectors
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n auto --update_ref 1 --param_file scripts/config/self_test_evs.prm --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec
    # codec smoke test
    - bash ci/smoke_test.sh coverage
    # default renderer framesize is 20ms
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n auto --update_ref 1 --param_file scripts/config/self_test_ltv.prm --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec
    # for different renderer framesizes, only the decoder needs to be tested, so use --decoder_only
    # need to ignore non-zero exit codes as limiter is active and thus the different framesiszes will not be BE in all cases
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n auto --param_file scripts/config/self_test_ltv.prm -dut_decoder_path ./IVAS_dec --decoder_only --dut_fr 5 || true
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n auto --param_file scripts/config/self_test_ltv.prm -dut_decoder_path ./IVAS_dec --decoder_only --dut_fr 10 || true
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_sba.py -v -n auto --update_ref 1 --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec --use_ltv
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_sba.py -v --dut_encoder_path ./IVAS_cod --dut_decoder_path ./IVAS_dec --dut_fr 5 --decoder_only --use_ltv || true
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_sba.py -v --dut_encoder_path ./IVAS_cod --dut_decoder_path ./IVAS_dec --dut_fr 10 --decoder_only --use_ltv || true
    - python3 -m pytest tests/test_be_for_jbm_neutral_dly_profile.py
    - lcov -c -d obj -o coverage.info
    # run renderer smoke test - needed for REFVEC tests
    - python3 -m pytest -q -n auto tests/renderer/test_renderer.py --use_ltv
    # run renderer test only with REF creation stage - no CUT needed since executables are identical
    - python3 -m pytest -q -n auto tests/renderer/test_renderer.py --use_ltv --create_cut
    # split rendering test doesn't support LTV - skipped here
    # VoIP BE tests don't support LTV - skipped here

    # -- Extract accumulated coverage of STV + EVS + LTV
    - lcov -c -d cmake-build -o coverage.info
    # remove apps and lib_util files from coverage
    - lcov -r coverage.info "*apps*" -o coverage.info
    - lcov -r coverage.info "*lib_util*" -o coverage.info