blob: 99a34b0416b85cf6ad8139cd0bb838ab02ba5faa [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 Khalasi28323552018-12-13 15:03:22 -0800115 helm dep update workflows/att-workflow
116 helm install \${helm_install_args} workflows/att-workflow -n att-workflow
Zack Williams91cecd22018-09-26 10:59:44 -0700117
118 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800119 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Zack Williams91cecd22018-09-26 10:59:44 -0700120
121 echo "# Checking helm deployments"
122 kubectl get pods
123
124 for hchart in \$(helm list -q);
125 do
126 echo "## 'helm status' for chart: \${hchart} ##"
127 helm status "\${hchart}"
128 done
129
Zack Williams2e515f32018-09-27 23:03:07 -0700130 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
131 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Zack Williams91cecd22018-09-26 10:59:44 -0700132
133 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
134 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
135 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
136 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
137
138 export testname=_service_api.robot
139 export library=_library.robot
140
141 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
142 echo \$SERVICES
143
144 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
145
146 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
147
Zack Williams91cecd22018-09-26 10:59:44 -0700148 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
149 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
150
151 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
152 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
153 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
154 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
155 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
156 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
157
Kailashf7106c32018-12-12 10:08:20 -0800158 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"
159
Zack Williams91cecd22018-09-26 10:59:44 -0700160 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
161 ## Run CORE API Tests
Kailashf14606e2018-12-06 14:11:11 -0800162 robot -d Log -T XOSCoreAPITests.robot || true
Zack Williams91cecd22018-09-26 10:59:44 -0700163 ## Run services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800164 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 -0700165
166 popd
167
168 helm delete --purge att-workflow
169 helm delete --purge xos-core
170 """
171 }
172 }
173
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700174 stage('install/test rcord-lite') {
Zack Williams9d68aa32018-07-12 11:50:37 -0700175 steps {
176 sh """
177 #!/usr/bin/env bash
178 set -eu -o pipefail
179
180 helm_install_args='-f examples/api-test-values.yaml'
Zack Williams9d68aa32018-07-12 11:50:37 -0700181
182 pushd cord/helm-charts
183
184 helm dep up xos-core
185 helm install \${helm_install_args} xos-core -n xos-core
186
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700187 helm dep update xos-profiles/rcord-lite
188 helm install \${helm_install_args} xos-profiles/rcord-lite -n rcord-lite
Zack Williams9d68aa32018-07-12 11:50:37 -0700189
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700190 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800191 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Zack Williams9d68aa32018-07-12 11:50:37 -0700192
193 echo "# Checking helm deployments"
194 kubectl get pods
Zack Williams9d68aa32018-07-12 11:50:37 -0700195
196 for hchart in \$(helm list -q);
197 do
198 echo "## 'helm status' for chart: \${hchart} ##"
199 helm status "\${hchart}"
200 done
201
Zack Williams2e515f32018-09-27 23:03:07 -0700202 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
203 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Zack Williams9d68aa32018-07-12 11:50:37 -0700204
Zack Williamsfd87d652018-07-12 14:21:12 -0700205 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
206 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
207 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
208 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 -0700209
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700210 export testname=_service_api.robot
211 export library=_library.robot
Zack Williams9d68aa32018-07-12 11:50:37 -0700212
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700213 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
214 echo \$SERVICES
Zack Williams9d68aa32018-07-12 11:50:37 -0700215
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700216 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 -0700217
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700218 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 -0700219
Zack Williamsfd87d652018-07-12 14:21:12 -0700220 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
221 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 -0700222
Zack Williamsfd87d652018-07-12 14:21:12 -0700223 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
224 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
225 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
226 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
227 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
228 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
Kailashf7106c32018-12-12 10:08:20 -0800229 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 -0700230
Zack Williamsfd87d652018-07-12 14:21:12 -0700231 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700232 ## Run CORE API Tests
Kailashf14606e2018-12-06 14:11:11 -0800233 robot -d Log -T XOSCoreAPITests.robot || true
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700234 ## Run Rcord-lite services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800235 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 -0700236
237 popd
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700238
239 helm delete --purge rcord-lite
240 helm delete --purge xos-core
Zack Williamsfd87d652018-07-12 14:21:12 -0700241 """
242 }
Zack Williams9d68aa32018-07-12 11:50:37 -0700243 }
Zack Williamsfd87d652018-07-12 14:21:12 -0700244
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700245 stage('install/test mcord') {
Zack Williamsfd87d652018-07-12 14:21:12 -0700246 steps {
247 sh """
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700248 #!/usr/bin/env bash
249 set -eu -o pipefail
Zack Williamsfd87d652018-07-12 14:21:12 -0700250
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700251 helm_install_args='-f examples/api-test-values.yaml'
252
253 pushd cord/helm-charts
254
255 helm dep up xos-core
256 helm install \${helm_install_args} xos-core -n xos-core
257
258 helm dep update xos-profiles/base-openstack
259 helm dep update xos-profiles/mcord
260 helm install \${helm_install_args} xos-profiles/base-openstack -n base-openstack
261 helm install \${helm_install_args} xos-profiles/mcord -n mcord
262
263 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800264 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700265
266 echo "# Checking helm deployments"
267 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700268
269 for hchart in \$(helm list -q);
270 do
271 echo "## 'helm status' for chart: \${hchart} ##"
272 helm status "\${hchart}"
273 done
274
Zack Williams2e515f32018-09-27 23:03:07 -0700275 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
276 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700277
278 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
279 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
280 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
281 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
282
283 export testname=_service_api.robot
284 export library=_library.robot
285
286 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
287 echo \$SERVICES
288
289 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
290
291 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
292
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700293 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
294 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
295
296 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
297 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
Kailashf7106c32018-12-12 10:08:20 -0800298 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
299 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
300 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
301 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
302 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 -0700303
304 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
305 ## Run mcord services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800306 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 -0700307
308 popd
309
310 helm delete --purge base-openstack
311 helm delete --purge mcord
312 helm delete --purge xos-core
313 """
Zack Williamsfd87d652018-07-12 14:21:12 -0700314 }
315 }
316
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700317 stage('install/test simpleexampleservice') {
318 steps {
319 sh """
320 #!/usr/bin/env bash
321 set -eu -o pipefail
322
323 helm_install_args='-f examples/api-test-values.yaml'
324
325 pushd cord/helm-charts
326
327 helm dep up xos-core
328 helm install \${helm_install_args} xos-core -n xos-core
329
330 helm dep update xos-profiles/base-kubernetes
331 helm dep update xos-profiles/demo-simpleexampleservice
332 helm install \${helm_install_args} xos-profiles/base-kubernetes -n base-kubernetes
333 helm install \${helm_install_args} xos-profiles/demo-simpleexampleservice -n demo-simpleexampleservice
334
335 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800336 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700337
338 echo "# Checking helm deployments"
339 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700340
341 for hchart in \$(helm list -q);
342 do
343 echo "## 'helm status' for chart: \${hchart} ##"
344 helm status "\${hchart}"
345 done
346
Zack Williams2e515f32018-09-27 23:03:07 -0700347 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
348 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700349
350 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
351 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
352 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
353 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
354
355 export testname=_service_api.robot
356 export library=_library.robot
357
358 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
359 echo \$SERVICES
360
361 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
362
363 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
364
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700365 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
366 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
367
368 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
369 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
Kailashf7106c32018-12-12 10:08:20 -0800370 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
371 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
372 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
373 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
374 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 -0700375
Kailashe2a3bfb2018-12-12 14:12:15 -0800376 # run e2e synchronizer test
377 helm test demo-simpleexampleservice
378
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700379 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
380 ## Run kubernetes-base services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800381 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 -0700382
383 popd
384
385 helm delete --purge base-kubernetes
386 helm delete --purge demo-simpleexampleservice
387 helm delete --purge xos-core
388 """
389 }
390 }
391
392 stage('install/test hippie-oss') {
393 steps {
394 sh """
395 #!/usr/bin/env bash
396 set -eu -o pipefail
397
398 helm_install_args='-f examples/api-test-values.yaml'
399
400 pushd cord/helm-charts
401
402 helm dep up xos-core
403 helm install \${helm_install_args} xos-core -n xos-core
404
405 helm dep update xos-services/hippie-oss
406 helm install \${helm_install_args} xos-services/hippie-oss -n hippie-oss
407
408 # wait for services to load
Luca Prete2ae90132018-12-13 17:14:01 -0800409 PODS_TIMEOUT=900 ./helm-repo-tools/wait_for_pods.sh
Zack Williams91cecd22018-09-26 10:59:44 -0700410
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700411 echo "# Checking helm deployments"
412 kubectl get pods
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700413
414 for hchart in \$(helm list -q);
415 do
416 echo "## 'helm status' for chart: \${hchart} ##"
417 helm status "\${hchart}"
418 done
419
Zack Williams2e515f32018-09-27 23:03:07 -0700420 CORE_POD=\$(kubectl get pods | grep "xos-core.*Running" | awk '{print \$1}')
421 CORE_CONTAINER=\$(docker ps | grep k8s_xos-core_\${CORE_POD} | awk '{print \$1}')
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700422
423 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
424 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
425 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
426 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
427
428 export testname=_service_api.robot
429 export library=_library.robot
430
431 SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
432 echo \$SERVICES
433
Kailashe2a3bfb2018-12-12 14:12:15 -0800434 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
435
436 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
437
438 CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
439 XOS_CHAMELEON=\$(docker exec \$CHAM_CONTAINER ip a | grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}\\b" | grep 172)
440
Kailashf7106c32018-12-12 10:08:20 -0800441 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Properties/
442 sed -i \"s/^\\(SERVER_IP = \\).*/\\1\'\$XOS_CHAMELEON\'/\" RestApiProperties.py
443 sed -i \"s/^\\(SERVER_PORT = \\).*/\\1\'9101\'/\" RestApiProperties.py
444 sed -i \"s/^\\(XOS_USER = \\).*/\\1\'admin@opencord.org\'/\" RestApiProperties.py
445 sed -i \"s/^\\(XOS_PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
446 sed -i \"s/^\\(PASSWD = \\).*/\\1\'letmein\'/\" RestApiProperties.py
447 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"
448
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700449 cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
450 ## Run hippie-oss services API Tests
Kailashf14606e2018-12-06 14:11:11 -0800451 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 -0700452
453 popd
454
455 helm delete --purge hippie-oss
456 helm delete --purge xos-core
457 """
458 }
459 }
Zack Williamsfd87d652018-07-12 14:21:12 -0700460 }
461 post {
462 always {
463 sh '''
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700464 # copy robot logs
465 if [ -d RobotLogs ]; then rm -r RobotLogs; fi; mkdir RobotLogs
466 cp -r $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/Log/*ml ./RobotLogs
Kailash Khalasiecb4eb62018-07-31 15:20:19 -0700467
Zack Williamsfd87d652018-07-12 14:21:12 -0700468 kubectl get pods --all-namespaces
469
470 echo "# removing helm deployments"
Zack Williamsfd87d652018-07-12 14:21:12 -0700471 for hchart in \$(helm list -q);
472 do
473 echo "## Purging chart: \${hchart} ##"
474 helm delete --purge "\${hchart}"
475 done
476
Zack Williamsf8b356c2018-07-17 17:01:27 -0700477 sudo minikube delete
Zack Williamsfd87d652018-07-12 14:21:12 -0700478 '''
Kailash Khalasi1c773ed2018-08-01 10:47:59 -0700479 step([$class: 'RobotPublisher',
480 disableArchiveOutput: false,
481 logFileName: 'RobotLogs/log*.html',
482 otherFiles: '',
483 outputFileName: 'RobotLogs/output*.xml',
484 outputPath: '.',
485 passThreshold: 100,
486 reportFileName: 'RobotLogs/report*.html',
487 unstableThreshold: 0]);
488 step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "kailash@opennetworking.org", sendToIndividuals: false])
Zack Williamsfd87d652018-07-12 14:21:12 -0700489 }
490 }
Zack Williams9d68aa32018-07-12 11:50:37 -0700491}