blob: e074f35e4a194dfef31fd3524a7159c8f1a1030a [file] [log] [blame]
Zack Williams9d68aa32018-07-12 11:50:37 -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// chart-api-test-helm.groovy
16// Checks functionality of the helm-chart, without overriding the version/tag used
17
Zack Williams9d68aa32018-07-12 11:50:37 -070018pipeline {
19
Zack Williamsfd87d652018-07-12 14:21:12 -070020 /* no label, executor is determined by JJB */
21 agent {
22 label "${params.executorNode}"
23 }
Zack Williams9d68aa32018-07-12 11:50:37 -070024
25 stages {
26
27 stage('repo') {
28 steps {
29 checkout(changelog: false, \
30 poll: false,
31 scm: [$class: 'RepoScm', \
32 manifestRepositoryUrl: "${params.manifestUrl}", \
33 manifestBranch: "${params.manifestBranch}", \
34 currentBranch: true, \
35 destinationDir: 'cord', \
36 forceSync: true,
37 resetFirst: true, \
38 quiet: true, \
39 jobs: 4, \
40 showAllChanges: true] \
41 )
42 }
43 }
44
Zack Williams9d68aa32018-07-12 11:50:37 -070045 stage('minikube') {
46 steps {
47 /* see https://github.com/kubernetes/minikube/#linux-continuous-integration-without-vm-support */
48 sh '''
49 export MINIKUBE_WANTUPDATENOTIFICATION=false
50 export MINIKUBE_WANTREPORTERRORPROMPT=false
51 export CHANGE_MINIKUBE_NONE_USER=true
52 export MINIKUBE_HOME=$HOME
53 mkdir -p $HOME/.kube || true
54 touch $HOME/.kube/config
55 export KUBECONFIG=$HOME/.kube/config
56 sudo -E /usr/bin/minikube start --vm-driver=none
57 '''
58 script {
59 timeout(3) {
60 waitUntil {
61 sleep 5
62 def kc_ret = sh script: "kubectl get po", returnStatus: true
63 return (kc_ret == 0);
64 }
65 }
66 }
67 }
68 }
69
70 stage('helm') {
71 steps {
72 sh '''
73 helm init
74 sleep 60
75 helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
76 '''
77 }
78 }
79
Zack Williamsa26fc9d2018-09-18 16:49:01 -070080 stage('cord-kafka') {
81 steps {
82 sh '''
83 #!/usr/bin/env bash
84 set -eu -o pipefail
85
86 pushd cord/helm-charts
87 helm install -f examples/kafka-single.yaml --version 0.8.8 -n cord-kafka incubator/kafka
Zack Williams91cecd22018-09-26 10:59:44 -070088 ./scripts/wait_for_pods.sh
Zack Williamsa26fc9d2018-09-18 16:49:01 -070089
90 popd
91 '''
92 }
93 }
94
Zack Williams91cecd22018-09-26 10:59:44 -070095 stage('install/test att-workflow') {
96 steps {
97 sh """
98 #!/usr/bin/env bash
99 set -eu -o pipefail
100
101 helm_install_args='-f examples/api-test-values.yaml'
102
103 pushd cord/helm-charts
104
105 helm dep up xos-core
106 helm install \${helm_install_args} xos-core -n xos-core
107
108 helm dep update xos-profiles/att-workflow
109 helm install \${helm_install_args} xos-profiles/att-workflow -n att-workflow
110
111 # wait for services to load
112 PODS_TIMEOUT=900 ./scripts/wait_for_pods.sh
113
114 echo "# Checking helm deployments"
115 kubectl get pods
116
117 for hchart in \$(helm list -q);
118 do
119 echo "## 'helm status' for chart: \${hchart} ##"
120 helm status "\${hchart}"
121 done
122
123 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
124
125 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosapitests.xtarget
126 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosserviceapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosserviceapitests.xtarget
127 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xoslibrary.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xoslibrary.xtarget
128 docker exec -i \$CORE_CONTAINER /bin/bash -c "xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosapitests.xtarget /opt/xos/core/models/core.xproto" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/XOSCoreAPITests.robot
129
130 export testname=_service_api.robot
131 export library=_library.robot
132
133 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
134 echo \$SERVICES
135
136 for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosserviceapitests.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$testname; done
137
138 for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xoslibrary.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$library; done
139
140 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
141 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
142 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
143
144 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
145 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
146 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
147 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
148 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
149 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
150
151 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
152 ## Run CORE API Tests
153 pybot -d Log -T XOSCoreAPITests.robot || true
154 ## Run services API Tests
155 for i in \$SERVICES; do bash -c "pybot -d Log -T -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
156
157 popd
158
159 helm delete --purge att-workflow
160 helm delete --purge xos-core
161 """
162 }
163 }
164
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700165 stage('install/test rcord-lite') {
Zack Williams9d68aa32018-07-12 11:50:37 -0700166 steps {
167 sh """
168 #!/usr/bin/env bash
169 set -eu -o pipefail
170
171 helm_install_args='-f examples/api-test-values.yaml'
Zack Williams9d68aa32018-07-12 11:50:37 -0700172
173 pushd cord/helm-charts
174
175 helm dep up xos-core
176 helm install \${helm_install_args} xos-core -n xos-core
177
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700178 helm dep update xos-profiles/rcord-lite
179 helm install \${helm_install_args} xos-profiles/rcord-lite -n rcord-lite
Zack Williams9d68aa32018-07-12 11:50:37 -0700180
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700181 # wait for services to load
Zack Williams91cecd22018-09-26 10:59:44 -0700182 PODS_TIMEOUT=900 ./scripts/wait_for_pods.sh
Zack Williams9d68aa32018-07-12 11:50:37 -0700183
184 echo "# Checking helm deployments"
185 kubectl get pods
Zack Williams9d68aa32018-07-12 11:50:37 -0700186
187 for hchart in \$(helm list -q);
188 do
189 echo "## 'helm status' for chart: \${hchart} ##"
190 helm status "\${hchart}"
191 done
192
Zack Williamsfd87d652018-07-12 14:21:12 -0700193 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
Zack Williams9d68aa32018-07-12 11:50:37 -0700194
Zack Williamsfd87d652018-07-12 14:21:12 -0700195 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosapitests.xtarget
196 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosserviceapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosserviceapitests.xtarget
197 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xoslibrary.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xoslibrary.xtarget
198 docker exec -i \$CORE_CONTAINER /bin/bash -c "xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosapitests.xtarget /opt/xos/core/models/core.xproto" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/XOSCoreAPITests.robot
Zack Williams9d68aa32018-07-12 11:50:37 -0700199
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700200 export testname=_service_api.robot
201 export library=_library.robot
Zack Williams9d68aa32018-07-12 11:50:37 -0700202
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700203 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
204 echo \$SERVICES
Zack Williams9d68aa32018-07-12 11:50:37 -0700205
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700206 for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosserviceapitests.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$testname; done
Zack Williamsfd87d652018-07-12 14:21:12 -0700207
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700208 for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xoslibrary.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$library; done
Zack Williams9d68aa32018-07-12 11:50:37 -0700209
Zack Williamsfd87d652018-07-12 14:21:12 -0700210 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
211 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
212 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
Zack Williams9d68aa32018-07-12 11:50:37 -0700213
Zack Williamsfd87d652018-07-12 14:21:12 -0700214 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
215 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
216 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
217 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
218 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
219 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
Zack Williams9d68aa32018-07-12 11:50:37 -0700220
Zack Williamsfd87d652018-07-12 14:21:12 -0700221 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700222 ## Run CORE API Tests
Kailash Khalasi07c97a42018-08-06 12:15:43 -0700223 pybot -d Log -T XOSCoreAPITests.robot || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700224 ## Run Rcord-lite services API Tests
Kailash Khalasi07c97a42018-08-06 12:15:43 -0700225 for i in \$SERVICES; do bash -c "pybot -d Log -T -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Zack Williamsfd87d652018-07-12 14:21:12 -0700226
227 popd
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700228
229 helm delete --purge rcord-lite
230 helm delete --purge xos-core
Zack Williamsfd87d652018-07-12 14:21:12 -0700231 """
232 }
Zack Williams9d68aa32018-07-12 11:50:37 -0700233 }
Zack Williamsfd87d652018-07-12 14:21:12 -0700234
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700235 stage('install/test mcord') {
Zack Williamsfd87d652018-07-12 14:21:12 -0700236 steps {
237 sh """
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700238 #!/usr/bin/env bash
239 set -eu -o pipefail
Zack Williamsfd87d652018-07-12 14:21:12 -0700240
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700241 helm_install_args='-f examples/api-test-values.yaml'
242
243 pushd cord/helm-charts
244
245 helm dep up xos-core
246 helm install \${helm_install_args} xos-core -n xos-core
247
248 helm dep update xos-profiles/base-openstack
249 helm dep update xos-profiles/mcord
250 helm install \${helm_install_args} xos-profiles/base-openstack -n base-openstack
251 helm install \${helm_install_args} xos-profiles/mcord -n mcord
252
253 # wait for services to load
Zack Williams91cecd22018-09-26 10:59:44 -0700254 PODS_TIMEOUT=900 ./scripts/wait_for_pods.sh
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700255
256 echo "# Checking helm deployments"
257 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700258
259 for hchart in \$(helm list -q);
260 do
261 echo "## 'helm status' for chart: \${hchart} ##"
262 helm status "\${hchart}"
263 done
264
265 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
266
267 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosapitests.xtarget
268 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosserviceapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosserviceapitests.xtarget
269 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xoslibrary.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xoslibrary.xtarget
270 docker exec -i \$CORE_CONTAINER /bin/bash -c "xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosapitests.xtarget /opt/xos/core/models/core.xproto" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/XOSCoreAPITests.robot
271
272 export testname=_service_api.robot
273 export library=_library.robot
274
275 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
276 echo \$SERVICES
277
278 for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosserviceapitests.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$testname; done
279
280 for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xoslibrary.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$library; done
281
282 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
283 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
284 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
285
286 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
287 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
288
289 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
290 ## Run mcord services API Tests
Kailash Khalasi07c97a42018-08-06 12:15:43 -0700291 for i in \$SERVICES; do bash -c "pybot -d Log -T -e ProgranServiceInstance -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700292
293 popd
294
295 helm delete --purge base-openstack
296 helm delete --purge mcord
297 helm delete --purge xos-core
298 """
Zack Williamsfd87d652018-07-12 14:21:12 -0700299 }
300 }
301
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700302 stage('install/test simpleexampleservice') {
303 steps {
304 sh """
305 #!/usr/bin/env bash
306 set -eu -o pipefail
307
308 helm_install_args='-f examples/api-test-values.yaml'
309
310 pushd cord/helm-charts
311
312 helm dep up xos-core
313 helm install \${helm_install_args} xos-core -n xos-core
314
315 helm dep update xos-profiles/base-kubernetes
316 helm dep update xos-profiles/demo-simpleexampleservice
317 helm install \${helm_install_args} xos-profiles/base-kubernetes -n base-kubernetes
318 helm install \${helm_install_args} xos-profiles/demo-simpleexampleservice -n demo-simpleexampleservice
319
320 # wait for services to load
Zack Williams91cecd22018-09-26 10:59:44 -0700321 PODS_TIMEOUT=900 ./scripts/wait_for_pods.sh
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700322
323 echo "# Checking helm deployments"
324 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700325
326 for hchart in \$(helm list -q);
327 do
328 echo "## 'helm status' for chart: \${hchart} ##"
329 helm status "\${hchart}"
330 done
331
332 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
333
334 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosapitests.xtarget
335 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosserviceapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosserviceapitests.xtarget
336 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xoslibrary.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xoslibrary.xtarget
337 docker exec -i \$CORE_CONTAINER /bin/bash -c "xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosapitests.xtarget /opt/xos/core/models/core.xproto" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/XOSCoreAPITests.robot
338
339 export testname=_service_api.robot
340 export library=_library.robot
341
342 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
343 echo \$SERVICES
344
345 for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosserviceapitests.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$testname; done
346
347 for i in \$SERVICES; do bash -c "docker exec -i \$CORE_CONTAINER /bin/bash -c 'xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xoslibrary.xtarget /opt/xos/dynamic_services/\$i/\$i.xproto /opt/xos/core/models/core.xproto'" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/\$i\$library; done
348
349 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
350 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
351 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
352
353 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
354 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
355
356 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
357 ## Run kubernetes-base services API Tests
Kailash Khalasi07c97a42018-08-06 12:15:43 -0700358 for i in \$SERVICES; do bash -c "pybot -d Log -T -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700359
360 popd
361
362 helm delete --purge base-kubernetes
363 helm delete --purge demo-simpleexampleservice
364 helm delete --purge xos-core
365 """
366 }
367 }
368
369 stage('install/test hippie-oss') {
370 steps {
371 sh """
372 #!/usr/bin/env bash
373 set -eu -o pipefail
374
375 helm_install_args='-f examples/api-test-values.yaml'
376
377 pushd cord/helm-charts
378
379 helm dep up xos-core
380 helm install \${helm_install_args} xos-core -n xos-core
381
382 helm dep update xos-services/hippie-oss
383 helm install \${helm_install_args} xos-services/hippie-oss -n hippie-oss
384
385 # wait for services to load
Zack Williams91cecd22018-09-26 10:59:44 -0700386 PODS_TIMEOUT=900 ./scripts/wait_for_pods.sh
387
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700388 echo "# Checking helm deployments"
389 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700390
391 for hchart in \$(helm list -q);
392 do
393 echo "## 'helm status' for chart: \${hchart} ##"
394 helm status "\${hchart}"
395 done
396
397 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
398
399 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosapitests.xtarget
400 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xosserviceapitests.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xosserviceapitests.xtarget
401 docker cp $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/targets/xoslibrary.xtarget \$CORE_CONTAINER:/opt/xos/lib/xos-genx/xosgenx/targets/xoslibrary.xtarget
402 docker exec -i \$CORE_CONTAINER /bin/bash -c "xosgenx --target /opt/xos/lib/xos-genx/xosgenx/targets/./xosapitests.xtarget /opt/xos/core/models/core.xproto" > $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/XOSCoreAPITests.robot
403
404 export testname=_service_api.robot
405 export library=_library.robot
406
407 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
408 echo \$SERVICES
409
410 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
411 ## Run hippie-oss services API Tests
Kailash Khalasi07c97a42018-08-06 12:15:43 -0700412 for i in \$SERVICES; do bash -c "pybot -d Log -T -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700413
414 popd
415
416 helm delete --purge hippie-oss
417 helm delete --purge xos-core
418 """
419 }
420 }
Zack Williamsfd87d652018-07-12 14:21:12 -0700421 }
422 post {
423 always {
424 sh '''
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700425 # copy robot logs
426 if [ -d RobotLogs ]; then rm -r RobotLogs; fi; mkdir RobotLogs
427 cp -r $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/Log/*ml ./RobotLogs
Kailash Khalasiecb4eb62018-07-31 15:20:19 -0700428
Zack Williamsfd87d652018-07-12 14:21:12 -0700429 kubectl get pods --all-namespaces
430
431 echo "# removing helm deployments"
Zack Williamsfd87d652018-07-12 14:21:12 -0700432 for hchart in \$(helm list -q);
433 do
434 echo "## Purging chart: \${hchart} ##"
435 helm delete --purge "\${hchart}"
436 done
437
Zack Williamsf8b356c2018-07-17 17:01:27 -0700438 sudo minikube delete
Zack Williamsfd87d652018-07-12 14:21:12 -0700439 '''
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700440 step([$class: 'RobotPublisher',
441 disableArchiveOutput: false,
442 logFileName: 'RobotLogs/log*.html',
443 otherFiles: '',
444 outputFileName: 'RobotLogs/output*.xml',
445 outputPath: '.',
446 passThreshold: 100,
447 reportFileName: 'RobotLogs/report*.html',
448 unstableThreshold: 0]);
449 step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "kailash@opennetworking.org", sendToIndividuals: false])
Zack Williamsfd87d652018-07-12 14:21:12 -0700450 }
451 }
Zack Williams9d68aa32018-07-12 11:50:37 -0700452}