---
# ONOS System Test Pipeline jobs

# TODO: for some reason, lf-* types of macro cannot access to the variable. I think it is typical problem to pipeline job type.

- var-init-boiler-plate: &var-init-boiler-plate
    name: var-init-boiler-plate
    FUNC: "FUNCgroup\nFUNCflow\nFUNCintent\nFUNCintentRest\nFUNCipv6Intent\nFUNCnetCfg\nFUNCnetconf\nFUNCoptical\nFUNCovsdbtest\nFUNCformCluster"
    HA: "HAclusterRestart\nHAfullNetPartition\nHAkillNodes\nHAsanity\nHAscaling\nHAsingleInstanceRestart\nHAstopNodes\nHAswapNodes\nHAupgrade\nHAupgradeRollback"
    SCPF: "SCPFcbench\nSCPFflowTp1g\nSCPFhostLat\nSCPFintentEventTp\nSCPFintentInstallWithdrawLat\nSCPFintentRerouteLat\nSCPFmastershipFailoverLat\nSCPFbatchFlowResp\nSCPFportLat\nSCPFscaleTopo\nSCPFscalingMaxIntents\nSCPFswitchLat\nSCPFflowTp1gWithFlowObj\nSCPFintentEventTpWithFlowObj\nSCPFintentRerouteLatWithFlowObj\nSCPFscalingMaxIntentsWithFlowObj\nSCPFintentInstallWithdrawLatWithFlowObj"
    USECASE: "FUNCbgpls\nFUNCvirNetNB\nPLATdockertest\nVPLSBasic\nVPLSfailsafe\nUSECASE_SdnipFunction\nUSECASE_SdnipFunctionCluster"
    SR: "SRRouting\nSRBridging\nSRDhcprelay\nSRDynamicConf\nSRMulticast\nSRClusterRestart\nSRDynamic\nSRHighAvailability\nSRLinkFailure\nSROnosFailure\nSRSanity\nSRSwitchFailure"
    SRHA: "SRHAclusterRestart\nSRHAfullNetPartition\nSRHAkillNodes\nSRHAsanity\nSRHAscaling\nSRHAsingleInstanceRestart\nSRHAstopNodes\nSRHAswapNodes\nSRHAupgrade\nSRHAupgradeRollback"


- test-pipe-job-boiler-plate: &test-pipe-job-boiler-plate
    name: test-pipe-job-boiler-plate

    project-type: pipeline

    sandbox: true

    properties:

      - build-discarder:
         num-to-keep: 20
    gitURL: https://gerrit.onosproject.org/OnosSystemTest

- test-pipe-init-procedure-plate: &test-pipe-init-procedure-plate
    name: test-pipe-init-procedure-plate
    project: OnosSystemTest
    stream: 'master'
    jenkins-path: 'TestON/JenkinsFile'

- job-version-plate: &job-version-plate
    name: job-version-plate
    version:
      - '1.12'
      - '1.13'
      - '1.14'
      - '1.15'
      - '2.0'
      - '2.1'
      - 'master'
      - 'manually'

- job-type-plate: &job-type-plate
    name: job-type-plate
    type:
      - 'FUNC'
      - 'HA'
      - 'SCPF'
      - 'USECASE'
      - 'SR'
      - 'SRHA'

- job-template:
    name: all-pipeline-trigger
    description: |
                  <!-- Managed by Jenkins Job Builder -->
                  all-pipeline-trigger can trigger any TestON test on any branch of ONOS and TestON, by running the test category pipeline that contains the test. <br />
                  This pipeline is triggered by timer for the nightly builds. <br />
                  Created by Devin Lim - devin@opennetworking.org<br />
                  Copyright (c) 2017 Open Networking Foundation (ONF)

    <<: *test-pipe-job-boiler-plate

    parameters:

      - bool:
         name: manual_run
         default: false
         description: |
                       Check this option if you are manually running this job (you most likely are). <br />

      - text:
         name: machines
         default: |
                   vm
                   bm
                   fabric
         description: 'Specify the machine-trigger you want to run.'

      - lf-infra-parameters:
         project: 'OnosSystemTest'
         branch: 'master'
         stream: 'master'
         lftools-version: '<1.0.0'

    concurrent: true

    triggers:
      - timed: |
                TZ=America/Los_Angeles
                30 19 * * 1,2,3,4,5
                30 11 * * 6,7

    pipeline-scm:
      script-path: '{jenkins-path}/JenkinsfileTrigger'
      scm:
        - git:
           url: '{gitURL}'
           branches:
             - 'master'

