Commit 4cf02595 authored by Anika Treffehn's avatar Anika Treffehn
Browse files
Merge branch 'main' of https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec into script_patch_delivery
parents 660e9895 342bda7a
Loading
Loading
Loading
Loading
Loading
+202 −90
Original line number Original line Diff line number Diff line
@@ -12,29 +12,54 @@ variables:
  EXIT_CODE_FAIL: 1
  EXIT_CODE_FAIL: 1
  PROCESSING_SCRIPTS_BIN_DIR: "/test-bin"
  PROCESSING_SCRIPTS_BIN_DIR: "/test-bin"
  TESTS_DIR_CODEC_BE_ON_MR: "tests/codec_be_on_mr_nonselection"
  TESTS_DIR_CODEC_BE_ON_MR: "tests/codec_be_on_mr_nonselection"
  IVAS_PIPELINE_NAME: ''
  MANUAL_PIPELINE_TYPE:
    description: "Type for the manual pipeline run. Use 'test-be-release' to run BE test against release codec."
    value: 'default'
    options:
      - 'default'
      - 'test-be-release'
      - 'test-long-self-test'



default:
default:
  interruptible: true # Make all jobs by default interruptible
  interruptible: true # Make all jobs by default interruptible


# This sets when pipelines are created. Jobs have more specific rules to restrict them.
# This sets when pipelines are created. Jobs have more specific rules to restrict them.
workflow:
workflow:
  name: '$IVAS_PIPELINE_NAME'
  rules:
  rules:
    # see https://docs.gitlab.com/ee/ci/yaml/workflow.html#switch-between-branch-pipelines-and-merge-request-pipelines
    # 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"
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
      when: never
      when: never
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      variables:
        IVAS_PIPELINE_NAME: 'MR pipeline: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
    - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Pushes to main
    - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Pushes to main
      variables:
        IVAS_PIPELINE_NAME: 'Push pipeline: $CI_COMMIT_BRANCH'
    - if: $CI_PIPELINE_SOURCE == 'schedule' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Scheduled in main
    - if: $CI_PIPELINE_SOURCE == 'schedule' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Scheduled in main
    - if: $CI_PIPELINE_SOURCE == 'web' # for testing
      variables:
        IVAS_PIPELINE_NAME: 'Scheduled pipeline: $CI_COMMIT_BRANCH'
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'default' # for testing
      variables:
        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'
    - 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'
    - if: $CI_PIPELINE_SOURCE == 'trigger'
    - if: $CI_PIPELINE_SOURCE == 'trigger'


stages:
stages:
  - .pre
  - .pre
  - maintenance
  - maintenance
  - prevalidate
  - build
  - build
  - test
  - test
  - compare
  - compare
  - validate
  - postvalidate
  - deploy
  - deploy


# ---------------------------------------------------------------
# ---------------------------------------------------------------
@@ -126,6 +151,14 @@ stages:
  - sed -i.bak -e "s/\/\*[[:space:]]*\(#define[[:space:]]*SPLIT_REND_WITH_HEAD_ROT\)[[:space:]]*\*\//\1/g" ./lib_com/options.h
  - sed -i.bak -e "s/\/\*[[:space:]]*\(#define[[:space:]]*SPLIT_REND_WITH_HEAD_ROT\)[[:space:]]*\*\//\1/g" ./lib_com/options.h
  - sed -i.bak -e "s/\/\/[[:space:]]*\(#define[[:space:]]*SPLIT_REND_WITH_HEAD_ROT\)/\1/g"        ./lib_com/options.h
  - sed -i.bak -e "s/\/\/[[:space:]]*\(#define[[:space:]]*SPLIT_REND_WITH_HEAD_ROT\)/\1/g"        ./lib_com/options.h


.get-commits-behind-count: &get-commits-behind-count
  - echo $CI_COMMIT_SHA
  - echo $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
  - commits_behind_count=$(git rev-list --count $CI_COMMIT_SHA..origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME)

