blob: 5208368a97d0b88643140c812c85904911e2edf3 [file] [log] [blame]
Kailashaad71012019-08-27 10:36:53 -07001// Copyright 2017-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.
14
15// voltha-2.x e2e tests
16// uses kind-voltha to deploy voltha-2.X
17// uses bbsim to simulate OLT/ONUs
18
19pipeline {
20
21 /* no label, executor is determined by JJB */
22 agent {
Zack Williamsb3292082019-10-11 17:15:18 -070023 label "${params.buildNode}"
Kailashaad71012019-08-27 10:36:53 -070024 }
25 options {
Andy Bavier4af02722020-01-15 10:24:24 -070026 timeout(time: 90, unit: 'MINUTES')
27 }
28 environment {
Matteo Scandolo9aae4952020-09-14 13:05:53 -070029 PATH="$WORKSPACE/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Andy Bavier8b118b72020-04-28 12:59:30 -070030 VOLTHA_LOG_LEVEL="DEBUG"
Andy Bavier4af02722020-01-15 10:24:24 -070031 FANCY=0
32 WITH_SIM_ADAPTERS="n"
Matteo Scandolo39045a92020-07-29 08:58:29 -070033 NAME="test"
34 VOLTCONFIG="$HOME/.volt/config-$NAME"
35 KUBECONFIG="$HOME/.kube/kind-config-voltha-$NAME"
Matteo Scandolo697b8b82021-01-27 13:07:59 -080036 EXTRA_HELM_FLAGS=" --set global.image_registry=mirror.registry.opennetworking.org/ --set defaults.image_registry=mirror.registry.opennetworking.org/ "
Kailashaad71012019-08-27 10:36:53 -070037 }
38
39 stages {
Matteo Scandolo9aae4952020-09-14 13:05:53 -070040 stage('Clone kind-voltha') {
Kailashaad71012019-08-27 10:36:53 -070041 steps {
Matteo Scandolo9aae4952020-09-14 13:05:53 -070042 checkout([
43 $class: 'GitSCM',
44 userRemoteConfigs: [[
45 url: "https://gerrit.opencord.org/kind-voltha",
Matteo Scandoloa42c6f52020-09-19 01:35:12 +000046 refspec: "${kindVolthaChange}"
Matteo Scandolo9aae4952020-09-14 13:05:53 -070047 ]],
48 branches: [[ name: "master", ]],
49 extensions: [
50 [$class: 'WipeWorkspace'],
51 [$class: 'RelativeTargetDirectory', relativeTargetDir: "kind-voltha"],
52 [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
53 ],
54 ])
Matteo Scandolo57a06632020-09-18 18:38:54 -070055 sh """
56 if [ '${kindVolthaChange}' != '' ] ; then
57 cd $WORKSPACE/kind-voltha
58 git fetch https://gerrit.opencord.org/kind-voltha ${kindVolthaChange} && git checkout FETCH_HEAD
59 fi
60 """
Kailashaad71012019-08-27 10:36:53 -070061 }
62 }
Matteo Scandolo9aae4952020-09-14 13:05:53 -070063 stage('Clone voltha-system-tests') {
Kailashaad71012019-08-27 10:36:53 -070064 steps {
Matteo Scandolo9aae4952020-09-14 13:05:53 -070065 checkout([
66 $class: 'GitSCM',
67 userRemoteConfigs: [[
68 url: "https://gerrit.opencord.org/voltha-system-tests",
Matteo Scandoloa42c6f52020-09-19 01:35:12 +000069 refspec: "${volthaSystemTestsChange}"
Matteo Scandolo9aae4952020-09-14 13:05:53 -070070 ]],
71 branches: [[ name: "${branch}", ]],
72 extensions: [
73 [$class: 'WipeWorkspace'],
74 [$class: 'RelativeTargetDirectory', relativeTargetDir: "voltha-system-tests"],
75 [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
76 ],
77 ])
Matteo Scandolo57a06632020-09-18 18:38:54 -070078 sh """
79 if [ '${volthaSystemTestsChange}' != '' ] ; then
80 cd $WORKSPACE/voltha-system-tests
81 git fetch https://gerrit.opencord.org/voltha-system-tests ${volthaSystemTestsChange} && git checkout FETCH_HEAD
82 fi
83 """
Matteo Scandolo9aae4952020-09-14 13:05:53 -070084 }
85 }
Matteo Scandolo8fc674c2020-09-14 18:05:37 -070086 // If the repo under test is not kind-voltha
87 // then download it and checkout the patch
Matteo Scandolo9aae4952020-09-14 13:05:53 -070088 stage('Download Patch') {
Matteo Scandolo8fc674c2020-09-14 18:05:37 -070089 when {
90 expression {
91 return "${gerritProject}" != 'kind-voltha';
92 }
93 }
Matteo Scandolo9aae4952020-09-14 13:05:53 -070094 steps {
95 checkout([
96 $class: 'GitSCM',
97 userRemoteConfigs: [[
98 url: "https://gerrit.opencord.org/${gerritProject}",
Matteo Scandoloa42c6f52020-09-19 01:35:12 +000099 refspec: "${gerritRefspec}"
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700100 ]],
101 branches: [[ name: "${branch}", ]],
102 extensions: [
103 [$class: 'WipeWorkspace'],
104 [$class: 'RelativeTargetDirectory', relativeTargetDir: "${gerritProject}"],
105 [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false],
106 ],
107 ])
Kailashaad71012019-08-27 10:36:53 -0700108 sh """
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700109 pushd $WORKSPACE/${gerritProject}
Matteo Scandolo57a06632020-09-18 18:38:54 -0700110 git fetch https://gerrit.opencord.org/${gerritProject} ${gerritRefspec} && git checkout FETCH_HEAD
111
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700112 echo "Currently on commit: \n"
113 git log -1 --oneline
114 popd
115 """
Kailashaad71012019-08-27 10:36:53 -0700116 }
117 }
Matteo Scandolo8fc674c2020-09-14 18:05:37 -0700118 // If the repo under test is kind-voltha we don't need to download it again,
119 // as we already have it, simply checkout the patch
120 stage('Checkout kind-voltha patch') {
121 when {
122 expression {
123 return "${gerritProject}" == 'kind-voltha';
124 }
125 }
126 steps {
127 sh """
128 cd $WORKSPACE/kind-voltha
129 git fetch https://gerrit.opencord.org/kind-voltha ${gerritRefspec} && git checkout FETCH_HEAD
130 """
131 }
132 }
Kailashaad71012019-08-27 10:36:53 -0700133 stage('Create K8s Cluster') {
134 steps {
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700135 timeout(time: 10, unit: 'MINUTES') {
136 sh """
137 if [ "${branch}" != "master" ]; then
138 echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
139 source "$WORKSPACE/kind-voltha/releases/${branch}"
140 else
141 echo "on master, using default settings for kind-voltha"
142 fi
Zack Williams03ebb272020-03-27 09:42:33 -0700143
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700144 cd $WORKSPACE/kind-voltha/
145 JUST_K8S=y ./voltha up
146 bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/kind-voltha/bin"
147 """
148 }
Kailashaad71012019-08-27 10:36:53 -0700149 }
150 }
151
152 stage('Build Images') {
153 steps {
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700154 timeout(time: 10, unit: 'MINUTES') {
155 sh """
Andy Bavierb99c3d32020-02-18 11:14:17 -0700156 make-local () {
Matteo Scandolo4adf1192020-12-15 09:44:14 -1000157 make -C $WORKSPACE/\$1 DOCKER_REGISTRY=mirror.registry.opennetworking.org/ DOCKER_REPOSITORY=voltha/ DOCKER_TAG=citest docker-build
Andy Bavierb99c3d32020-02-18 11:14:17 -0700158 }
Andy Bavier0ed77062020-02-18 10:09:19 -0700159 if [ "${gerritProject}" = "pyvoltha" ]; then
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700160 make -C $WORKSPACE/pyvoltha/ dist
161 export LOCAL_PYVOLTHA=$WORKSPACE/pyvoltha/
Andy Bavierb99c3d32020-02-18 11:14:17 -0700162 make-local voltha-openonu-adapter
163 elif [ "${gerritProject}" = "voltha-lib-go" ]; then
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700164 make -C $WORKSPACE/voltha-lib-go/ build
165 export LOCAL_LIB_GO=$WORKSPACE/voltha-lib-go/
Andy Bavierb99c3d32020-02-18 11:14:17 -0700166 make-local voltha-go
167 make-local voltha-openolt-adapter
168 elif [ "${gerritProject}" = "voltha-protos" ]; then
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700169 make -C $WORKSPACE/voltha-protos/ build
170 export LOCAL_PROTOS=$WORKSPACE/voltha-protos/
Andy Bavierb99c3d32020-02-18 11:14:17 -0700171 make-local voltha-go
172 make-local voltha-openolt-adapter
173 make-local voltha-openonu-adapter
174 make-local ofagent-py
Andy Bavier178c47b2020-04-01 13:05:43 -0700175 elif [ "${gerritProject}" = "voltctl" ]; then
Andy Bavierdecde3f2020-04-01 15:29:43 -0700176 # Set and handle GOPATH and PATH
177 export GOPATH=\${GOPATH:-$WORKSPACE/go}
178 export PATH=\$PATH:/usr/lib/go-1.12/bin:/usr/local/go/bin:\$GOPATH/bin
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700179 make -C $WORKSPACE/voltctl/ build
Andy Bavier4318f8d2020-04-09 13:50:53 -0700180 elif ! [[ "${gerritProject}" =~ ^(voltha-helm-charts|voltha-system-tests|kind-voltha)\$ ]]; then
Andy Bavierb99c3d32020-02-18 11:14:17 -0700181 make-local ${gerritProject}
Andy Bavier07615f92019-10-03 12:31:18 -0700182 fi
Kailashaad71012019-08-27 10:36:53 -0700183 """
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700184 }
Kailashaad71012019-08-27 10:36:53 -0700185 }
186 }
187
188 stage('Push Images') {
189 steps {
190 sh '''
Zack Williams03ebb272020-03-27 09:42:33 -0700191 if [ "${branch}" != "master" ]; then
192 echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700193 source "$WORKSPACE/kind-voltha/releases/${branch}"
Zack Williams03ebb272020-03-27 09:42:33 -0700194 else
195 echo "on master, using default settings for kind-voltha"
196 fi
197
Andy Bavierb5c8caf2020-04-06 14:12:07 -0700198 if ! [[ "${gerritProject}" =~ ^(voltha-helm-charts|voltha-system-tests|voltctl|kind-voltha)\$ ]]; then
Andy Bavier07615f92019-10-03 12:31:18 -0700199 export GOROOT=/usr/local/go
200 export GOPATH=\$(pwd)
Andy Bavier07615f92019-10-03 12:31:18 -0700201 docker images | grep citest
Matteo Scandolo4adf1192020-12-15 09:44:14 -1000202 for image in \$(docker images -f "reference=*/*/*citest" --format "{{.Repository}}"); do echo "Pushing \$image to nodes"; kind load docker-image \$image:citest --name voltha-\$NAME --nodes voltha-\$NAME-worker,voltha-\$NAME-worker2; done
Andy Bavier07615f92019-10-03 12:31:18 -0700203 fi
Kailashaad71012019-08-27 10:36:53 -0700204 '''
205 }
206 }
Andy Bavier8b118b72020-04-28 12:59:30 -0700207
208 stage('ATT workflow') {
209 environment {
210 ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/ATTWorkflow"
211 }
Kailashaad71012019-08-27 10:36:53 -0700212 steps {
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700213 timeout(time: 15, unit: 'MINUTES') {
214 sh '''
Zack Williams03ebb272020-03-27 09:42:33 -0700215 if [ "${branch}" != "master" ]; then
216 echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700217 source "$WORKSPACE/kind-voltha/releases/${branch}"
Zack Williams03ebb272020-03-27 09:42:33 -0700218 else
219 echo "on master, using default settings for kind-voltha"
220 fi
221
Matteo Scandolof72f4d12020-12-14 09:53:28 -1000222 if [[ "${gerritProject}" == voltha-helm-charts ]]; then
Andrea Campanellae8e2e012021-01-22 10:59:07 +0100223 export EXTRA_HELM_FLAGS+="--set global.image_tag=null "
Matteo Scandolof72f4d12020-12-14 09:53:28 -1000224 fi
225
Andy Bavier8b118b72020-04-28 12:59:30 -0700226 # Workflow-specific flags
227 export WITH_RADIUS=yes
228 export WITH_BBSIM=yes
229 export DEPLOY_K8S=yes
Matteo Scandolo3d6a21d2020-09-04 07:34:24 -0700230 export CONFIG_SADIS="external"
231 export BBSIM_CFG="configs/bbsim-sadis-att.yaml"
Andy Bavier8b118b72020-04-28 12:59:30 -0700232
Zack Williams03ebb272020-03-27 09:42:33 -0700233 export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
Kailashaad71012019-08-27 10:36:53 -0700234
Andy Bavier4af02722020-01-15 10:24:24 -0700235 IMAGES=""
Kailashaad71012019-08-27 10:36:53 -0700236 if [ "${gerritProject}" = "voltha-go" ]; then
Andy Bavier4af02722020-01-15 10:24:24 -0700237 IMAGES="rw_core ro_core "
238 elif [ "${gerritProject}" = "ofagent-py" ]; then
Andy Bavier8d816422020-03-23 15:34:26 -0700239 IMAGES="ofagent_py "
240 EXTRA_HELM_FLAGS+="--set use_ofagent_go=false "
Andy Bavier9c412a82020-03-23 12:00:28 -0700241 elif [ "${gerritProject}" = "ofagent-go" ]; then
Andy Bavier8d816422020-03-23 15:34:26 -0700242 IMAGES="ofagent_go "
Andy Bavier4af02722020-01-15 10:24:24 -0700243 elif [ "${gerritProject}" = "voltha-onos" ]; then
244 IMAGES="onos "
Andrea Campanellae39825e2020-12-16 21:35:03 +0100245 EXTRA_HELM_FLAGS+="--set images.onos.repository=mirror.registry.opennetworking.org/voltha/voltha-onos "
Andy Bavier4af02722020-01-15 10:24:24 -0700246 elif [ "${gerritProject}" = "voltha-openolt-adapter" ]; then
247 IMAGES="adapter_open_olt "
248 elif [ "${gerritProject}" = "voltha-openonu-adapter" ]; then
249 IMAGES="adapter_open_onu "
250 elif [ "${gerritProject}" = "voltha-api-server" ]; then
251 IMAGES="afrouter afrouterd "
252 elif [ "${gerritProject}" = "bbsim" ]; then
253 IMAGES="bbsim "
Andy Bavierec0c10d2020-02-14 13:06:27 -0700254 elif [ "${gerritProject}" = "pyvoltha" ]; then
255 IMAGES="adapter_open_onu "
Andy Bavierb99c3d32020-02-18 11:14:17 -0700256 elif [ "${gerritProject}" = "voltha-lib-go" ]; then
257 IMAGES="rw_core ro_core adapter_open_olt "
258 elif [ "${gerritProject}" = "voltha-protos" ]; then
259 IMAGES="rw_core ro_core adapter_open_olt adapter_open_onu ofagent "
Zack Williams04997502019-10-04 14:32:20 -0700260 else
Andy Bavier4af02722020-01-15 10:24:24 -0700261 echo "No images to push"
Scott Baker9ac23712019-10-02 09:26:50 -0700262 fi
263
Andy Bavier4af02722020-01-15 10:24:24 -0700264 for I in \$IMAGES
265 do
266 EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
267 done
268
Kailash Khalasiaf3a2a62019-10-02 09:44:08 -0700269 if [ "${gerritProject}" = "voltha-helm-charts" ]; then
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700270 export CHART_PATH=$WORKSPACE/voltha-helm-charts
Andy Bavier45406342019-10-02 16:45:40 -0700271 export VOLTHA_CHART=\$CHART_PATH/voltha
272 export VOLTHA_ADAPTER_OPEN_OLT_CHART=\$CHART_PATH/voltha-adapter-openolt
273 export VOLTHA_ADAPTER_OPEN_ONU_CHART=\$CHART_PATH/voltha-adapter-openonu
Kailash Khalasiaf3a2a62019-10-02 09:44:08 -0700274 helm dep update \$VOLTHA_CHART
275 helm dep update \$VOLTHA_ADAPTER_OPEN_OLT_CHART
276 helm dep update \$VOLTHA_ADAPTER_OPEN_ONU_CHART
277 fi
278
Andy Bavier178c47b2020-04-01 13:05:43 -0700279 if [ "${gerritProject}" = "voltctl" ]; then
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700280 export VOLTCTL_VERSION=$(cat $WORKSPACE/voltctl/VERSION)
281 cp $WORKSPACE/voltctl/voltctl $WORKSPACE/kind-voltha/bin/voltctl
282 md5sum $WORKSPACE/kind-voltha/bin/voltctl
Andy Bavier178c47b2020-04-01 13:05:43 -0700283 fi
284
Andy Bavier8b118b72020-04-28 12:59:30 -0700285 printenv
Matteo Scandolobafd4f02020-12-09 12:14:55 -0800286
287 # start logging
288 mkdir -p $WORKSPACE/att
289 _TAG=kail-att kail -n voltha -n default > $WORKSPACE/att/onos-voltha-combined.log &
Kailashaad71012019-08-27 10:36:53 -0700290
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700291 cd $WORKSPACE/kind-voltha/
Andy Bavier8b118b72020-04-28 12:59:30 -0700292 ./voltha up
293
Matteo Scandolo39045a92020-07-29 08:58:29 -0700294 # $NAME-env.sh contains the environment we used
Andy Bavier8b118b72020-04-28 12:59:30 -0700295 # Save value of EXTRA_HELM_FLAGS there to use in subsequent stages
Matteo Scandolo39045a92020-07-29 08:58:29 -0700296 echo export EXTRA_HELM_FLAGS=\\"\$EXTRA_HELM_FLAGS\\" >> $NAME-env.sh
Andy Bavier8b118b72020-04-28 12:59:30 -0700297
298 mkdir -p $ROBOT_LOGS_DIR
Andy Bavierd9870042020-06-23 13:16:47 -0700299 export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
Andy Bavierdb003082020-02-04 11:57:36 -0700300
301 # By default, all tests tagged 'sanity' are run. This covers basic functionality
302 # like running through the ATT workflow for a single subscriber.
Andy Bavier8b118b72020-04-28 12:59:30 -0700303 export TARGET=sanity-single-kind
Andy Bavierdb003082020-02-04 11:57:36 -0700304
305 # If the Gerrit comment contains a line with "functional tests" then run the full
306 # functional test suite. This covers tests tagged either 'sanity' or 'functional'.
307 # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
308 REGEX="functional tests"
309 if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
Andy Bavier8b118b72020-04-28 12:59:30 -0700310 TARGET=functional-single-kind
Andy Bavierdb003082020-02-04 11:57:36 -0700311 fi
312
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700313 make -C $WORKSPACE/voltha-system-tests \$TARGET || true
Matteo Scandolobafd4f02020-12-09 12:14:55 -0800314
315 # stop logging
316 P_IDS="$(ps e -ww -A | grep "_TAG=kail-att" | grep -v grep | awk '{print $1}')"
317 if [ -n "$P_IDS" ]; then
318 echo $P_IDS
319 for P_ID in $P_IDS; do
320 kill -9 $P_ID
321 done
322 fi
323
324 # get pods information
325 kubectl get pods -o wide > $WORKSPACE/att/pods.txt || true
326 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee $WORKSPACE/att/pod-images.txt || true
327 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee $WORKSPACE/att/pod-imagesId.txt || true
Andy Bavier8b118b72020-04-28 12:59:30 -0700328 '''
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700329 }
Andy Bavier8b118b72020-04-28 12:59:30 -0700330 }
331 }
332
333 stage('DT workflow') {
334 environment {
335 ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/DTWorkflow"
336 }
337 steps {
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700338 timeout(time: 15, unit: 'MINUTES') {
339 sh '''
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700340 cd $WORKSPACE/kind-voltha/
Matteo Scandolo39045a92020-07-29 08:58:29 -0700341 source $NAME-env.sh
Andrea Campanella57735a82021-05-18 13:22:49 +0200342 if [ "${branch}" != "master" ]; then
343 echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
344 source "$WORKSPACE/kind-voltha/releases/${branch}"
345 else
346 echo "on master, using default settings for kind-voltha"
347 fi
Andy Bavier8b118b72020-04-28 12:59:30 -0700348 WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
349
350 # Workflow-specific flags
351 export WITH_RADIUS=no
352 export WITH_EAPOL=no
353 export WITH_DHCP=no
354 export WITH_IGMP=no
Matteo Scandolo3d6a21d2020-09-04 07:34:24 -0700355 export CONFIG_SADIS="external"
356 export BBSIM_CFG="configs/bbsim-sadis-dt.yaml"
Andy Bavier8b118b72020-04-28 12:59:30 -0700357
Matteo Scandolof72f4d12020-12-14 09:53:28 -1000358 if [[ "${gerritProject}" == voltha-helm-charts ]]; then
Andrea Campanellae8e2e012021-01-22 10:59:07 +0100359 export EXTRA_HELM_FLAGS+="--set global.image_tag=null "
Matteo Scandolof72f4d12020-12-14 09:53:28 -1000360 fi
361
Matteo Scandolobafd4f02020-12-09 12:14:55 -0800362 # start logging
363 mkdir -p $WORKSPACE/dt
364 _TAG=kail-dt kail -n voltha -n default > $WORKSPACE/dt/onos-voltha-combined.log &
365
Andy Bavier8b118b72020-04-28 12:59:30 -0700366 DEPLOY_K8S=n ./voltha up
367
368 mkdir -p $ROBOT_LOGS_DIR
Andy Bavierd9870042020-06-23 13:16:47 -0700369 export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
Andy Bavier8b118b72020-04-28 12:59:30 -0700370
371 # By default, all tests tagged 'sanityDt' are run. This covers basic functionality
372 # like running through the DT workflow for a single subscriber.
373 export TARGET=sanity-kind-dt
374
375 # If the Gerrit comment contains a line with "functional tests" then run the full
376 # functional test suite. This covers tests tagged either 'sanityDt' or 'functionalDt'.
377 # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
378 REGEX="functional tests"
379 if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
380 TARGET=functional-single-kind-dt
381 fi
382
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700383 make -C $WORKSPACE/voltha-system-tests \$TARGET || true
Matteo Scandolobafd4f02020-12-09 12:14:55 -0800384
385 # stop logging
386 P_IDS="$(ps e -ww -A | grep "_TAG=kail-dt" | grep -v grep | awk '{print $1}')"
387 if [ -n "$P_IDS" ]; then
388 echo $P_IDS
389 for P_ID in $P_IDS; do
390 kill -9 $P_ID
391 done
392 fi
393
394 # get pods information
395 kubectl get pods -o wide > $WORKSPACE/dt/pods.txt || true
396 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee $WORKSPACE/dt/pod-images.txt || true
397 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee $WORKSPACE/dt/pod-imagesId.txt || true
Kailashaad71012019-08-27 10:36:53 -0700398 '''
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700399 }
Kailashaad71012019-08-27 10:36:53 -0700400 }
401 }
Matteo Scandolo294133a2020-09-04 11:19:43 -0700402
403 stage('TT workflow') {
404 environment {
405 ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/TTWorkflow"
406 }
407 steps {
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700408 timeout(time: 15, unit: 'MINUTES') {
409 sh '''
410 cd $WORKSPACE/kind-voltha/
411 source $NAME-env.sh
412 if [ "${branch}" != "master" ]; then
413 echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
414 source "$WORKSPACE/kind-voltha/releases/${branch}"
415 else
416 echo "on master, using default settings for kind-voltha"
417 fi
418 WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down
Matteo Scandolo294133a2020-09-04 11:19:43 -0700419
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700420 # Workflow-specific flags
421 export WITH_RADIUS=no
422 export WITH_EAPOL=no
423 export WITH_DHCP=yes
424 export WITH_IGMP=yes
425 export CONFIG_SADIS="external"
426 export BBSIM_CFG="configs/bbsim-sadis-tt.yaml"
Matteo Scandolo294133a2020-09-04 11:19:43 -0700427
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700428 if [[ "${gerritProject}" == voltha-helm-charts ]]; then
429 export EXTRA_HELM_FLAGS+="--set global.image_tag=null "
430 fi
Matteo Scandolof72f4d12020-12-14 09:53:28 -1000431
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700432 # start logging
433 mkdir -p $WORKSPACE/tt
434 _TAG=kail-tt kail -n voltha -n default > $WORKSPACE/tt/onos-voltha-combined.log &
Matteo Scandolobafd4f02020-12-09 12:14:55 -0800435
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700436 DEPLOY_K8S=n ./voltha up
Matteo Scandolo294133a2020-09-04 11:19:43 -0700437
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700438 mkdir -p $ROBOT_LOGS_DIR
439 export ROBOT_MISC_ARGS="-d $ROBOT_LOGS_DIR -e PowerSwitch"
Matteo Scandolo294133a2020-09-04 11:19:43 -0700440
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700441 # By default, all tests tagged 'sanityTt' are run. This covers basic functionality
442 # like running through the TT workflow for a single subscriber.
443 export TARGET=sanity-kind-tt
Matteo Scandolo294133a2020-09-04 11:19:43 -0700444
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700445 # If the Gerrit comment contains a line with "functional tests" then run the full
446 # functional test suite. This covers tests tagged either 'sanityTt' or 'functionalTt'.
447 # Note: Gerrit comment text will be prefixed by "Patch set n:" and a blank line
448 REGEX="functional tests"
449 if [[ "$GERRIT_EVENT_COMMENT_TEXT" =~ \$REGEX ]]; then
450 TARGET=functional-single-kind-tt
451 fi
Matteo Scandolo294133a2020-09-04 11:19:43 -0700452
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700453 make -C $WORKSPACE/voltha-system-tests \$TARGET || true
Matteo Scandolobafd4f02020-12-09 12:14:55 -0800454
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700455 # stop logging
456 P_IDS="$(ps e -ww -A | grep "_TAG=kail-att" | grep -v grep | awk '{print $1}')"
457 if [ -n "$P_IDS" ]; then
458 echo $P_IDS
459 for P_ID in $P_IDS; do
460 kill -9 $P_ID
461 done
462 fi
Matteo Scandolobafd4f02020-12-09 12:14:55 -0800463
Matteo Scandoloe4abf852021-05-18 09:12:11 -0700464 # get pods information
465 kubectl get pods -o wide > $WORKSPACE/tt/pods.txt || true
466 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee $WORKSPACE/tt/pod-images.txt || true
467 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee $WORKSPACE/tt/pod-imagesId.txt || true
468 '''
469 }
Matteo Scandolo294133a2020-09-04 11:19:43 -0700470 }
471 }
Kailashaad71012019-08-27 10:36:53 -0700472 }
473
474 post {
475 always {
476 sh '''
Matteo Scandolo7eba41c2020-12-15 08:59:36 -1000477
478 # get pods information
Matteo Scandolo52a4cd92021-01-25 10:17:44 -0800479 kubectl get pods -o wide --all-namespaces
Matteo Scandolo7eba41c2020-12-15 08:59:36 -1000480 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}"
Matteo Scandolo52a4cd92021-01-25 10:17:44 -0800481 helm ls --all-namespaces
Matteo Scandolo7eba41c2020-12-15 08:59:36 -1000482
Andy Bavier07615f92019-10-03 12:31:18 -0700483 set +e
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700484 cp $WORKSPACE/kind-voltha/install-$NAME.log $WORKSPACE/
Andy Bavier4af02722020-01-15 10:24:24 -0700485
486 sync
Matteo Scandolo9aae4952020-09-14 13:05:53 -0700487 md5sum $WORKSPACE/kind-voltha/bin/voltctl
Andy Bavier4af02722020-01-15 10:24:24 -0700488
489 ## Pull out errors from log files
490 extract_errors_go() {
491 echo
492 echo "Error summary for $1:"
493 grep $1 $WORKSPACE/onos-voltha-combined.log | grep '"level":"error"' | cut -d ' ' -f 2- | jq -r '.msg'
494 echo
495 }
496
497 extract_errors_python() {
498 echo
499 echo "Error summary for $1:"
500 grep $1 $WORKSPACE/onos-voltha-combined.log | grep 'ERROR' | cut -d ' ' -f 2-
501 echo
502 }
503
Matteo Scandolo7eba41c2020-12-15 08:59:36 -1000504 extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log || true
505 extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log || true
506 extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log || true
507 extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log || true
Andy Bavier4af02722020-01-15 10:24:24 -0700508
Matteo Scandolo7eba41c2020-12-15 08:59:36 -1000509 gzip $WORKSPACE/att/onos-voltha-combined.log || true
510 gzip $WORKSPACE/dt/onos-voltha-combined.log || true
511 gzip $WORKSPACE/tt/onos-voltha-combined.log || true
512
Kailashaad71012019-08-27 10:36:53 -0700513 '''
514 step([$class: 'RobotPublisher',
515 disableArchiveOutput: false,
Andy Bavier8b118b72020-04-28 12:59:30 -0700516 logFileName: 'RobotLogs/*/log*.html',
Kailashaad71012019-08-27 10:36:53 -0700517 otherFiles: '',
Andy Bavier8b118b72020-04-28 12:59:30 -0700518 outputFileName: 'RobotLogs/*/output*.xml',
Kailashaad71012019-08-27 10:36:53 -0700519 outputPath: '.',
Andy Bavier8b118b72020-04-28 12:59:30 -0700520 passThreshold: 100,
521 reportFileName: 'RobotLogs/*/report*.html',
Kailashaad71012019-08-27 10:36:53 -0700522 unstableThreshold: 0]);
Matteo Scandolobafd4f02020-12-09 12:14:55 -0800523 archiveArtifacts artifacts: '*.log,**/*.log,**/*.gz,*.gz'
Kailashaad71012019-08-27 10:36:53 -0700524 }
525 }
526}