blob: 22f85d50a80c32bd563ad5f1dcdea4a35997e41d [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
Luca Prete2ae90132018-12-13 17:14:01 -080088
89 git clone https://gerrit.opencord.org/helm-repo-tools
90 ./helm-repo-tools/wait_for_pods.sh
Zack Williamsa26fc9d2018-09-18 16:49:01 -070091
92 popd
93 '''
94 }
95 }
96
Zack Williams91cecd22018-09-26 10:59:44 -070097 stage('install/test att-workflow') {
Zack Williams2e515f32018-09-27 23:03:07 -070098 when {
99 expression {
100 params.manifestBranch ==~ 'master'
101 }
102 }
Zack Williams91cecd22018-09-26 10:59:44 -0700103 steps {
104 sh """
105 #!/usr/bin/env bash
106 set -eu -o pipefail
107
108 helm_install_args='-f examples/api-test-values.yaml'
109
110 pushd cord/helm-charts
111
112 helm dep up xos-core
113 helm install \${helm_install_args} xos-core -n xos-core
114
Kailash Khalasi16e14242018-12-13 17:34:12 -0800115 helm dep update xos-services/rcord
116 helm install \${helm_install_args} xos-services/rcord -n rcord
117 helm dep update xos-services/onos-service
118 helm install \${helm_install_args} xos-services/onos-service -n onos
119 helm dep update xos-services/fabric
120 helm install \${helm_install_args} xos-services/fabric -n fabric
121 helm dep update xos-services/fabric-crossconnect
122 helm install \${helm_install_args} xos-services/fabric-crossconnect -n fabric-crossconnect
123 helm install \${helm_install_args} sadis-server -n sadis-server
124
Kailash Khalasi28323552018-12-13 15:03:22 -0800125 helm dep update workflows/att-workflow
126 helm install \${helm_install_args} workflows/att-workflow -n att-workflow
Zack Williams91cecd22018-09-26 10:59:44 -0700127
128 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800129 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Zack Williams91cecd22018-09-26 10:59:44 -0700130
131 echo "# Checking helm deployments"
132 kubectl get pods
133
134 for hchart in \$(helm list -q);
135 do
136 echo "## 'helm status' for chart: \${hchart} ##"
137 helm status "\${hchart}"
138 done
139
Zack Williams2e515f32018-09-27 23:03:07 -0700140 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
141 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Zack Williams91cecd22018-09-26 10:59:44 -0700142
143 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
144 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
145 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
146 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
147
148 export testname=_service_api.robot
149 export library=_library.robot
150
151 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
152 echo \$SERVICES
153
154 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
155
156 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
157
Zack Williams91cecd22018-09-26 10:59:44 -0700158 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
159 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
160
161 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
162 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
163 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
164 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
165 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
166 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
167
Kailashf7106c32018-12-12 10:08:20 -0800168 timeout 300 bash -c "until http -a admin@opencord.org:letmein GET http://'\$XOS_CHAMELEON\':9101/xosapi/v1/core/sites |jq '.items[0].name'|grep -q mysite; do echo 'Waiting for API To be up'; sleep 10; done"
169
Zack Williams91cecd22018-09-26 10:59:44 -0700170 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
171 ## Run CORE API Tests
Kailashf14606e2018-12-06 14:11:11 -0800172 robot -d Log -T XOSCoreAPITests.robot || true
Zack Williams91cecd22018-09-26 10:59:44 -0700173 ## Run services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800174 for i in \$SERVICES; do bash -c "robot -d Log -T -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Zack Williams91cecd22018-09-26 10:59:44 -0700175
176 popd
177
178 helm delete --purge att-workflow
179 helm delete --purge xos-core
180 """
181 }
182 }
183
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700184 stage('install/test rcord-lite') {
Zack Williams9d68aa32018-07-12 11:50:37 -0700185 steps {
186 sh """
187 #!/usr/bin/env bash
188 set -eu -o pipefail
189
190 helm_install_args='-f examples/api-test-values.yaml'
Zack Williams9d68aa32018-07-12 11:50:37 -0700191
192 pushd cord/helm-charts
193
194 helm dep up xos-core
195 helm install \${helm_install_args} xos-core -n xos-core
196
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700197 helm dep update xos-profiles/rcord-lite
198 helm install \${helm_install_args} xos-profiles/rcord-lite -n rcord-lite
Zack Williams9d68aa32018-07-12 11:50:37 -0700199
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700200 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800201 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Zack Williams9d68aa32018-07-12 11:50:37 -0700202
203 echo "# Checking helm deployments"
204 kubectl get pods
Zack Williams9d68aa32018-07-12 11:50:37 -0700205
206 for hchart in \$(helm list -q);
207 do
208 echo "## 'helm status' for chart: \${hchart} ##"
209 helm status "\${hchart}"
210 done
211
Zack Williams2e515f32018-09-27 23:03:07 -0700212 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
213 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Zack Williams9d68aa32018-07-12 11:50:37 -0700214
Zack Williamsfd87d652018-07-12 14:21:12 -0700215 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
216 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
217 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
218 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 -0700219
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700220 export testname=_service_api.robot
221 export library=_library.robot
Zack Williams9d68aa32018-07-12 11:50:37 -0700222
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700223 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
224 echo \$SERVICES
Zack Williams9d68aa32018-07-12 11:50:37 -0700225
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700226 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 -0700227
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700228 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 -0700229
Zack Williamsfd87d652018-07-12 14:21:12 -0700230 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
231 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 -0700232
Zack Williamsfd87d652018-07-12 14:21:12 -0700233 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
234 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
235 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
236 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
237 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
238 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
Kailashf7106c32018-12-12 10:08:20 -0800239 timeout 300 bash -c "until http -a admin@opencord.org:letmein GET http://'\$XOS_CHAMELEON\':9101/xosapi/v1/core/sites |jq '.items[0].name'|grep -q mysite; do echo 'Waiting for API To be up'; sleep 10; done"
Zack Williams9d68aa32018-07-12 11:50:37 -0700240
Zack Williamsfd87d652018-07-12 14:21:12 -0700241 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700242 ## Run CORE API Tests
Kailashf14606e2018-12-06 14:11:11 -0800243 robot -d Log -T XOSCoreAPITests.robot || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700244 ## Run Rcord-lite services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800245 for i in \$SERVICES; do bash -c "robot -d Log -T -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Zack Williamsfd87d652018-07-12 14:21:12 -0700246
247 popd
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700248
249 helm delete --purge rcord-lite
250 helm delete --purge xos-core
Zack Williamsfd87d652018-07-12 14:21:12 -0700251 """
252 }
Zack Williams9d68aa32018-07-12 11:50:37 -0700253 }
Zack Williamsfd87d652018-07-12 14:21:12 -0700254
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700255 stage('install/test mcord') {
Zack Williamsfd87d652018-07-12 14:21:12 -0700256 steps {
257 sh """
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700258 #!/usr/bin/env bash
259 set -eu -o pipefail
Zack Williamsfd87d652018-07-12 14:21:12 -0700260
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700261 helm_install_args='-f examples/api-test-values.yaml'
262
263 pushd cord/helm-charts
264
265 helm dep up xos-core
266 helm install \${helm_install_args} xos-core -n xos-core
267
268 helm dep update xos-profiles/base-openstack
269 helm dep update xos-profiles/mcord
270 helm install \${helm_install_args} xos-profiles/base-openstack -n base-openstack
271 helm install \${helm_install_args} xos-profiles/mcord -n mcord
272
273 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800274 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700275
276 echo "# Checking helm deployments"
277 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700278
279 for hchart in \$(helm list -q);
280 do
281 echo "## 'helm status' for chart: \${hchart} ##"
282 helm status "\${hchart}"
283 done
284
Zack Williams2e515f32018-09-27 23:03:07 -0700285 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
286 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700287
288 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
289 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
290 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
291 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
292
293 export testname=_service_api.robot
294 export library=_library.robot
295
296 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
297 echo \$SERVICES
298
299 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
300
301 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
302
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700303 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
304 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
305
306 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
307 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
Kailashf7106c32018-12-12 10:08:20 -0800308 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
309 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
310 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
311 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
312 timeout 300 bash -c "until http -a admin@opencord.org:letmein GET http://'\$XOS_CHAMELEON\':9101/xosapi/v1/core/sites |jq '.items[0].name'|grep -q mysite; do echo 'Waiting for API To be up'; sleep 10; done"
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700313
314 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
315 ## Run mcord services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800316 for i in \$SERVICES; do bash -c "robot -d Log -T -e ProgranServiceInstance -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700317
318 popd
319
320 helm delete --purge base-openstack
321 helm delete --purge mcord
322 helm delete --purge xos-core
323 """
Zack Williamsfd87d652018-07-12 14:21:12 -0700324 }
325 }
326
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700327 stage('install/test simpleexampleservice') {
328 steps {
329 sh """
330 #!/usr/bin/env bash
331 set -eu -o pipefail
332
333 helm_install_args='-f examples/api-test-values.yaml'
334
335 pushd cord/helm-charts
336
337 helm dep up xos-core
338 helm install \${helm_install_args} xos-core -n xos-core
339
340 helm dep update xos-profiles/base-kubernetes
341 helm dep update xos-profiles/demo-simpleexampleservice
342 helm install \${helm_install_args} xos-profiles/base-kubernetes -n base-kubernetes
343 helm install \${helm_install_args} xos-profiles/demo-simpleexampleservice -n demo-simpleexampleservice
344
345 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800346 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700347
348 echo "# Checking helm deployments"
349 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700350
351 for hchart in \$(helm list -q);
352 do
353 echo "## 'helm status' for chart: \${hchart} ##"
354 helm status "\${hchart}"
355 done
356
Zack Williams2e515f32018-09-27 23:03:07 -0700357 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
358 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700359
360 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
361 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
362 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
363 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
364
365 export testname=_service_api.robot
366 export library=_library.robot
367
368 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
369 echo \$SERVICES
370
371 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
372
373 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
374
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700375 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
376 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
377
378 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
379 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
Kailashf7106c32018-12-12 10:08:20 -0800380 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
381 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
382 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
383 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
384 timeout 300 bash -c "until http -a admin@opencord.org:letmein GET http://'\$XOS_CHAMELEON\':9101/xosapi/v1/core/sites |jq '.items[0].name'|grep -q mysite; do echo 'Waiting for API To be up'; sleep 10; done"
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700385
Kailashe2a3bfb2018-12-12 14:12:15 -0800386 # run e2e synchronizer test
387 helm test demo-simpleexampleservice
388
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700389 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
390 ## Run kubernetes-base services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800391 for i in \$SERVICES; do bash -c "robot -d Log -T -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700392
393 popd
394
395 helm delete --purge base-kubernetes
396 helm delete --purge demo-simpleexampleservice
397 helm delete --purge xos-core
398 """
399 }
400 }
401
402 stage('install/test hippie-oss') {
403 steps {
404 sh """
405 #!/usr/bin/env bash
406 set -eu -o pipefail
407
408 helm_install_args='-f examples/api-test-values.yaml'
409
410 pushd cord/helm-charts
411
412 helm dep up xos-core
413 helm install \${helm_install_args} xos-core -n xos-core
414
415 helm dep update xos-services/hippie-oss
416 helm install \${helm_install_args} xos-services/hippie-oss -n hippie-oss
417
418 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800419 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Zack Williams91cecd22018-09-26 10:59:44 -0700420
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700421 echo "# Checking helm deployments"
422 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700423
424 for hchart in \$(helm list -q);
425 do
426 echo "## 'helm status' for chart: \${hchart} ##"
427 helm status "\${hchart}"
428 done
429
Zack Williams2e515f32018-09-27 23:03:07 -0700430 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
431 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700432
433 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
434 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
435 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
436 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
437
438 export testname=_service_api.robot
439 export library=_library.robot
440
441 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
442 echo \$SERVICES
443
Kailashe2a3bfb2018-12-12 14:12:15 -0800444 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
445
446 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
447
448 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
449 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
450
Kailashf7106c32018-12-12 10:08:20 -0800451 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
452 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
453 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
454 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
455 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
456 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
457 timeout 300 bash -c "until http -a admin@opencord.org:letmein GET http://'\$XOS_CHAMELEON\':9101/xosapi/v1/core/sites |jq '.items[0].name'|grep -q mysite; do echo 'Waiting for API To be up'; sleep 10; done"
458
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700459 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
460 ## Run hippie-oss services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800461 for i in \$SERVICES; do bash -c "robot -d Log -T -v TESTLIBRARY:\$i\$library \$i\$testname"; sleep 2; done || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700462
463 popd
464
465 helm delete --purge hippie-oss
466 helm delete --purge xos-core
467 """
468 }
469 }
Zack Williamsfd87d652018-07-12 14:21:12 -0700470 }
471 post {
472 always {
473 sh '''
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700474 # copy robot logs
475 if [ -d RobotLogs ]; then rm -r RobotLogs; fi; mkdir RobotLogs
476 cp -r $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/Log/*ml ./RobotLogs
Kailash Khalasiecb4eb62018-07-31 15:20:19 -0700477
Zack Williamsfd87d652018-07-12 14:21:12 -0700478 kubectl get pods --all-namespaces
479
480 echo "# removing helm deployments"
Zack Williamsfd87d652018-07-12 14:21:12 -0700481 for hchart in \$(helm list -q);
482 do
483 echo "## Purging chart: \${hchart} ##"
484 helm delete --purge "\${hchart}"
485 done
486
Zack Williamsf8b356c2018-07-17 17:01:27 -0700487 sudo minikube delete
Zack Williamsfd87d652018-07-12 14:21:12 -0700488 '''
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700489 step([$class: 'RobotPublisher',
490 disableArchiveOutput: false,
491 logFileName: 'RobotLogs/log*.html',
492 otherFiles: '',
493 outputFileName: 'RobotLogs/output*.xml',
494 outputPath: '.',
495 passThreshold: 100,
496 reportFileName: 'RobotLogs/report*.html',
497 unstableThreshold: 0]);
498 step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "kailash@opennetworking.org", sendToIndividuals: false])
Zack Williamsfd87d652018-07-12 14:21:12 -0700499 }
500 }
Zack Williams9d68aa32018-07-12 11:50:37 -0700501}