blob: 634f2aa62c09bd272bceaed80be39824e738318a [file] [log] [blame]
Joey Armstrong9fadcbe2024-01-17 19:00:37 -05001# Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors
Matteo Scandoloa80b4732020-09-04 13:51:10 -07002#
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# onos common functions
15
16*** Settings ***
17Documentation Library for BBSimCtl interactions
18Resource ./k8s.robot
19
Hardik Windlass513afd12021-02-03 15:19:46 +000020*** Variables ***
21&{IGMP_TASK_DICT} join=0 leave=1 joinv3=2
22
Matteo Scandoloa80b4732020-09-04 13:51:10 -070023*** Keywords ***
24List ONUs
25 [Documentation] Lists ONUs via BBSimctl
26 [Arguments] ${namespace} ${bbsim_pod_name}
27 ${onus} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
28 ... bbsimctl onu list
29 Log ${onus}
30 Should Be Equal as Integers ${rc} 0
31
32Restart Auth
33 [Documentation] Restart Authentication on a BBSim ONU
34 [Arguments] ${namespace} ${bbsim_pod_name} ${onu}
35 ${res} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
36 ... bbsimctl onu auth_restart ${onu}
37 Log ${res}
38 Should Be Equal as Integers ${rc} 0
39
40Restart DHCP
41 [Documentation] Restart Dhcp on a BBSim ONU
42 [Arguments] ${namespace} ${bbsim_pod_name} ${onu}
43 ${res} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
44 ... bbsimctl onu dhcp_restart ${onu}
45 Log ${res}
46 Should Be Equal as Integers ${rc} 0
47
48List Service
49 [Documentation] Lists Service via BBSimctl
50 [Arguments] ${namespace} ${bbsim_pod_name}
51 ${service} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
52 ... bbsimctl service list
53 Log ${service}
54 Should Be Equal as Integers ${rc} 0
55
Hardik Windlass513afd12021-02-03 15:19:46 +000056JoinOrLeave Igmp Rest Based
57 [Documentation] Joins or Leaves Igmp on a BBSim ONU (based on Rest Endpoint)
Arda Demir77f13d52023-05-18 14:14:00 +030058 [Arguments] ${bbsim_rel_session} ${onu} ${uni} ${task} ${group_address} ${vlan}=55
Hardik Windlass513afd12021-02-03 15:19:46 +000059 ${resp}= Post Request ${bbsim_rel_session}
Arda Demir77f13d52023-05-18 14:14:00 +030060 ... /v1/olt/onus/${onu}/${uni}/igmp/${IGMP_TASK_DICT}[${task}]/${group_address}/${vlan}
Hardik Windlass513afd12021-02-03 15:19:46 +000061 Log ${resp}
62
Matteo Scandoloa80b4732020-09-04 13:51:10 -070063JoinOrLeave Igmp
64 [Documentation] Joins or Leaves Igmp on a BBSim ONU
Arda Demir77f13d52023-05-18 14:14:00 +030065 [Arguments] ${namespace} ${bbsim_pod_name} ${onu} ${uni} ${task} ${group_address} ${vlan}=55
Matteo Scandoloa80b4732020-09-04 13:51:10 -070066 ${res} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
Arda Demir77f13d52023-05-18 14:14:00 +030067 ... bbsimctl onu igmp ${onu} ${uni} ${task} ${group_address} -v ${vlan}
Matteo Scandoloa80b4732020-09-04 13:51:10 -070068 Log ${res}
69 Should Be Equal as Integers ${rc} 0
TorstenThiemefe7099e2021-01-29 08:41:04 +000070
71Power On ONU
72 [Documentation] This keyword turns on the power for onu device.
73 [Arguments] ${namespace} ${bbsim_pod_name} ${onu}
74 ${result} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
75 ... bbsimctl onu poweron ${onu}
76 Should Contain ${result} successfully msg=Can not poweron ${onu} values=False
77
78Power Off ONU
79 [Documentation] This keyword turns off the power for onu device.
80 [Arguments] ${namespace} ${bbsim_pod_name} ${onu}
81 ${result} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
82 ... bbsimctl onu shutdown ${onu}
83 Should Contain ${result} successfully msg=Can not shutdown ${onu} values=False
Hardik Windlass513afd12021-02-03 15:19:46 +000084
TorstenThieme00fe8262022-01-19 10:43:07 +000085Set Wrong MDS Counter ONU
86 [Documentation] This keyword sets wrong MDS counter for onu device.
87 [Arguments] ${namespace} ${bbsim_pod_name} ${onu}
88 ${result} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
89 ... bbsimctl onu invalidate_mds ${onu}
90 Should Be Equal as Integers ${rc} 0
91 Should Contain ${result} MDS counter of ONU msg=Can not invalidate MDS counter ${onu} values=False
92 Should Contain ${result} , set to msg=Can not invalidate MDS counter ${onu} values=False
93
Hardik Windlass513afd12021-02-03 15:19:46 +000094Get ONUs List
95 [Documentation] Fetches ONUs via BBSimctl
96 [Arguments] ${namespace} ${bbsim_pod_name}
97 ${onus} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
Hardik Windlasscdf827a2021-06-23 05:06:31 +000098 ... bbsimctl onu list | awk 'NR>1 {print $3}'
Hardik Windlass513afd12021-02-03 15:19:46 +000099 @{onuList}= Split To Lines ${onus}
100 Should Be Equal as Integers ${rc} 0
101 [Return] ${onuList}
Hardik Windlassc082c422021-03-16 15:44:10 +0000102
103Restart Grpc Server
104 [Documentation] Restart Grpc Server on a BBSim OLT
105 [Arguments] ${namespace} ${bbsim_pod_name} ${delay}
106 ${res} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
107 ... bbsimctl olt restartServer ${delay}
108 Log ${res}
109 Should Be Equal as Integers ${rc} 0
Hardik Windlassc310c7c2021-03-25 13:16:59 +0000110
111Verify ONU Device Image On BBSim
112 [Documentation] Validates the state of ONU in case of Image Upgrade
113 [Arguments] ${namespace} ${bbsim_pod_name} ${onu} ${internal_state}
114 ${res} ${rc}= Exec Pod And Return Output And RC ${namespace} ${bbsim_pod_name}
Hardik Windlasscdf827a2021-06-23 05:06:31 +0000115 ... bbsimctl onu list | grep ${onu} | awk '{print $5}'
Hardik Windlassc310c7c2021-03-25 13:16:59 +0000116 Should Be Equal as Integers ${rc} 0
117 Should Be Equal ${res} ${internal_state}
TorstenThiemef3e492c2021-11-08 15:25:48 +0000118
119Get Images Count
120 [Documentation] Validates the state of ONU in case of Image Upgrade
121 [Arguments] ${webserver_port}=50074
122 ${rc} ${output}= Run and Return Rc and Output curl localhost:${webserver_port}/images-count 2>/dev/null
123 Should Be Equal as Integers ${rc} 0 Could not access images-count of bbsim
124 ${value}= Fetch From Right ${output} :
125 ${count}= Fetch From Left ${value} }
126 [Return] ${count}
TorstenThiemeb56633f2022-07-06 09:41:04 +0000127
128Restart And Check BBSIM
129 [Documentation] This keyword restarts bbsim and waits for it to come up again
130 ... Following steps will be executed:
131 ... - restart bbsim adaptor
132 ... - check bbsim adaptor is ready again
133 [Arguments] ${namespace}
134 ${bbsim_apps} Create List bbsim
135 ${label_key} Set Variable app
136 ${bbsim_label_value} Set Variable bbsim
137 Restart Pod By Label ${namespace} ${label_key} ${bbsim_label_value}
138 Sleep 5s
139 Wait For Pods Ready ${namespace} ${bbsim_apps}
140
141Get BBSIM Svc and Webserver Port
142 [Documentation] This keyword gets bbsim instance and bbsim webserver port from image url
143 @{words}= Split String ${image_url} /
144 ${SvcAndPort} Set Variable @{words}[2]
145 ${bbsim_svc} ${webserver_port}= Split String ${SvcAndPort} : 1
146 ${svc_return} Set Variable If '${bbsim_svc}'!='${EMPTY}' ${bbsim_svc} ${BBSIM_INSTANCE}
147 ${port_return} Set Variable If '${webserver_port}'!='${EMPTY}' ${webserver_port} ${BBSIM_WEBSERVER_PORT}
148 [Return] ${svc_return} ${port_return}
149
150# keywords regarding OMCC message version
151
152Get BBSIM OMCC Version
153 [Documentation] Retrieves OMCC Version from BBSIM
154 [Arguments] ${namespace} ${instance}=0
155 ${rc} ${exec_pod_name}= Run and Return Rc and Output
156 ... kubectl get pods -n ${namespace} | grep bbsim${instance} | awk 'NR==1{print $1}'
157 Log ${exec_pod_name}
158 Should Not Be Empty ${exec_pod_name} Unable to parse pod name
159 ${rc} ${output}= Run and Return Rc and Output
160 ... kubectl -n ${namespace} get pods ${exec_pod_name} -o=jsonpath="{.spec.containers[].command}"
161 Log ${output}
162 Should Be Equal as Integers ${rc} 0
163 Should Not Be Empty ${output} Unable to read OMCC Version
164 ${output}= Remove String ${output} " [ ]
TorstenThiemee7b10bd2022-07-08 08:32:10 +0000165 ${is_comma_separated}= Evaluate "," in """${output}"""
166 @{commands}= Run Keyword If ${is_comma_separated} Split String ${output} ,
167 ... ELSE Split String ${output}
TorstenThiemeb56633f2022-07-06 09:41:04 +0000168 ${length}= Get Length ${commands}
169 ${match}= Set Variable False
170 FOR ${I} IN RANGE 0 ${length}
171 ${item}= Get From List ${commands} ${I}
172 ${match}= Set Variable If "${item}"=="-omccVersion" True ${match}
173 ${omcc_version}= Run Keyword If ${match} Get From List ${commands} ${I+1}
174 Exit For Loop IF ${match}
175 END
176 Should Be True ${match} Unable to read OMCC Version
177 ${is_extended}= Is OMCC Extended Version ${omcc_version}
178 [return] ${omcc_version} ${is_extended}
179
180Is OMCC Extended Version
181 [Documentation] Checks passed value and return False (baseline) or True (extended)
182 ... baseline: 124-130, 160-163
183 ... extended: 150, 176-180
184 [Arguments] ${omcc_version}
185 ${is_extended}= Set Variable If '${omcc_version}'=='150' True
186 ... '${omcc_version}'>='176' and '${omcc_version}'<='180' True
187 ... False
188 [return] ${is_extended}
189
190# Keywords regarding restart BBSIM by Helm Charts
191
192Restart BBSIM by Helm Charts
193 [Documentation] Restart BBSIM by helm charts
194 ... Attention: config-yaml file has to pass by ${extra_helm_flags}!
195 [Arguments] ${namespace} ${instance}=0 ${extra_helm_flags}=${EMPTY}
196 Remove BBSIM Helm Charts ${namespace} ${instance}
197 Restart BBSIM Helm Charts ${namespace} ${instance} extra_helm_flags=${extra_helm_flags}
198 Restart Port Forward BBSIM ${namespace} ${instance}
199
200Remove BBSIM Helm Charts
201 [Documentation] Remove BBSIM helm charts
202 [Arguments] ${namespace} ${instance}=0
203 ${cmd} Catenate helm delete -n '${namespace}' 'bbsim${instance}'
204 ${rc} Run And Return Rc ${cmd}
205 Should Be Equal as Integers ${rc} 0
206 ${list} Create List bbsim${instance}
207 Wait For Pods Not Exist ${namespace} ${list}
208
209Restart BBSIM Helm Charts
210 [Documentation] Restart BBSIM helm charts
211 ... Attention: config-yaml file has to pass by ${extra_helm_flags}!
212 [Arguments] ${namespace} ${instance}=0 ${extra_helm_flags}=${EMPTY}
213 ${cmd} Catenate
214 ... helm upgrade --install -n ${namespace} bbsim${instance} onf/bbsim
215 ... --set olt_id=1${instance}
216 ... --set global.image_pullPolicy=Always
217 ... --set global.image_tag=master
218 ... --set global.image_org=voltha/
219 ... --set global.image_registry=
220 ... --set global.log_level=${helmloglevel} ${extra_helm_flags}
221 ${rc} Run And Return Rc ${cmd}
222 Should Be Equal as Integers ${rc} 0
223 ${list} Create List bbsim
224 Wait For Pods Ready ${namespace} ${list}
225
226Restart Port Forward BBSIM
227 [Documentation] Restart Port forward BBSIM
228 [Arguments] ${namespace} ${instance}=0
229 ${tag} Catenate bbsim${instance}
230 Restart VOLTHA Port Forward ${tag}
Joey Armstrong098eedd2024-02-11 10:00:59 -0500231
232# [EOF]