- project:
    name: doctor

    project: '{name}'

    stream:
        - master:
            branch: '{stream}'
            gs-pathname: ''
            docker-tag: 'master'
            disabled: false
        - danube:
            branch: 'stable/{stream}'
            gs-pathname: '/{stream}'
            docker-tag: 'stable'
            disabled: false

    installer:
        - apex:
            slave-label: 'ool-virtual1'
            pod: 'ool-virtual1'

    inspector:
        - 'sample'
        - 'congress'

    jobs:
        - 'doctor-verify-{stream}'
        - 'doctor-verify-{installer}-{inspector}-{stream}'
        - 'doctor-profiling-{stream}'

- job-template:
    name: 'doctor-verify-{stream}'

    disabled: '{obj:disabled}'

    parameters:
        - project-parameter:
            project: '{project}'
        - gerrit-parameter:
            branch: '{branch}'
        - 'opnfv-build-ubuntu-defaults'

    scm:
        - git-scm-gerrit

    triggers:
        - gerrit:
            server-name: 'gerrit.opnfv.org'
            trigger-on:
                - patchset-created-event:
                    exclude-drafts: 'false'
                    exclude-trivial-rebase: 'false'
                    exclude-no-code-change: 'false'
                - draft-published-event
                - comment-added-contains-event:
                    comment-contains-value: 'recheck'
                - comment-added-contains-event:
                    comment-contains-value: 'reverify'
            projects:
              - project-compare-type: 'ANT'
                project-pattern: '{project}'
                branches:
                  - branch-compare-type: 'ANT'
                    branch-pattern: '**/{branch}'
                file-paths:
                  - compare-type: ANT
                    pattern: 'tests/**'

    builders:
        - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"

- job-template:
    name: 'doctor-verify-{installer}-{inspector}-{stream}'

    node: '{slave-label}'

    parameters:
        - project-parameter:
            project: '{project}'
        - gerrit-parameter:
            branch: '{branch}'
        - string:
            name: OS_CREDS
            default: /home/jenkins/openstack.creds
            description: 'OpenStack credentials'
        - '{slave-label}-defaults'
        - string:
            name: INSTALLER_TYPE
            default: '{installer}'
            description: 'Installer used for deploying OPNFV on this POD'
        - string:
            name: DOCKER_TAG
            default: '{docker-tag}'
            description: 'Tag to pull docker image'
        - string:
            name: CLEAN_DOCKER_IMAGES
            default: 'false'
            description: 'Remove downloaded docker images (opnfv/functest:*)'
        - string:
            name: DEPLOY_SCENARIO
            default: 'os-nosdn-nofeature-ha'
            description: 'Scenario to deploy and test'
        # functest-suite-parameter
        - string:
            name: FUNCTEST_SUITE_NAME
            default: '{project}'
        - string:
            name: TESTCASE_OPTIONS
            default: '-e INSPECTOR_TYPE={inspector} -v $WORKSPACE:/home/opnfv/repos/doctor'
            description: 'Addtional parameters specific to test case(s)'
        # functest-parameter
        - string:
            name: GS_PATHNAME
            default: '{gs-pathname}'
            description: "Version directory where the opnfv documents will be stored in gs repository"
        - string:
            name: FUNCTEST_REPO_DIR
            default: "/home/opnfv/repos/functest"
            description: "Directory where the Functest repository is cloned"
        - string:
            name: PUSH_RESULTS_TO_DB
            default: "true"
            description: "Push the results of all the tests to the resultDB"
        - string:
            name: CI_DEBUG
            default: 'true'
            description: "Show debug output information"

    scm:
        - git-scm-gerrit

    triggers:
        - gerrit:
            server-name: 'gerrit.opnfv.org'
            trigger-on:
                - patchset-created-event:
                    exclude-drafts: 'false'
                    exclude-trivial-rebase: 'false'
                    exclude-no-code-change: 'false'
                - draft-published-event
                - comment-added-contains-event:
                    comment-contains-value: 'recheck'
                - comment-added-contains-event:
                    comment-contains-value: 'reverify'
            projects:
              - project-compare-type: 'ANT'
                project-pattern: '{project}'
                branches:
                  - branch-compare-type: 'ANT'
                    branch-pattern: '**/{branch}'
                file-paths:
                  - compare-type: ANT
                    pattern: 'tests/**'
            skip-vote:
                successful: true
                failed: true
                unstable: true
                notbuilt: true

    builders:
        - 'functest-suite-builder'
        - shell: |
            functest_log="$HOME/opnfv/functest/results/{stream}/{project}.log"
            to_be_archived="$WORKSPACE/tests/functest-{project}.log"
            cp $functest_log $to_be_archived
            # NOTE: checking the test result, as the previous job could return
            #       0 regardless the result of doctor test scenario.
            grep -e ' OK$' $functest_log || exit 1

    publishers:
        - archive:
            artifacts: 'tests/*.log'

- job-template:
    name: 'doctor-profiling-{stream}'

    disabled: '{obj:disabled}'

    parameters:
        - 'doctor-defaults':
            project: '{project}'
            branch: '{branch}'
        - string:
            name: PROFILER
            default: poc
            description: "Profiler to be used"

    scm:
        - git-scm-gerrit

    triggers:
        - 'experimental':
            project: '{project}'
            branch: '{branch}'

#####################################
# parameter macros
#####################################
# TODO(yujunz) replace common parameter in doctor-verify-{stream} with macro
- parameter:
    name: 'doctor-defaults'
    parameters:
    - project-parameter:
        project: '{project}'
    - gerrit-parameter:
        branch: '{branch}'
    - 'opnfv-build-ubuntu-defaults'

#####################################
# trigger macros
#####################################
# TODO(yujunz) move to opnfv commom
- trigger:
    name: 'experimental'
    triggers:
        - gerrit:
            server-name: 'gerrit.opnfv.org'
            trigger-on:
                - comment-added-contains-event:
                    comment-contains-value: 'check-experimental'
            projects:
                - project-compare-type: 'ANT'
                  project-pattern: '{project}'
                  branches:
                      - branch-compare-type: 'ANT'
                        branch-pattern: '**/{branch}'
                  file-paths:
                      - compare-type: 'ANT'
                        pattern: 'tests/**'
            skip-vote:
                successful: true
                failed: true
                unstable: true
                notbuilt: true
            silent-start: true