Loading .gitattributes +1 −0 Original line number Diff line number Diff line Loading @@ -29,5 +29,6 @@ *.mat filter=lfs diff=lfs merge=lfs -text *.met filter=lfs diff=lfs merge=lfs -text *.pcm filter=lfs diff=lfs merge=lfs -text *.sofa filter=lfs diff=lfs merge=lfs -text *.wav filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text .gitignore +17 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ scripts/td_object_renderer/object_renderer_standalone/renderer_standalone.exe .cache *.log *.bak .\#* scripts/c-code_instrument/ scripts/ifdef_instrument.list scripts/ref/ Loading @@ -66,5 +67,20 @@ __pycache__/ # history .history/ #externals Externals/ # coan output files that are created when cleaning out switches coan_out_* /COMPLEXITY /res /tv /wmops /Workspace_msvc/renderer.args.json /Workspace_msvc/encoder.args.json /Workspace_msvc/decoder.args.json /scripts/mem_analysis_enc_VBR_5k9.csv /scripts/mem_analysis_enc_STEREO_sw.png /scripts/mem_analysis_enc_STEREO_sw.csv /scripts/mem_analysis_enc_STEREO_16k4_DTX.csv *.pwv .gitlab-ci.yml +186 −19 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ variables: LTV_DIR: "/usr/local/ltv" BUILD_OUTPUT: "build_output.txt" EVS_BE_TEST_DIR: "/usr/local/be_2_evs_test" EVS_BE_WIN_TEST_DIR: "C:/Users/gitlab-runner/testvec" SANITIZER_TESTS: "CLANG1 CLANG2" OUT_FORMATS_CHANNEL_BASED: "stereo mono 5_1 5_1_2 5_1_4 7_1 7_1_4" OUT_FORMATS_SCENE_BASED: "FOA HOA2 HOA3" Loading @@ -10,6 +11,8 @@ variables: EXIT_CODE_NON_BE: 123 EXIT_CODE_FAIL: 1 default: interruptible: true # Make all jobs by default interruptible # This sets when pipelines are created. Jobs have more specific rules to restrict them. workflow: Loading @@ -17,12 +20,13 @@ workflow: # see https://docs.gitlab.com/ee/ci/yaml/workflow.html#switch-between-branch-pipelines-and-merge-request-pipelines - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push" when: never - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # Runs for merge requests - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Pushes to main - if: $CI_PIPELINE_SOURCE == 'schedule' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Scheduled in main - if: $CI_PIPELINE_SOURCE == 'web' # for testing stages: - .pre - maintenance - build - test Loading @@ -44,6 +48,13 @@ stages: echo "Commit time was $CI_COMMIT_TIMESTAMP" date | xargs echo "System time is" .print-common-info-windows: &print-common-info-windows - | echo "Printing common information for build job." echo "Current job is run on commit $CI_COMMIT_SHA" echo "Commit time was $CI_COMMIT_TIMESTAMP" ("echo 'System time is'", "Get-Date -Format 'dddd dd/MM/yyyy HH:mm K'") | Invoke-Expression .get-previous-merge-commit-sha: &get-previous-merge-commit-sha - previous_merge_commit=$(git --no-pager log --merges HEAD~1 -n 1 --pretty=format:%H) Loading Loading @@ -125,7 +136,7 @@ stages: .rules-merge-request: extends: .rules-basis rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - if: $CI_PIPELINE_SOURCE == 'push' when: never Loading @@ -151,6 +162,11 @@ stages: tags: - ivas-linux .build-job-windows: stage: build timeout: "4 minutes" tags: - ivas-windows # template for test jobs on linux that need the TESTV_DIR .test-job-linux-needs-testv-dir: Loading @@ -167,6 +183,37 @@ stages: exit_codes: - 123 .build-job-windows-with-check-for-warnings: extends: .build-job-windows stage: build allow_failure: exit_codes: - 123 # --------------------------------------------------------------- # .pre jobs for setting up things # --------------------------------------------------------------- # See: https://gitlab.com/gitlab-org/gitlab/-/issues/194023 # Solution to make main branch pipelines uninterruptible while all other # pipelines can be interrupted by default. This works because all jobs # after uninterruptible jobs will be uninterruptible. Resource group # setting avoids rare case where two fast merges could still interrupt # pipeline. This should be revisited if there are updates to Gitlab. uninterruptible: stage: .pre interruptible: false resource_group: uninterruptible script: - echo "$CI_COMMIT_BRANCH is uninterruptible" rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH when: always tags: - ivas-linux # --------------------------------------------------------------- # Validation jobs Loading Loading @@ -232,6 +279,31 @@ build-codec-sanitizers-linux: - *print-common-info - bash ci/build_codec_sanitizers_linux.sh build-codec-windows-cmake: extends: - .build-job-windows-with-check-for-warnings - .rules-basis script: - *print-common-info-windows - $winoutdata = $null - cmake -G "Visual Studio 15 2017" . -Bbuild - cmake --build build -j | tee -variable winoutdata - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 - ("& python ci/check_for_warnings.py '$BUILD_OUTPUT'") | Invoke-Expression - ("exit $LASTEXITCODE") | Invoke-Expression build-codec-windows-msbuild: extends: - .build-job-windows-with-check-for-warnings - .rules-basis script: - *print-common-info-windows - $winoutdata = $null - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug | tee -variable winoutdata - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 - ("& python ci/check_for_warnings.py '$BUILD_OUTPUT'") | Invoke-Expression - ("exit $LASTEXITCODE") | Invoke-Expression # --------------------------------------------------------------- # Test jobs for merge requests # --------------------------------------------------------------- Loading @@ -241,7 +313,7 @@ codec-smoke-test: extends: - .test-job-linux-needs-testv-dir - .rules-merge-request timeout: "5 minutes" timeout: "10 minutes" stage: test needs: ["build-codec-linux-cmake"] script: Loading @@ -250,14 +322,16 @@ codec-smoke-test: ### analyze for failures - if cat smoke_test_output.txt | grep -c "failed"; then echo "Smoke test without PLC failed"; exit 1; fi - if cat smoke_test_output_plc.txt | grep -c "failed"; then echo "Smoke test with PLC failed"; exit 1; fi - if cat smoke_test_output_jbm_noEXT.txt | grep -c "failed"; then echo "Smoke test with PLC failed"; exit 1; fi - if cat smoke_test_output_jbm_noEXT.txt | grep -c "failed"; then echo "Smoke test JBM part failed"; exit 1; fi - if cat smoke_test_output_hrtf.txt | grep -c "failed"; then echo "Smoke test with external hrtf files failed"; exit 1; fi artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 1 week paths: - out/logs/ - smoke_test_output.txt - smoke_test_output_plc.txt - smoke_test_output_jbm_noEXT.txt - smoke_test_output_hrtf.txt expose_as: "Smoke test results" # code selftest testvectors with memory-sanitizer binaries Loading @@ -277,6 +351,7 @@ codec-msan: - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang memory-sanitizer"; exit 1; fi artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 1 week paths: - scripts/ref/logs/ - test_output.txt Loading @@ -299,6 +374,7 @@ codec-asan: - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang address-sanitizer"; exit 1; fi artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 1 week paths: - scripts/ref/logs/ - test_output.txt Loading @@ -316,6 +392,7 @@ renderer-smoke-test: - python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week when: always paths: - report-junit.xml Loading @@ -339,6 +416,7 @@ renderer-asan: artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week when: always paths: - report-junit.xml Loading @@ -362,6 +440,7 @@ renderer-msan: artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week when: always paths: - report-junit.xml Loading Loading @@ -415,6 +494,7 @@ renderer-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 2 week when: always paths: - report-junit.xml Loading Loading @@ -465,6 +545,7 @@ ivas-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 2 week when: always paths: - report-junit.xml Loading Loading @@ -511,6 +592,7 @@ evs-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 2 week when: always paths: - report-junit-evs.xml Loading Loading @@ -569,6 +651,7 @@ clang-format-check: - exit $format_problems artifacts: expire_in: 2 days paths: - tmp-formatting-fix/ when: on_failure Loading Loading @@ -606,6 +689,30 @@ check-first-frame-is-sid: # Test jobs for main branch # --------------------------------------------------------------- # check bitexactness to EVS windows binaries be-2-evs-windows: extends: - .rules-main-push tags: - ivas-windows stage: test needs: ["build-codec-windows-msbuild"] timeout: "20 minutes" # To be revisited script: - *print-common-info-windows - $winoutdata = $null - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Release | tee -variable winoutdata - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 # copy over to never change the testvector dir - cp -r $EVS_BE_WIN_TEST_DIR ./evs_be_win_test - cp IVAS_cod.exe ./evs_be_win_test/bin/IVAS_cod.exe - cp IVAS_dec.exe ./evs_be_win_test/bin/IVAS_dec.exe - cd evs_be_win_test - python ../ci/run_evs_be_win_test.py # check bitexactness to EVS be-2-evs-linux: extends: Loading Loading @@ -704,6 +811,7 @@ codec-comparison-on-main-push: - 123 artifacts: name: "main-push--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 2 week when: always paths: - report-junit.xml Loading @@ -725,6 +833,7 @@ codec-comparison-on-main-push: - sanitizer_test_main artifacts: name: "$CI_JOB_NAME--main--sha-$CI_COMMIT_SHORT_SHA" expire_in: 1 week when: always paths: - ep_015.g192 Loading @@ -736,13 +845,13 @@ codec-comparison-on-main-push: .sanitizer-test-schedule-A: extends: - .sanitizer-test-template timeout: 2 hours 30 minutes sanitizer-test-mono: extends: .sanitizer-test-schedule-A rules: - if: $SANITIZER_SCHEDULE_A timeout: 2 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py mono mono --tests $SANITIZER_TESTS Loading @@ -752,7 +861,8 @@ sanitizer-test-stereo: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 2 hours 30 minutes start_in: 2 hour timeout: 2 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py stereo $OUT_FORMATS_CHANNEL_BASED --tests $SANITIZER_TESTS Loading @@ -762,7 +872,8 @@ sanitizer-test-stereodmxevs: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 5 hours start_in: 4 hours timeout: 2 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py StereoDmxEVS mono --tests $SANITIZER_TESTS Loading @@ -772,7 +883,8 @@ sanitizer-test-ism1: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 7 hours 30 minutes start_in: 6 hours timeout: 2 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM1 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -782,7 +894,8 @@ sanitizer-test-ism2: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 10 hours start_in: 8 hours timeout: 3 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM2 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -792,7 +905,8 @@ sanitizer-test-ism3: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 12 hours 30 minutes start_in: 11 hours timeout: 3 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM3 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -802,7 +916,8 @@ sanitizer-test-ism4: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 15 hours start_in: 14 hours timeout: 4 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -812,7 +927,8 @@ sanitizer-test-masa: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 17 hours 30 minutes start_in: 18 hours timeout: 3 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py MASA $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -822,7 +938,7 @@ sanitizer-test-masa: .sanitizer-test-schedule-B: extends: - .sanitizer-test-template timeout: 3 hours timeout: 4 hours sanitizer-test-mc-5_1: extends: .sanitizer-test-schedule-B Loading @@ -837,7 +953,7 @@ sanitizer-test-mc-5_1_2: rules: - if: $SANITIZER_SCHEDULE_B when: delayed start_in: 3 hours start_in: 4 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py 5_1_2 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS Loading @@ -847,7 +963,7 @@ sanitizer-test-mc-5_1_4: rules: - if: $SANITIZER_SCHEDULE_B when: delayed start_in: 6 hours start_in: 8 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py 5_1_4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS Loading @@ -857,7 +973,7 @@ sanitizer-test-mc-7_1: rules: - if: $SANITIZER_SCHEDULE_B when: delayed start_in: 9 hours start_in: 12 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py 7_1 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS Loading @@ -867,7 +983,7 @@ sanitizer-test-mc-7_1_4: rules: - if: $SANITIZER_SCHEDULE_B when: delayed start_in: 12 hours start_in: 16 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py 7_1_4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS Loading Loading @@ -897,6 +1013,55 @@ sanitizer-test-planarsba: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py PlanarSBA $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS ### --- sanitizer schedule D --- .sanitizer-test-schedule-D: extends: - .sanitizer-test-template sanitizer-test-ism+1: extends: .sanitizer-test-schedule-D rules: - if: $SANITIZER_SCHEDULE_D timeout: 2 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+1 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS sanitizer-test-ism+2: extends: .sanitizer-test-schedule-D rules: - if: $SANITIZER_SCHEDULE_D when: delayed start_in: 2 hours timeout: 3 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+2 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS sanitizer-test-ism+3: extends: .sanitizer-test-schedule-D rules: - if: $SANITIZER_SCHEDULE_D when: delayed start_in: 5 hours timeout: 3 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+3 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS sanitizer-test-ism+4: extends: .sanitizer-test-schedule-D rules: - if: $SANITIZER_SCHEDULE_D when: delayed start_in: 8 hours timeout: 4 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS # GCOV/LCOV coverage analysis of self_test suite coverage-test-on-main-scheduled: extends: Loading Loading @@ -925,6 +1090,7 @@ coverage-test-on-main-scheduled: artifacts: name: "main-coverage-sha-$CI_COMMIT_SHORT_SHA" when: always expire_in: 1 week paths: - coverage.info - coverage Loading Loading @@ -980,6 +1146,7 @@ coverage-test-on-main-scheduled: stage: test artifacts: name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA" expire_in: 1 week paths: - $CI_JOB_NAME-public Loading Loading @@ -1010,7 +1177,7 @@ complexity-ism-in-binaural-out: - *complexity-measurements-setup - in_format=ISM - out_format=BINAURAL - bash ci/complexity_measurements/getWmops.sh "ISM1 ISM2 ISM3 ISM4" "$out_format" - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" - *complexity-measurements-prepare-artifacts complexity-sba-hoa3-in-hoa3-out: Loading .gitlab/issue_templates/generic_issue.md→.gitlab/issue_templates/default.md +0 −0 File moved. View file .gitlab/issue_templates/sanitizer_error.md 0 → 100644 +39 −0 Original line number Diff line number Diff line ### Basic info - Commit SHA: ### Bug description Clang (msan/asan?) sanitizer test in pipeline found an error: <!--- Copy sanitizer traceback from command line here --> ``` ``` <!--- Copy test job URL here --> Link to test pipeline: XXX ### Ways to reproduce Using the [scripts](https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/wikis/Software-development/pyivastest-howto#how-to-reproduce-tests): <!--- check correct sanitizer type --> <!--- add error pattern if needed --> ``` python3 scripts/IvasBuildAndRunChecks.py --checks CLANGX -m MODE -p /path/to/my/local/ci_linux_ltv_local.json ``` or directly: ``` make clean make -j CLANG=X ./IVAS_cod ... eid-xor -vbr -fer bit ep_015.g192 bit_fer ./IVAS_dec ... ``` <!--- Below are labels that will be added but are not shown in description. This is a template to help fill them. Add further information to the first row and remove and add labels as necessary. --> /label ~"Priority::Critical" ~Company: ~Subpart: /label ~Type:Bug ~Status::ToDo Loading
.gitattributes +1 −0 Original line number Diff line number Diff line Loading @@ -29,5 +29,6 @@ *.mat filter=lfs diff=lfs merge=lfs -text *.met filter=lfs diff=lfs merge=lfs -text *.pcm filter=lfs diff=lfs merge=lfs -text *.sofa filter=lfs diff=lfs merge=lfs -text *.wav filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text
.gitignore +17 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ scripts/td_object_renderer/object_renderer_standalone/renderer_standalone.exe .cache *.log *.bak .\#* scripts/c-code_instrument/ scripts/ifdef_instrument.list scripts/ref/ Loading @@ -66,5 +67,20 @@ __pycache__/ # history .history/ #externals Externals/ # coan output files that are created when cleaning out switches coan_out_* /COMPLEXITY /res /tv /wmops /Workspace_msvc/renderer.args.json /Workspace_msvc/encoder.args.json /Workspace_msvc/decoder.args.json /scripts/mem_analysis_enc_VBR_5k9.csv /scripts/mem_analysis_enc_STEREO_sw.png /scripts/mem_analysis_enc_STEREO_sw.csv /scripts/mem_analysis_enc_STEREO_16k4_DTX.csv *.pwv
.gitlab-ci.yml +186 −19 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ variables: LTV_DIR: "/usr/local/ltv" BUILD_OUTPUT: "build_output.txt" EVS_BE_TEST_DIR: "/usr/local/be_2_evs_test" EVS_BE_WIN_TEST_DIR: "C:/Users/gitlab-runner/testvec" SANITIZER_TESTS: "CLANG1 CLANG2" OUT_FORMATS_CHANNEL_BASED: "stereo mono 5_1 5_1_2 5_1_4 7_1 7_1_4" OUT_FORMATS_SCENE_BASED: "FOA HOA2 HOA3" Loading @@ -10,6 +11,8 @@ variables: EXIT_CODE_NON_BE: 123 EXIT_CODE_FAIL: 1 default: interruptible: true # Make all jobs by default interruptible # This sets when pipelines are created. Jobs have more specific rules to restrict them. workflow: Loading @@ -17,12 +20,13 @@ workflow: # see https://docs.gitlab.com/ee/ci/yaml/workflow.html#switch-between-branch-pipelines-and-merge-request-pipelines - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push" when: never - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # Runs for merge requests - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Pushes to main - if: $CI_PIPELINE_SOURCE == 'schedule' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Scheduled in main - if: $CI_PIPELINE_SOURCE == 'web' # for testing stages: - .pre - maintenance - build - test Loading @@ -44,6 +48,13 @@ stages: echo "Commit time was $CI_COMMIT_TIMESTAMP" date | xargs echo "System time is" .print-common-info-windows: &print-common-info-windows - | echo "Printing common information for build job." echo "Current job is run on commit $CI_COMMIT_SHA" echo "Commit time was $CI_COMMIT_TIMESTAMP" ("echo 'System time is'", "Get-Date -Format 'dddd dd/MM/yyyy HH:mm K'") | Invoke-Expression .get-previous-merge-commit-sha: &get-previous-merge-commit-sha - previous_merge_commit=$(git --no-pager log --merges HEAD~1 -n 1 --pretty=format:%H) Loading Loading @@ -125,7 +136,7 @@ stages: .rules-merge-request: extends: .rules-basis rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - if: $CI_PIPELINE_SOURCE == 'push' when: never Loading @@ -151,6 +162,11 @@ stages: tags: - ivas-linux .build-job-windows: stage: build timeout: "4 minutes" tags: - ivas-windows # template for test jobs on linux that need the TESTV_DIR .test-job-linux-needs-testv-dir: Loading @@ -167,6 +183,37 @@ stages: exit_codes: - 123 .build-job-windows-with-check-for-warnings: extends: .build-job-windows stage: build allow_failure: exit_codes: - 123 # --------------------------------------------------------------- # .pre jobs for setting up things # --------------------------------------------------------------- # See: https://gitlab.com/gitlab-org/gitlab/-/issues/194023 # Solution to make main branch pipelines uninterruptible while all other # pipelines can be interrupted by default. This works because all jobs # after uninterruptible jobs will be uninterruptible. Resource group # setting avoids rare case where two fast merges could still interrupt # pipeline. This should be revisited if there are updates to Gitlab. uninterruptible: stage: .pre interruptible: false resource_group: uninterruptible script: - echo "$CI_COMMIT_BRANCH is uninterruptible" rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH when: always tags: - ivas-linux # --------------------------------------------------------------- # Validation jobs Loading Loading @@ -232,6 +279,31 @@ build-codec-sanitizers-linux: - *print-common-info - bash ci/build_codec_sanitizers_linux.sh build-codec-windows-cmake: extends: - .build-job-windows-with-check-for-warnings - .rules-basis script: - *print-common-info-windows - $winoutdata = $null - cmake -G "Visual Studio 15 2017" . -Bbuild - cmake --build build -j | tee -variable winoutdata - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 - ("& python ci/check_for_warnings.py '$BUILD_OUTPUT'") | Invoke-Expression - ("exit $LASTEXITCODE") | Invoke-Expression build-codec-windows-msbuild: extends: - .build-job-windows-with-check-for-warnings - .rules-basis script: - *print-common-info-windows - $winoutdata = $null - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug | tee -variable winoutdata - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 - ("& python ci/check_for_warnings.py '$BUILD_OUTPUT'") | Invoke-Expression - ("exit $LASTEXITCODE") | Invoke-Expression # --------------------------------------------------------------- # Test jobs for merge requests # --------------------------------------------------------------- Loading @@ -241,7 +313,7 @@ codec-smoke-test: extends: - .test-job-linux-needs-testv-dir - .rules-merge-request timeout: "5 minutes" timeout: "10 minutes" stage: test needs: ["build-codec-linux-cmake"] script: Loading @@ -250,14 +322,16 @@ codec-smoke-test: ### analyze for failures - if cat smoke_test_output.txt | grep -c "failed"; then echo "Smoke test without PLC failed"; exit 1; fi - if cat smoke_test_output_plc.txt | grep -c "failed"; then echo "Smoke test with PLC failed"; exit 1; fi - if cat smoke_test_output_jbm_noEXT.txt | grep -c "failed"; then echo "Smoke test with PLC failed"; exit 1; fi - if cat smoke_test_output_jbm_noEXT.txt | grep -c "failed"; then echo "Smoke test JBM part failed"; exit 1; fi - if cat smoke_test_output_hrtf.txt | grep -c "failed"; then echo "Smoke test with external hrtf files failed"; exit 1; fi artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 1 week paths: - out/logs/ - smoke_test_output.txt - smoke_test_output_plc.txt - smoke_test_output_jbm_noEXT.txt - smoke_test_output_hrtf.txt expose_as: "Smoke test results" # code selftest testvectors with memory-sanitizer binaries Loading @@ -277,6 +351,7 @@ codec-msan: - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang memory-sanitizer"; exit 1; fi artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 1 week paths: - scripts/ref/logs/ - test_output.txt Loading @@ -299,6 +374,7 @@ codec-asan: - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang address-sanitizer"; exit 1; fi artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 1 week paths: - scripts/ref/logs/ - test_output.txt Loading @@ -316,6 +392,7 @@ renderer-smoke-test: - python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week when: always paths: - report-junit.xml Loading @@ -339,6 +416,7 @@ renderer-asan: artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week when: always paths: - report-junit.xml Loading @@ -362,6 +440,7 @@ renderer-msan: artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week when: always paths: - report-junit.xml Loading Loading @@ -415,6 +494,7 @@ renderer-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 2 week when: always paths: - report-junit.xml Loading Loading @@ -465,6 +545,7 @@ ivas-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 2 week when: always paths: - report-junit.xml Loading Loading @@ -511,6 +592,7 @@ evs-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 2 week when: always paths: - report-junit-evs.xml Loading Loading @@ -569,6 +651,7 @@ clang-format-check: - exit $format_problems artifacts: expire_in: 2 days paths: - tmp-formatting-fix/ when: on_failure Loading Loading @@ -606,6 +689,30 @@ check-first-frame-is-sid: # Test jobs for main branch # --------------------------------------------------------------- # check bitexactness to EVS windows binaries be-2-evs-windows: extends: - .rules-main-push tags: - ivas-windows stage: test needs: ["build-codec-windows-msbuild"] timeout: "20 minutes" # To be revisited script: - *print-common-info-windows - $winoutdata = $null - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Release | tee -variable winoutdata - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 # copy over to never change the testvector dir - cp -r $EVS_BE_WIN_TEST_DIR ./evs_be_win_test - cp IVAS_cod.exe ./evs_be_win_test/bin/IVAS_cod.exe - cp IVAS_dec.exe ./evs_be_win_test/bin/IVAS_dec.exe - cd evs_be_win_test - python ../ci/run_evs_be_win_test.py # check bitexactness to EVS be-2-evs-linux: extends: Loading Loading @@ -704,6 +811,7 @@ codec-comparison-on-main-push: - 123 artifacts: name: "main-push--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" expire_in: 2 week when: always paths: - report-junit.xml Loading @@ -725,6 +833,7 @@ codec-comparison-on-main-push: - sanitizer_test_main artifacts: name: "$CI_JOB_NAME--main--sha-$CI_COMMIT_SHORT_SHA" expire_in: 1 week when: always paths: - ep_015.g192 Loading @@ -736,13 +845,13 @@ codec-comparison-on-main-push: .sanitizer-test-schedule-A: extends: - .sanitizer-test-template timeout: 2 hours 30 minutes sanitizer-test-mono: extends: .sanitizer-test-schedule-A rules: - if: $SANITIZER_SCHEDULE_A timeout: 2 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py mono mono --tests $SANITIZER_TESTS Loading @@ -752,7 +861,8 @@ sanitizer-test-stereo: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 2 hours 30 minutes start_in: 2 hour timeout: 2 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py stereo $OUT_FORMATS_CHANNEL_BASED --tests $SANITIZER_TESTS Loading @@ -762,7 +872,8 @@ sanitizer-test-stereodmxevs: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 5 hours start_in: 4 hours timeout: 2 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py StereoDmxEVS mono --tests $SANITIZER_TESTS Loading @@ -772,7 +883,8 @@ sanitizer-test-ism1: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 7 hours 30 minutes start_in: 6 hours timeout: 2 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM1 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -782,7 +894,8 @@ sanitizer-test-ism2: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 10 hours start_in: 8 hours timeout: 3 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM2 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -792,7 +905,8 @@ sanitizer-test-ism3: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 12 hours 30 minutes start_in: 11 hours timeout: 3 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM3 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -802,7 +916,8 @@ sanitizer-test-ism4: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 15 hours start_in: 14 hours timeout: 4 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -812,7 +927,8 @@ sanitizer-test-masa: rules: - if: $SANITIZER_SCHEDULE_A when: delayed start_in: 17 hours 30 minutes start_in: 18 hours timeout: 3 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py MASA $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS Loading @@ -822,7 +938,7 @@ sanitizer-test-masa: .sanitizer-test-schedule-B: extends: - .sanitizer-test-template timeout: 3 hours timeout: 4 hours sanitizer-test-mc-5_1: extends: .sanitizer-test-schedule-B Loading @@ -837,7 +953,7 @@ sanitizer-test-mc-5_1_2: rules: - if: $SANITIZER_SCHEDULE_B when: delayed start_in: 3 hours start_in: 4 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py 5_1_2 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS Loading @@ -847,7 +963,7 @@ sanitizer-test-mc-5_1_4: rules: - if: $SANITIZER_SCHEDULE_B when: delayed start_in: 6 hours start_in: 8 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py 5_1_4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS Loading @@ -857,7 +973,7 @@ sanitizer-test-mc-7_1: rules: - if: $SANITIZER_SCHEDULE_B when: delayed start_in: 9 hours start_in: 12 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py 7_1 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS Loading @@ -867,7 +983,7 @@ sanitizer-test-mc-7_1_4: rules: - if: $SANITIZER_SCHEDULE_B when: delayed start_in: 12 hours start_in: 16 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py 7_1_4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS Loading Loading @@ -897,6 +1013,55 @@ sanitizer-test-planarsba: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py PlanarSBA $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS ### --- sanitizer schedule D --- .sanitizer-test-schedule-D: extends: - .sanitizer-test-template sanitizer-test-ism+1: extends: .sanitizer-test-schedule-D rules: - if: $SANITIZER_SCHEDULE_D timeout: 2 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+1 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS sanitizer-test-ism+2: extends: .sanitizer-test-schedule-D rules: - if: $SANITIZER_SCHEDULE_D when: delayed start_in: 2 hours timeout: 3 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+2 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS sanitizer-test-ism+3: extends: .sanitizer-test-schedule-D rules: - if: $SANITIZER_SCHEDULE_D when: delayed start_in: 5 hours timeout: 3 hour script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+3 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS sanitizer-test-ism+4: extends: .sanitizer-test-schedule-D rules: - if: $SANITIZER_SCHEDULE_D when: delayed start_in: 8 hours timeout: 4 hours script: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS # GCOV/LCOV coverage analysis of self_test suite coverage-test-on-main-scheduled: extends: Loading Loading @@ -925,6 +1090,7 @@ coverage-test-on-main-scheduled: artifacts: name: "main-coverage-sha-$CI_COMMIT_SHORT_SHA" when: always expire_in: 1 week paths: - coverage.info - coverage Loading Loading @@ -980,6 +1146,7 @@ coverage-test-on-main-scheduled: stage: test artifacts: name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA" expire_in: 1 week paths: - $CI_JOB_NAME-public Loading Loading @@ -1010,7 +1177,7 @@ complexity-ism-in-binaural-out: - *complexity-measurements-setup - in_format=ISM - out_format=BINAURAL - bash ci/complexity_measurements/getWmops.sh "ISM1 ISM2 ISM3 ISM4" "$out_format" - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" - *complexity-measurements-prepare-artifacts complexity-sba-hoa3-in-hoa3-out: Loading
.gitlab/issue_templates/generic_issue.md→.gitlab/issue_templates/default.md +0 −0 File moved. View file
.gitlab/issue_templates/sanitizer_error.md 0 → 100644 +39 −0 Original line number Diff line number Diff line ### Basic info - Commit SHA: ### Bug description Clang (msan/asan?) sanitizer test in pipeline found an error: <!--- Copy sanitizer traceback from command line here --> ``` ``` <!--- Copy test job URL here --> Link to test pipeline: XXX ### Ways to reproduce Using the [scripts](https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/wikis/Software-development/pyivastest-howto#how-to-reproduce-tests): <!--- check correct sanitizer type --> <!--- add error pattern if needed --> ``` python3 scripts/IvasBuildAndRunChecks.py --checks CLANGX -m MODE -p /path/to/my/local/ci_linux_ltv_local.json ``` or directly: ``` make clean make -j CLANG=X ./IVAS_cod ... eid-xor -vbr -fer bit ep_015.g192 bit_fer ./IVAS_dec ... ``` <!--- Below are labels that will be added but are not shown in description. This is a template to help fill them. Add further information to the first row and remove and add labels as necessary. --> /label ~"Priority::Critical" ~Company: ~Subpart: /label ~Type:Bug ~Status::ToDo