Commit 861012ba authored by Jan Kiene's avatar Jan Kiene
Browse files

add renderer sanitizer tests as scheduled tests in basop

parent f747d0e5
Loading
Loading
Loading
Loading
Loading
+52 −90
Original line number Diff line number Diff line
@@ -275,6 +275,24 @@ workflow:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      when: never

.rules-pytest-msan-on-schedule:
  rules:
  - if: $CI_PIPELINE_SOURCE == 'push'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'schedule' && $IVAS_PYTEST_MSAN
  - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "sanitizer"

.rules-pytest-asan-usan-on-schedule:
  rules:
  - if: $CI_PIPELINE_SOURCE == 'push'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'schedule' && $IVAS_PYTEST_ASAN_USAN
  - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "sanitizer"

# ---------------------------------------------------------------
# Job templates
# ---------------------------------------------------------------
@@ -1492,95 +1510,57 @@ renderer-smoke-test:
      junit:
        - report-junit.xml

# from float
# TODO: turn into scheduled job
.renderer-asan:
.renderer-sanitizer-job:
  extends:
    - .test-job-linux
  needs: ["build-codec-linux-clang-cmake"]
  needs: ["build-codec-linux-clang-make"]
  stage: test
  script:
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh
    - make clean
    - make -j 2>&1 >$MAKE_BUILD_LOG_FILE_DEFAULT
    - testcase_timeout=180
    - python3 -m pytest -q -n auto --tb=no --junit-xml=report-junit.xml tests/renderer_short/test_renderer.py --testcase_timeout=$testcase_timeout

  timeout: "300 minutes"
  artifacts:
    name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results"
    name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results"
    expire_in: 1 week
    when: always
    paths:
      - report-junit.xml
      - report.html
      - errors.csv
      - $MAKE_BUILD_LOG_FILE_DEFAULT
    expose_as: "renderer asan pytest results"
    reports:
      junit:
        - report-junit.xml

# from float
# TODO: turn into scheduled job
.renderer-msan:
  extends:
    - .test-job-linux
  needs: ["build-codec-linux-clang-cmake"]
  stage: test
  tags: 
    - ivas-linux
  script:
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh

    - python3 scripts/basop_create_ignorelist_for_ubsan.py

    - make clean
    - make -j 2>&1 >$MAKE_BUILD_LOG_FILE_DEFAULT
    - testcase_timeout=180
    - python3 -m pytest -q -n auto --tb=no --junit-xml=report-junit.xml tests/renderer_short/test_renderer.py --testcase_timeout=$testcase_timeout
    - make -j CLANG=$CLANG_NUM IGNORELIST=1 2>&1 >$MAKE_BUILD_LOG_FILE_DEFAULT

  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
      - $MAKE_BUILD_LOG_FILE_DEFAULT
    expose_as: "renderer msan pytest results"
    reports:
      junit:
        - report-junit.xml
    - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1,print_stacktrace=1,log_path=usan_log_catchall python3 -m pytest -q -n auto --tb=no --log-level=INFO --html=report.html --self-contained-html --junit-xml=report-junit.xml tests/renderer_short/test_renderer.py

# from float
# TODO: turn into scheduled job
# NOTE: disabled for now until existing bug is fixed
.renderer-usan:
    - python3 scripts/parse_sanitizer_errors_from_xml_report.py report-junit.xml errors.csv

renderer-msan:
  extends:
    - .test-job-linux
  needs: ["build-codec-linux-clang-cmake"]
  stage: test
  tags: 
    - ivas-linux
  script:
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh
    - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh
    - python3 scripts/basop_create_ignorelist_for_ubsan.py
    - make -j CLANG=3 IGNORELIST=1 2>&1 >$MAKE_BUILD_LOG_FILE_DEFAULT
    - testcase_timeout=180
    - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1,print_stacktrace=1,log_path=usan_log_catchall python3 -m pytest -q -n auto --tb=no --junit-xml=report-junit.xml tests/renderer_short/test_renderer.py --testcase_timeout=$testcase_timeout
    - grep_exit_code=0
    - touch usan_log_empty # Creates an empty file, this is to avoid "grep: usan_log_*: No such file or directory" in case no USAN failures are reported from pytest
    - grep UndefinedBehaviorSanitizer usan_log_* || grep_exit_code=$?
    - if [ $grep_exit_code != 1 ] ; then echo "Run errors in test_renderer.py with Clang undefined-behavior-sanitizer"; exit 1; fi
    - .renderer-sanitizer-job
    - .rules-pytest-msan-on-schedule
  variables:
    CLANG_NUM: 1

  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
      - $MAKE_BUILD_LOG_FILE_DEFAULT
    expose_as: "renderer usan pytest results"
    reports:
      junit:
        - report-junit.xml
renderer-asan:
  extends:
    - .renderer-sanitizer-job
    - .rules-pytest-asan-usan-on-schedule
  variables:
    CLANG_NUM: 2

renderer-usan:
  extends:
    - .renderer-sanitizer-job
    - .rules-pytest-asan-usan-on-schedule
  variables:
    CLANG_NUM: 3

.sanitizer-selftest-on-mr:
  stage: test
@@ -2068,16 +2048,10 @@ ivas-pytest-compare_ref-long-fx-fx-lev+10:
ivas-pytest-msan:
  extends:
    - .ivas-pytest-sanitizers-anchor
    - .rules-pytest-msan-on-schedule
  tags:
    - ivas-linux-fast
  resource_group: basop-long-sanitizers
  rules:
  - if: $CI_PIPELINE_SOURCE == 'push'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'schedule' && $IVAS_PYTEST_MSAN
  - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "sanitizer"
  timeout: "24 hours"
  before_script:
    - !reference [ .ivas-pytest-sanitizers-anchor, before_script ]
@@ -2101,16 +2075,10 @@ ivas-pytest-msan:
ivas-pytest-asan:
  extends:
    - .ivas-pytest-sanitizers-anchor
    - .rules-pytest-asan-usan-on-schedule
  tags:
    - ivas-linux-fast
  resource_group: basop-long-sanitizers
  rules:
  - if: $CI_PIPELINE_SOURCE == 'push'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'schedule' && $IVAS_PYTEST_ASAN_USAN
  - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "sanitizer"
  before_script:
    - !reference [ .ivas-pytest-sanitizers-anchor, before_script ]
    - CLANG_NUM=2
@@ -2133,16 +2101,10 @@ ivas-pytest-asan:
ivas-pytest-usan:
  extends:
    - .ivas-pytest-sanitizers-anchor
    - .rules-pytest-asan-usan-on-schedule
  tags:
    - ivas-linux-fast
  resource_group: basop-long-sanitizers
  rules:
  - if: $CI_PIPELINE_SOURCE == 'push'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    when: never
  - if: $CI_PIPELINE_SOURCE == 'schedule' && $IVAS_PYTEST_ASAN_USAN
  - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "sanitizer"
  before_script:
    - !reference [ .ivas-pytest-sanitizers-anchor, before_script ]
    - CLANG_NUM=3