- job-template:
    name: '{machine}-pipeline-trigger'
    id: pipeline-trigger
    description: |
                  <!-- Managed by Jenkins Job Builder -->
                  {machine}-pipeline-trigger can trigger Segment Routing TestON test on any branch of ONOS and TestON, by running the test category pipeline that contains the test. <br />
                  This pipeline is triggered by timer for the nightly builds. <br />
                  You may manually trigger this pipeline as well - provide the tests to run and the branch of ONOS and TestON. <br /> <br />
                  Note: <i>The console output for this job does <b>not</b> contain any test result logs.</i><br />
                  Visit the test category pipelines (such as <a href="https://jenkins.onosproject.org/view/QA/job/FUNC-pipeline-master/">FUNC-pipeline-master</a>) to view the test logs. <br /> <br />
                  Created by Devin Lim - devin@opennetworking.org<br />
                  Copyright (c) 2017 Open Networking Foundation (ONF)

    <<: *test-pipe-job-boiler-plate

    parameters:

      - bool:
         name: manual_run
         default: false
         description: |
                       Check this option if you are manually running this job (you most likely are). <br />
                       You must specify which tests to run in the text field below.

      - bool:
         name: PostResult
         default: false
         description: |
                       Check this option if you want to update the results on the wiki. <br />
                       When manually run, this will update the wiki pages corresponding to the tests that were run. <br />
                       This option will always be selected during nightly builds.

      - bool:
         name: isOldFlow
         default: true
         description: |
                       Check this option if you prefer to run the old flow rule over the new one. <br />
                       * This only applies to SCPF tests.

      - choice:
         name: ONOSVersion
         choices:
           - 'master'
           - '2.1'
           - '2.0'
           - '1.15'
           - '1.14'
           - '1.13'
           - '1.12'
         description: "ONOS and TestON versions to run on."

      - string:
         name: ONOSJAVAOPTS
         default: "\"${{JAVA_OPTS:--Xms8G -Xmx8G -Dkaraf.log.console=INFO -Dds.lock.timeout.milliseconds=60000}}\""
         description: 'ONOS cell JAVA_OPTS setting.'

      - string:
         name: ONOSTag
         default: ''
         desciption: 'specific branch trying to checkout'

      - text:
         name: Tests
         default: |
                   {testList}

         description: 'Specify the tests you want to run, if manual_run is selected.'

      - lf-infra-parameters:
         project: 'OnosSystemTest'
         branch: 'master'
         stream: 'master'
         lftools-version: '<1.0.0'

    concurrent: false

    pipeline-scm:
      script-path: '{jenkins-path}/{fileName}JenkinsfileTrigger'
      scm:
        - git:
           url: '{gitURL}'
           branches:
             - 'master'

- job-template:
    name: '{type}-pipeline-{version}'
    description: '<!-- Managed by Jenkins Job Builder -->
                  This pipeline contains the test results and logs of {type} on ONOS {version}. <br /><br />
                  Visit <a href="https://jenkins.onosproject.org/view/QA/job/all-pipeline-trigger/">all-pipeline-trigger</a> to trigger a build in this pipeline.<br />
                  <font color="red">Unless debugging, DO NOT MANUALLY BUILD THIS PIPELINE.</font><br /><br />
                  Created by Devin Lim - devin@opennetworking.org<br />
                  Copyright (c) 2017 Open Networking Foundation (ONF)'

    <<: *test-pipe-job-boiler-plate

    parameters:

      - string:
         name: TRIGGER_ONLY_WHEN_PREVIOUS_JOB_WAS_BUILT_HERE
         default: 'DO_NOT_MANUALLY_TRIGGER_A_BUILD_HERE'
         description: |
                       <a href="https://jenkins.onosproject.org/view/QA/job/all-pipeline-trigger/">all-pipeline-trigger</a> triggers this pipeline automatically.

      - lf-infra-parameters:
         project: 'OnosSystemTest'
         branch: 'master'
         stream: 'master'
         lftools-version: '<1.0.0'

    concurrent: false

    pipeline-scm:
      script-path: '{jenkins-path}/{type}JenkinsFile'
      scm:
        - git:
           url: '{gitURL}'
           branches:
             - 'master'

- job-template:
    name: 'manual-graph-generator-SCPF'
    description: |
                  <!-- Managed by Jenkins Job Builder -->
                  Refresh the wiki graphs here.  Useful when there is a change in the graph scripts.<br />
                  <br />
                  You may also generate a graph trend that displays any number of builds here.<br />
                  However, keep in mind that only the 50 build graphs will be displayed on the wiki, unless they are manually changed on the wiki.<br >
                  <br >
                  Graphs are stored in the <a href="https://jenkins.onosproject.org/view/QA/job/postjob-BM/">postjob-BM<a> workspace.

    <<: *var-init-boiler-plate
    <<: *test-pipe-job-boiler-plate

    parameters:

      - choice:
         name: ONOSbranch
         choices:
           - 'master'
           - 'onos-2.1'
           - 'onos-2.0'
           - 'onos-1.15'
           - 'onos-1.14'
           - 'onos-1.13'
           - 'onos-1.12'
         description: "Possible branches (may vary depending on test)"

      - bool:
         name: isOldFlow
         default: false
         description: 'Check if it is using the old flow rules'

      - text:
         name: Test
         default: '{SCPF}'
         description: 'List of the tests to generate.'

      - lf-infra-parameters:
         project: 'OnosSystemTest'
         branch: 'master'
         stream: 'master'
         lftools-version: '<1.0.0'

    pipeline-scm:
      script-path: '{jenkins-path}/SCPF_Graph_Generator'
      scm:
        - git:
           url: '{gitURL}'
           branches:
             - 'master'

