blob: eb242d05ee8fa742bc99e342391ea9bfa2303cd6 [file] [log] [blame]
Gayathri.Selvan283a63c2020-01-23 04:09:18 +00001# Copyright 2017 - 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# FIXME Can we use the same test against BBSim and Hardware?
15
16*** Settings ***
HungWei Chiu87edb1f2020-01-28 00:10:58 +000017Documentation Test various failure scenarios
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000018Suite Setup Common Test Suite Setup
19Test Setup Setup
20Test Teardown Teardown
21#Suite Teardown Teardown Suite
22Library Collections
23Library String
24Library OperatingSystem
25Library XML
26Library RequestsLibrary
27Library ../../libraries/DependencyLibrary.py
28Resource ../../libraries/onos.robot
29Resource ../../libraries/voltctl.robot
30Resource ../../libraries/voltha.robot
31Resource ../../libraries/utils.robot
32Resource ../../libraries/k8s.robot
33Resource ../../variables/variables.robot
HungWei Chiu87edb1f2020-01-28 00:10:58 +000034Resource ../../libraries/power_switch.robot
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000035
36*** Variables ***
37${POD_NAME} flex-ocp-cord
38${KUBERNETES_CONF} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
39${KUBERNETES_CONFIGS_DIR} ~/pod-configs/kubernetes-configs
40#${KUBERNETES_CONFIGS_DIR} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
41${KUBERNETES_YAML} ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
42${HELM_CHARTS_DIR} ~/helm-charts
43${VOLTHA_POD_NUM} 8
44${NAMESPACE} voltha
45# For below variable value, using deployment name as using grep for
46# parsing radius pod name, we can also use full radius pod name
47${RESTART_POD_NAME} radius
48${timeout} 60s
49${of_id} 0
50${logical_id} 0
Suchitra Vemuri109feb12020-01-23 16:25:02 -080051${has_dataplane} True
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000052${external_libs} True
53${teardown_device} False
54${scripts} ../../scripts
55
Andy Bavierabeba262020-02-07 16:22:16 -070056# Per-test logging on failure is turned off by default; set this variable to enable
57${container_log_dir} ${None}
58
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000059*** Test Cases ***
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +000060Verify restart ofagent container after VOLTHA is operational
61 [Documentation] Restart ofagent container after VOLTHA is operational.
62 ... Please note this test case should be run before the restart of other containers.
63 ... Prerequisite : ONUs are authenticated and pingable.
Suchitra Vemurid151c332020-01-28 17:48:45 -080064 [Tags] functional VOL-2409 ofagentRestart notready
Andy Bavierabeba262020-02-07 16:22:16 -070065 [Setup] Run Keywords Announce Message START TEST ofagentRestart
66 ... AND Start Logging ofagentRestart
Andy Bavier4a8450e2020-02-04 08:58:37 -070067 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -070068 ... AND Stop Logging ofagentRestart
Andy Bavier4a8450e2020-02-04 08:58:37 -070069 ... AND Announce Message END TEST ofagentRestart
Suchitra Vemurib661bf32020-01-30 22:46:14 -080070 # Performing Sanity Test to make sure subscribers are all AUTH+DHCP and pingable
71 Run Keyword If ${has_dataplane} Clean Up Linux
72 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +000073 ${waitforRestart} Set Variable 120s
Andy Bavier4a8450e2020-02-04 08:58:37 -070074 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +000075 Log ${podStatusOutput}
Andy Bavier4a8450e2020-02-04 08:58:37 -070076 ${countBforRestart}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +000077 Restart Pod ${NAMESPACE} ofagent
78 Sleep 60s
79 Wait Until Keyword Succeeds ${waitforRestart} 2s Validate Pod Status ofagent ${NAMESPACE}
80 ... Running
81 Repeat Sanity Test
Andy Bavier4a8450e2020-02-04 08:58:37 -070082 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +000083 Log ${podStatusOutput}
Andy Bavier4a8450e2020-02-04 08:58:37 -070084 ${countAfterRestart}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +000085 Should Be Equal As Strings ${countAfterRestart} ${countBforRestart}
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +000086
Suchitra Vemuric4203692020-01-30 20:29:46 -080087Verify restart openolt-adapter container after VOLTHA is operational
88 [Documentation] Restart openolt-adapter container after VOLTHA is operational.
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000089 ... Prerequisite : ONUs are authenticated and pingable.
Suchitra Vemuri109feb12020-01-23 16:25:02 -080090 [Tags] functional VOL-1958 RestartPods
Andy Bavierabeba262020-02-07 16:22:16 -070091 [Setup] Run Keywords Announce Message START TEST RestartPods
92 ... AND Start Logging RestartPods
Andy Bavier4a8450e2020-02-04 08:58:37 -070093 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -070094 ... AND Stop Logging RestartPods
Andy Bavier4a8450e2020-02-04 08:58:37 -070095 ... AND Announce Message END TEST RestartPods
Gayathri.Selvan283a63c2020-01-23 04:09:18 +000096 ${waitforRestart} Set Variable 120s
Suchitra Vemuri75596062020-02-08 21:47:36 -080097 # Remove the Sanity Check after enabling first failure test (OLT Adapter Test)
98 Run Keyword If ${has_dataplane} Clean Up Linux
99 Wait Until Keyword Succeeds ${timeout} 2s Perform Sanity Test
Andy Bavier4a8450e2020-02-04 08:58:37 -0700100 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
Gayathri.Selvan283a63c2020-01-23 04:09:18 +0000101 Log ${podStatusOutput}
Andy Bavier4a8450e2020-02-04 08:58:37 -0700102 ${countBforRestart}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
Gayathri.Selvan283a63c2020-01-23 04:09:18 +0000103 ${podName} Set Variable adapter-open-olt
104 Restart Pod ${NAMESPACE} ${podName}
105 Wait Until Keyword Succeeds ${waitforRestart} 2s Validate Pod Status ${podName} ${NAMESPACE}
106 ... Running
107 Repeat Sanity Test
Andy Bavier4a8450e2020-02-04 08:58:37 -0700108 ${podStatusOutput}= Run kubectl get pods -n ${NAMESPACE}
Gayathri.Selvan283a63c2020-01-23 04:09:18 +0000109 Log ${podStatusOutput}
Andy Bavier4a8450e2020-02-04 08:58:37 -0700110 ${countAfterRestart}= Run kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
Gayathri.Selvan283a63c2020-01-23 04:09:18 +0000111 Should Be Equal As Strings ${countAfterRestart} ${countBforRestart}
112 Log to console Pod ${podName} restarted and sanity checks passed successfully
Gayathri.Selvanb6a2b542020-01-24 07:24:23 +0000113
Gayathri.Selvanc0b37022020-02-06 05:17:00 +0000114Check ONU adapter crash not forcing authentication again
115 [Documentation] After ONU adapter restart, checks wpa log for 'authentication started'
116 ... message count to make sure auth not started again and validates EAP status and ping.
117 ... Assuming that test1 or sanity was executed where all the ONUs are authenticated/DHCP/pingable
118 [Tags] functional ONUAdaptCrash notready
Andy Bavierabeba262020-02-07 16:22:16 -0700119 [Setup] Run Keywords Announce Message START TEST ONUAdaptCrash
120 ... AND Start Logging ONUAdaptCrash
121 [Teardown] Run Keywords Collect Logs
122 ... AND Stop Logging ONUAdaptCrash
123 ... AND Announce Message END TEST ONUAdaptCrash
Gayathri.Selvanc0b37022020-02-06 05:17:00 +0000124 @{before_list}= Create List
125 @{after_list}= Create List
126 FOR ${I} IN RANGE 0 ${num_onus}
127 ${src}= Set Variable ${hosts.src[${I}]}
128 ${dst}= Set Variable ${hosts.dst[${I}]}
129 ${onu_device_id}= Get Device ID From SN ${src['onu']}
130 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
131 ... ${of_id}
132 ${before}= Run Keyword If ${has_dataplane} Check Remote File Contents For WPA Logs
133 ... True /tmp/wpa.log authentication started ${src['ip']} ${src['user']} ${src['pass']}
134 ... ${src['container_type']} ${src['container_name']}
135 Append To List ${before_list} ${before}
136 END
137 Wait Until Keyword Succeeds ${timeout} 15s Restart Pod ${NAMESPACE} adapter-open-onu
138 Wait Until Keyword Succeeds ${timeout} 2s Validate Pod Status ${podName} ${NAMESPACE}
139 ... Running
140 FOR ${I} IN RANGE 0 ${num_onus}
141 ${src}= Set Variable ${hosts.src[${I}]}
142 ${dst}= Set Variable ${hosts.dst[${I}]}
143 ${onu_device_id}= Get Device ID From SN ${src['onu']}
144 ${onu_port}= Wait Until Keyword Succeeds ${timeout} 2s Get ONU Port in ONOS ${src['onu']}
145 ... ${of_id}
146 ${after}= Run Keyword If ${has_dataplane} Check Remote File Contents For WPA Logs
147 ... True /tmp/wpa.log authentication started ${src['ip']} ${src['user']} ${src['pass']}
148 ... ${src['container_type']} ${src['container_name']}
149 Append To List ${after_list} ${after}
150 ${output}= Run Keyword If ${has_dataplane} Login And Run Command On Remote System
151 ... wpa_cli status | grep SUCCESS ${src['ip']} ${src['user']} ${src['pass']}
152 ... ${src['container_type']} ${src['container_name']}
153 Run Keyword If ${has_dataplane} Should Contain ${output} SUCCESS
154 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
155 ... Wait Until Keyword Succeeds 60s 2s Check Ping
156 ... True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']} ${src['ip']} ${src['user']}
157 ... ${src['pass']} ${src['container_type']} ${src['container_name']}
158 END
159 Lists Should Be Equal ${after_list} ${before_list}
160 Log ${after_list}
161 Log ${before_list}
162 Run Keyword and Ignore Error Collect Logs
163
HungWei Chiu87edb1f2020-01-28 00:10:58 +0000164Verify ONU after rebooting physically
165 [Documentation] Test the ONU funcaionality by physically turning on/off ONU.
166 ... Prerequisite : Subscriber are authenticated/DHCP/pingable state
167 [Tags] functional VOL-2488 PowerSwitch notready
Andy Bavierabeba262020-02-07 16:22:16 -0700168 [Setup] Run Keywords Announce Message START TEST PowerSwitch
169 ... AND Start Logging PowerSwitch
Andy Bavier4a8450e2020-02-04 08:58:37 -0700170 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700171 ... AND Stop Logging PowerSwitch
Andy Bavier4a8450e2020-02-04 08:58:37 -0700172 ... AND Announce Message END TEST PowerSwitch
HungWei Chiu87edb1f2020-01-28 00:10:58 +0000173 Power Switch Connection Suite ${web_power_switch.ip} ${web_power_switch.user} ${web_power_switch.password}
174 FOR ${I} IN RANGE 0 ${num_onus}
175 ${src}= Set Variable ${hosts.src[${I}]}
176 ${dst}= Set Variable ${hosts.dst[${I}]}
177 Disable Switch Outlet ${src['power_switch_port']}
178 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
179 ... Wait Until Keyword Succeeds 60s 2s
180 ... Check Ping False ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
181 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
182
hwchiub7139c12020-01-28 21:51:28 +0000183 Enable Switch Outlet ${src['power_switch_port']}
HungWei Chiu87edb1f2020-01-28 00:10:58 +0000184 Run Keyword And Continue On Failure Wait Until Keyword Succeeds ${timeout} 5s Validate Device
185 ... ENABLED ACTIVE REACHABLE ${src['onu']}
HungWei Chiu87edb1f2020-01-28 00:10:58 +0000186 Run Keyword If ${has_dataplane} Run Keyword And Continue On Failure
187 ... Wait Until Keyword Succeeds 60s 2s
188 ... Check Ping True ${dst['dp_iface_ip_qinq']} ${src['dp_iface_name']}
189 ... ${src['ip']} ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
190 END
Gayathri.Selvanf68ea4b2020-02-03 07:36:39 +0000191
192ONU Reboot
193 [Documentation] Reboot ONU and verify that ONU comes up properly
194 [Tags] VOL-1957 RebootONU notready
Andy Bavierabeba262020-02-07 16:22:16 -0700195 [Setup] Run Keywords Announce Message START TEST RebootONU
196 ... AND Start Logging RebootONU
Andy Bavier4a8450e2020-02-04 08:58:37 -0700197 [Teardown] Run Keywords Collect Logs
Andy Bavierabeba262020-02-07 16:22:16 -0700198 ... AND Stop Logging RebootONU
Andy Bavier4a8450e2020-02-04 08:58:37 -0700199 ... AND Announce Message END TEST RebootONU
Gayathri.Selvanf68ea4b2020-02-03 07:36:39 +0000200 FOR ${I} IN RANGE 0 ${num_onus}
201 ${src}= Set Variable ${hosts.src[${I}]}
202 ${dst}= Set Variable ${hosts.dst[${I}]}
203 ${onu_device_id}= Get Device ID From SN ${src['onu']}
204 Reboot ONU ${onu_device_id} ${src} ${dst}
205 Verify ping is succesful except for given device ${num_onus} ${onu_device_id}
206 Run Keyword If ${has_dataplane} Clean Up Linux
207 #Check after reboot that ONUs are active, authenticated/DHCP/pingable
208 Perform Sanity Test
209 END