---
# 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'
      - '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.0'
           - '1.15'
           - '1.14'
           - '1.13'
           - '1.12'
         description: "ONOS and TestON versions to run on."

      - string:
         name: ONOSJVMHeap
         default: "\"${{JAVA_OPTS:--Xms8G -Xmx8G}}\""
         description: 'ONOS cell JVM heap size 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.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.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.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: |
                   master
         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'
