blob: f60b4dd4738866261629a59e940d204b3bf0285d [file] [log] [blame]
Gilles Depatieb5682f82019-10-31 10:39:45 -04001#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
15*** Settings ***
16Documentation Test suite that engages a larger number of ONU at the same which makes it a more realistic test
17... It is addaptable to either BBSim or Real H/W using a configuration file
18Suite Setup Setup Suite
19Suite Teardown Teardown Suite
20Library Collections
21Library String
22Library OperatingSystem
23Library XML
24Library RequestsLibrary
25Library ../../libraries/DependencyLibrary.py
26Resource ../../libraries/onos.robot
27Resource ../../libraries/voltctl.robot
28Resource ../../libraries/utils.robot
29Resource ../../libraries/k8s.robot
30Resource ../../variables/variables.robot
31
32*** Variables ***
33${timeout} 60s
34${long_timeout} 420
35${of_id} 0
36${logical_id} 0
37${has_dataplane} True
38${external_libs} True
39${teardown_device} False
40
41*** Test Cases ***
42Activate Devices OLT/ONU
43 [Documentation] Validate deployment -> Empty Device List
44 ... create and enable device -> Preprovision and Enable
45 ... re-validate deployment -> Active OLT
46 [Tags] active
47 #test for empty device list
David Bainbridgef81cd642019-11-20 00:14:47 +000048 Test Empty Device List
Gilles Depatieb5682f82019-10-31 10:39:45 -040049 #create/preprovision device
50 ${olt_device_id}= Create Device ${olt_ip} ${OLT_PORT}
51 Set Global Variable ${olt_device_id}
52 #validate olt states
Andy Bavierac7e5972019-11-14 15:35:48 -070053 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device PREPROVISIONED UNKNOWN UNKNOWN ${EMPTY}
Gilles Depatieb5682f82019-10-31 10:39:45 -040054 ... ${olt_device_id}
55 #enable device
56 Enable Device ${olt_device_id}
57 #validate olt states
Andy Bavierac7e5972019-11-14 15:35:48 -070058 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device ENABLED ACTIVE REACHABLE ${EMPTY}
Gilles Depatieb5682f82019-10-31 10:39:45 -040059 ... ${olt_device_id}
60
61ONU Discovery
62 [Documentation] Discover lists of ONUS, their Serial Numbers and device id
63 [Tags] active
64 #build onu sn list
65 ${List_ONU_Serial} Create List
66 Set Suite Variable ${List_ONU_Serial}
67 Build ONU SN List ${List_ONU_Serial}
68 Log ${List_ONU_Serial}
69 #validate onu states
70 Wait Until Keyword Succeeds ${long_timeout} 20s Validate ONU Devices ENABLED ACTIVE REACHABLE
71 ... ${List_ONU_Serial}
72
73Validate Device's Ports and Flows
74 [Documentation] Verify Ports and Flows listed for OLT and ONUs
75 ... For OLT we validate the port types and numbers and for flows we simply verify that their numbers > 0
76 ... For each ONU, we validate the port types and numbers for each and for flows.
77 ... For flows they should be == 0 at this stage
78 [Tags] active
79 #validate olt port types
80 Validate OLT Port Types PON_OLT ETHERNET_NNI
81 #validate olt flows
Andy Bavierac7e5972019-11-14 15:35:48 -070082 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Flows
Gilles Depatieb5682f82019-10-31 10:39:45 -040083 #validate onu port types
84 Validate ONU Port Types ${List_ONU_Serial} PON_ONU ETHERNET_UNI
85 #validate onu flows
Andy Bavierac7e5972019-11-14 15:35:48 -070086 Wait Until Keyword Succeeds ${timeout} 5s Validate ONU Flows ${List_ONU_Serial} ${num_onu_flows}
Gilles Depatieb5682f82019-10-31 10:39:45 -040087
88Validate Logical Device
89 [Documentation] Verify that logical device exists and then verify its ports and flows
90 [Tags] active
91 #Verify logical device exists
92 ${logical_device_id}= Validate Logical Device
93 #Verify logical device ports
94 Validate Logical Device Ports ${logical_device_id}
95 #Verify logical device flows
96 Validate Logical Device Flows ${logical_device_id}
97
98Validate Peer Devices
99 [Documentation] Verify that peer lists matches up between that of ${olt_device_id}
100 ... and individual ONU device ids
101 [Tags] active
102 #Retrieve peer list from OLT
103 ${olt_peer_list}= Create List
104 Retrieve Peer List From OLT ${olt_peer_list}
105 Log ${olt_peer_list}
106 #Validate OLT peer id list
107 Validate OLT Peer Id List ${olt_peer_list}
108 #Validate ONU peer ids
109 Validate ONU Peer Id ${olt_device_id} ${List_ONU_Serial}
110
111*** Keywords ***
112Setup Suite
Andy Bavier88cd9f62019-11-26 16:22:33 -0700113 [Documentation] Set up the test suite
114 Common Test Suite Setup
Gilles Depatieb5682f82019-10-31 10:39:45 -0400115
116Teardown Suite
117 [Documentation] Clean up devices if desired
118 ... kills processes and cleans up interfaces on src+dst servers
119 Run Keyword If ${external_libs} Get ONOS Status ${k8s_node_ip}
120 Run Keyword If ${has_dataplane} Clean Up Linux
121 Run Keyword If ${external_libs} Log Kubernetes Containers Logs Since Time ${datetime} ${container_list}
122 Run Keyword If ${teardown_device} Delete Device and Verify
David Bainbridgef81cd642019-11-20 00:14:47 +0000123 Run Keyword If ${teardown_device} Test Empty Device List
Gilles Depatieb5682f82019-10-31 10:39:45 -0400124 Run Keyword If ${teardown_device} Execute ONOS CLI Command ${k8s_node_ip} ${ONOS_SSH_PORT}
125 ... device-remove ${of_id}
126
127Clean Up Linux
128 [Documentation] Kill processes and clean up interfaces on src+dst servers
129 FOR ${I} IN RANGE 0 ${num_onus}
130 ${src}= Set Variable ${hosts.src[${I}]}
131 ${dst}= Set Variable ${hosts.dst[${I}]}
132 Run Keyword And Ignore Error Kill Linux Process [w]pa_supplicant ${src['ip']}
133 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
134 Run Keyword And Ignore Error Kill Linux Process [d]hclient ${src['ip']}
135 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
136 Run Keyword If '${dst['ip']}' != '${None}' Run Keyword And Ignore Error
137 ... Kill Linux Process [d]hcpd ${dst['ip']} ${dst['user']}
138 ... ${dst['pass']} ${dst['container_type']} ${dst['container_name']}
139 Delete IP Addresses from Interface on Remote Host ${src['dp_iface_name']} ${src['ip']}
140 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
141 Run Keyword If '${dst['ip']}' != '${None}' Delete Interface on Remote Host
142 ... ${dst['dp_iface_name']}.${src['s_tag']} ${dst['ip']} ${dst['user']} ${dst['pass']}
143 ... ${dst['container_type']} ${dst['container_name']}
144 END
145
146Delete Device and Verify
147 [Documentation] Disable -> Delete devices via voltctl and verify its removed
148 ${rc} ${output}= Run and Return Rc and Output ${VOLTCTL_CONFIG}; voltctl device disable ${olt_device_id}
149 Should Be Equal As Integers ${rc} 0
150 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device DISABLED UNKNOWN REACHABLE
151 ... ${olt_serial_number}
152 ${rc} ${output}= Run and Return Rc and Output ${VOLTCTL_CONFIG}; voltctl device delete ${olt_device_id}
153 Should Be Equal As Integers ${rc} 0
David Bainbridgef81cd642019-11-20 00:14:47 +0000154 Wait Until Keyword Succeeds ${timeout} 5s Validate Device Removed ${olt_device_id}