#!groovy
// This is a Jenkinsfile for a scripted pipeline for the SCPF tests
// properties([pipelineTriggers([cron('30 19 * * *')])])

// TODO: Exception handling around steps
SCPF = [
    SCPFcbench: [ test:'SCPFcbench', table:'cbench_bm_tests', results:'cbench_bm_results', file:'CbenchDB'],
    SCPFhostLat: [ test:'SCPFhostLat', table:'host_latency_tests', results:'host_latency_results', file:'HostAddLatency'],
    SCPFportLat: [ test:'SCPFportLat', table:'port_latency_details', results:'port_latency_results', file:'/tmp/portEventResultDb'],
    SCPFflowTp1g: [ test:'SCPFflowTp1g', table:'flow_tp_tests', results:'flow_tp_results', file:'flowTP1gDB'],
    SCPFscaleTopo: [ test:'SCPFscaleTopo', table:'scale_topo_latency_details', results:'scale_topo_latency_results', file:'/tmp/scaleTopoResultDb'],
    SCPFswitchLat: [ test:'SCPFswitchLat', table:'switch_latency_details', results:'switch_latency_results', file:'/tmp/switchEventResultDb'],
    SCPFbatchFlowResp: [ test:'SCPFbatchFlowResp', table:'batch_flow_tests', results:'batch_flow_results', file:'SCPFbatchFlowRespData'],
    SCPFintentEventTp: [ test:'SCPFintentEventTp', table:'intent_tp_tests', results:'intent_tp_results', file:'IntentEventTPDB'],
    SCPFintentRerouteLat: [ test:'SCPFintentRerouteLat', table:'intent_reroute_latency_tests', results:'intent_reroute_latency_results', file:'IntentRerouteLatDB'],
    SCPFscalingMaxIntents: [ test:'SCPFscalingMaxIntents', table:'max_intents_tests', results:'max_intents_results', file:'ScalingMaxIntentDB'],
    SCPFintentEventTpWithFlowObj: [ test:'SCPFintentEventTp --params TEST/flowObj=True', table:'intent_tp_fobj_tests', results:'intent_tp_fobj_results', file:'IntentEventTPflowObjDB'],
    SCPFintentInstallWithdrawLat: [ test:'SCPFintentInstallWithdrawLat', table:'intent_latency_tests', results:'intent_latency_results', file:'IntentInstallWithdrawLatDB'],
    SCPFintentRerouteLatWithFlowObj: [ test:'SCPFintentRerouteLat --params TEST/flowObj=True', table:'intent_reroute_latency_fobj_tests', results:'intent_reroute_latency_fobj_results', file:'IntentRerouteLatDBWithFlowObj'],
    SCPFscalingMaxIntentsWithFlowObj: [ test:'SCPFscalingMaxIntents --params TEST/flowObj=True', table:'max_intents_fobj_tests', results:'max_intents_fobj_results', file:'ScalingMaxIntentDBWFO'],
    SCPFintentInstallWithdrawLatWithFlowObj: [ test:'SCPFintentInstallWithdrawLat --params TEST/flowObj=True', table:'intent_latency_fobj_tests', results:'intent_latency_fobj_results', file:'IntentInstallWithdrawLatDBWFO']
]

// Get just the test names
def defaultTests = SCPF.keySet().toArray()
// Convert to a string with new line deliminators for user input
StringBuilder sb = new StringBuilder();
for (String s : defaultTests)
{
    sb.append(s);
    sb.append("\n");
}
choices = sb.toString();
// Define sets of tests
SCPF_Basic = "SCPFswitchLat\nSCPFportLat\nSCPFintentInstallWithdrawLat\nSCPFintentEventTp\nSCPFflowTp1g\nSCPFcbench\nSCPFbatchFlowResp"
SCPF_ExtraSetA = "SCPFintentRerouteLat\nSCPFscalingMaxIntents\nSCPFhostLat\nSCPFscaleTopo"
SCPF_ExtraSetB = "SCPFintentInstallWithdrawLatWithFlowObj\nSCPFintentEventTpWithFlowObj\nSCPFintentRerouteLatWithFlowObj\nSCPFscalingMaxIntentsWithFlowObj"

