blob: 5cf1cbf69aef66280a873882c36c277165f0528d [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 Windlassa9b38262021-10-27 08:14:22 +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 Scandolobfb74382021-05-10 15:45:16 -070059
Matteo Scandoloa80b4732020-09-04 13:51:10 -070060*** Test Cases ***
61
62Test Perform BBSim Sanity
63 [Documentation] Validates the BBSim Functionality for ATT, DT and TT workflows
64 ... Also Restart Auth (ATT), Restart Dhcp (ATT and TT), Igmp Join and Leave (TT)
Matteo Scandoloa80b4732020-09-04 13:51:10 -070065 [Tags] bbsimSanity
Matteo Scandolo4f920392021-03-02 15:15:47 -080066 [Setup] Run Keyword Start Logging BBSimSanity
67 FOR ${I} IN RANGE 0 ${iteration_count}
68 Perform BBSim Sanity Test
Matteo Scandoloa80b4732020-09-04 13:51:10 -070069 END
70 [Teardown] Run Keywords Run Keyword If ${logging} Collect Logs
71 ... AND Stop Logging BBSimSanity
72
73*** Keywords ***
74
75Perform ONU Igmp Join and Leave
76 [Documentation] This keyword performs Igmp Leave and Join for ONU
77 [Arguments] ${bbsim_pod} ${of_id} ${onu} ${onu_port}
78 FOR ${Z} IN RANGE 0 ${igmp_join_leave_count}
79 List Service ${NAMESPACE} ${bbsim_pod}
80 JoinOrLeave Igmp ${NAMESPACE} ${bbsim_pod} ${onu} join
81 Sleep 2s
82 List Service ${NAMESPACE} ${bbsim_pod}
83 List ONUs ${NAMESPACE} ${bbsim_pod}
84 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
85 ... Verify ONU in Groups ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id} ${onu_port}
86 JoinOrLeave Igmp ${NAMESPACE} ${bbsim_pod} ${onu} leave
87 Sleep 2s
88 List Service ${NAMESPACE} ${bbsim_pod}
89 List ONUs ${NAMESPACE} ${bbsim_pod}
90 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
91 ... Verify ONU in Groups ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${of_id} ${onu_port} False
92 END
93
Matteo Scandolo4f920392021-03-02 15:15:47 -080094Perform BBSim Sanity Test
95 [Documentation] Runs the sanity test on multiple OLTs
96
97 Run Keyword Setup
98 FOR ${J} IN RANGE 0 ${num_olts}
99 ${olt_serial_number}= Set Variable ${list_olts}[${J}][sn]
100 ${onu_count}= Set Variable ${list_olts}[${J}][onucount]
101 ${of_id}= Wait Until Keyword Succeeds ${timeout} 15s Validate OLT Device in ONOS
102 ... ${olt_serial_number}
103 ${bbsim_rel}= Catenate SEPARATOR= bbsim ${J}
104 ${bbsim_pod}= Get Pod Name By Label ${NAMESPACE} release ${bbsim_rel}
105 Perform BBSim Sanity Test Per OLT ${bbsim_pod} ${of_id} ${olt_serial_number} ${onu_count}
106 END
107 Run Keyword Delete All Devices and Verify
108
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700109Perform BBSim Sanity Test Per OLT
110 [Documentation] Validates the BBSim Functionality for ATT, DT and TT workflows
111 ... Also Restart Auth (ATT), Restart Dhcp (ATT and TT), Igmp Join and Leave (TT)
Matteo Scandolobfb74382021-05-10 15:45:16 -0700112 ... Once the ONU tests are completed perform a SoftReboot on the OLT.
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700113 [Arguments] ${bbsim_pod} ${of_id} ${olt_serial_number} ${num_onus}
114 FOR ${I} IN RANGE 0 ${num_all_onus}
115 ${src}= Set Variable ${hosts.src[${I}]}
116 ${dst}= Set Variable ${hosts.dst[${I}]}
117 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
118 ${onu_device_id}= Get Device ID From SN ${src['onu']}
119 ${onu_port}= Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
120 ... Get ONU Port in ONOS ${src['onu']} ${of_id}
121 # Check ONU port is Enabled in ONOS
122 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 120s 2s
Hardik Windlass39015672021-07-05 05:48:08 +0000123 ... Verify UNI Port Is Enabled ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${src['onu']}
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700124 Run Keyword If "${workflow}"=="ATT"
125 ... Run Keywords
126 # Verify ONU in AAA-Users (valid only for ATT)
127 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
128 ... Verify ONU in AAA-Users ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
129 ... AND List ONUs ${NAMESPACE} ${bbsim_pod}
130 # Restart Auth and Verify (valid only for ATT)
TorstenThieme731a7592021-07-01 14:26:54 +0000131 ... AND Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700132 ... aaa-reset-all-devices
133 ... AND Restart Auth ${NAMESPACE} ${bbsim_pod} ${src['onu']}
134 ... AND Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
135 ... Verify ONU in AAA-Users ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
136 ... AND List ONUs ${NAMESPACE} ${bbsim_pod}
137 # Add Subscriber
138 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2
TorstenThieme731a7592021-07-01 14:26:54 +0000139 ... Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700140 ... volt-add-subscriber-access ${of_id} ${onu_port}
141 # Verify that no pending flows exist for the ONU port
142 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
143 ... Verify No Pending Flows For ONU ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
144 # Verify subscriber dhcp allocations (valid only for ATT and TT)
145 Run Keyword If "${workflow}"=="ATT" or "${workflow}"=="TT"
146 ... Run Keywords
147 ... Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
148 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
149 ... AND List ONUs ${NAMESPACE} ${bbsim_pod}
150 # Restart Dhcp and Verify (valid only for ATT and TT)
TorstenThieme731a7592021-07-01 14:26:54 +0000151 ... AND Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700152 ... dhcpl2relay-remove-allocation ${of_id} ${onu_port}
153 ... AND Restart DHCP ${NAMESPACE} ${bbsim_pod} ${src['onu']}
154 ... AND Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 2s
155 ... Validate Subscriber DHCP Allocation ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${onu_port}
156 ... AND List ONUs ${NAMESPACE} ${bbsim_pod}
157 # Perform Igmp Join and Leave (valid only for TT)
158 Run Keyword If "${workflow}"=="TT"
159 ... Perform ONU Igmp Join and Leave ${bbsim_pod} ${of_id} ${src['onu']} ${onu_port}
160 END
Matteo Scandolobfb74382021-05-10 15:45:16 -0700161 # Clean ONOS state before rebooting
TorstenThieme731a7592021-07-01 14:26:54 +0000162 Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT} aaa-reset-all-devices
163 Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT} dhcpl2relay-clear-allocations
Matteo Scandolobfb74382021-05-10 15:45:16 -0700164 # Perform OLT SoftReboot test
165 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
166 Reboot Device ${olt_device_id}
Matteo Scandolo520f77e2021-06-01 16:14:47 -0700167 Wait Until Keyword Succeeds 120s 2s Device Is Available In ONOS
168 ... http://karaf:karaf@${ONOS_REST_IP}:${ONOS_REST_PORT} ${of_id} false
Matteo Scandolobfb74382021-05-10 15:45:16 -0700169 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 360s 5s
170 ... Validate OLT Device ENABLED ACTIVE
171 ... REACHABLE ${olt_serial_number}
172 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
173 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
174 ... ELSE Perform Sanity Test
175 # Perform GRPC Disconnect test
176 Restart Grpc Server ${NAMESPACE} ${bbsim_pod} 5
177 Run Keyword If "${workflow}"=="DT" Perform Sanity Test DT
178 ... ELSE IF "${workflow}"=="TT" Perform Sanity Tests TT
179 ... ELSE Perform Sanity Test
Matteo Scandolo1eacdd82021-06-28 10:32:19 +0200180 # wait untill the device is connected again before proceeding
181 Sleep 10
Matteo Scandolobfb74382021-05-10 15:45:16 -0700182
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700183
184Setup Suite
185 [Documentation] Set up the test suite
186 Common Test Suite Setup
187 #send igmp file to onos (valid only for TT)
188 ${onos_netcfg_file}= Get Variable Value ${onos_netcfg.file}
189 Run Keyword If '${workflow}'=='TT' and '${has_dataplane}'=='False' and '${onos_netcfg_file}'!='${None}'
190 ... Send File To Onos ${onos_netcfg_file} apps/
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700191
192Teardown Suite
193 [Documentation] Replaces the Suite Teardown in utils.robot.
194 ... Cleans up and checks all ONU ports disabled in ONOS.
Matteo Scandoloa80b4732020-09-04 13:51:10 -0700195 Close All ONOS SSH Connections