blob: d336952b56fdaa2c2735c67139f8c05bc1d1814d [file] [log] [blame]
Matteo Scandolo51b76302020-02-05 12:07:23 -08001/* voltha-scale-measurements pipeline */
2pipeline {
Matteo Scandolo51b76302020-02-05 12:07:23 -08003 /* no label, executor is determined by JJB */
4 agent {
5 label "${params.buildNode}"
6 }
Shrey Baid00ff5c42020-02-07 15:14:08 -08007 environment {
8 KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
9 VOLTCONFIG="$HOME/.volt/config-minimal"
10 PATH="$WORKSPACE/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
11 TYPE="minimal"
12 FANCY=0
Shrey Baid7cbb06e2020-02-11 17:45:07 -080013 SECONDS=0
Shrey Baid00ff5c42020-02-07 15:14:08 -080014 WITH_SIM_ADAPTERS="n"
15 WITH_RADIUS="y"
16 WITH_BBSIM="y"
Shrey Baid7cbb06e2020-02-11 17:45:07 -080017 VOLTHA_LOG_LEVEL="WARN"
Shrey Baid00ff5c42020-02-07 15:14:08 -080018 CONFIG_SADIS="n"
19 ROBOT_MISC_ARGS="-d $WORKSPACE/RobotLogs -v teardown_device:False"
Shrey Baidb001c712020-02-11 11:12:46 -080020 SSHPASS="karaf"
Shrey Baide7614d02020-02-25 10:26:42 -080021 DEPLOY_K8S="n"
Shrey Baid00ff5c42020-02-07 15:14:08 -080022 }
Matteo Scandolo51b76302020-02-05 12:07:23 -080023 stages {
Shrey Baide7614d02020-02-25 10:26:42 -080024 stage('set-description') {
25 steps {
26 script {
Shrey Baid943e2072020-03-04 10:31:32 -080027 currentBuild.description = "$BUILD_TIMESTAMP"
Shrey Baide7614d02020-02-25 10:26:42 -080028 }
29 }
30 }
Shrey Baidb0447182020-02-27 16:39:35 -080031 stage('cleanup') {
Matteo Scandolo51b76302020-02-05 12:07:23 -080032 steps {
Shrey Baidb0447182020-02-27 16:39:35 -080033 sh '''
Shrey Baid49bf8f62020-03-09 17:52:01 -070034 rm -rf voltha-devices-count.txt voltha-devices-time.txt onos-ports-count.txt onos-ports-time.txt onos-ports-list.txt voltha-devices-list.json onos-ports-time-num.txt voltha-devices-time-num.txt
Matteo Scandolo151e35c2020-02-28 15:45:15 -080035 for hchart in \$(helm list -q | grep -E -v 'docker-registry|cord-kafka|etcd-operator');
36 do
37 echo "Purging chart: \${hchart}"
38 helm delete --purge "\${hchart}"
39 done
Shrey Baidb0447182020-02-27 16:39:35 -080040 bash /home/cord/voltha-scale/wait_for_pods.sh
41 bash /home/cord/voltha-scale/stop_port_forward.sh
42 '''
Matteo Scandolo51b76302020-02-05 12:07:23 -080043 }
44 }
45 stage('start') {
46 steps {
Shrey Baid00ff5c42020-02-07 15:14:08 -080047 sh '''
Matteo Scandolo51b76302020-02-05 12:07:23 -080048 #!/usr/bin/env bash
49 set -euo pipefail
Shrey Baid00ff5c42020-02-07 15:14:08 -080050 '''
51 }
52 }
Shrey Baid00ff5c42020-02-07 15:14:08 -080053 stage('deploy-voltha') {
Matteo Scandolo2fc1dac2020-03-09 08:39:53 -070054 options {
55 timeout(time:10)
56 }
Shrey Baid00ff5c42020-02-07 15:14:08 -080057 steps {
58 sh '''
Matteo Scandoloe69614f2020-03-10 11:35:35 -070059 IFS=: read -r onosRepo onosTag <<< ${onosImg}
60 helm install -n onos onf/onos --set images.onos.repository=${onosRepo} --set images.onos.tag=${onosTag} ${extraHelmFlags}
Shrey Baidb0447182020-02-27 16:39:35 -080061
Matteo Scandoloa2928e72020-03-02 16:38:22 -080062 IFS=: read -r volthaRepo volthaTag <<< ${volthaImg}
Matteo Scandoloe69614f2020-03-10 11:35:35 -070063 IFS=: read -r ofAgentRepo ofAgentTag <<< ${ofAgentImg}
64 helm install -n voltha onf/voltha -f /home/cord/voltha-scale/voltha-values.yaml --set images.voltha.repository=${volthaRepo},images.voltha.tag=${volthaTag},images.ofagent.repository=${ofAgentRepo},images.ofagent.tag=${ofAgentTag} ${extraHelmFlags}
Matteo Scandoloa2928e72020-03-02 16:38:22 -080065
66 IFS=: read -r openoltAdapterRepo openoltAdapterTag <<< ${openoltAdapterImg}
Matteo Scandoloe69614f2020-03-10 11:35:35 -070067 helm install -n openolt onf/voltha-adapter-openolt -f /home/cord/voltha-scale/voltha-values.yaml --set images.adapter_open_olt.repository=${openoltAdapterRepo},images.adapter_open_olt.tag=${openoltAdapterTag} ${extraHelmFlags}
Matteo Scandoloa2928e72020-03-02 16:38:22 -080068
69 IFS=: read -r openonuAdapterRepo openonuAdapterTag <<< ${openonuAdapterImg}
Matteo Scandoloe69614f2020-03-10 11:35:35 -070070 helm install -n openonu onf/voltha-adapter-openonu -f /home/cord/voltha-scale/voltha-values.yaml --set images.adapter_open_olt.repository=${openonuAdapterRepo},images.adapter_open_olt.tag=${openonuAdapterTag} ${extraHelmFlags}
Matteo Scandoloa2928e72020-03-02 16:38:22 -080071
72 IFS=: read -r bbsimRepo bbsimTag <<< ${bbsimImg}
Matteo Scandoloe69614f2020-03-10 11:35:35 -070073 helm install -n bbsim onf/bbsim --set pon=${ponPorts},onu=${onuPerPon},auth=${bbsimAuth},dhcp=${bbsimDhcp},delay=${BBSIMdelay},images.bbsim.repository=${bbsimRepo},images.bbsim.tag=${bbsimTag} ${extraHelmFlags}
74 helm install -n radius onf/freeradius ${extraHelmFlags}
Shrey Baidb0447182020-02-27 16:39:35 -080075
Shrey Baidb0447182020-02-27 16:39:35 -080076 bash /home/cord/voltha-scale/wait_for_pods.sh
77 bash /home/cord/voltha-scale/start_port_forward.sh
Shrey Baid00ff5c42020-02-07 15:14:08 -080078 '''
79 }
80 }
Matteo Scandoloa711ddf2020-03-06 16:41:34 -080081 stage('wait for adapters to be registered') {
Matteo Scandolo2fc1dac2020-03-09 08:39:53 -070082 options {
83 timeout(time:5)
84 }
Matteo Scandoloa711ddf2020-03-06 16:41:34 -080085 steps{
86 waitUntil {
87 script {
88 openolt_res = sh returnStdout: true, script: """
89 voltctl adapter list | grep openolt | wc -l
90 """
91
92 openonu_res = sh returnStdout: true, script: """
93 voltctl adapter list | grep brcm_openomci_onu | wc -l
94 """
95
96 return openolt_res.toInteger() == 1 && openonu_res.toInteger() == 1
97 }
98 }
99 }
100 }
Shrey Baide7614d02020-02-25 10:26:42 -0800101 stage('MIB-template') {
102 steps {
103 sh '''
104 if [ ${withMibTemplate} = true ] ; then
Shrey Baidb0447182020-02-27 16:39:35 -0800105 rm -f BBSM-12345123451234512345-00000000000001-v1.json
Shrey Baide7614d02020-02-25 10:26:42 -0800106 wget https://raw.githubusercontent.com/opencord/voltha-openonu-adapter/master/templates/BBSM-12345123451234512345-00000000000001-v1.json
Shrey Baidb0447182020-02-27 16:39:35 -0800107 cat BBSM-12345123451234512345-00000000000001-v1.json | kubectl exec -it $(kubectl get pods | grep etcd-cluster | awk 'NR==1{print $1}') etcdctl put service/voltha/omci_mibs/templates/BBSM/12345123451234512345/00000000000001
Shrey Baide7614d02020-02-25 10:26:42 -0800108 fi
109 '''
Shrey Baid0d4e31d2020-02-11 13:28:47 -0800110 }
Shrey Baide7614d02020-02-25 10:26:42 -0800111 }
112 stage('disable-ONOS-apps') {
113 steps {
114 sh '''
115 #Check withOnosApps and disable apps accordingly
116 if [ ${withOnosApps} = false ] ; then
Shrey Baidb0447182020-02-27 16:39:35 -0800117 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost app deactivate org.opencord.olt
118 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost app deactivate org.opencord.aaa
119 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost app deactivate org.opencord.dhcpl2relay
Shrey Baide7614d02020-02-25 10:26:42 -0800120 fi
121 '''
Shrey Baid0d4e31d2020-02-11 13:28:47 -0800122 }
Shrey Baide7614d02020-02-25 10:26:42 -0800123 }
124 stage('configuration') {
125 steps {
126 sh '''
127 #Setting LOG level to WARN
Shrey Baidb0447182020-02-27 16:39:35 -0800128 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost log:set WARN
129 kubectl exec $(kubectl get pods | grep bbsim | awk 'NR==1{print $1}') bbsimctl log warn false
Shrey Baide7614d02020-02-25 10:26:42 -0800130 #Setting link discovery
Shrey Baidb0447182020-02-27 16:39:35 -0800131 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost cfg set org.onosproject.provider.lldp.impl.LldpLinkProvider enabled ${setLinkDiscovery}
Shrey Baide7614d02020-02-25 10:26:42 -0800132 #Setting the flow stats collection interval
Shrey Baidb0447182020-02-27 16:39:35 -0800133 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost cfg set org.onosproject.provider.of.flow.impl.OpenFlowRuleProvider flowPollFrequency ${flowStatInterval}
Shrey Baide7614d02020-02-25 10:26:42 -0800134 #Setting the ports stats collection interval
Shrey Baidb0447182020-02-27 16:39:35 -0800135 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost cfg set org.onosproject.provider.of.device.impl.OpenFlowDeviceProvider portStatsPollFrequency ${portsStatInterval}
Matteo Scandolo7b3fde92020-02-26 16:17:16 -0800136 # extending voltctl timeout
Shrey Baidb0447182020-02-27 16:39:35 -0800137 sed -i 's/timeout: 10s/timeout: 5m/g' /home/cord/.volt/config
Shrey Baide7614d02020-02-25 10:26:42 -0800138 '''
139 }
140 }
141 stage('execute') {
142 options {
143 timeout(time:10)
144 }
145 stages {
Shrey Baida3b8aa62020-02-13 11:22:51 -0800146 stage('ONUs-enabled') {
147 steps {
148 sh '''
149 if [ -z ${expectedOnus} ]
150 then
151 echo -e "You need to set the target ONU number\n"
152 exit 1
153 fi
Shrey Baid00ff5c42020-02-07 15:14:08 -0800154
Shrey Baida3b8aa62020-02-13 11:22:51 -0800155 voltctl device create -t openolt -H bbsim:50060
156 voltctl device enable $(voltctl device list --filter Type~openolt -q)
157 # check ONUs reached Active State in VOLTHA
158 i=$(voltctl device list | grep -v OLT | grep ACTIVE | wc -l)
159 until [ $i -eq ${expectedOnus} ]
160 do
161 echo "$i ONUs ACTIVE of ${expectedOnus} expected (time: $SECONDS)"
162 sleep ${pollInterval}
163 i=$(voltctl device list | grep -v OLT | grep ACTIVE | wc -l)
164 done
165 echo "${expectedOnus} ONUs Activated in $SECONDS seconds (time: $SECONDS)"
Shrey Baid49bf8f62020-03-09 17:52:01 -0700166 echo $SECONDS > voltha-devices-time-num.txt
Shrey Baida3b8aa62020-02-13 11:22:51 -0800167 '''
168 }
169 }
170 stage('ONOS-ports') {
171 steps {
Shrey Baide7614d02020-02-25 10:26:42 -0800172 sh '''
Shrey Baida3b8aa62020-02-13 11:22:51 -0800173 # Check ports showed up in ONOS
Shrey Baidb0447182020-02-27 16:39:35 -0800174 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports -e | grep BBSM | wc -l)
Shrey Baida3b8aa62020-02-13 11:22:51 -0800175 until [ $z -eq ${expectedOnus} ]
176 do
177 echo "${z} enabled ports of ${expectedOnus} expected (time: $SECONDS)"
178 sleep ${pollInterval}
Shrey Baidb0447182020-02-27 16:39:35 -0800179 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports -e | grep BBSM | wc -l)
Shrey Baida3b8aa62020-02-13 11:22:51 -0800180 done
181 echo "${expectedOnus} ports enabled in $SECONDS seconds (time: $SECONDS)"
Shrey Baid49bf8f62020-03-09 17:52:01 -0700182 echo $SECONDS > temp.txt
183 paste voltha-devices-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-ports-time-num.txt
184 echo "ONOS-Duration(s)" > onos-ports-time.txt
185 echo "VOLTHA-Duration(s)" > voltha-devices-time.txt
186 cat voltha-devices-time-num.txt >> voltha-devices-time.txt
187 cat onos-ports-time-num.txt >> onos-ports-time.txt
Shrey Baida3b8aa62020-02-13 11:22:51 -0800188 '''
189 }
190 }
Shrey Baidb001c712020-02-11 11:12:46 -0800191 }
192 }
Matteo Scandolo51b76302020-02-05 12:07:23 -0800193 }
194 post {
Shrey Baid4da57a62020-03-05 15:49:50 -0800195 success {
Shrey Baide7614d02020-02-25 10:26:42 -0800196 plot([
197 csvFileName: 'plot-onu-activation.csv',
Shrey Baid49bf8f62020-03-09 17:52:01 -0700198 csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'voltha-devices-time.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'onos-ports-time.txt', inclusionFlag: 'OFF', url: '']],
Shrey Baid943e2072020-03-04 10:31:32 -0800199 group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Time (${BBSIMdelay}s Delay)", yaxis: 'Time (s)', useDescr: true
Shrey Baide7614d02020-02-25 10:26:42 -0800200 ])
Shrey Baid4da57a62020-03-05 15:49:50 -0800201 }
202 always {
203 sh '''
204 echo $(voltctl device list | grep -v OLT | grep ACTIVE | wc -l) > onus.txt
Shrey Baid49bf8f62020-03-09 17:52:01 -0700205 echo "#-of-ONUs" > voltha-devices-count.txt
206 cat onus.txt >> voltha-devices-count.txt
Shrey Baid4da57a62020-03-05 15:49:50 -0800207
208 echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports -e | grep BBSM | wc -l) > ports.txt
Shrey Baid49bf8f62020-03-09 17:52:01 -0700209 echo "#-of-ports" > onos-ports-count.txt
210 cat ports.txt >> onos-ports-count.txt
Shrey Baid4da57a62020-03-05 15:49:50 -0800211
212 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
213 voltctl device list -o json > device-list.json
Shrey Baid49bf8f62020-03-09 17:52:01 -0700214 python -m json.tool device-list.json > voltha-devices-list.json
215 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports > onos-ports-list.txt
216
217 rm -rf BBSM-12345123451234512345-00000000000001-v1.json device-list.json onus.txt ports.txt temp.txt
Shrey Baid4da57a62020-03-05 15:49:50 -0800218 '''
219 plot([
220 csvFileName: 'plot-numbers.csv',
Shrey Baid49bf8f62020-03-09 17:52:01 -0700221 csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'voltha-devices-count.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'onos-ports-count.txt', inclusionFlag: 'OFF', url: '']],
Shrey Baid4da57a62020-03-05 15:49:50 -0800222 group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Activated ONUs and Recognized Ports", yaxis: 'Number of Ports/ONUs', useDescr: true
223 ])
224
225 archiveArtifacts artifacts: '*.log,*.json,*txt'
226
Matteo Scandolo51b76302020-02-05 12:07:23 -0800227 }
228 }
Matteo Scandoloe69614f2020-03-10 11:35:35 -0700229}