.check-commits-behind-count-in-compare-jobs: &check-commits-behind-count-in-compare-jobs
  - if [ $commits_behind_count -ne 0 ]; then echo "Your branch is not up-to-date with main -> Compare tests will not run as they can contain false negatives this way.\nMain might have changed during your pipeline run. Run 'git merge origin/main' to update."; exit 1; fi

# ---------------------------------------------------------------
# ---------------------------------------------------------------
# Job templates
# Job templates
# ---------------------------------------------------------------
# ---------------------------------------------------------------
@@ -143,6 +176,10 @@ stages:
      when: never
      when: never
    - if: $CI_PIPELINE_SOURCE == 'trigger' # Don't run triggered pipeline by default
    - if: $CI_PIPELINE_SOURCE == 'trigger' # Don't run triggered pipeline by default
      when: never
      when: never
    - if: $MANUAL_PIPELINE_TYPE == 'test-be-release' # Skip all the normal jobs when testing manually against release codec
      when: never
    - if: $MANUAL_PIPELINE_TYPE == 'test-long-self-test' # Skip all the normal jobs when testing manually against release codec
      when: never
    - when: on_success
    - when: on_success


.rules-merge-request:
.rules-merge-request:
@@ -170,11 +207,13 @@ stages:
.build-job-linux:
.build-job-linux:
  stage: build
  stage: build
  timeout: "4 minutes"
  timeout: "4 minutes"
  needs: []
  tags:
  tags:
    - ivas-linux
    - ivas-linux


.build-job-windows:
.build-job-windows:
  stage: build
  stage: build
  needs: []
  timeout: "4 minutes"
  timeout: "4 minutes"
  tags:
  tags:
    - ivas-windows
    - ivas-windows
@@ -227,19 +266,28 @@ uninterruptible:
# Validation jobs
# Validation jobs
# ---------------------------------------------------------------
# ---------------------------------------------------------------


check-if-branch-is-up-to-date-with-main:
branch-is-up-to-date-with-main-pre:
  extends:
  extends:
    - .rules-merge-request
    - .rules-merge-request
  stage: validate
  stage: prevalidate
  needs: []
  needs: []
  tags:
  tags:
    - ivas-linux
    - ivas-linux
  script:
  script:
    - echo $CI_COMMIT_SHA
    - *get-commits-behind-count
    - echo $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
    - commits_behind_count=$(git rev-list --count $CI_COMMIT_SHA..origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME)
    - echo $commits_behind_count
    - echo $commits_behind_count
    - if [ $commits_behind_count -eq 0 ]; then exit 0; else exit 1; fi;
    - if [ $commits_behind_count -eq 0 ]; then exit 0; else echo "Your branch is behind main, run 'git merge origin/main' to update."; exit 1; fi;

branch-is-up-to-date-with-main-post:
  extends:
    - .rules-merge-request
  stage: postvalidate
  tags:
    - ivas-linux
  script:
    - *get-commits-behind-count
    - echo $commits_behind_count
    - if [ $commits_behind_count -eq 0 ]; then exit 0; else echo "Your branch is behind main, possibly main changed during your pipeline run, run 'git merge origin/main' to update." exit 1; fi;


# ---------------------------------------------------------------
# ---------------------------------------------------------------
# Build jobs
# Build jobs
@@ -324,11 +372,13 @@ codec-smoke-test:
  extends:
  extends:
    - .test-job-linux-needs-testv-dir
    - .test-job-linux-needs-testv-dir
    - .rules-merge-request
    - .rules-merge-request
  timeout: "10 minutes"
  timeout: "15 minutes"
  stage: test
  stage: test
  needs: ["build-codec-linux-cmake", "build-codec-linux-make", "build-codec-instrumented-linux", "build-codec-sanitizers-linux"]
  needs: ["build-codec-linux-cmake", "build-codec-linux-make", "build-codec-instrumented-linux", "build-codec-sanitizers-linux"]
  script:
  script:
    - *print-common-info
    - *print-common-info
    # LTV update needed as ltv ISM metadata files are used
    - *update-ltv-repo
    - bash ci/smoke_test.sh
    - bash ci/smoke_test.sh
    ### analyze for failures
    ### analyze for failures
    - if ! [ -s smoke_test_output.txt ] || ! [ -s smoke_test_output_plc.txt ] || ! [ -s smoke_test_output_jbm_noEXT.txt ] || ! [ -s smoke_test_output_hrtf.txt ]; then echo "Error in smoke test"; exit 1; fi
    - if ! [ -s smoke_test_output.txt ] || ! [ -s smoke_test_output_plc.txt ] || ! [ -s smoke_test_output_jbm_noEXT.txt ] || ! [ -s smoke_test_output_hrtf.txt ]; then echo "Error in smoke test"; exit 1; fi
