[SEBA-184] WIP testing build job with new scripts
Change-Id: If12a326bf08cfe0ce1d86e4e1f1fa993f27d9527
diff --git a/Jenkinsfile-attworkflow b/Jenkinsfile-attworkflow
new file mode 100644
index 0000000..e7e1825
--- /dev/null
+++ b/Jenkinsfile-attworkflow
@@ -0,0 +1,247 @@
+// Copyright 2017-present Open Networking Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+pod_config = null
+
+node ("${TestNodeName}") {
+ timeout (time: 240) {
+ stage ("Parse deployment configuration file") {
+ sh returnStdout: true, script: 'rm -rf ${configRepoBaseDir}'
+ sh returnStdout: true, script: 'git clone -b ${branch} ${configRepoUrl}'
+ deployment_config = readYaml file: "${configRepoBaseDir}${configRepoFile}"
+ }
+ stage('Export pod config') {
+ timeout(10) {
+ try {
+ sh """
+ cd /home/cord
+ rm -rf /home/cord/helm-charts
+ git clone -b ${branch} https://gerrit.opencord.org/helm-charts
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ kubectl get pods
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Clean up') {
+ timeout(10) {
+ try {
+ sh """
+ cd /home/cord/helm-charts
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ helm ls | grep onos-voltha && helm delete --purge onos-voltha || true
+ helm ls | grep onos-fabric && helm delete --purge onos-fabric || true
+ helm ls | grep voltha && helm delete --purge voltha || true
+ helm ls | grep rcord-lite && helm delete --purge rcord-lite || true
+ helm ls | grep xos-core && helm delete --purge xos-core || true
+ helm ls | grep cord-kafka && helm delete --purge cord-kafka || true
+ helm ls | grep voltha-kafka && helm delete --purge voltha-kafka || true
+ helm ls | grep att-workflow && helm delete --purge att-workflow || true
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ // Wait for helm delete
+ timeout(5) {
+ waitUntil {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ ! helm ls | grep -E 'onos-voltha|onos-fabric|voltha |rcord-lite|xos-core|cord-kafka|voltha-kafka'
+ ! kubectl get pods --all-namespaces | grep -E 'onos-voltha|onos-fabric|cord-kafka|voltha |rcord-lite-|xos-'
+ """
+ return true
+ } catch (exception) {
+ return false
+ }
+ }
+ }
+ }
+ }
+ stage('Restart OLT processes') {
+ timeout(5) {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ sshpass -p onl ssh -l root 10.192.4.218 'pkill bal_core_dist || true'
+ sshpass -p onl ssh -l root 10.192.4.218 'pkill openolt || true'
+ sshpass -p onl ssh -l root 10.192.4.218 'cd /broadcom; ./bal_core_dist -C :55001 < /dev/tty1 > ./bal.log 2>&1 &'
+ sshpass -p onl ssh -l root 10.192.4.218 'cd /broadcom; ./openolt -C 127.0.0.1:55001 < /dev/tty1 > ./openolt.log 2>&1 &'
+ """
+ }
+ timeout(15) {
+ waitUntil {
+ onu_discovered = sh returnStdout: true, script: "sshpass -p onl ssh -l root 10.192.4.218 'cat /broadcom/openolt.log | grep \"onu discover indication\" | wc -l'"
+ return onu_discovered.toInteger() > 0
+ }
+ }
+ }
+ }
+ }
+ stage('Install Kafka') {
+ timeout(10) {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ cd /home/cord/helm-charts
+ helm install --name cord-kafka --set replicas=1 --set persistence.enabled=false --set zookeeper.servers=1 --set zookeeper.persistence.enabled=false incubator/kafka
+ helm install --name voltha-kafka --set replicas=1 --set persistence.enabled=false --set zookeeper.servers=1 --set zookeeper.persistence.enabled=false incubator/kafka
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Install xos-core') {
+ timeout(10) {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ cd /home/cord/helm-charts
+ helm dep update xos-core
+ helm install -n xos-core xos-core
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Install voltha') {
+ timeout(10) {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ cd /home/cord/helm-charts
+ helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
+ helm dep build voltha
+ helm install -n voltha --set etcd-operator.customResources.createEtcdClusterCRD=false voltha
+ helm upgrade --set etcd-operator.customResources.createEtcdClusterCRD=true voltha ./voltha
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Install ONOS-Voltha and ONOS-Fabric') {
+ timeout(10) {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ cd /home/cord/helm-charts
+ helm install -n onos-fabric -f configs/onos-fabric.yaml onos
+ helm install -n onos-voltha -f configs/onos-voltha.yaml onos
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Install ATT Workflow') {
+ timeout(10) {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ cd /home/cord/helm-charts
+ helm install -n att-workflow xos-profiles/att-workflow
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Wait for PODs to complete') {
+ timeout(5) {
+ waitUntil {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ kubectl get pods | grep -i tosca-loader | grep -i complete
+ kubectl get pods | grep -i chameleon | grep -i running
+ kubectl get pods | grep -i onos-fabric | grep -i running
+ kubectl get pods | grep -i cord-kafka | grep -i running
+ kubectl get pods | grep -i voltha-kafka | grep -i running
+ kubectl get pods --namespace=voltha | grep -i voltha- | grep -i running
+ kubectl get pods --namespace=voltha | grep -i onos-voltha | grep -i running
+ """
+ return true
+ } catch (exception) {
+ return false
+ }
+ }
+ }
+ }
+ stage('Download cord-tester repo') {
+ timeout(10) {
+ try {
+ sh """
+ rm -rf /home/cord/cord-tester
+ cd /home/cord/
+ git clone -b ${branch} https://gerrit.opencord.org/cord-tester
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Validate installed PODs') {
+ timeout(10) {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ cd /home/cord/cord-tester/src/test/robot/
+ rm -rf Log/ || true
+ pybot -d Log -T SanityK8POD.robot || true
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ /* stage('Configurations and Tests') {
+ timeout(10) {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ cd /home/cord/cord-tester/src/test/cord-api/Properties/
+ sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'${deployment_config.node1.ip}\'/\" RestApiProperties.py
+ sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'30006\'/\" RestApiProperties.py
+ sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
+ sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
+ cd /home/cord/cord-tester/src/test/cord-api/Tests/
+ rm -rf Log/ || true
+ pybot -d Log -T FabricConfig.txt || true
+ pybot -d Log -T AttWorkFlowDriver.txt || true
+ sleep 5
+ pybot -d Log -T OSSVolt.txt || true
+ pybot -d Log -T RealOLT_Test.txt || true
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Subscriber Validation and Ping Tests') {
+ timeout(20) {
+ try {
+ sh """
+ export KUBECONFIG=/home/cord/${deployment_config.pod_config}
+ cd /home/cord/cord-tester/src/test/cord-api/Tests/
+ pybot -d Log -T -v src_ip:${deployment_config.srcHost.ip} -v src_user:${deployment_config.srcHost.user} -v src_pass:${deployment_config.srcHost.pass} -v dst_user:${deployment_config.dstHost.user} -v dst_pass:${deployment_config.dstHost.pass} -v dst_ip:${deployment_config.dstHost.ip} -v dst_host_ip:${deployment_config.dstHost.hostIp} -v src_gateway:${deployment_config.srcHost.gateway} -v dst_gateway:${deployment_config.dstHost.gateway} -v ENABLE_STATUS:FAIL -v MACIP_STATUS:PASS Subscriber_StatusChecks.txt || true
+ """
+ } catch(error) { currentBuild.result = 'FAILURE' }
+ }
+ }
+ stage('Publish') {
+ try {
+ sh """
+ if [ -d RobotLogs ]; then rm -r RobotLogs; fi; mkdir RobotLogs;
+ mkdir RobotLogs/TestDoc || true
+ cp -r /home/cord/cord-tester/src/test/robot/Log/* ./RobotLogs || true
+ cp -r /home/cord/cord-tester/src/test/cord-api/Tests/Log/* ./RobotLogs || true
+ """
+ step([$class: 'RobotPublisher',
+ disableArchiveOutput: false,
+ logFileName: 'RobotLogs/log*.html',
+ otherFiles: '',
+ outputFileName: 'RobotLogs/output*.xml',
+ outputPath: '.',
+ passThreshold: 100,
+ reportFileName: 'RobotLogs/report*.html',
+ unstableThreshold: 0])
+ } catch(error) {}
+ }*/
+ //step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "${notificationEmail}", sendToIndividuals: false])
+ }
+}
diff --git a/src/test/cord-api/Tests/AttWorkFlowDriver.txt b/src/test/cord-api/Tests/AttWorkFlowDriver.txt
new file mode 100644
index 0000000..c0ac9c0
--- /dev/null
+++ b/src/test/cord-api/Tests/AttWorkFlowDriver.txt
@@ -0,0 +1,51 @@
+*** Settings ***
+Documentation Test to Configure ATT Work flow driver
+Suite Setup Read InputFile
+Test Template Configuring ATT Driver
+Library Collections
+Library String
+Library OperatingSystem
+Library XML
+Library RequestsLibrary
+Library ../Framework/utils/utils.py
+Library ../Framework/restApi.py
+
+*** Variables ***
+${PATHFILE} ${CURDIR}/data/AttWorkFlowDriver.json
+
+*** Test Cases *** TYPE LISTINDEX
+Test Create AttWorkFlow-1
+ CREATE 0
+Test Get AttWorkFlow-1
+ RETRIEVE 0
+
+*** Keywords ***
+Read InputFile
+ ${AttWorkFlowList}= utils.jsonToList ${PATHFILE} AttWorkFlowDriverInfo
+ Set Suite Variable ${slist} ${AttWorkFlowList}
+ Set Global Variable ${AttWorkFlowDriver_Id} ${EMPTY}
+
+Configuring ATT Driver
+ [Arguments] ${type} ${listIndex}
+ Run Keyword If "${type}" == "CREATE" Post ATT Driver ${listIndex}
+ Run Keyword If "${type}" == "RETRIEVE" Get ATT Driver ${listIndex}
+
+Post ATT Driver
+ [Arguments] ${listIndex}
+ ${AttWorkFlowList} = Get Variable Value ${slist}
+ ${AttWorkFlowDriverDict}= utils.listToDict ${AttWorkFlowList} ${listIndex}
+ ${api_result_status} ${api_result_json}= restApi.ApiPostReturnJson ATT_SERVICE ${AttWorkFlowDriverDict}
+ Should Be True ${api_result_status}
+ ${AttWorkFlowDriver_Id}= Get From Dictionary ${api_result_json} id
+ Set Global Variable ${AttWorkFlowDriver_Id}
+
+Get ATT Driver
+ [Arguments] ${listIndex}
+ Log ${AttWorkFlowDriver_Id}
+ ${json_result}= restApi.ApiChameleonGet ATT_SERVICE ${AttWorkFlowDriver_Id}
+ Log ${json_result}
+ ${AttWorkFlowList} = Get Variable Value ${slist}
+ ${AttWorkFlowDriverDict}= utils.listToDict ${AttWorkFlowList} ${listIndex}
+ Log ${AttWorkFlowDriverDict}
+ ${test_result}= utils.compare_dict ${AttWorkFlowDriverDict} ${json_result}
+ Should Be True ${test_result}
diff --git a/src/test/cord-api/Tests/data/AttWhiteList.json b/src/test/cord-api/Tests/data/AttWhiteList.json
index cd0624a..224e700 100644
--- a/src/test/cord-api/Tests/data/AttWhiteList.json
+++ b/src/test/cord-api/Tests/data/AttWhiteList.json
@@ -1,10 +1,29 @@
{
"AttWhiteList" : [
{
- "serial_number": "",
- "device_id" : "1",
- "pon_port_id" : "",
+ "serial_number": "ALPHe3d1cfa7",
+ "device_id" : "of:000000000ac004da",
+ "pon_port_id" : "536870912",
+ "owner_id" : "1"
+ },
+ {
+ "serial_number": "ALPHe3d1cea3",
+ "device_id" : "of:000000000ac004da",
+ "pon_port_id" : "536870912",
+ "owner_id" : "1"
+ },
+ {
+ "serial_number": "ALPHe3d1cf84",
+ "device_id" : "of:000000000ac004da",
+ "pon_port_id" : "536870912",
+ "owner_id" : "1"
+ },
+ {
+ "serial_number": "ALPHe3d1cee9",
+ "device_id" : "of:000000000ac004da",
+ "pon_port_id" : "536870912",
"owner_id" : "1"
}
+
]
}