From 70a5a993d9726fa686dc84522e87765233d64d85 Mon Sep 17 00:00:00 2001 From: Charles Kinuthia Date: Mon, 4 Dec 2023 10:21:05 +0100 Subject: [PATCH 01/10] add manual pipeline - add stereo and multichannel test --- .gitlab-ci.yml | 184 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 170 insertions(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f9ea9542e8..4003283b91 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,6 +20,12 @@ variables: - 'default' - 'test-be-release' - 'test-long-self-test' + REF_COMMIT: + description: "Ref commit id or ref release tag. To be used by Manual pipelines: 'test-be-release'" + value: '' + CUT_COMMIT: + description: "Cut commit id or cut release tag. To be used by Manual pipeline:'test-be-release'" + value: '' default: @@ -1168,35 +1174,185 @@ codec-comparison-on-main-push: # Manual jobs # --------------------------------------------------------------- -test-be-to-release: +.print-common-info-ref-vs-cut: &print-common-info-ref-vs-cut + - | + echo "Printing common information for build job." + echo "REF_COMMIT: $REF_COMMIT." + echo "CUT_COMMIT: $CUT_COMMIT." + echo "Current job is run on commit $CI_COMMIT_SHA" + echo "Commit time was $CI_COMMIT_TIMESTAMP" + date | xargs echo "System time is" + +.comparison-setup-codec-ref-vs-cut: + &comparison-setup-codec-ref-vs-cut + - git checkout $REF_COMMIT + - $winoutdata = $null + - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug /m | tee -variable winoutdata + - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 + - mv IVAS_cod.exe IVAS_cod_ref.exe + - mv IVAS_dec.exe IVAS_dec_ref.exe + - mv IVAS_rend.exe IVAS_rend_ref.exe + - mkdir ref_hrtf_bin + - cp scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/* ref_hrtf_bin + + - git checkout $CUT_COMMIT + - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug /m | tee -variable winoutdata + - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 + - mv IVAS_cod.exe IVAS_cod.exe + - mv IVAS_dec.exe IVAS_dec.exe + - mv IVAS_rend.exe IVAS_rend.exe + - mkdir cut_hrtf_bin + - cp scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/* cut_hrtf_bin + + # switch to $CI_COMMIT_SHORT_SHA where the scripts reside + - git checkout $CI_COMMIT_SHORT_SHA + +.rules-manual-pipeline: + rules: + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE =~ 'default' + +.rules-test-be-release: + extends: .rules-manual-pipeline + rules: + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'test-be-release' && $REF_COMMIT && $CUT_COMMIT + +test-be-to-release-stereo: stage: test tags: - ivas-windows resource_group: ivas-be-to-release-test-resource - timeout: "20 minutes" - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'test-be-release' + timeout: "22 hours" # to be reviewed + extends: + - .rules-test-be-release script: + - *comparison-setup-codec-ref-vs-cut + - mkdir logs - - echo "$CI_COMMIT_BRANCH" - - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug /p:Platform=win32 /m | tee -variable winoutdata - - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 - - ("& python ci/check_for_warnings.py '$BUILD_OUTPUT'") | Invoke-Expression - - ("exit $LASTEXITCODE") | Invoke-Expression + - mkdir tests\codec_be_to_accepted_release\ref + - mkdir tests\codec_be_to_accepted_release\dut - # path to release candidate refs defined in config.toml + - echo "generate references" - - echo "Placeholder for BE test to release script" - - mkdir logs + # use ref hrtf binaries + - cp ref_hrtf_bin/* scripts/binauralRenderer_interface/binaural_renderers_hrtf_data + + # ref encoder stereo + - $zero_errors_test_enc_const_br=0 + - $zero_failures_test_enc_const_br=0 + + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_ref.xml --testcase_timeout 40 ") | Invoke-Expression + + - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_ref.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in stereo enc ref generation"} + - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_ref.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in stereo enc ref generation"} + + # ref decoder stereo + - $zero_errors_test_dec_const_br=0 + - $zero_failures_test_dec_const_br=0 + + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml --testcase_timeout 40 ") | Invoke-Expression + + - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in stereo_stereo dec ref generation"} + - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in stereo_stereo dec ref generation"} + + # use cut hrtf binaries + - cp cut_hrtf_bin/* scripts/binauralRenderer_interface/binaural_renderers_hrtf_data + + # cut encoder stereo + - echo "bitstream comparison" + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_cut.xml --testcase_timeout 40 ") | Invoke-Expression + + - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_cut.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in stereo"} + - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_cut.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in stereo ref generation"} + + # cut decoder stereo + - echo "decoder output comparison | cut decoder stereo" + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml --testcase_timeout 40 ") | Invoke-Expression + + - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in stereo_stereo dec cut generation"} + - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in stereo_stereo dec cut generation"} + + - IF($zero_errors_test_enc_const_br -ne 0 -or $zero_errors_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} + - IF($zero_failures_test_enc_const_b -ne 0 -or $zero_failures_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} artifacts: - name: "test-be-to-release--sha-$CI_COMMIT_SHORT_SHA--results" + name: "test-be-to-release-stereo--sha-$CI_COMMIT_SHORT_SHA--results" when: always expire_in: 1 week paths: - logs/ - expose_as: "test-be-to-release results" + expose_as: "test-be-to-release stereo results" + reports: + junit: + - logs/report-junit-*.xml + +test-be-to-release-multichannel: + stage: test + tags: + - ivas-windows + resource_group: ivas-be-to-release-test-resource + timeout: "22 hours" # to be reviewed + extends: + - .rules-test-be-release + script: + - *comparison-setup-codec-ref-vs-cut + - mkdir logs + + - mkdir tests\codec_be_to_accepted_release\ref + - mkdir tests\codec_be_to_accepted_release\dut + + - echo "generate references" + + # use ref hrtf binaries + - cp ref_hrtf_bin/* scripts/binauralRenderer_interface/binaural_renderers_hrtf_data + + # ref encoder multichannel + - $zero_errors_test_enc_const_br=0 + - $zero_failures_test_enc_const_br=0 + + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_ref.xml --testcase_timeout 40 ") | Invoke-Expression + - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_ref.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in multichannel enc ref generation"} + - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_ref.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in multichannel enc ref generation"} + + # ref decoder multichannel + - $zero_errors_test_dec_const_br=0 + - $zero_failures_test_dec_const_br=0 + + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml --testcase_timeout 40 ") | Invoke-Expression + + - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in multichannel_multichannel dec ref generation"} + - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in multichannel_multichannel dec ref generation"} + + # use cut hrtf binaries + - cp cut_hrtf_bin/* scripts/binauralRenderer_interface/binaural_renderers_hrtf_data + + # cut encoder multichannel + - echo "cut encoder multichannel" + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_cut.xml --testcase_timeout 40 ") | Invoke-Expression + + - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_cut.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in multichannel"} + - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_cut.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in multichannel ref generation"} + + # cut decoder multichannel + - echo "cut decoder multichannel" + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml --testcase_timeout 40 ") | Invoke-Expression + + - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in multichannel_multichannel dec cut generation"} + - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in multichannel_multichannel dec cut generation"} + + - IF($zero_errors_test_enc_const_br -ne 0 -or $zero_errors_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} + - IF($zero_failures_test_enc_const_b -ne 0 -or $zero_failures_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} + + artifacts: + name: "test-be-to-release-multichannel--sha-$CI_COMMIT_SHORT_SHA--results" + when: always + expire_in: 1 week + paths: + - logs/ + expose_as: "test-be-to-release multichannel results" + reports: + junit: + - logs/report-junit-*.xml test-long-self-test: tags: -- GitLab From 096d6151b2a6e658c5e53fea926c4cb3a54e034a Mon Sep 17 00:00:00 2001 From: Charles Kinuthia Date: Mon, 4 Dec 2023 12:32:38 +0100 Subject: [PATCH 02/10] temporarily use the Ericsson runner only --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4003283b91..0faf25e2fa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1219,7 +1219,7 @@ codec-comparison-on-main-push: test-be-to-release-stereo: stage: test tags: - - ivas-windows + - test-be-to-release-windows resource_group: ivas-be-to-release-test-resource timeout: "22 hours" # to be reviewed extends: @@ -1288,7 +1288,7 @@ test-be-to-release-stereo: test-be-to-release-multichannel: stage: test tags: - - ivas-windows + - test-be-to-release-windows resource_group: ivas-be-to-release-test-resource timeout: "22 hours" # to be reviewed extends: -- GitLab From b58f731d62be51760857f028a87710444d67388b Mon Sep 17 00:00:00 2001 From: Charles Kinuthia Date: Tue, 19 Dec 2023 09:18:00 +0100 Subject: [PATCH 03/10] fix typo --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0faf25e2fa..abfc7e0a63 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1272,7 +1272,7 @@ test-be-to-release-stereo: - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in stereo_stereo dec cut generation"} - IF($zero_errors_test_enc_const_br -ne 0 -or $zero_errors_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} - - IF($zero_failures_test_enc_const_b -ne 0 -or $zero_failures_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} + - IF($zero_failures_test_enc_const_br -ne 0 -or $zero_failures_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} artifacts: name: "test-be-to-release-stereo--sha-$CI_COMMIT_SHORT_SHA--results" @@ -1341,7 +1341,7 @@ test-be-to-release-multichannel: - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in multichannel_multichannel dec cut generation"} - IF($zero_errors_test_enc_const_br -ne 0 -or $zero_errors_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} - - IF($zero_failures_test_enc_const_b -ne 0 -or $zero_failures_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} + - IF($zero_failures_test_enc_const_br -ne 0 -or $zero_failures_test_dec_const_br -ne 0 ) {echo "Errors encountered"; exit $EXIT_CODE_FAIL} artifacts: name: "test-be-to-release-multichannel--sha-$CI_COMMIT_SHORT_SHA--results" -- GitLab From c707ab4b909f2f11d0f30d62386f5c0628c8b690 Mon Sep 17 00:00:00 2001 From: Charles Kinuthia Date: Tue, 19 Dec 2023 09:33:29 +0100 Subject: [PATCH 04/10] change pipeline name to include ref and cut commit id increase testcase_timeout to 180s --- .gitlab-ci.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index abfc7e0a63..d385190f2b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -52,7 +52,7 @@ workflow: IVAS_PIPELINE_NAME: 'Web run pipeline: $CI_COMMIT_BRANCH' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'test-be-release' variables: - IVAS_PIPELINE_NAME: 'Test BE to release pipeline: $CI_COMMIT_BRANCH' + IVAS_PIPELINE_NAME: 'Test BE to release pipeline: $REF_COMMIT vs $CUT_COMMIT' - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'test-long-self-test' variables: IVAS_PIPELINE_NAME: 'Test long self-test against main pipeline: $CI_COMMIT_BRANCH' @@ -1240,7 +1240,7 @@ test-be-to-release-stereo: - $zero_errors_test_enc_const_br=0 - $zero_failures_test_enc_const_br=0 - - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_ref.xml --testcase_timeout 40 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_ref.xml --testcase_timeout 180 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_ref.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in stereo enc ref generation"} - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_ref.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in stereo enc ref generation"} @@ -1249,7 +1249,7 @@ test-be-to-release-stereo: - $zero_errors_test_dec_const_br=0 - $zero_failures_test_dec_const_br=0 - - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml --testcase_timeout 40 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml --testcase_timeout 180 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in stereo_stereo dec ref generation"} - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in stereo_stereo dec ref generation"} @@ -1259,14 +1259,14 @@ test-be-to-release-stereo: # cut encoder stereo - echo "bitstream comparison" - - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_cut.xml --testcase_timeout 40 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_cut.xml --testcase_timeout 180 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_cut.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in stereo"} - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_cut.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in stereo ref generation"} # cut decoder stereo - echo "decoder output comparison | cut decoder stereo" - - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml --testcase_timeout 40 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml --testcase_timeout 180 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in stereo_stereo dec cut generation"} - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in stereo_stereo dec cut generation"} @@ -1309,7 +1309,7 @@ test-be-to-release-multichannel: - $zero_errors_test_enc_const_br=0 - $zero_failures_test_enc_const_br=0 - - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_ref.xml --testcase_timeout 40 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_ref.xml --testcase_timeout 180 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_ref.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in multichannel enc ref generation"} - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_ref.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in multichannel enc ref generation"} @@ -1318,7 +1318,7 @@ test-be-to-release-multichannel: - $zero_errors_test_dec_const_br=0 - $zero_failures_test_dec_const_br=0 - - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml --testcase_timeout 40 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml --testcase_timeout 180 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in multichannel_multichannel dec ref generation"} - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in multichannel_multichannel dec ref generation"} @@ -1328,14 +1328,14 @@ test-be-to-release-multichannel: # cut encoder multichannel - echo "cut encoder multichannel" - - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_cut.xml --testcase_timeout 40 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_cut.xml --testcase_timeout 180 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_cut.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in multichannel"} - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_cut.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in multichannel ref generation"} # cut decoder multichannel - echo "cut decoder multichannel" - - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml --testcase_timeout 40 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml --testcase_timeout 180 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in multichannel_multichannel dec cut generation"} - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in multichannel_multichannel dec cut generation"} -- GitLab From 4219a56a87682146df2a77499f89a24e0d35ca75 Mon Sep 17 00:00:00 2001 From: kinuthia Date: Fri, 2 Feb 2024 10:09:22 +0000 Subject: [PATCH 05/10] increase testcase_timeout to 360s --- .gitlab-ci.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d385190f2b..224aeff3e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1240,7 +1240,7 @@ test-be-to-release-stereo: - $zero_errors_test_enc_const_br=0 - $zero_failures_test_enc_const_br=0 - - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_ref.xml --testcase_timeout 180 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_ref.xml --testcase_timeout 360 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_ref.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in stereo enc ref generation"} - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_ref.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in stereo enc ref generation"} @@ -1249,7 +1249,7 @@ test-be-to-release-stereo: - $zero_errors_test_dec_const_br=0 - $zero_failures_test_dec_const_br=0 - - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml --testcase_timeout 180 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml --testcase_timeout 360 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in stereo_stereo dec ref generation"} - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_ref.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in stereo_stereo dec ref generation"} @@ -1259,14 +1259,14 @@ test-be-to-release-stereo: # cut encoder stereo - echo "bitstream comparison" - - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_cut.xml --testcase_timeout 180 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_stereo.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_stereo_cut.xml --testcase_timeout 360 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_cut.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in stereo"} - IF (!(Select-String logs/report-junit-test_enc_const_br_stereo_cut.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in stereo ref generation"} # cut decoder stereo - echo "decoder output comparison | cut decoder stereo" - - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml --testcase_timeout 180 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_stereo.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_stereo_stereo_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml --testcase_timeout 360 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in stereo_stereo dec cut generation"} - IF (!(Select-String logs/report-junit-test_dec_const_br_stereo_stereo_cut.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in stereo_stereo dec cut generation"} @@ -1309,7 +1309,7 @@ test-be-to-release-multichannel: - $zero_errors_test_enc_const_br=0 - $zero_failures_test_enc_const_br=0 - - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_ref.xml --testcase_timeout 180 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --ref_encoder_path ./IVAS_cod_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_ref.xml --testcase_timeout 360 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_ref.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in multichannel enc ref generation"} - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_ref.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in multichannel enc ref generation"} @@ -1318,7 +1318,7 @@ test-be-to-release-multichannel: - $zero_errors_test_dec_const_br=0 - $zero_failures_test_dec_const_br=0 - - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml --testcase_timeout 180 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --ref_decoder_path ./IVAS_dec_ref.exe --update_ref 1 --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_ref.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml --testcase_timeout 360 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in multichannel_multichannel dec ref generation"} - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_ref.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in multichannel_multichannel dec ref generation"} @@ -1328,14 +1328,14 @@ test-be-to-release-multichannel: # cut encoder multichannel - echo "cut encoder multichannel" - - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_cut.xml --testcase_timeout 180 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\encoder\test_enc_const_br_multichannel.py --dut_encoder_path ./IVAS_cod.exe --reduction_level reduced --html=logs/report-test_enc_const_br_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_enc_const_br_multichannel_cut.xml --testcase_timeout 360 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_cut.xml -Pattern 'errors="0"')){$zero_errors_test_enc_const_br=1; echo "Errors encountered in multichannel"} - IF (!(Select-String logs/report-junit-test_enc_const_br_multichannel_cut.xml -Pattern 'failures="0"')){$zero_failures_test_enc_const_br=1; echo "Failed tests encountered in multichannel ref generation"} # cut decoder multichannel - echo "cut decoder multichannel" - - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml --testcase_timeout 180 ") | Invoke-Expression + - ("& python -m pytest .\tests\codec_be_to_accepted_release\decoder\test_dec_const_br_multichannel.py --dut_decoder_path ./IVAS_dec.exe --reduction_level reduced --html=logs/report-test_dec_const_br_multichannel_multichannel_cut.html --self-contained-html --junit-xml=logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml --testcase_timeout 360 ") | Invoke-Expression - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml -Pattern 'errors="0"')){$zero_errors_test_dec_const_br=1; echo "Errors encountered in multichannel_multichannel dec cut generation"} - IF (!(Select-String logs/report-junit-test_dec_const_br_multichannel_multichannel_cut.xml -Pattern 'failures="0"')){$zero_failures_test_dec_const_br=1; echo "Failed tests encountered in multichannel_multichannel dec cut generation"} -- GitLab From 01d57cf2260ca1b8b181770ce6d25bd16707675c Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Tue, 20 Feb 2024 13:46:51 +0100 Subject: [PATCH 06/10] add .exe to eid-xor and networkSimulator_g192 when running on Windows --- .../decoder/__init__.py | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/tests/codec_be_to_accepted_release/decoder/__init__.py b/tests/codec_be_to_accepted_release/decoder/__init__.py index 817d2d14bc..7a1992e087 100644 --- a/tests/codec_be_to_accepted_release/decoder/__init__.py +++ b/tests/codec_be_to_accepted_release/decoder/__init__.py @@ -30,6 +30,7 @@ the United Nations Convention on Contracts on the International Sales of Goods. import numpy as np import pytest +import platform from contextlib import contextmanager from typing import Union from pathlib import Path @@ -140,9 +141,25 @@ def get_bitstream_and_options( bitstream_out = Path(tmp_dir).joinpath(bitstream.stem + f".{processing}.192") if processing == BS_PROC_FER_15: ep_path = TESTV_PATH.joinpath("ltv_ep_015.192") + + # get the pathname to the eid-xor tool respecting the running platform + if platform.system() == "Windows": + eid_xor_binary = [ + HERE.joinpath( + "../../scripts/tools/Win32/eid-xor.exe" + ) + ] + elif platform.system() in ["Linux", "Darwin"]: + eid_xor_binary = [ + HERE.joinpath( + "../../scripts/tools/Linux/eid-xor" + ) + ] + else: + assert False, f"eid-xor not available for {platform.system()}" + cmd = [ - # TODO: adapt for windows - "eid-xor", + str(eid_xor_binary), "-fer", "-vbr", str(bitstream), @@ -156,10 +173,26 @@ def get_bitstream_and_options( "../../scripts/dly_error_profiles/dly_error_profile_5.dat" ) tracefile_path = Path(tmp_dir).joinpath(bitstream_out.with_suffix(".trace")) - # TODO: adapt for windows + + # get the pathname to the networkSimulator_g192 tool respecting the running platform + if platform.system() == "Windows": + networkSimulator_g192_binary = [ + HERE.joinpath( + "../../scripts/tools/Win32/networkSimulator_g192.exe" + ) + ] + elif platform.system() in ["Linux", "Darwin"]: + networkSimulator_g192_binary = [ + HERE.joinpath( + "../../scripts/tools/Linux/networkSimulator_g192" + ) + ] + else: + assert False, f"networkSimulator_g192 not available for {platform.system()}" + # TODO: get number of frames per packet from error profile name cmd = [ - "networkSimulator_g192", + str(networkSimulator_g192_binary), str(dly_profile_path), str(bitstream), str(bitstream_out), -- GitLab From 155933448864ad031e40efcbaa4e4e69d2a4c2fb Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Tue, 20 Feb 2024 14:50:01 +0100 Subject: [PATCH 07/10] correction of relative path --- tests/codec_be_to_accepted_release/decoder/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/codec_be_to_accepted_release/decoder/__init__.py b/tests/codec_be_to_accepted_release/decoder/__init__.py index 7a1992e087..7590611fc8 100644 --- a/tests/codec_be_to_accepted_release/decoder/__init__.py +++ b/tests/codec_be_to_accepted_release/decoder/__init__.py @@ -30,7 +30,7 @@ the United Nations Convention on Contracts on the International Sales of Goods. import numpy as np import pytest -import platform +import platform from contextlib import contextmanager from typing import Union from pathlib import Path -- GitLab From 0bee535b2f16f2c6ea20ad73ce3c3d98a8b4bc30 Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Tue, 20 Feb 2024 15:04:40 +0100 Subject: [PATCH 08/10] add eid-xor tool binary/executable to scripts/tools --- scripts/tools/Linux/eid-xor | Bin 0 -> 30496 bytes scripts/tools/Win32/eid-xor.exe | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 scripts/tools/Linux/eid-xor create mode 100644 scripts/tools/Win32/eid-xor.exe diff --git a/scripts/tools/Linux/eid-xor b/scripts/tools/Linux/eid-xor new file mode 100644 index 0000000000000000000000000000000000000000..9d820fff7d84a75839e24c160dbec5ef43799461 GIT binary patch literal 30496 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 literal 0 HcmV?d00001 diff --git a/scripts/tools/Win32/eid-xor.exe b/scripts/tools/Win32/eid-xor.exe new file mode 100644 index 0000000000..34bd7ab904 --- /dev/null +++ b/scripts/tools/Win32/eid-xor.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1689409062362bad5ac812e27ba5a9c0211fd16f1c335b53f5081adafe1dc422 +size 66048 -- GitLab From b8d41b9fdaac3526ef51cbcdc8173e77f263bc30 Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Tue, 20 Feb 2024 15:10:07 +0100 Subject: [PATCH 09/10] add executable permissions --- scripts/tools/Linux/eid-xor | Bin scripts/tools/Win32/eid-xor.exe | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/tools/Linux/eid-xor mode change 100644 => 100755 scripts/tools/Win32/eid-xor.exe diff --git a/scripts/tools/Linux/eid-xor b/scripts/tools/Linux/eid-xor old mode 100644 new mode 100755 diff --git a/scripts/tools/Win32/eid-xor.exe b/scripts/tools/Win32/eid-xor.exe old mode 100644 new mode 100755 -- GitLab From a77db204550108be7adcb9f0d7bf8c1e6ea496d1 Mon Sep 17 00:00:00 2001 From: knj Date: Tue, 20 Feb 2024 17:37:05 +0100 Subject: [PATCH 10/10] Fix timeout problem by pulling commit from main --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 224aeff3e0..76d7b937ae 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -336,7 +336,7 @@ build-codec-instrumented-linux: extends: - .build-job-linux - .rules-basis - timeout: "6 minutes" + timeout: "7 minutes" script: - *print-common-info - bash ci/build_codec_instrumented_linux.sh -- GitLab