try {
    timeout(time: 120, unit: 'SECONDS') {
        // This is kind of hacky, I can't seem to find the correct way to get a "build with parameters" button
        testcases = input message: 'Tests to run?', parameters:[[$class:'TextParameterDefinition', defaultValue: choices, description:'', name: 'Run these tests']]
    }
} catch(org.jenkinsci.plugins.workflow.steps.FlowInterruptedException Err) {
    echo("Input timed out or cancled, using default values")
    // Set tests based on day of week
    def now = new Date()
    echo(now.toString())
    today = now[Calendar.DAY_OF_WEEK]
    switch (today) {
        case Calendar.MONDAY:
            choices = SCPF_Basic + "\n" + SCPF_ExtraSetB
            println "Defaulting to Monday tests:" + choices
            break
        case Calendar.TUESDAY:
            choices = SCPF_Basic
            println "Defaulting to Tuesday tests:" + choices
            break
        case Calendar.WEDNESDAY:
            choices = SCPF_Basic + "\n" + SCPF_ExtraSetA
            println "Defaulting to Wednesday tests:" + choices
            break
        case Calendar.THURSDAY:
            choices = SCPF_Basic + "\n" + SCPF_ExtraSetB
            println "Defaulting to Thursday tests:" + choices
            break
        case Calendar.FRIDAY:
            choices = SCPF_Basic + "\n" + SCPF_ExtraSetA + "\n" + SCPF_ExtraSetB
            println "Defaulting to Fridat tests:" + choices
            break
        case Calendar.SATURDAY:
            choices = SCPF_Basic + "\n" + SCPF_ExtraSetA + "\n" + SCPF_ExtraSetB
            println "Defaulting to Saturday tests:" + choices
            break
        case Calendar.SUNDAY:
            choices = SCPF_Basic + "\n" + SCPF_ExtraSetA
            println "Defaulting to Sunday tests:" + choices
            break
    }
    testcases = choices
}

echo("Testcases:")
//println testcases
// TODO REMOVE AFTER DEBUGGING
def testsToRun = testcases.tokenize("\n;, ")
for (String test : testsToRun) {
    println test
}

def tests = [:]
for (int i = 0; i < testsToRun.size(); i++) {
    // Get the actual string here.
    def testName = testsToRun[i]
    def stepName = "Running ${testName}"
    tests[stepName] = SCPFTest(testName)
}

// run the tests
parallel tests

// The testName should be the key from the SCPF map
def SCPFTest( testName ) {
    return {
        node ("TestStation-BMs"){ // only run SCPF tests on the BM cluster
            def prop = readProperties(file:'/var/jenkins/TestONOS.property') // TODO set defaults

            withEnv(['ONOSBranch='+prop["ONOSBranch"],
                     'ONOSJVMHeap='+prop["ONOSJVMHeap"],
                     'TestONBranch='+prop["TestONBranch"],
                     'ONOSTag='+prop["ONOSTag"],
                     'WikiPrefix='+prop["WikiPrefix"]]){
                stage(testName) {
                    sh '''#!/bin/bash -l
                    set -i # interactive
                    shopt -s expand_aliases # expand alias in non-interactive mode
                    export PYTHONUNBUFFERED=1

                    ifconfig

                    echo "ONOS Branch is: $ONOSBranch"
                    echo "TestON Branch is: $TestONBranch"
                    echo "Test date: "
                    date

                    cd ~
                    export PATH=$PATH:onos/tools/test/bin

                    timeout 240 stc shutdown
                    timeout 240 stc teardown
                    timeout 240 stc shutdown

                    cd ~/OnosSystemTest/TestON/bin
                    git log |head
                    ./cleanup.sh
                    ''' + "./cli.py run " + SCPF[testName]['test']

                    // Post Results
                    withCredentials([
                        string(credentialsId: 'db_pass', variable: 'pass'),
                        string(credentialsId: 'db_user', variable: 'user'),
                        string(credentialsId: 'db_host', variable: 'host'),
                        string(credentialsId: 'db_port', variable: 'port')]) {
                            def database_command = pass + "|psql --host=" + host + " --port=" + port + " --username=" + user + " --password --dbname onostest -c \"INSERT INTO " + SCPF[testName]['table'] + " VALUES('\$DATE','" + SCPF[testName]['results'] + "','\$BUILD_NUMBER', '\$ONOSBranch', \$line);\""
                            if (testName == "SCPFscaleTopo" || testName == "SCPFswitchLat" || testName == "SCPFportLat") {
                                database_command = pass + "|psql --host=" + host + " --port=" + port + " --username=" + user + " --password --dbname onostest -c \"INSERT INTO " + SCPF[testName]['table'] + " VALUES('\$DATE','" + SCPF[testName]['results'] + "','\$BUILD_NUMBER', \$line, '\$ONOSBranch');\""
                            }
                            sh '''#!/bin/bash

                            export DATE=\$(date +%F_%T)
                            cd ~
                            pwd
                            cd /tmp
                            while read line
                            do

                            echo \$line
                            echo ''' + database_command + '''

                            done< ''' + SCPF[testName]['file']
                    }
                    // Fetch Logs
                    sh '''#!/bin/bash

                    cd ~/OnosSystemTest/TestON/logs
                    echo "Job Name is: ${JOB_NAME}"
                    TestONlogDir=$(ls -t | grep ${TEST_NAME}_  |head -1)
                    echo "########################################################################################"
                    echo "#####  copying ONOS logs from all nodes to TestON/logs directory: ${TestONlogDir}"
                    echo "########################################################################################"
                    cd $TestONlogDir
                    if [ $? -eq 1 ]
                    then
                        echo "Job name does not match any test suite name to move log!"
                    else
                        pwd
                        for i in $OC{1..7}; do onos-fetch-logs $i || echo log does not exist; done
                    fi'''
                }
            }
        }
    }
}
