blob: 387cfe32b23b74fe709b7e36291b7f6d49295f54 [file] [log] [blame]
Hardik Windlass0f9621d2021-02-24 21:23:19 +05301// Copyright 2021-present Open Networking Foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
Hardik Windlass0f9621d2021-02-24 21:23:19 +053014// voltha-2.x e2e tests
15// uses bbsim to simulate OLT/ONUs
Hardik Windlass0f9621d2021-02-24 21:23:19 +053016// NOTE we are importing the library even if it's global so that it's
17// easier to change the keywords during a replay
18library identifier: 'cord-jenkins-libraries@master',
19 retriever: modernSCM([
20 $class: 'GitSCMSource',
21 remote: 'https://gerrit.opencord.org/ci-management.git'
22])
Hardik Windlass0f9621d2021-02-24 21:23:19 +053023def test_software_upgrade(name) {
24 stage('Deploy Voltha - '+ name) {
25 def extraHelmFlags = "${extraHelmFlags} --set global.log_level=DEBUG,onu=1,pon=1 "
Hardik Windlassa67cdbe2021-03-05 15:29:03 +053026 // TODO: ONOS custom image handling
27 // if [ '${onosImg.trim()}' != '' ] && [ '\$GERRIT_PROJECT' != 'voltha-onos' ]; then
28 // IFS=: read -r onosRepo onosTag <<< '${onosImg.trim()}'
29 // extraHelmFlags = extraHelmFlags + "--set onos-classic.images.onos.repository=\$onosRepo,onos-classic.images.onos.tag=\$onosTag "
30 // fi
Hardik Windlass0f9621d2021-02-24 21:23:19 +053031 def localCharts = false
Hardik Windlass0f9621d2021-02-24 21:23:19 +053032 // Currently only testing with ATT workflow
33 // TODO: Support for other workflows
34 volthaDeploy([workflow: "att", extraHelmFlags: extraHelmFlags, localCharts: localCharts])
35 // start logging
36 sh """
37 mkdir -p $WORKSPACE/${name}
38 _TAG=kail-${name} kail -n infra -n voltha > $WORKSPACE/${name}/onos-voltha-combined.log &
39 """
40 // forward ONOS and VOLTHA ports
41 sh """
42 _TAG=onos-port-forward kubectl port-forward --address 0.0.0.0 -n infra svc/voltha-infra-onos-classic-hs 8101:8101&
43 _TAG=onos-port-forward kubectl port-forward --address 0.0.0.0 -n infra svc/voltha-infra-onos-classic-hs 8181:8181&
44 _TAG=voltha-port-forward kubectl port-forward --address 0.0.0.0 -n voltha svc/voltha-voltha-api 55555:55555&
45 """
46 }
47 stage('Test - '+ name) {
48 sh """
Hardik Windlass25c8ddb2021-03-05 20:26:16 +053049 ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/${name}"
50 mkdir -p \$ROBOT_LOGS_DIR
51 if [[ ${name} == 'onos-app-upgrade' ]]; then
52 export ONOS_APPS_UNDER_TEST+=''
Hardik Windlassb360f6e2021-03-09 17:46:21 +053053 if [ ${aaaVer.trim()} != '' ] && [ ${aaaOarUrl.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053054 ONOS_APPS_UNDER_TEST+="org.opencord.aaa,${aaaVer.trim()},${aaaOarUrl.trim()}*"
55 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053056 if [ ${oltVer.trim()} != '' ] && [ ${oltOarUrl.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053057 ONOS_APPS_UNDER_TEST+="org.opencord.olt,${oltVer.trim()},${oltOarUrl.trim()}*"
58 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053059 if [ ${dhcpl2relayVer.trim()} != '' ] && [ ${dhcpl2relayOarUrl.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053060 ONOS_APPS_UNDER_TEST+="org.opencord.dhcpl2relay,${dhcpl2relayVer.trim()},${dhcpl2relayOarUrl.trim()}*"
61 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053062 if [ ${igmpproxyVer.trim()} != '' ] && [ ${igmpproxyOarUrl.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053063 ONOS_APPS_UNDER_TEST+="org.opencord.igmpproxy,${igmpproxyVer.trim()},${igmpproxyOarUrl.trim()}*"
64 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053065 if [ ${sadisVer.trim()} != '' ] && [ ${sadisOarUrl.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053066 ONOS_APPS_UNDER_TEST+="org.opencord.sadis,${sadisVer.trim()},${sadisOarUrl.trim()}*"
67 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053068 if [ ${mcastVer.trim()} != '' ] && [ ${mcastOarUrl.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053069 ONOS_APPS_UNDER_TEST+="org.opencord.mcast,${mcastVer.trim()},${mcastOarUrl.trim()}*"
70 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053071 if [ ${kafkaVer.trim()} != '' ] && [ ${kafkaOarUrl.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053072 ONOS_APPS_UNDER_TEST+="org.opencord.kafka,${kafkaVer.trim()},${kafkaOarUrl.trim()}*"
Hardik Windlass25c8ddb2021-03-05 20:26:16 +053073 fi
74 export ROBOT_MISC_ARGS="-d \$ROBOT_LOGS_DIR -v onos_apps_under_test:\$ONOS_APPS_UNDER_TEST -e PowerSwitch"
75 export TARGET=onos-app-upgrade-test
76 fi
77 if [[ ${name} == 'voltha-component-upgrade' ]]; then
78 export VOLTHA_COMPS_UNDER_TEST+=''
Hardik Windlassb360f6e2021-03-09 17:46:21 +053079 if [ ${adapterOpenOltImage.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053080 VOLTHA_COMPS_UNDER_TEST+="adapter-open-olt,adapter-open-olt,${adapterOpenOltImage.trim()}*"
81 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053082 if [ ${adapterOpenOnuImage.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053083 VOLTHA_COMPS_UNDER_TEST+="adapter-open-onu,adapter-open-onu,${adapterOpenOnuImage.trim()}*"
84 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053085 if [ ${rwCoreImage.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053086 VOLTHA_COMPS_UNDER_TEST+="rw-core,voltha,${rwCoreImage.trim()}*"
87 fi
Hardik Windlassb360f6e2021-03-09 17:46:21 +053088 if [ ${ofAgentImage.trim()} != '' ]; then
Hardik Windlass98506e72021-03-09 14:29:17 +053089 VOLTHA_COMPS_UNDER_TEST+="ofagent,ofagent,${ofAgentImage.trim()}*"
Hardik Windlass25c8ddb2021-03-05 20:26:16 +053090 fi
91 export ROBOT_MISC_ARGS="-d \$ROBOT_LOGS_DIR -v voltha_comps_under_test:\$VOLTHA_COMPS_UNDER_TEST -e PowerSwitch"
92 export TARGET=voltha-comp-upgrade-test
93 fi
94 export VOLTCONFIG=$HOME/.volt/config-minimal
95 export KUBECONFIG=$HOME/.kube/kind-config-voltha-minimal
96 # Run the specified tests
97 make -C $WORKSPACE/voltha-system-tests \$TARGET || true
Hardik Windlass0f9621d2021-02-24 21:23:19 +053098 """
99 // stop logging
100 sh """
101 P_IDS="\$(ps e -ww -A | grep "_TAG=kail-${name}" | grep -v grep | awk '{print \$1}')"
102 if [ -n "\$P_IDS" ]; then
103 echo \$P_IDS
104 for P_ID in \$P_IDS; do
105 kill -9 \$P_ID
106 done
107 fi
108 """
109 // remove port-forwarding
110 sh """
111 # remove orphaned port-forward from different namespaces
112 ps aux | grep port-forw | grep -v grep | awk '{print \$2}' | xargs --no-run-if-empty kill -9
113 """
114 // collect pod details
115 sh """
116 kubectl get pods --all-namespaces -o wide > \$WORKSPACE/${name}/pods.txt || true
117 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee \$WORKSPACE/${name}/pod-images.txt || true
118 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee \$WORKSPACE/${name}/pod-imagesId.txt || true
119 """
120 helmTeardown(['infra', 'voltha'])
121 }
122}
Hardik Windlass0f9621d2021-02-24 21:23:19 +0530123pipeline {
Hardik Windlass0f9621d2021-02-24 21:23:19 +0530124 /* no label, executor is determined by JJB */
125 agent {
126 label "${params.buildNode}"
127 }
128 options {
129 timeout(time: 30, unit: 'MINUTES')
130 }
131 environment {
132 PATH="$PATH:$WORKSPACE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Hardik Windlass25c8ddb2021-03-05 20:26:16 +0530133 KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
Hardik Windlass0f9621d2021-02-24 21:23:19 +0530134 }
Hardik Windlass0f9621d2021-02-24 21:23:19 +0530135 stages{
136 stage('Download Code') {
137 steps {
138 getVolthaCode([
139 branch: "${branch}",
140 volthaSystemTestsChange: "${volthaSystemTestsChange}",
141 volthaHelmChartsChange: "${volthaHelmChartsChange}",
142 ])
143 }
144 }
Hardik Windlass0f9621d2021-02-24 21:23:19 +0530145 stage('Run Test') {
146 steps {
147 test_software_upgrade("onos-app-upgrade")
148 test_software_upgrade("voltha-component-upgrade")
149 }
150 }
151 }
Hardik Windlass0f9621d2021-02-24 21:23:19 +0530152 post {
153 always {
154 sh '''
155 gzip $WORKSPACE/onos-app-upgrade/onos-voltha-combined.log || true
156 gzip $WORKSPACE/voltha-component-upgrade/onos-voltha-combined.log || true
157 '''
158 step([$class: 'RobotPublisher',
159 disableArchiveOutput: false,
160 logFileName: 'RobotLogs/*/log*.html',
161 otherFiles: '',
162 outputFileName: 'RobotLogs/*/output*.xml',
163 outputPath: '.',
164 passThreshold: 100,
165 reportFileName: 'RobotLogs/*/report*.html',
166 unstableThreshold: 0]);
167 archiveArtifacts artifacts: '*.log,**/*.log,**/*.gz,*.gz'
168 }
169 }
170}