- job-template:
    name: 'manual-graph-generator-trend'
    description: |
                  <!-- Managed by Jenkins Job Builder -->
                  Refresh the trend graphs here. Useful when there is a change in the graph scripts. <br />
                  Graphs are stored in their respective Postjob pipeline.


    <<: *var-init-boiler-plate
    <<: *test-pipe-job-boiler-plate

    parameters:

      - choice:
         name: ONOSbranch
         choices:
           - 'master'
           - 'onos-2.1'
           - 'onos-2.0'
           - 'onos-1.15'
           - 'onos-1.14'
           - 'onos-1.13'
           - 'onos-1.12'
         description: "Possible branches (may vary depending on test)"

      - choice:
         name: NodeCluster
         choices:
           - VM
           - BM
           - Fabric
         description: |
                       Node cluster where the test graphs in the list are located. <br />
                       List of the tests will be refreshed depends on the node cluster.

      - text:
         name: Test
         default: |
                   VM:
                   {FUNC}
                   {HA}
                   BM:
                   {USECASE}
                   Fabric:
                   {SR}
                   {SRHA}
         description: 'List of the tests to generate.'

      - string:
         name: Builds
         default: '20'
         description: 'Builds to show in the graph.'

      - lf-infra-parameters:
         project: 'OnosSystemTest'
         branch: 'master'
         stream: 'master'
         lftools-version: '<1.0.0'

    pipeline-scm:
      script-path: '{jenkins-path}/Trend_Graph_Generator'
      scm:
        - git:
           url: '{gitURL}'
           branches:
             - 'master'

- job-template:
    name: 'manual-graph-generator-overall'
    description: |
                  <!-- Managed by Jenkins Job Builder -->
                  Refresh the overall graphs here. Useful when there is a change in the graph scripts. <br />
                  Graphs are stored in pipeline-postjob-vm.

    <<: *test-pipe-job-boiler-plate

    parameters:
      - choice:
         name: ONOSbranch
         choices:
           - 'master'
           - 'onos-2.1'
           - 'onos-2.0'
           - 'onos-1.15'
           - 'onos-1.14'
           - 'onos-1.13'
           - 'onos-1.12'
         description: "Possible branches (may vary depending on test)"

      - lf-infra-parameters:
         project: 'OnosSystemTest'
         branch: 'master'
         stream: 'master'
         lftools-version: '<1.0.0'

    pipeline-scm:
      script-path: '{jenkins-path}/Overall_Graph_Generator'
      scm:
        - git:
           url: '{gitURL}'
           branches:
             - 'master'

- job-template:
    name: 'graph-generator-CHO'
    description: |
                  <!-- Managed by Jenkins Job Builder -->
                  Generates the CHO graphs. <br />
                  Graphs are stored in pipeline-postjob-cho.

    <<: *test-pipe-job-boiler-plate

    parameters:
      - text:
         name: ONOSbranch
         default: |
                   onos-1.15
         description: "Branch of the onos"

      - choice:
         name: hours
         choices:
           - '168'
           - '72'
         description: "Hours of data to display."

      - lf-infra-parameters:
         project: 'OnosSystemTest'
         branch: 'master'
         stream: 'master'
         lftools-version: '<1.0.0'
    triggers:
      - timed: 'H/60 * * * *'
    pipeline-scm:
      script-path: '{jenkins-path}/CHO_Graph_Generator'
      scm:
        - git:
           url: '{gitURL}'
           branches:
             - 'master'

- project:
    name: pipeline-trigger
    project-name: pipeline-trigger

    <<: *test-pipe-init-procedure-plate
    <<: *var-init-boiler-plate

    jobs:
      - 'all-pipeline-trigger'
      - 'pipeline-trigger':
         machine: 'vm'
         testList: |
                    {FUNC}
                    {HA}
         fileName: 'VM_BM'

      - 'pipeline-trigger':
         machine: 'bm'
         testList: |
                    {SCPF}
                    {USECASE}
         fileName: 'VM_BM'

      - 'pipeline-trigger':
         machine: 'fabric'
         testList: |
                    {SR}
                    {SRHA}
         fileName: 'Fabric'

- project:
    name: build-pipeline

    <<: *job-type-plate

    project-name: '{type}-pipeline'

    <<: *test-pipe-init-procedure-plate
    <<: *job-version-plate

    jobs:
      - '{type}-pipeline-{version}'

- project:
    name: graph-generator

    project-name: 'graph-generator'

    <<: *test-pipe-init-procedure-plate

    jobs:
      - 'manual-graph-generator-SCPF'
      - 'manual-graph-generator-trend'
      - 'manual-graph-generator-overall'
      - 'graph-generator-CHO'
