Commit e3922ba5 authored by Jan Kiene's avatar Jan Kiene
Browse files

add complexity measurement setup from float repo

parent b6e6ae1f
Loading
Loading
Loading
Loading
Loading
+61 −12
Original line number Diff line number Diff line
@@ -698,34 +698,83 @@ ivas-pytest-renderer:
  <<: *ivas-pytest-anchor


### Complexity measurement jobs
# ---------------------------------------------------------------
# Complexity measurement jobs
# ---------------------------------------------------------------

.complexity-measurements-setup:
  &complexity-measurements-setup # create necessary environment
  - mkdir -p wmops/logs

# NOTE: test job for now
complexity-stereo-dec:
  - job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME $CI_JOB_NAME $CI_PROJECT_ID)
  - echo $job_id
  - curl --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip
  - unzip artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html
  - ls
  - public_dir="$CI_JOB_NAME-public"
  # if is needed to catch case when no artifact is there (first run), similarly as above
  - if [[ -d $public_dir ]]; then mv $public_dir/* wmops/;  fi
  - ls wmops
  - rm artifacts.zip
  - rm -rf $public_dir

.complexity-measurements-prepare-artifacts:
  &complexity-measurements-prepare-artifacts # prepare artifacts -> move to public directory
  - public_dir="$CI_JOB_NAME-public"
  - mkdir $public_dir
  - mv -f wmops/log_*_all.txt wmops/*.js ${public_dir}/
  # move logfiles for links
  - mkdir $public_dir/logs
  # first move logs
  - log_files=$(cat $public_dir/graphs*.js | grep logFile | sed "s/.*\(wmops_newsletter_.*\.csv\).*/\1/g")
  - echo $log_files
  - ls wmops/logs
  - for f in $log_files; do [ -f wmops/logs/$f ] && mv wmops/logs/$f $public_dir/logs/$f; done
  # copy index page blueprint
  - cp ci/complexity_measurements/index_complexity.html ${public_dir}/index.html
  # patch the format in the title
  - sed -i "s/IVAS FORMAT/IVAS $in_format to $out_format/g" ${public_dir}/index.html
  # do separately here to avoid overwrite complaints by mv
  - mv -f ci/complexity_measurements/style.css ${public_dir}/
  - ls $public_dir

.complexity-template:
  extends:
    - .test-job-linux
  timeout: 3 hours 30 minutes
  stage: test
  artifacts:
    name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA"
    when: always
    expire_in: 1 week
    paths:
      - $CI_JOB_NAME-public

complexity-stereo-in-stereo-out:
  extends:
    - .complexity-template
  rules:
    - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "complexity"
    - if: $MEASURE_COMPLEXITY_LINUX
  variables:
    MAKE_OPTIONS: "WMOPS=1"
    COMPLEXITY_TABLES_BASENAME: "complexity_stereo"
    CHECK: "COMPLEXITY"
  script:
    - *print-common-info
    - *update-scripts-repo
    - *update-ltv-repo
    - *setup-codec
    - *complexity-measurements-setup

    # hack to not have script build the binaries
    - mkdir $CHECK
    - cp IVAS_cod_ref $CHECK/IVAS_cod
    - cp IVAS_dec $CHECK/IVAS_dec

    - python3 scripts/IvasBuildAndRunChecks.py -p scripts/config/ci_linux_ltv.json -m stereo_b48_fb_cbr --oc stereo --create_complexity_tables $COMPLEXITY_TABLES_BASENAME --checks $CHECK
    - ls
  artifacts:
    when: always
    paths:
    - "${COMPLEXITY_TABLES_BASENAME}*"
    - in_format=stereo
    - out_format=stereo
    - ret_val=0
    - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" || ret_val=$?
    - *complexity-measurements-prepare-artifacts
    - exit $ret_val


# job that sets up gitlab pages website