Commit 4972a877 authored by Jan Kiene's avatar Jan Kiene
Browse files

wrap test into bash script for easier local run

parent 9ff907dd
Loading
Loading
Loading
Loading
Loading
+2 −43
Original line number Diff line number Diff line
@@ -1079,49 +1079,8 @@ check-first-frame-is-sid:
    # this rm makes check-for-testvectors only check for the signals we actually need in this test
    - rm scripts/config/ci_linux_ltv.json scripts/config/ci_linux.json
    - *check-for-testvectors
    # build encoder without sanitizers for faster runtime
    - make clean
    - make -j IVAS_cod
    - mv IVAS_cod IVAS_cod_nosan

    # run all modes and cut bitstream to start with an SID. Use mono output to limit runtime, test is only about decoding the first frame
    - modes_no_sba=$(scripts/runIvasCodec.py -l | grep dtx | grep -vE "FOA|HOA" )
    - modes_hoa=$(scripts/runIvasCodec.py -l | grep dtx | grep -E "HOA")
    - modes_foa=$(scripts/runIvasCodec.py -l | grep dtx | grep "FOA")

    - exit_code_msan=0
    - exit_code_asan_usan=0
    - testcase_timeout=20
    - bitstream_cut_length=5
    - common_args="-z console -p scripts/config/ci_linux_sidstart_test.json -s --oc mono --timeout $testcase_timeout --bs_length $bitstream_cut_length"

    # first encoder + MSAN decoder
    # hack to use the encoder with no sanitizers
    - mkdir CLANG1
    - make clean
    - make IVAS_dec -j CLANG=1
    - cp IVAS_dec CLANG1/IVAS_dec
    - cp IVAS_cod_nosan CLANG1/IVAS_cod
    - scripts/IvasBuildAndRunChecks.py --checks CLANG1 -m $modes_no_sba -U 0:20 $common_args || exit_code_msan=$?
    - scripts/IvasBuildAndRunChecks.py --checks CLANG1 -m $modes_hoa -U 70:80 $common_args || exit_code_msan=$?
    - scripts/IvasBuildAndRunChecks.py --checks CLANG1 -m $modes_foa -U 75:110 $common_args || exit_code_msan=$?
    # archive encoder logs separately
    - mkdir logs_enc logs_dec_msan
    - mv CLANG1/logs/*.enc.txt logs_enc/
    - mv CLANG1/logs/*.dec*.txt logs_dec_msan/

    # ASAN and USAN can be done in one go and decoder only
    # copy encoder output from CLANG1 dir
    - mkdir CLANG2 CLANG3
    - cp -r CLANG1/enc CLANG2/enc
    - cp -r CLANG1/enc CLANG3/enc
    - scripts/IvasBuildAndRunChecks.py --checks CLANG2 CLANG3 --decoder_only -m $modes_no_sba -U 0:20 $common_args || exit_code_asan_usan=$?
    - scripts/IvasBuildAndRunChecks.py --checks CLANG2 CLANG3 --decoder_only -m $modes_hoa -U 70:80 $common_args || exit_code_asan_usan=$?
    - scripts/IvasBuildAndRunChecks.py --checks CLANG2 CLANG3 --decoder_only -m $modes_foa -U 75:110 $common_args || exit_code_asan_usan=$?
    - mv CLANG2/logs logs_dec_asan
    - mv CLANG3/logs logs_dec_usan

    - if [ $exit_code_msan -ne 0 ] || [ $exit_code_asan_usan -ne 0 ]; then echo "There was either a crash or a sanitizer error encountered when decoding a bitstream that starts with an SID. Check the artifacts for the logfiles."; exit 1; fi
    - bash ci/run-first-frame-is-sid-test.sh

  artifacts:
    paths:
      - logs_enc
+48 −0
Original line number Diff line number Diff line
#! /usr/bin/bash

# build encoder without sanitizers for faster runtime
make clean
make -j IVAS_cod
mv IVAS_cod IVAS_cod_nosan

# run all modes and cut bitstream to start with an SID. Use mono output to limit runtime, test is only about decoding the first frame
modes_no_sba=$(scripts/runIvasCodec.py -l | grep dtx | grep -vE "FOA|HOA" )
modes_hoa=$(scripts/runIvasCodec.py -l | grep dtx | grep -E "HOA")
modes_foa=$(scripts/runIvasCodec.py -l | grep dtx | grep "FOA")

# config vars
testcase_timeout=20
bitstream_cut_length=5
common_args="-z console -p scripts/config/ci_linux_sidstart_test.json -s --oc mono --timeout $testcase_timeout --bs_length $bitstream_cut_length"

# first encoder + MSAN decoder
# hack to use the encoder with no sanitizers
mkdir CLANG1
make clean
make IVAS_dec -j CLANG=1
cp IVAS_dec CLANG1/IVAS_dec
cp IVAS_cod_nosan CLANG1/IVAS_cod

exit_code_msan=0
scripts/IvasBuildAndRunChecks.py --checks CLANG1 -m $modes_no_sba -U 0:20 $common_args || exit_code_msan=$?
scripts/IvasBuildAndRunChecks.py --checks CLANG1 -m $modes_hoa -U 70:80 $common_args || exit_code_msan=$?
scripts/IvasBuildAndRunChecks.py --checks CLANG1 -m $modes_foa -U 75:110 $common_args || exit_code_msan=$?
# archive encoder logs separately
mkdir logs_enc logs_dec_msan
mv CLANG1/logs/*.enc.txt logs_enc/
mv CLANG1/logs/*.dec*.txt logs_dec_msan/

# ASAN and USAN can be done in one go and decoder only
# copy encoder output from CLANG1 dir
mkdir CLANG2 CLANG3
cp -r CLANG1/enc CLANG2/enc
cp -r CLANG1/enc CLANG3/enc

exit_code_asan_usan=0
scripts/IvasBuildAndRunChecks.py --checks CLANG2 CLANG3 --decoder_only -m $modes_no_sba -U 0:20 $common_args || exit_code_asan_usan=$?
scripts/IvasBuildAndRunChecks.py --checks CLANG2 CLANG3 --decoder_only -m $modes_hoa -U 70:80 $common_args || exit_code_asan_usan=$?
scripts/IvasBuildAndRunChecks.py --checks CLANG2 CLANG3 --decoder_only -m $modes_foa -U 75:110 $common_args || exit_code_asan_usan=$?
mv CLANG2/logs logs_dec_asan
mv CLANG3/logs logs_dec_usan

if [ $exit_code_msan -ne 0 ] || [ $exit_code_asan_usan -ne 0 ]; then echo "There was either a crash or a sanitizer error encountered when decoding a bitstream that starts with an SID. Check the artifacts for the logfiles."; exit 1; fi