Loading .gitlab-ci.yml +132 −12 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ variables: - 'test-be-release' - 'test-long-self-test' - 'ivas-conformance' - 'ivas-conformance-linux' GIT_CLEAN_FLAGS: -ffdxq TESTCASE_TIMEOUT_STV_SANITIZERS: 180 TESTCASE_TIMEOUT_LTV_SANITIZERS: 1200 Loading Loading @@ -58,6 +59,10 @@ workflow: variables: IVAS_PIPELINE_NAME: 'Draft IVAS Conformance test: $CI_COMMIT_BRANCH' - if: $CI_PIPELINE_SOURCE == 'trigger' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux' variables: IVAS_PIPELINE_NAME: 'Draft IVAS Conformance test -- Linux: $CI_COMMIT_BRANCH' stages: - .pre Loading Loading @@ -201,7 +206,23 @@ stages: - make clean - make -j CLANG=$CLANG_NUM - testcase_timeout=$SELFTEST_SANITY_TIMEOUT - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1 python3 -m pytest $SELF_TEST_PRM_FILE -v --update_ref 1 -m create_ref --html=report.html --self-contained-html --junit-xml=report-junit.xml --testcase_timeout=$testcase_timeout --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - export UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1 - exit_code20=0 - exit_code10=0 - exit_code5=0 - if [ $CLANG_NUM -eq 1 ]; then sanitizer_type="MemorySanitizer"; elif [ $CLANG_NUM -eq 2 ]; then sanitizer_type="AddressSanitizer"; elif [ $CLANG_NUM -eq 3 ]; then sanitizer_type="UndefinedBehaviorSanitizer"; else echo "Wrong CLANG_NUM $CLANG_NUM given!"; exit 1; fi # run encoder and decoder with 20ms renderer framesize first, use reference creation mode - python3 -m pytest $SELF_TEST_PRM_FILE -v --update_ref 1 -m create_ref --html=report-20ms.html --self-contained-html --junit-xml=report-junit-20ms.xml --testcase_timeout=$testcase_timeout --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec || exit_code20=$? # for 10ms and 5ms renderer framesize, we only need to run the decoder part as renderer framesize is a decoder-only option # set tolerance very high do ignore any BE differences due to the different renderer framesizes, those can appear due to the limiter being active # we are only interested in runtime errors from the sanitizers and ignore the diffs - python3 -m pytest $SELF_TEST_PRM_FILE -v --html=report-5ms.html --self-contained-html --junit-xml=report-junit-5ms.xml --dut_fr 5 --decoder_only --abs_tol 100000 || exit_code5=$? - python3 -m pytest $SELF_TEST_PRM_FILE -v --html=report-10ms.html --self-contained-html --junit-xml=report-junit-10ms.xml --dut_fr 10 --decoder_only --abs_tol 100000 || exit_code10=$? - if [ $exit_code20 -ne 0 ] || [ $exit_code10 -ne 0 ] || [ $exit_code5 -ne 0 ]; then exit 1; fi # --------------------------------------------------------------- Loading @@ -227,6 +248,8 @@ stages: when: never - if: $MANUAL_PIPELINE_TYPE == 'ivas-conformance' when: never - if: $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux' when: never - when: on_success .rules-merge-request: Loading Loading @@ -283,12 +306,18 @@ stages: expire_in: 1 week when: always paths: - report-junit.xml - report.html - report-junit-20ms.xml - report-junit-10ms.xml - report-junit-5ms.xml - report-20ms.html - report-10ms.html - report-5ms.html expose_as: "Sanitizer selftest results" reports: junit: - report-junit.xml - report-junit-20ms.xml - report-junit-10ms.xml - report-junit-5ms.xml .sanitizer-selftest-ltv: stage: test Loading @@ -299,12 +328,18 @@ stages: expire_in: 2 week when: always paths: - report-junit.xml - report.html - report-junit-20ms.xml - report-junit-10ms.xml - report-junit-5ms.xml - report-20ms.html - report-10ms.html - report-5ms.html expose_as: "Sanitizer selftest results" reports: junit: - report-junit.xml - report-junit-20ms.xml - report-junit-10ms.xml - report-junit-5ms.xml # --------------------------------------------------------------- # .pre jobs for setting up things Loading Loading @@ -501,6 +536,8 @@ codec-smoke-test: codec-msan: extends: - .sanitizer-selftest-on-mr tags: - ivas-linux-fast before_script: - CLANG_NUM=1 - SELFTEST_SANITY_TIMEOUT=$TESTCASE_TIMEOUT_STV_SANITIZERS Loading Loading @@ -1309,6 +1346,7 @@ ivas-conformance: # Prepare reference exec, use tests and scripts from reference - $source_branch_commit_sha = $(git rev-parse HEAD) - git checkout main # This should be set to a relevant reference - git pull # Ensure to get the latest version - python .\scripts\strip_split_rendering.py - MSBuild.exe -maxcpucount .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug - cp -force IVAS_cod.exe IVAS_cod_ref.exe Loading Loading @@ -1373,6 +1411,86 @@ ivas-conformance: reports: junit: report-junit.xml ivas-conformance-linux: tags: - ivas-linux stage: test timeout: "60 minutes" rules: - if: ($CI_PIPELINE_SOURCE == 'web' || $CI_PIPELINE_SOURCE == 'trigger') && $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux' allow_failure: exit_codes: - 123 script: - *print-common-info # Prepare reference exec, use tests and scripts from reference - source_branch_commit_sha=$(git rev-parse HEAD) - git checkout main # This should be set to a relevant reference - make -j - cp IVAS_cod IVAS_cod_ref - cp IVAS_dec IVAS_dec_ref - cp IVAS_rend IVAS_rend_ref - git restore . - git checkout $source_branch_commit_sha # Reference creation - python3 tests/create_short_testvectors.py - python3 scripts/prepare_combined_format_inputs.py - python3 -m pytest tests/codec_be_on_mr_nonselection -v -n auto --update_ref 1 -m create_ref --keep_files - python3 -m pytest tests/codec_be_on_mr_nonselection -v -n auto --update_ref 1 -m create_ref_part2 --keep_files - python3 -m pytest tests/renderer/test_renderer.py --create_ref --keep_files # Output creation - python3 -m pytest tests/codec_be_on_mr_nonselection tests/renderer/test_renderer.py -v -n auto --keep_files --create_cut --html=report_cmd.html --self-contained-html - python3 scripts/parse_commands.py report_cmd.html Readme_IVAS.txt # Copy input data and output ref data - rm -rf testvec - mkdir testvec - mkdir testvec/binauralRenderer_interface - mkdir testvec/testv - mkdir testvec/testv/renderer - mkdir testvec/bin - cp -r scripts/testv/* testvec/testv - cp -r scripts/ls_layouts testvec - cp -r scripts/switchPaths testvec - cp -r scripts/trajectories testvec - cp -r scripts/binauralRenderer_interface/binaural_renderers_hrtf_data testvec/binauralRenderer_interface - cp -r tests/ref testvec/testv/ref - cp -r tests/dut/* testvec/testv/ref - cp -r tests/renderer/cut testvec/testv/renderer/ref - cp -r tests/conformance-test testvec/ - cp Readme_IVAS_dec.txt testvec - cp Readme_IVAS_enc.txt testvec - cp Readme_IVAS_rend.txt testvec - cp Readme_IVAS_JBM_dec.txt testvec - cp IVAS_cod testvec/bin - cp IVAS_dec testvec/bin - cp IVAS_rend testvec/bin # Test run generated scripts in testvec - cd testvec - python3 -m pytest conformance-test/test_26252.py --junit-xml=report-junit.xml --html=report.html --self-contained-html - mv report.html .. - mv report-junit.xml .. artifacts: name: "ivas-conformance-linux-$CI_COMMIT_SHORT_SHA" expire_in: 1 week when: always paths: - report-junit.xml - report.html - Readme_IVAS_dec.txt - Readme_IVAS_enc.txt - Readme_IVAS_rend.txt - Readme_IVAS_JBM_dec.txt expose_as: "Draft IVAS conformance -- Linux" reports: junit: report-junit.xml test-long-self-test: tags: - ivas-linux-fast Loading Loading @@ -1454,7 +1572,7 @@ ltv-msan: - .sanitizer-selftest-ltv rules: - if: $SANITIZER_SCHEDULE_E timeout: 1 hour timeout: 2 hour tags: - ivas-linux-fast before_script: Loading @@ -1470,10 +1588,10 @@ ltv-asan: rules: - if: $SANITIZER_SCHEDULE_E when: delayed start_in: 1 hours start_in: 2 hours tags: - ivas-linux-fast timeout: 1 hour timeout: 2 hour before_script: - CLANG_NUM=2 - SELFTEST_SANITY_TIMEOUT=$TESTCASE_TIMEOUT_LTV_SANITIZERS Loading @@ -1487,10 +1605,10 @@ ltv-usan: rules: - if: $SANITIZER_SCHEDULE_E when: delayed start_in: 2 hours start_in: 3 hours tags: - ivas-linux-fast timeout: 1 hour timeout: 2 hour before_script: - CLANG_NUM=3 - SELFTEST_SANITY_TIMEOUT=$TESTCASE_TIMEOUT_LTV_SANITIZERS Loading @@ -1511,6 +1629,8 @@ ltv-usan: paths: - ep_015.g192 - dly_profile.dat - head_rot_traj.csv - exof_traj.csv - ./LOGS_PLC - ./LOGS_noPLC Loading apps/decoder.c +0 −3 Original line number Diff line number Diff line Loading @@ -2624,9 +2624,6 @@ static ivas_error decodeG192( { update_wmops(); update_mem(); #ifdef MEM_COUNT_DETAILS export_mem( "mem_analysis.csv" ); #endif } #endif } Loading ci/complexity_measurements/mergeNewsletterRam.py +0 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ # accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and # the United Nations Convention on Contracts on the International Sales of Goods. import csv import re import sys newsletterFilename = "" Loading ci/complexity_measurements/mergeNewsletterRom.py +0 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ # accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and # the United Nations Convention on Contracts on the International Sales of Goods. import csv import re import sys newsletterFilename = "" Loading ci/create_trajectories.py 0 → 100644 +25 −0 Original line number Diff line number Diff line import numpy as np FRAMES_PER_SEC = 50 def random_trajectory(duration_sec): n_frames = int(FRAMES_PER_SEC * duration_sec) trj = np.random.random((n_frames, 4)) trj[:, 0] = -3 trj[:, 1] *= 180 trj[:, 2] *= 90 trj[:, 3] *= 180 return trj def constant_trajectory(duration_sec, yaw=0, pitch=0, roll=0): n_frames = int(FRAMES_PER_SEC * duration_sec) trj = np.empty((n_frames, 4)) trj[:, 0] = -3 trj[:, 1] = yaw trj[:, 2] = pitch trj[:, 3] = roll return trj Loading
.gitlab-ci.yml +132 −12 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ variables: - 'test-be-release' - 'test-long-self-test' - 'ivas-conformance' - 'ivas-conformance-linux' GIT_CLEAN_FLAGS: -ffdxq TESTCASE_TIMEOUT_STV_SANITIZERS: 180 TESTCASE_TIMEOUT_LTV_SANITIZERS: 1200 Loading Loading @@ -58,6 +59,10 @@ workflow: variables: IVAS_PIPELINE_NAME: 'Draft IVAS Conformance test: $CI_COMMIT_BRANCH' - if: $CI_PIPELINE_SOURCE == 'trigger' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux' variables: IVAS_PIPELINE_NAME: 'Draft IVAS Conformance test -- Linux: $CI_COMMIT_BRANCH' stages: - .pre Loading Loading @@ -201,7 +206,23 @@ stages: - make clean - make -j CLANG=$CLANG_NUM - testcase_timeout=$SELFTEST_SANITY_TIMEOUT - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1 python3 -m pytest $SELF_TEST_PRM_FILE -v --update_ref 1 -m create_ref --html=report.html --self-contained-html --junit-xml=report-junit.xml --testcase_timeout=$testcase_timeout --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - export UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1 - exit_code20=0 - exit_code10=0 - exit_code5=0 - if [ $CLANG_NUM -eq 1 ]; then sanitizer_type="MemorySanitizer"; elif [ $CLANG_NUM -eq 2 ]; then sanitizer_type="AddressSanitizer"; elif [ $CLANG_NUM -eq 3 ]; then sanitizer_type="UndefinedBehaviorSanitizer"; else echo "Wrong CLANG_NUM $CLANG_NUM given!"; exit 1; fi # run encoder and decoder with 20ms renderer framesize first, use reference creation mode - python3 -m pytest $SELF_TEST_PRM_FILE -v --update_ref 1 -m create_ref --html=report-20ms.html --self-contained-html --junit-xml=report-junit-20ms.xml --testcase_timeout=$testcase_timeout --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec || exit_code20=$? # for 10ms and 5ms renderer framesize, we only need to run the decoder part as renderer framesize is a decoder-only option # set tolerance very high do ignore any BE differences due to the different renderer framesizes, those can appear due to the limiter being active # we are only interested in runtime errors from the sanitizers and ignore the diffs - python3 -m pytest $SELF_TEST_PRM_FILE -v --html=report-5ms.html --self-contained-html --junit-xml=report-junit-5ms.xml --dut_fr 5 --decoder_only --abs_tol 100000 || exit_code5=$? - python3 -m pytest $SELF_TEST_PRM_FILE -v --html=report-10ms.html --self-contained-html --junit-xml=report-junit-10ms.xml --dut_fr 10 --decoder_only --abs_tol 100000 || exit_code10=$? - if [ $exit_code20 -ne 0 ] || [ $exit_code10 -ne 0 ] || [ $exit_code5 -ne 0 ]; then exit 1; fi # --------------------------------------------------------------- Loading @@ -227,6 +248,8 @@ stages: when: never - if: $MANUAL_PIPELINE_TYPE == 'ivas-conformance' when: never - if: $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux' when: never - when: on_success .rules-merge-request: Loading Loading @@ -283,12 +306,18 @@ stages: expire_in: 1 week when: always paths: - report-junit.xml - report.html - report-junit-20ms.xml - report-junit-10ms.xml - report-junit-5ms.xml - report-20ms.html - report-10ms.html - report-5ms.html expose_as: "Sanitizer selftest results" reports: junit: - report-junit.xml - report-junit-20ms.xml - report-junit-10ms.xml - report-junit-5ms.xml .sanitizer-selftest-ltv: stage: test Loading @@ -299,12 +328,18 @@ stages: expire_in: 2 week when: always paths: - report-junit.xml - report.html - report-junit-20ms.xml - report-junit-10ms.xml - report-junit-5ms.xml - report-20ms.html - report-10ms.html - report-5ms.html expose_as: "Sanitizer selftest results" reports: junit: - report-junit.xml - report-junit-20ms.xml - report-junit-10ms.xml - report-junit-5ms.xml # --------------------------------------------------------------- # .pre jobs for setting up things Loading Loading @@ -501,6 +536,8 @@ codec-smoke-test: codec-msan: extends: - .sanitizer-selftest-on-mr tags: - ivas-linux-fast before_script: - CLANG_NUM=1 - SELFTEST_SANITY_TIMEOUT=$TESTCASE_TIMEOUT_STV_SANITIZERS Loading Loading @@ -1309,6 +1346,7 @@ ivas-conformance: # Prepare reference exec, use tests and scripts from reference - $source_branch_commit_sha = $(git rev-parse HEAD) - git checkout main # This should be set to a relevant reference - git pull # Ensure to get the latest version - python .\scripts\strip_split_rendering.py - MSBuild.exe -maxcpucount .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug - cp -force IVAS_cod.exe IVAS_cod_ref.exe Loading Loading @@ -1373,6 +1411,86 @@ ivas-conformance: reports: junit: report-junit.xml ivas-conformance-linux: tags: - ivas-linux stage: test timeout: "60 minutes" rules: - if: ($CI_PIPELINE_SOURCE == 'web' || $CI_PIPELINE_SOURCE == 'trigger') && $MANUAL_PIPELINE_TYPE == 'ivas-conformance-linux' allow_failure: exit_codes: - 123 script: - *print-common-info # Prepare reference exec, use tests and scripts from reference - source_branch_commit_sha=$(git rev-parse HEAD) - git checkout main # This should be set to a relevant reference - make -j - cp IVAS_cod IVAS_cod_ref - cp IVAS_dec IVAS_dec_ref - cp IVAS_rend IVAS_rend_ref - git restore . - git checkout $source_branch_commit_sha # Reference creation - python3 tests/create_short_testvectors.py - python3 scripts/prepare_combined_format_inputs.py - python3 -m pytest tests/codec_be_on_mr_nonselection -v -n auto --update_ref 1 -m create_ref --keep_files - python3 -m pytest tests/codec_be_on_mr_nonselection -v -n auto --update_ref 1 -m create_ref_part2 --keep_files - python3 -m pytest tests/renderer/test_renderer.py --create_ref --keep_files # Output creation - python3 -m pytest tests/codec_be_on_mr_nonselection tests/renderer/test_renderer.py -v -n auto --keep_files --create_cut --html=report_cmd.html --self-contained-html - python3 scripts/parse_commands.py report_cmd.html Readme_IVAS.txt # Copy input data and output ref data - rm -rf testvec - mkdir testvec - mkdir testvec/binauralRenderer_interface - mkdir testvec/testv - mkdir testvec/testv/renderer - mkdir testvec/bin - cp -r scripts/testv/* testvec/testv - cp -r scripts/ls_layouts testvec - cp -r scripts/switchPaths testvec - cp -r scripts/trajectories testvec - cp -r scripts/binauralRenderer_interface/binaural_renderers_hrtf_data testvec/binauralRenderer_interface - cp -r tests/ref testvec/testv/ref - cp -r tests/dut/* testvec/testv/ref - cp -r tests/renderer/cut testvec/testv/renderer/ref - cp -r tests/conformance-test testvec/ - cp Readme_IVAS_dec.txt testvec - cp Readme_IVAS_enc.txt testvec - cp Readme_IVAS_rend.txt testvec - cp Readme_IVAS_JBM_dec.txt testvec - cp IVAS_cod testvec/bin - cp IVAS_dec testvec/bin - cp IVAS_rend testvec/bin # Test run generated scripts in testvec - cd testvec - python3 -m pytest conformance-test/test_26252.py --junit-xml=report-junit.xml --html=report.html --self-contained-html - mv report.html .. - mv report-junit.xml .. artifacts: name: "ivas-conformance-linux-$CI_COMMIT_SHORT_SHA" expire_in: 1 week when: always paths: - report-junit.xml - report.html - Readme_IVAS_dec.txt - Readme_IVAS_enc.txt - Readme_IVAS_rend.txt - Readme_IVAS_JBM_dec.txt expose_as: "Draft IVAS conformance -- Linux" reports: junit: report-junit.xml test-long-self-test: tags: - ivas-linux-fast Loading Loading @@ -1454,7 +1572,7 @@ ltv-msan: - .sanitizer-selftest-ltv rules: - if: $SANITIZER_SCHEDULE_E timeout: 1 hour timeout: 2 hour tags: - ivas-linux-fast before_script: Loading @@ -1470,10 +1588,10 @@ ltv-asan: rules: - if: $SANITIZER_SCHEDULE_E when: delayed start_in: 1 hours start_in: 2 hours tags: - ivas-linux-fast timeout: 1 hour timeout: 2 hour before_script: - CLANG_NUM=2 - SELFTEST_SANITY_TIMEOUT=$TESTCASE_TIMEOUT_LTV_SANITIZERS Loading @@ -1487,10 +1605,10 @@ ltv-usan: rules: - if: $SANITIZER_SCHEDULE_E when: delayed start_in: 2 hours start_in: 3 hours tags: - ivas-linux-fast timeout: 1 hour timeout: 2 hour before_script: - CLANG_NUM=3 - SELFTEST_SANITY_TIMEOUT=$TESTCASE_TIMEOUT_LTV_SANITIZERS Loading @@ -1511,6 +1629,8 @@ ltv-usan: paths: - ep_015.g192 - dly_profile.dat - head_rot_traj.csv - exof_traj.csv - ./LOGS_PLC - ./LOGS_noPLC Loading
apps/decoder.c +0 −3 Original line number Diff line number Diff line Loading @@ -2624,9 +2624,6 @@ static ivas_error decodeG192( { update_wmops(); update_mem(); #ifdef MEM_COUNT_DETAILS export_mem( "mem_analysis.csv" ); #endif } #endif } Loading
ci/complexity_measurements/mergeNewsletterRam.py +0 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ # accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and # the United Nations Convention on Contracts on the International Sales of Goods. import csv import re import sys newsletterFilename = "" Loading
ci/complexity_measurements/mergeNewsletterRom.py +0 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ # accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and # the United Nations Convention on Contracts on the International Sales of Goods. import csv import re import sys newsletterFilename = "" Loading
ci/create_trajectories.py 0 → 100644 +25 −0 Original line number Diff line number Diff line import numpy as np FRAMES_PER_SEC = 50 def random_trajectory(duration_sec): n_frames = int(FRAMES_PER_SEC * duration_sec) trj = np.random.random((n_frames, 4)) trj[:, 0] = -3 trj[:, 1] *= 180 trj[:, 2] *= 90 trj[:, 3] *= 180 return trj def constant_trajectory(duration_sec, yaw=0, pitch=0, roll=0): n_frames = int(FRAMES_PER_SEC * duration_sec) trj = np.empty((n_frames, 4)) trj[:, 0] = -3 trj[:, 1] = yaw trj[:, 2] = pitch trj[:, 3] = roll return trj