@@ -341,6 +391,7 @@ codec-smoke-test:
  artifacts:
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 1 week
    expire_in: 1 week
    when: always
    paths:
    paths:
      - smoke_test_output.txt
      - smoke_test_output.txt
      - smoke_test_output_plc.txt
      - smoke_test_output_plc.txt
@@ -359,12 +410,13 @@ codec-msan:
    - *print-common-info
    - *print-common-info
    - make clean
    - make clean
    - make -j CLANG=1
    - make -j CLANG=1
    - python3 scripts/self_test.py --create | tee test_output.txt
    - python3 scripts/self_test.py -z console --create | tee test_output.txt
    - run_errors=$(cat test_output.txt | grep -ic "run errors") || true
    - run_errors=$(cat test_output.txt | grep -ic "run errors") || true
    - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang memory-sanitizer"; exit 1; fi
    - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang memory-sanitizer"; exit 1; fi
  artifacts:
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 1 week
    expire_in: 1 week
    when: always
    paths:
    paths:
      - scripts/ref/logs/
      - scripts/ref/logs/
      - test_output.txt
      - test_output.txt
@@ -381,12 +433,13 @@ codec-asan:
    - *print-common-info
    - *print-common-info
    - make clean
    - make clean
    - make -j CLANG=2
    - make -j CLANG=2
    - python3 scripts/self_test.py --create | tee test_output.txt
    - python3 scripts/self_test.py -z console --create | tee test_output.txt
    - run_errors=$(cat test_output.txt | grep -ic "run errors") || true
    - run_errors=$(cat test_output.txt | grep -ic "run errors") || true
    - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang address-sanitizer"; exit 1; fi
    - if [ $run_errors != 0 ] ; then echo "Run errors in self_test.py with Clang address-sanitizer"; exit 1; fi
  artifacts:
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 1 week
    expire_in: 1 week
    when: always
    paths:
    paths:
      - scripts/ref/logs/
      - scripts/ref/logs/
      - test_output.txt
      - test_output.txt
