blob: 8ff1396a7ed040cfaaf48eb77699268250d956ee [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
48 ${length}= Test Empty Device List
49 Should Be Equal As Integers ${length} 0
50 #create/preprovision device
51 ${olt_device_id}= Create Device ${olt_ip} ${OLT_PORT}
52 Set Global Variable ${olt_device_id}
53 #validate olt states
Andy Bavierac7e5972019-11-14 15:35:48 -070054 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device PREPROVISIONED UNKNOWN UNKNOWN ${EMPTY}
Gilles Depatieb5682f82019-10-31 10:39:45 -040055 ... ${olt_device_id}
56 #enable device
57 Enable Device ${olt_device_id}
58 #validate olt states
Andy Bavierac7e5972019-11-14 15:35:48 -070059 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device ENABLED ACTIVE REACHABLE ${EMPTY}
Gilles Depatieb5682f82019-10-31 10:39:45 -040060 ... ${olt_device_id}
61
62ONU Discovery
63 [Documentation] Discover lists of ONUS, their Serial Numbers and device id
64 [Tags] active
65 #build onu sn list
66 ${List_ONU_Serial} Create List
67 Set Suite Variable ${List_ONU_Serial}
68 Build ONU SN List ${List_ONU_Serial}
69 Log ${List_ONU_Serial}
70 #validate onu states
71 Wait Until Keyword Succeeds ${long_timeout} 20s Validate ONU Devices ENABLED ACTIVE REACHABLE
72 ... ${List_ONU_Serial}
73
74Validate Device's Ports and Flows
75 [Documentation] Verify Ports and Flows listed for OLT and ONUs
76 ... For OLT we validate the port types and numbers and for flows we simply verify that their numbers > 0
77 ... For each ONU, we validate the port types and numbers for each and for flows.
78 ... For flows they should be == 0 at this stage
79 [Tags] active
80 #validate olt port types
81 Validate OLT Port Types PON_OLT ETHERNET_NNI
82 #validate olt flows
Andy Bavierac7e5972019-11-14 15:35:48 -070083 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Flows
Gilles Depatieb5682f82019-10-31 10:39:45 -040084 #validate onu port types
85 Validate ONU Port Types ${List_ONU_Serial} PON_ONU ETHERNET_UNI
86 #validate onu flows
Andy Bavierac7e5972019-11-14 15:35:48 -070087 Wait Until Keyword Succeeds ${timeout} 5s Validate ONU Flows ${List_ONU_Serial} ${num_onu_flows}
Gilles Depatieb5682f82019-10-31 10:39:45 -040088
89Validate Logical Device
90 [Documentation] Verify that logical device exists and then verify its ports and flows
91 [Tags] active
92 #Verify logical device exists
93 ${logical_device_id}= Validate Logical Device
94 #Verify logical device ports
95 Validate Logical Device Ports ${logical_device_id}
96 #Verify logical device flows
97 Validate Logical Device Flows ${logical_device_id}
98
99Validate Peer Devices
100 [Documentation] Verify that peer lists matches up between that of ${olt_device_id}
101 ... and individual ONU device ids
102 [Tags] active
103 #Retrieve peer list from OLT
104 ${olt_peer_list}= Create List
105 Retrieve Peer List From OLT ${olt_peer_list}
106 Log ${olt_peer_list}
107 #Validate OLT peer id list
108 Validate OLT Peer Id List ${olt_peer_list}
109 #Validate ONU peer ids
110 Validate ONU Peer Id ${olt_device_id} ${List_ONU_Serial}
111
112*** Keywords ***
113Setup Suite
Andy Bavier88cd9f62019-11-26 16:22:33 -0700114 [Documentation] Set up the test suite
115 Common Test Suite Setup
Gilles Depatieb5682f82019-10-31 10:39:45 -0400116
117Teardown Suite
118 [Documentation] Clean up devices if desired
119 ... kills processes and cleans up interfaces on src+dst servers
120 Run Keyword If ${external_libs} Get ONOS Status ${k8s_node_ip}
121 Run Keyword If ${has_dataplane} Clean Up Linux
122 Run Keyword If ${external_libs} Log Kubernetes Containers Logs Since Time ${datetime} ${container_list}
123 Run Keyword If ${teardown_device} Delete Device and Verify
Andy Bavier44e84fe2019-12-10 10:23:15 -0700124 ${length}= Run Keyword If ${teardown_device} Test Empty Device List
Gilles Depatieb5682f82019-10-31 10:39:45 -0400125 Run Keyword If ${teardown_device} Should Be Equal As Integers ${length} 0
126 Run Keyword If ${teardown_device} Execute ONOS CLI Command ${k8s_node_ip} ${ONOS_SSH_PORT}
127 ... device-remove ${of_id}
128
129Clean Up Linux
130 [Documentation] Kill processes and clean up interfaces on src+dst servers
131 FOR ${I} IN RANGE 0 ${num_onus}
132 ${src}= Set Variable ${hosts.src[${I}]}
133 ${dst}= Set Variable ${hosts.dst[${I}]}
134 Run Keyword And Ignore Error Kill Linux Process [w]pa_supplicant ${src['ip']}
135 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
136 Run Keyword And Ignore Error Kill Linux Process [d]hclient ${src['ip']}
137 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
138 Run Keyword If '${dst['ip']}' != '${None}' Run Keyword And Ignore Error
139 ... Kill Linux Process [d]hcpd ${dst['ip']} ${dst['user']}
140 ... ${dst['pass']} ${dst['container_type']} ${dst['container_name']}
141 Delete IP Addresses from Interface on Remote Host ${src['dp_iface_name']} ${src['ip']}
142 ... ${src['user']} ${src['pass']} ${src['container_type']} ${src['container_name']}
143 Run Keyword If '${dst['ip']}' != '${None}' Delete Interface on Remote Host
144 ... ${dst['dp_iface_name']}.${src['s_tag']} ${dst['ip']} ${dst['user']} ${dst['pass']}
145 ... ${dst['container_type']} ${dst['container_name']}
146 END
147
148Delete Device and Verify
149 [Documentation] Disable -> Delete devices via voltctl and verify its removed
150 ${rc} ${output}= Run and Return Rc and Output ${VOLTCTL_CONFIG}; voltctl device disable ${olt_device_id}
151 Should Be Equal As Integers ${rc} 0
152 Wait Until Keyword Succeeds ${timeout} 5s Validate OLT Device DISABLED UNKNOWN REACHABLE
153 ... ${olt_serial_number}
154 ${rc} ${output}= Run and Return Rc and Output ${VOLTCTL_CONFIG}; voltctl device delete ${olt_device_id}
155 Should Be Equal As Integers ${rc} 0
156 Wait Until Keyword Succeeds ${timeout} 5s Validate Device Removed ${olt_device_id}