blob: 47643ba6710ed8e00bcb530e352fde75bcf00873 [file] [log] [blame]
Matteo Scandoloa80b4732020-09-04 13:51:10 -07001# Copyright 2020 - 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*** Settings ***
Matteo Scandolo4f920392021-03-02 15:15:47 -080016Documentation Run tests On BBSim
Matteo Scandoloa80b4732020-09-04 13:51:10 -070017Suite Setup Setup Suite
18Suite Teardown Teardown Suite
19Test Setup Setup
20Test Teardown Teardown
21Library Collections
22Library String
23Library OperatingSystem
24Library XML
25Library RequestsLibrary
26Library ../../libraries/DependencyLibrary.py
27Resource ../../libraries/onos.robot
28Resource ../../libraries/voltctl.robot
29Resource ../../libraries/voltha.robot
30Resource ../../libraries/utils.robot
31Resource ../../libraries/k8s.robot
32Resource ../../libraries/bbsim.robot
33Resource ../../variables/variables.robot
34
35*** Variables ***
36${NAMESPACE} voltha
Hardik Windlass4288c6a2021-09-28 07:22:06 +000037${INFRA_NAMESPACE} default
Matteo Scandoloa80b4732020-09-04 13:51:10 -070038${timeout} 60s
39${of_id} 0
40${logical_id} 0
41${has_dataplane} False
42${external_libs} True
43${teardown_device} True
44${scripts} ../../scripts
45# determines the environment workflow: DT, TT or ATT (default)
46# example: -v workflow:TT
47${workflow} ATT
48# logging flag to enable Collect Logs, can be passed via the command line too
49# example: -v logging:True
50${logging} False
51# Per-test logging on failure is turned off by default; set this variable to enable
52${container_log_dir} ${None}
53# Number of times to perform ONU Igmp Join and Leave (valid only for TT)
54${igmp_join_leave_count} 1
Matteo Scandolo4f920392021-03-02 15:15:47 -080055# Number of times the Sanity test needs to be repeated as
56# we want to make sure you can disable/delete the device without needing to restart BBSim
57${iteration_count} 2
Matteo Scandoloa80b4732020-09-04 13:51:10 -070058
Matteo Scandolo7e519fb2021-08-13 11:35:16 -070059${suppressaddsubscriber} True
Matteo Scandolobfb74382021-05-10 15:45:16 -070060
Matteo Scandoloa80b4732020-09-04 13:51:10 -070061*** Test Cases ***
62
63Test Perform BBSim Sanity
64 [Documentation] Validates the BBSim Functionality for ATT, DT and TT workflows
65 ... Also Restart Auth (ATT), Restart Dhcp (ATT and TT), Igmp Join and Leave (TT)
Matteo Scandoloa80b4732020-09-04 13:51:10 -070066 [Tags] bbsimSanity
Matteo Scandolo4f920392021-03-02 15:15:47 -080067 [Setup] Run Keyword Start Logging BBSimSanity
68 FOR ${I} IN RANGE 0 ${iteration_count}
69 Perform BBSim Sanity Test
Matteo Scandoloa80b4732020-09-04 13:51:10 -070070 END
71 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
72 ... AND Stop Logging BBSimSanity
73
74*** Keywords ***
75
76Perform ONU Igmp Join and Leave
77 [Documentation] This keyword performs Igmp Leave and Join for ONU
78 [Arguments] ${bbsim_pod} ${of_id} ${onu} ${onu_port}
79 FOR ${Z} IN RANGE 0 ${igmp_join_leave_count}
80 List Service ${NAMESPACE} ${bbsim_pod}
81 JoinOrLeave Igmp ${NAMESPACE} ${bbsim_pod} ${onu} join
82 Sleep 2s
83 List Service ${NAMESPACE} ${bbsim_pod}
84 List ONUs ${NAMESPACE} ${bbsim_pod}
85 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
86 ... Verify ONU in Groups ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id} ${onu_port}
87 JoinOrLeave Igmp ${NAMESPACE} ${bbsim_pod} ${onu} leave
88 Sleep 2s
89 List Service ${NAMESPACE} ${bbsim_pod}
90 List ONUs ${NAMESPACE} ${bbsim_pod}
91 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
92 ... Verify ONU in Groups ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id} ${onu_port} False
93 END
94
Matteo Scandolo4f920392021-03-02 15:15:47 -080095Perform BBSim Sanity Test
96 [Documentation] Runs the sanity test on multiple OLTs
97
98 Run Keyword Setup
99 FOR ${J} IN RANGE 0 ${num_olts}
100 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
101 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
102 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
103 ... ${olt_serial_number}
104 ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
105 ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
106 Perform BBSim Sanity Test Per OLT ${bbsim_pod} ${of_id} ${olt_serial_number} ${onu_count}
107 END
108 Run Keyword Delete All Devices and Verify
109
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700110Perform BBSim Sanity Test Per OLT
111 [Documentation] Validates the BBSim Functionality for ATT, DT and TT workflows
112 ... Also Restart Auth (ATT), Restart Dhcp (ATT and TT), Igmp Join and Leave (TT)
Matteo Scandolobfb74382021-05-10 15:45:16 -0700113 ... Once the ONU tests are completed perform a SoftReboot on the OLT.
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700114 [Arguments] ${bbsim_pod} ${of_id} ${olt_serial_number} ${num_onus}
115 FOR ${I} IN RANGE 0 ${num_all_onus}
116 ${src}= Set Variable ${hosts.src[${I}]}
117 ${dst}= Set Variable ${hosts.dst[${I}]}
118 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
119 ${onu_device_id}= Get Device ID From SN ${src['onu']}
120 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
121 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
122 # Check ONU port is Enabled in ONOS
123 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 120s 2s
Hardik Windlass39015672021-07-05 05:48:08 +0000124 ... Verify UNI Port Is Enabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${src['onu']}
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700125 Run Keyword If "${workflow}"=="ATT"
126 ... Run Keywords
127 # Verify ONU in AAA-Users (valid only for ATT)
128 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
129 ... Verify ONU in AAA-Users ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
130 ... AND List ONUs ${NAMESPACE} ${bbsim_pod}
131 # Restart Auth and Verify (valid only for ATT)
TorstenThieme731a7592021-07-01 14:26:54 +0000132 ... AND Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700133 ... aaa-reset-all-devices
134 ... AND Restart Auth ${NAMESPACE} ${bbsim_pod} ${src['onu']}
135 ... AND Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
136 ... Verify ONU in AAA-Users ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
137 ... AND List ONUs ${NAMESPACE} ${bbsim_pod}
138 # Add Subscriber
139 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
TorstenThieme731a7592021-07-01 14:26:54 +0000140 ... Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700141 ... volt-add-subscriber-access ${of_id} ${onu_port}
142 # Verify that no pending flows exist for the ONU port
143 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
144 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
145 # Verify subscriber dhcp allocations (valid only for ATT and TT)
146 Run Keyword If "${workflow}"=="ATT" or "${workflow}"=="TT"
147 ... Run Keywords
148 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
149 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
150 ... AND List ONUs ${NAMESPACE} ${bbsim_pod}
151 # Restart Dhcp and Verify (valid only for ATT and TT)
TorstenThieme731a7592021-07-01 14:26:54 +0000152 ... AND Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700153 ... dhcpl2relay-remove-allocation ${of_id} ${onu_port}
154 ... AND Restart DHCP ${NAMESPACE} ${bbsim_pod} ${src['onu']}
155 ... AND Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
156 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
157 ... AND List ONUs ${NAMESPACE} ${bbsim_pod}
158 # Perform Igmp Join and Leave (valid only for TT)
159 Run Keyword If "${workflow}"=="TT"
160 ... Perform ONU Igmp Join and Leave ${bbsim_pod} ${of_id} ${src['onu']} ${onu_port}
161 END
Matteo Scandolobfb74382021-05-10 15:45:16 -0700162 # Clean ONOS state before rebooting
TorstenThieme731a7592021-07-01 14:26:54 +0000163 Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT} aaa-reset-all-devices
164 Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT} dhcpl2relay-clear-allocations
Matteo Scandolobfb74382021-05-10 15:45:16 -0700165 # Perform OLT SoftReboot test
166 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
167 Reboot Device ${olt_device_id}
Matteo Scandolo520f77e2021-06-01 16:14:47 -0700168 Wait Until Keyword Succeeds 120s 2s Device Is Available In ONOS
169 ... http://karaf:karaf@${ONOS_REST_IP}:${ONOS_REST_PORT} ${of_id} false
Matteo Scandolobfb74382021-05-10 15:45:16 -0700170 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 360s 5s
171 ... Validate OLT Device ENABLED ACTIVE
172 ... REACHABLE ${olt_serial_number}
173 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
174 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
175 ... ELSE Perform Sanity Test
176 # Perform GRPC Disconnect test
177 Restart Grpc Server ${NAMESPACE} ${bbsim_pod} 5
178 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
179 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
Matteo Scandolo7e519fb2021-08-13 11:35:16 -0700180 ... ELSE Perform Sanity Test ${suppressaddsubscriber}
Matteo Scandolo1eacdd82021-06-28 10:32:19 +0200181 # wait untill the device is connected again before proceeding
182 Sleep 10
Matteo Scandolobfb74382021-05-10 15:45:16 -0700183
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700184
185Setup Suite
186 [Documentation] Set up the test suite
187 Common Test Suite Setup
188 #send igmp file to onos (valid only for TT)
189 ${onos_netcfg_file}= Get Variable Value ${onos_netcfg.file}
190 Run Keyword If '${workflow}'=='TT' and '${has_dataplane}'=='False' and '${onos_netcfg_file}'!='${None}'
191 ... Send File To Onos ${onos_netcfg_file} apps/
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700192
193Teardown Suite
194 [Documentation] Replaces the Suite Teardown in utils.robot.
195 ... Cleans up and checks all ONU ports disabled in ONOS.
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700196 Close All ONOS SSH Connections