@@ -403,13 +456,14 @@ codec-usan:
    - *print-common-info
    - *print-common-info
    - make clean
    - make clean
    - make -j CLANG=3
    - make -j CLANG=3
    - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1 python3 scripts/self_test.py --create
    - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1 python3 scripts/self_test.py -z console --create
    - grep_exit_code=0
    - grep_exit_code=0
    - grep UndefinedBehaviorSanitizer scripts/ref/logs/* || grep_exit_code=$?
    - grep UndefinedBehaviorSanitizer scripts/ref/logs/* || grep_exit_code=$?
    - if [ $grep_exit_code != 1 ] ; then echo "Run errors in self_test.py with Clang undefined-behavior-sanitizer"; exit 1; fi
    - if [ $grep_exit_code != 1 ] ; then echo "Run errors in self_test.py with Clang undefined-behavior-sanitizer"; exit 1; fi
  artifacts:
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results"
    expire_in: 1 week
    expire_in: 1 week
    when: always
    paths:
    paths:
      - scripts/ref/logs/
      - scripts/ref/logs/
    expose_as: "usan selftest results"
    expose_as: "usan selftest results"
@@ -519,6 +573,8 @@ renderer-pytest-on-merge-request:
  stage: compare
  stage: compare
  script:
  script:
    - *print-common-info
    - *print-common-info
    - *get-commits-behind-count
    - *check-commits-behind-count-in-compare-jobs


    # some helper variables - "|| true" to prevent failures from grep not finding anything
    # some helper variables - "|| true" to prevent failures from grep not finding anything
    # write to temporary file as workaround for failures observed with piping echo
    # write to temporary file as workaround for failures observed with piping echo
@@ -600,6 +656,8 @@ split-rendering-pytest-on-merge-request:
  stage: compare
  stage: compare
  script:
  script:
    - *print-common-info
    - *print-common-info
    - *get-commits-behind-count
    - *check-commits-behind-count-in-compare-jobs


    # some helper variables - "|| true" to prevent failures from grep not finding anything
    # some helper variables - "|| true" to prevent failures from grep not finding anything
    # write to temporary file as workaround for failures observed with piping echo
    # write to temporary file as workaround for failures observed with piping echo
@@ -629,6 +687,7 @@ split-rendering-pytest-on-merge-request:
    - make -j INCLUDE_SPLIT=1
    - make -j INCLUDE_SPLIT=1


    ### Run test using scripts and input from main
    ### Run test using scripts and input from main
    - if [ $ref_using_main == 1 ]; then git restore lib_com/options.h; fi # Revert changes back before checking out another branch to avoid conflicts
    - if [ $ref_using_main == 1 ]; then git checkout $target_commit; fi
    - if [ $ref_using_main == 1 ]; then git checkout $target_commit; fi


    # run test
    # run test
@@ -663,6 +722,8 @@ ivas-pytest-on-merge-request:
  timeout: "10 minutes"
  timeout: "10 minutes"
  script:
  script:
    - *print-common-info
    - *print-common-info
    - *get-commits-behind-count
    - *check-commits-behind-count-in-compare-jobs
    - *merge-request-comparison-setup-codec
    - *merge-request-comparison-setup-codec


    # some helper variables - "|| true" to prevent failures from grep not finding anything
    # some helper variables - "|| true" to prevent failures from grep not finding anything
@@ -715,6 +776,8 @@ evs-pytest-on-merge-request:
  timeout: "10 minutes"
  timeout: "10 minutes"
  script:
  script:
    - *print-common-info
    - *print-common-info
    - *get-commits-behind-count
    - *check-commits-behind-count-in-compare-jobs
    - *merge-request-comparison-setup-codec
    - *merge-request-comparison-setup-codec


    # some helper variables - "|| true" to prevent failures from grep not finding anything
    # some helper variables - "|| true" to prevent failures from grep not finding anything
@@ -759,8 +822,8 @@ voip-be-on-merge-request:
  extends:
  extends:
    - .test-job-linux-needs-testv-dir
    - .test-job-linux-needs-testv-dir
    - .rules-merge-request
    - .rules-merge-request
  stage: compare # Or should it be test? Comparison is done within one git revision
  stage: test
  needs: ["build-codec-linux-make", codec-smoke-test]
  needs: ["build-codec-linux-make", "codec-smoke-test"]
  timeout: "10 minutes"
  timeout: "10 minutes"
  script:
  script:
    - *print-common-info
    - *print-common-info
@@ -772,7 +835,7 @@ clang-format-check:
    - .rules-merge-request
    - .rules-merge-request
  variables:
  variables:
    ARTIFACT_BASE_NAME: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--formatting-fix"
    ARTIFACT_BASE_NAME: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--formatting-fix"
  stage: validate
  stage: prevalidate
  needs: []
  needs: []
  timeout: "5 minutes"
  timeout: "5 minutes"
  script:
  script:
@@ -807,7 +870,7 @@ clang-format-check:
    expire_in: 1 day
    expire_in: 1 day
    paths:
    paths:
      - tmp-formatting-fix/
      - tmp-formatting-fix/
    when: on_failure
    when: always
    name: "$ARTIFACT_BASE_NAME"
    name: "$ARTIFACT_BASE_NAME"
    expose_as: "formatting patch"
    expose_as: "formatting patch"


@@ -819,7 +882,7 @@ check-first-frame-is-sid:
  tags:
  tags:
    - ivas-linux
    - ivas-linux
  stage: test
  stage: test
  # needs: ["build-codec-linux-cmake"]
  needs: ["build-codec-linux-cmake"]
  script:
  script:
    - *print-common-info
    - *print-common-info
    - *update-ltv-repo
    - *update-ltv-repo
@@ -830,66 +893,30 @@ check-first-frame-is-sid:
    - make -j
    - make -j


    # TODO: for some MASA modes, we currently do not have testvectors that actually trigger DTX
    # TODO: for some MASA modes, we currently do not have testvectors that actually trigger DTX
    # SBA is run separately to use shorter part of file
    # SBA modes are run separately to use shorter part of file
    - exit_code_no_sba=0
    - exit_code_no_sba=0
    - exit_code_sba=0
    - exit_code_sba=0
    - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -v MASA | grep -v SBA)
    - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -v MASA | grep -vE "FOA|HOA" )
    - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 -U 0:20 || exit_code_no_sba=$?
    - scripts/runIvasCodec.py -z console -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 200 -U 0:20 || exit_code_no_sba=$?
    - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep SBA)
    - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -E "HOA")
    - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 -U 70:80 || exit_code_sba=$?
    - scripts/runIvasCodec.py -z console -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 100 -U 70:80 || exit_code_sba=$?
    # need to do FOA separately as VAD apparently behaves differently there
    - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep "FOA")
    - scripts/runIvasCodec.py -z console -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 100 -U 75:110 || exit_code_sba=$?
    - if [ $exit_code_no_sba -ne 0 ] || [ $exit_code_sba -ne 0 ]; then exit 1; fi
    - if [ $exit_code_no_sba -ne 0 ] || [ $exit_code_sba -ne 0 ]; then exit 1; fi
  artifacts:
  artifacts:
    paths:
    paths:
      - out/logs
      - out/logs
    when: on_failure
    when: always
    name: "$CI_JOB_NAME--$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--sidstart"
    name: "$CI_JOB_NAME--$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--sidstart"
    expose_as: "logs-sidstart"
    expose_as: "logs-sidstart"
    expire_in: "5 days"
    expire_in: "5 days"


selection-test-processing:
  extends:
    - .test-job-linux-needs-testv-dir
    - .rules-merge-request
  tags:
    - processing-scripts-linux
  stage: test
  needs: ["build-codec-linux-make"]
  script:
    # get processing script code
    - git clone https://forge.3gpp.org/rep/ivas-codec-pc/ivas-processing-scripts.git --single-branch -b main

    - mkdir -p ivas-processing-scripts/tests/data/testv
    - cp -r scripts/testv/* ivas-processing-scripts/tests/data/testv/

    # copy binaries into local bin dir, those should take precendence over PATH
    - cp $PROCESSING_SCRIPTS_BIN_DIR/* ivas-processing-scripts/ivas_processing_scripts/bin/
    # for testing with native binaries
    - rm ivas-processing-scripts/ivas_processing_scripts/bin/IVAS*.exe
    - rm ivas-processing-scripts/ivas_processing_scripts/bin/EVS*.exe

    # build codec and put into bin dir
    - make -j
    - cp ./IVAS_* ivas-processing-scripts/ivas_processing_scripts/bin/

    # patch the use_windows_codec_binaries key (weird folding is needed so colons are accepted)
    - >
      sed -i "s/use_windows_codec_binaries: true/use_windows_codec_binaries: false/" ivas-processing-scripts/experiments/selection/*/config/*.yml

    # run experiments test
    - cd ivas-processing-scripts
    - python3 -m pytest tests/test_experiments.py::test_generate_test_items -n auto | tee log.txt
  artifacts:
    paths:
      - ivas-processing-scripts/experiments/selection/*/proc_output/*.log
      - log.txt
    when: on_failure
    expire_in: 1 week

lc3plus-ensure-no-code-changes:
lc3plus-ensure-no-code-changes:
  extends:
  extends:
    - .test-job-linux
    - .test-job-linux
    - .rules-merge-request
    - .rules-merge-request
  stage: validate
  stage: postvalidate
  needs: []
  needs: []
  timeout: "5 minutes"
  timeout: "5 minutes"
  script:
  script:
@@ -1037,6 +1064,111 @@ codec-comparison-on-main-push:
    reports:
    reports:
      junit: report-junit.xml
      junit: report-junit.xml



# ---------------------------------------------------------------
# Manual jobs
# ---------------------------------------------------------------

test-be-to-release:
  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'
  script:

    - 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

    # path to release candidate refs defined in config.toml

    - echo "Placeholder for BE test to release script"
    - mkdir logs

  artifacts:
    name: "test-be-to-release--sha-$CI_COMMIT_SHORT_SHA--results"
    when: always
    expire_in: 1 week
    paths:
      - logs/
    expose_as: "test-be-to-release results"


test-long-self-test:
  tags:
    - ivas-linux-fast
  stage: compare
  resource_group: ivas-long-self-test-resource
  timeout: "50 minutes"
  rules:
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'test-long-self-test'
  allow_failure:
    exit_codes:
      - 123
  script:
    - *print-common-info
    - *update-ltv-repo

    ### build branch binaries
    - cmake . -Bbuild-test
    - cmake --build build-test -- -j
    - mv build-test/IVAS_cod ./IVAS_cod
    - mv build-test/IVAS_dec ./IVAS_dec

    ### store the current commit hash
    - source_branch_commit_sha=$(git rev-parse HEAD)

    ### switch to main
    - git checkout main

    ### build main (ref) binaries
    - cmake . -Bbuild-ref
    - cmake --build build-ref -- -j
    - mv build-ref/IVAS_cod ./IVAS_cod_ref
    - mv build-ref/IVAS_dec ./IVAS_dec_ref

    ### Switch back to branch, this could probably be removed later
    - git checkout $source_branch_commit_sha

    ### prepare pytest

    # Copy test vectors from LTV to TESTV
    - cp "$LTV_DIR"/*.wav scripts/testv/
    - cp "$LTV_DIR"/*.met scripts/testv/
    - cp "$LTV_DIR"/*.csv scripts/testv/

    # create references
    - exit_code_ref=0
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v --update_ref 1 -m create_ref --param_file scripts/config/self_test_ltv.prm || exit_code_ref=$?

    ### run pytest self-test using long test vectors
    - exit_code=0
    - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v --param_file scripts/config/self_test_ltv.prm --html=report-ltv.html --self-contained-html --junit-xml=report-junit-ltv.xml || exit_code=$?
    - zero_errors=$(cat report-junit-ltv.xml | grep -c 'errors="0"') || true

    - if [ $zero_errors != 1 ]; then echo "Run errors encountered!"; exit $EXIT_CODE_FAIL; fi
    - if [ $exit_code -eq 1 ]; then echo "Non-bitexact cases encountered!"; exit $EXIT_CODE_NON_BE; fi
    - exit 0


  artifacts:
    name: "test-long-self-test--sha-$CI_COMMIT_SHORT_SHA--results"
    when: always
    expire_in: 4 mos
    paths:
      - report-junit-ltv.xml
      - report-ltv.html
    expose_as: "test-long-self-test results"
    reports:
      junit:
        - report-junit-ltv.xml


# ---------------------------------------------------------------
# ---------------------------------------------------------------
# Scheduled jobs on main
# Scheduled jobs on main
# ---------------------------------------------------------------
# ---------------------------------------------------------------
@@ -1211,15 +1343,15 @@ sanitizer-test-mc-7_1_4:
    - .sanitizer-test-template
    - .sanitizer-test-template
  timeout: 6 hours
  timeout: 6 hours


sanitizer-test-sba:
sanitizer-test-hoa3:
  extends: .sanitizer-test-schedule-C
  extends: .sanitizer-test-schedule-C
  rules:
  rules:
    - if: $SANITIZER_SCHEDULE_C
    - if: $SANITIZER_SCHEDULE_C
  script:
  script:
    - *update-ltv-repo
    - *update-ltv-repo
    - python3 ci/run_scheduled_sanitizer_test.py SBA $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS
    - python3 ci/run_scheduled_sanitizer_test.py HOA3 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS


sanitizer-test-planarsba:
sanitizer-test-planarhoa3:
  extends: .sanitizer-test-schedule-C
  extends: .sanitizer-test-schedule-C
  rules:
  rules:
    - if: $SANITIZER_SCHEDULE_C
    - if: $SANITIZER_SCHEDULE_C
@@ -1227,7 +1359,7 @@ sanitizer-test-planarsba:
      start_in: 6 hours
      start_in: 6 hours
  script:
  script:
    - *update-ltv-repo
    - *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
    - python3 ci/run_scheduled_sanitizer_test.py PlanarHOA3 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL --tests $SANITIZER_TESTS


### --- sanitizer schedule D ---
### --- sanitizer schedule D ---


@@ -1291,6 +1423,7 @@ coverage-test-on-main-scheduled:
  timeout: 2 hours
  timeout: 2 hours
  script:
  script:
    - *print-common-info
    - *print-common-info
    - *update-ltv-repo
    - make GCOV=1 -j
    - make GCOV=1 -j
    - cp IVAS_rend IVAS_rend_ref # Copy exec to be able to run renderer script
    - cp IVAS_rend IVAS_rend_ref # Copy exec to be able to run renderer script
    - python3 tests/create_short_testvectors.py
    - python3 tests/create_short_testvectors.py
@@ -1411,7 +1544,7 @@ complexity-sba-hoa3-in-hoa3-out:
    - *print-common-info
    - *print-common-info
    - *update-ltv-repo
    - *update-ltv-repo
    - *complexity-measurements-setup
    - *complexity-measurements-setup
    - in_format=SBA
    - in_format=HOA3
    - out_format=HOA3
    - out_format=HOA3
    - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format"
    - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format"
    - ret_val=$?
    - ret_val=$?
@@ -1476,27 +1609,6 @@ complexity-StereoDmxEVS-stereo-in-mono-out:
# Other jobs
# Other jobs
# ---------------------------------------------------------------
# ---------------------------------------------------------------


upload-selection-BE-log:
  rules:
    - if: $UPLOAD_SELECTION_BE_RESULTS && $CI_PIPELINE_SOURCE == 'trigger'
      when: always
  timeout: 5 minutes
  tags:
    - ericsson-windows-runner
  script:
    - cp -r $SELECTION_BE_RESULT ./selection-BE-result
    - Get-Content -Path selection-BE-result/public_log--sha-*.txt
    - $has_failed_debugging_active = (Select-String -Path selection-BE-result/public_log--sha-*.txt -Pattern '^FAILED tests' -CaseSensitive).Line
    - Get-Content -Path selection-BE-result/public_log_DEBUGGING_inactive--sha-*.txt
    - $has_failed_debugging_inactive = (Select-String -Path selection-BE-result/public_log_DEBUGGING_inactive--sha-*.txt -Pattern '^FAILED tests' -CaseSensitive).Line
    - If($has_failed_debugging_active -or $has_failed_debugging_inactive) {exit -1}
  artifacts:
    paths:
      - selection-BE-result/public_log--sha-*.txt
      - selection-BE-result/public_log_DEBUGGING_inactive--sha-*.txt
    when: always
    expire_in: 1 week

# job that sets up gitlab pages website
# job that sets up gitlab pages website
pages:
pages:
  stage: deploy
  stage: deploy
+25 −0
Original line number Original line Diff line number Diff line
<!--- Basic information that is useful -->
- Related issues:
- Requested reviewers: 

### Reason why this change is needed

* This may be a direct copy from the issue.

### Description of the change

* Describe what is done.

### Affected operating points

* Describe here as well as possible what operating points are affected and how
* In minimum, there should be a status for bitstream compatibility and output bit exactness
* For bitstream compatibility, the following levels are helpful for describing encoder
  1. Produced bitstream is BE compared to previous state.
  2. Produced bitstream is non-BE but it is fully backwards compatible for decoding. Decoded output may differ.
  3. Produced bitstream is non-BC. Old decoder cannot decode the produced bitstream correctly.
* For output difference, use BE or non-BE. Additionally, amount of difference can be presented.


<!--- By default, no labels are added as they often come from the issue. Add labels if there is no issue for this. -->
+2 −6
Original line number Original line Diff line number Diff line
@@ -439,9 +439,6 @@
    <ClCompile Include="..\lib_dec\lead_deindexing.c">
    <ClCompile Include="..\lib_dec\lead_deindexing.c">
      <Filter>decoder_all_c</Filter>
      <Filter>decoder_all_c</Filter>
    </ClCompile>
    </ClCompile>
    <ClCompile Include="..\lib_dec\lib_dec.c">
      <Filter>decoder_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_dec\lp_exc_d.c">
    <ClCompile Include="..\lib_dec\lp_exc_d.c">
      <Filter>decoder_all_c</Filter>
      <Filter>decoder_all_c</Filter>
    </ClCompile>
    </ClCompile>
@@ -520,6 +517,7 @@
    <ClCompile Include="..\lib_dec\waveadjust_fec_dec.c">
    <ClCompile Include="..\lib_dec\waveadjust_fec_dec.c">
      <Filter>decoder_all_c</Filter>
      <Filter>decoder_all_c</Filter>
    </ClCompile>
    </ClCompile>
    <ClCompile Include="..\lib_dec\lib_dec.c" />
  </ItemGroup>
  </ItemGroup>
  <ItemGroup>
  <ItemGroup>
    <ClInclude Include="..\lib_dec\ivas_stat_dec.h">
    <ClInclude Include="..\lib_dec\ivas_stat_dec.h">
@@ -558,9 +556,7 @@
    <ClInclude Include="..\lib_dec\rom_dec.h">
    <ClInclude Include="..\lib_dec\rom_dec.h">
      <Filter>decoder_h</Filter>
      <Filter>decoder_h</Filter>
    </ClInclude>
    </ClInclude>
    <ClInclude Include="..\lib_dec\lib_dec.h">
    <ClInclude Include="..\lib_dec\lib_dec.h" />
      <Filter>decoder_h</Filter>
    </ClInclude>
  </ItemGroup>
  </ItemGroup>
  <ItemGroup>
  <ItemGroup>
    <Filter Include="decoder_all_c">
    <Filter Include="decoder_all_c">
+4 −2
Original line number Original line Diff line number Diff line
@@ -590,10 +590,12 @@
    <ClCompile Include="..\lib_enc\ivas_mc_paramupmix_enc.c">
    <ClCompile Include="..\lib_enc\ivas_mc_paramupmix_enc.c">
      <Filter>enc_ivas_c</Filter>
      <Filter>enc_ivas_c</Filter>
    </ClCompile>
    </ClCompile>
    <ClCompile Include="..\lib_enc\ivas_osba_enc.c" />
    <ClCompile Include="..\lib_enc\ivas_omasa_enc.c">
    <ClCompile Include="..\lib_enc\ivas_omasa_enc.c">
      <Filter>enc_ivas_c</Filter>
      <Filter>enc_ivas_c</Filter>
    </ClCompile>
    </ClCompile>
    <ClCompile Include="..\lib_enc\ivas_osba_enc.c">
      <Filter>enc_ivas_c</Filter>
    </ClCompile>
  </ItemGroup>
  </ItemGroup>
  <ItemGroup>
  <ItemGroup>
    <ClInclude Include="..\lib_enc\ivas_stat_enc.h">
    <ClInclude Include="..\lib_enc\ivas_stat_enc.h">
+544 −1647

File changed.

Preview size limit exceeded, changes collapsed.

Loading