blob: c944b06f3883ddbc6d97be4d34c4ed9e864882af [file] [log] [blame]
Suchitra Vemurife309412020-12-01 19:19:52 -08001# 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 ***
16Documentation Test various end-to-end scenarios involing Multiple OLTs
17Suite Setup Setup Suite
18Test Setup Setup
19Test Teardown Teardown
20Suite Teardown Teardown Suite
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 ../../variables/variables.robot
33Resource ../../libraries/power_switch.robot
34
35*** Variables ***
36${POD_NAME} flex-ocp-cord
37${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
38${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
39#${KUBERNETES_CONFIGS_DIR} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
40${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
41${HELM_CHARTS_DIR} ~/helm-charts
42${VOLTHA_POD_NUM} 8
43${NAMESPACE} voltha
44# For below variable value, using deployment name as using grep for
45# parsing radius pod name, we can also use full radius pod name
46${RESTART_POD_NAME} radius
47${timeout} 60s
48${of_id} 0
49${logical_id} 0
50${has_dataplane} True
51${teardown_device} False
52${scripts} ../../scripts
53
54# Per-test logging on failure is turned off by default; set this variable to enable
55${container_log_dir} ${None}
56
57*** Test Cases ***
58Verify OLT after Rebooting Physically for DT - Multiple OLT
59 [Documentation] Test the physical reboot of the OLT
60 ... Assuming that all the ONUs are DHCP/pingable (i.e. assuming sanityDt test was executed)
61 ... Test performs a physical reboot, performs "reboot" from the OLT CLI
62 ... Test runs when more than one OLT exists
63 ... Only one OLT is rebooted in the test, while verifying if the ONUs on the
Hardik Windlassa119a102021-02-15 14:52:07 +053064 ... other OLT are still functional
Hardik Windlass5ceb84e2021-02-11 11:17:08 +000065 [Tags] functionalDt MultiOLTPhysicalRebootDt
Suchitra Vemurife309412020-12-01 19:19:52 -080066 [Setup] Start Logging MultiOlt_Physical_Dt
67 [Teardown] Run Keywords Collect Logs
68 ... AND Stop Logging MultiOlt_Physical_Dt
Suchitra Vemurife309412020-12-01 19:19:52 -080069 # Execute the test when the number of OLTs are greater than one
70 Pass Execution If ${olt_count} == 1 Skipping test: just one OLT
Hardik Windlassa119a102021-02-15 14:52:07 +053071 Clear All Devices Then Perform Setup And Sanity
Suchitra Vemurife309412020-12-01 19:19:52 -080072 # Reboot the first OLT from the list of olts - rebooting from the OLT CLI
73 ${olt_user}= Get From Dictionary ${list_olts}[0] user
74 ${olt_pass}= Get From Dictionary ${list_olts}[0] pass
75 ${olt_ssh_ip}= Get From Dictionary ${list_olts}[0] sship
76 ${olt_serial_number}= Get From Dictionary ${list_olts}[0] sn
77 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
78 Run Keyword If ${has_dataplane} Login And Run Command On Remote System
Andrea Campanella5ef88142021-02-02 14:34:50 +010079 ... reboot ${olt_ssh_ip} ${olt_user} ${olt_pass} prompt=#
Suchitra Vemurife309412020-12-01 19:19:52 -080080 # validate that the ONUs on the other OLTs are still functional
81 Verify ping is successful for ONUs not on this OLT ${num_all_onus} ${olt_device_id}
82 Run Keyword And Ignore Error Collect Logs
83
84 # validate that the ONUs on the rebooted OLT are not pingable
85 FOR ${I} IN RANGE 0 ${num_all_onus}
86 ${src}= Set Variable ${hosts.src[${I}]}
87 ${dst}= Set Variable ${hosts.dst[${I}]}
88 ${olt_serial_number}= Get From Dictionary ${list_olts}[0] sn
89 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
90 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
91 ... Wait Until Keyword Succeeds 60s 2s
92 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
93 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
94 END
95 # Wait for the rebooted OLT to come back up
96 ${olt_user}= Get From Dictionary ${list_olts}[0] user
97 ${olt_pass}= Get From Dictionary ${list_olts}[0] pass
98 ${olt_ssh_ip}= Get From Dictionary ${list_olts}[0] sship
99 ${olt_serial_number}= Get From Dictionary ${list_olts}[0] sn
100 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
101 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s
102 ... Check Remote System Reachability True ${olt_ssh_ip}
103 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 360s 5s
104 ... Validate OLT Device ENABLED ACTIVE
105 ... REACHABLE ${olt_serial_number}
106 # Waiting extra time for the ONUs to come up
107 Sleep 60s
108 Run Keyword And Ignore Error Collect Logs
109 Run Keyword If ${has_dataplane} Clean Up Linux
110 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test DT
111
112Verify OLT Soft Reboot for DT - Multiple OLT
113 [Documentation] Test soft reboot of the OLT using voltctl command
114 ... Test runs when more than one OLT exists
115 ... Only one OLT is rebooted in the test, while verifying if the ONUs on the
Hardik Windlassa119a102021-02-15 14:52:07 +0530116 ... other OLT are still functional
Suchitra Vemurife309412020-12-01 19:19:52 -0800117 [Tags] MultiOLTSoftRebootDt functionalDt
118 [Setup] Start Logging MultiOLTSoftRebootDt
Suchitra Vemurife309412020-12-01 19:19:52 -0800119 [Teardown] Run Keywords Collect Logs
120 ... AND Stop Logging MultiOLTSoftRebootDt
Suchitra Vemuri6971c392020-12-08 10:41:33 -0800121 ... AND Delete All Devices and Verify
Suchitra Vemurife309412020-12-01 19:19:52 -0800122 Pass Execution If ${olt_count} == 1 Skipping test: just one OLT
Hardik Windlassa119a102021-02-15 14:52:07 +0530123 Clear All Devices Then Perform Setup And Sanity
Suchitra Vemurife309412020-12-01 19:19:52 -0800124 # Reboot the first OLT
125 ${olt_user}= Get From Dictionary ${list_olts}[0] user
126 ${olt_pass}= Get From Dictionary ${list_olts}[0] pass
127 ${olt_ssh_ip}= Get From Dictionary ${list_olts}[0] sship
128 ${olt_serial_number}= Get From Dictionary ${list_olts}[0] sn
129 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
130 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 360s 5s
131 ... Validate OLT Device ENABLED ACTIVE
132 ... REACHABLE ${olt_serial_number}
133 # Reboot the OLT using "voltctl device reboot" command
134 Reboot Device ${olt_device_id}
135 Run Keyword And Ignore Error Collect Logs
136 # validate that the ONUs on the other OLTs are still functional
137 Verify ping is successful for ONUs not on this OLT ${num_all_onus} ${olt_device_id}
138 #Verify that ping fails for the ONUs where the OLT has been rebooted
139 FOR ${I} IN RANGE 0 ${num_all_onus}
140 ${src}= Set Variable ${hosts.src[${I}]}
141 ${dst}= Set Variable ${hosts.dst[${I}]}
142 ${olt_serial_number}= Get From Dictionary ${list_olts}[0] sn
143 Continue For Loop If "${olt_serial_number}"!="${src['olt']}"
144 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
145 ... Wait Until Keyword Succeeds 60s 2s
146 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
147 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
148 END
149 # Check OLT state
150 ${olt_serial_number}= Get From Dictionary ${list_olts}[0] sn
151 ${olt_ssh_ip}= Get From Dictionary ${list_olts}[0] sship
152 ${olt_device_id}= Get OLTDeviceID From OLT List ${olt_serial_number}
153 # Wait for the OLT to come back up
154 Run Keyword If ${has_dataplane} Wait Until Keyword Succeeds 120s 10s
155 ... Check Remote System Reachability True ${olt_ssh_ip}
156 # Check OLT states
157 Run Keyword And Continue On Failure Wait Until Keyword Succeeds 360s 5s
158 ... Validate OLT Device ENABLED ACTIVE
159 ... REACHABLE ${olt_serial_number}
160 # Waiting extra time for the ONUs to come up
161 Sleep 60s
162 Run Keyword And Ignore Error Collect Logs
163 #Check after reboot that ONUs are active, DHCP and pingable
164 Run Keyword If ${has_dataplane} Clean Up Linux
165 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test DT
166
167*** Keywords ***
168Setup Suite
169 [Documentation] Set up the test suite
170 Common Test Suite Setup
171 #power_switch.robot needs it to support different vendor's power switch
172 ${switch_type}= Get Variable Value ${web_power_switch.type}
173 Run Keyword If "${switch_type}"!="" Set Global Variable ${powerswitch_type} ${switch_type}
174
Hardik Windlassa119a102021-02-15 14:52:07 +0530175Clear All Devices Then Perform Setup And Sanity
176 [Documentation] Remove any devices from VOLTHA and Verify in ONOS
177 ... Create New Device through Setup and Perform Sanity
Suchitra Vemurife309412020-12-01 19:19:52 -0800178 # Remove all devices from voltha and nos
Hardik Windlassa119a102021-02-15 14:52:07 +0530179 Run Keyword and Ignore Error Delete All Devices and Verify
Suchitra Vemurife309412020-12-01 19:19:52 -0800180 # Execute normal test Setup Keyword
181 Setup
Hardik Windlassa119a102021-02-15 14:52:07 +0530182 # Performing Sanity Test to make sure subscribers are all DHCP and pingable
183 Run Keyword If ${has_dataplane} Clean Up Linux
184 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test DT