blob: 76708eab50083798176781c9ed5ef7d82a93cdfa [file] [log] [blame]
Matteo Scandolo142e6272020-04-29 17:36:59 -07001# 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# Tests can be enabled by passing the following tags:
16# - [setup] Creates and enable the OLT devices
17# - [activation] Checks that ONUs are active in VOLTHA and ports discevered in ONOS
18# - [flow-before] Checks that flows are pushed (before subscriber provisioning)
19# - [authentication] Checks that subscribers are correctly authenticated
20# - [provision] Provision the data-plane flows for all the subscribers
21# - [flow-after] Checks that flows are pushed (after subscriber provisioning)
22# - [dhcp] Checks that subscribers have received an IP
23#
24# To run the full test:
25# robot Voltha_Scale_Tests.robot
26#
27# To run only ceratain tests:
28# robot -i activation -i flow-before Voltha_Scale_Tests.robot
29#
30# To exclude only ceratain tests:
31# robot -e -i flow-before Voltha_Scale_Tests.robot
32#
33# Once te test complete you can extrapolate the results by using
34# python extract-times.py
35
36*** Settings ***
37Documentation Collect measurements on VOLTHA performances
38Suite Setup Setup Suite
39#Test Setup Setup
40#Test Teardown Teardown
41Suite Teardown Teardown Suite
42Library Collections
43Library String
44Library OperatingSystem
45Library XML
46Library Timer
47Library RequestsLibrary
48Library ../../libraries/DependencyLibrary.py
49Resource ../../libraries/onos.robot
50Resource ../../libraries/voltctl.robot
51Resource ../../libraries/voltha.robot
Matteo Scandoloeb26a842020-05-08 10:06:24 -070052Resource ../../libraries/flows.robot
Matteo Scandolo142e6272020-04-29 17:36:59 -070053Resource ../../libraries/k8s.robot
54Resource ../../variables/variables.robot
55
56*** Variables ***
57${ONOS_SSH_IP} 127.0.0.1
58${ONOS_SSH_PORT} 8101
59
60# Scale pipeline values
61${olt} 1
62${pon} 1
63${onu} 1
64
65${enableLLDP} false
66${enableFlowProvisioning} true
67${enableSubscriberProvisioning} true
68
69${workflow} att
Matteo Scandoloeb26a842020-05-08 10:06:24 -070070${withEapol} false
71${withDhcp} false
72${withIgmp} false
Matteo Scandolo142e6272020-04-29 17:36:59 -070073
74# Per-test logging on failure is turned off by default; set this variable to enable
75${container_log_dir} ${None}
76
77*** Test Cases ***
78
79Create and Enable devices
80 [Documentation] Create and enable the OLTs in VOLTHA
81 [Tags] setup
82 ${olt_device_ids}= Create List
83 FOR ${INDEX} IN RANGE 0 ${olt}
Matteo Scandoloeb26a842020-05-08 10:06:24 -070084 ${olt_device_id}= Create Device bbsim${INDEX} 50060 openolt
Matteo Scandolo142e6272020-04-29 17:36:59 -070085 Enable Device ${olt_device_id}
86 Append To List ${olt_device_ids} ${olt_device_id}
87 END
88
89 Set Suite Variable ${olt_device_ids}
90
91Onu Activation in VOLTHA
92 [Documentation] Check that all ONUs reach the ACTIVE/ENABLED state in VOLTHA
93 [Tags] non-critical activation plot-voltha-onus
94 Wait For ONUs In VOLTHA ${total_onus}
95
96Port Discovery in ONOS
97 [Documentation] Check that all the UNI ports show up in ONOS
98 [Tags] non-critical activation plot-onos-ports
99 Wait for Ports in ONOS ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${total_onus} BBSM
100
101Flows validation in VOLTHA before subscriber provisioning
Matteo Scandoloeb26a842020-05-08 10:06:24 -0700102 [Documentation] Check that all the flows has been stored in the logical device
Matteo Scandolo142e6272020-04-29 17:36:59 -0700103 [Tags] non-critical flow-before plot-voltha-flows-before
104 # NOTE fail the test immediately if we're trying to check flows without provisioning them
105 Should Be Equal ${enableFlowProvisioning} true
106 Wait for Logical Devices flows ${workflow} ${total_onus} ${olt} false
Matteo Scandoloeb26a842020-05-08 10:06:24 -0700107 ... ${withEapol} ${withDhcp} ${withIgmp}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700108
Matteo Scandolo616daab2020-05-13 11:49:24 -0700109Flows validation in VOLTHA Adapters before subscriber provisioning
110 [Documentation] Check that all flows has been store in devices of type openolt
111 [Tags] non-critical flow-before plot-voltha-openolt-flows-before
112 Should Be Equal ${enableFlowProvisioning} true
113 Wait for OpenOLT Devices flows ${workflow} ${total_onus} ${olt} false
114 ... ${withEapol} ${withDhcp} ${withIgmp}
115
Matteo Scandolo142e6272020-04-29 17:36:59 -0700116Flows validation in ONOS before subscriber provisioning
Matteo Scandoloeb26a842020-05-08 10:06:24 -0700117 [Documentation] Check that all the flows has been acknowledged
Matteo Scandolo142e6272020-04-29 17:36:59 -0700118 [Tags] non-critical flow-before plot-onos-flows-before
119 # NOTE fail the test immediately if we're trying to check flows without provisioning them
120 Should Be Equal ${enableFlowProvisioning} true
121 Wait for all flows to in ADDED state ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Matteo Scandoloeb26a842020-05-08 10:06:24 -0700122 ... ${workflow} ${total_onus} ${olt} false ${withEapol} ${withDhcp} ${withIgmp}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700123
124Wait for subscribers to be Authenticated
125 [Documentation] Check that all subscribers have successfully authenticated
126 [Tags] non-critical authentication plot-onos-auth
127 Wait for AAA Authentication ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${total_onus}
128
129Provision subscribers
130 [Documentation] Provision data plane flows for all the subscribers
131 [Tags] non-critical provision
132 Should Be Equal ${enableSubscriberProvisioning} true
133 ${olts}= List OLTs ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
134 FOR ${olt} IN @{olts}
135 Provision all subscribers on device ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${olt}
136 END
137
138Flows validation in VOLTHA after subscriber provisioning
139 [Documentation] Check that all the flows has been stored in the logical device
140 [Tags] non-critical flow-after plot-voltha-flows-after
141 # NOTE fail the test immediately if we're trying to check flows without provisioning them
142 Should Be Equal ${enableFlowProvisioning} true
143 Wait for Logical Devices flows ${workflow} ${total_onus} ${olt} true
Matteo Scandoloeb26a842020-05-08 10:06:24 -0700144 ... ${withEapol} ${withDhcp} ${withIgmp}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700145
Matteo Scandolo616daab2020-05-13 11:49:24 -0700146Flows validation in VOLTHA Adapters after subscriber provisioning
147 [Documentation] Check that all flows has been store in devices of type openolt
148 [Tags] non-critical flow-after plot-voltha-openolt-flows-after
149 Should Be Equal ${enableFlowProvisioning} true
150 Wait for OpenOLT Devices flows ${workflow} ${total_onus} ${olt} true
151 ... ${withEapol} ${withDhcp} ${withIgmp}
152
Matteo Scandolo142e6272020-04-29 17:36:59 -0700153Flows validation in ONOS after subscriber provisioning
154 [Documentation] Check that all the flows has been acknowledged
155 [Tags] non-critical flow-after plot-onos-flows-after
156 # NOTE fail the test immediately if we're trying to check flows without provisioning them
157 Should Be Equal ${enableFlowProvisioning} true
158 Wait for all flows to in ADDED state ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Matteo Scandoloeb26a842020-05-08 10:06:24 -0700159 ... ${workflow} ${total_onus} ${olt} true ${withEapol} ${withDhcp} ${withIgmp}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700160
161Wait for subscribers to have an IP
162 [Documentation] Check that all subscribers have received a DHCP_ACK
163 [Tags] non-critical dhcp plot-onos-dhcp
164 Wait for DHCP Ack ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${total_onus}
165
166Disable and Delete devices
167 [Documentation] Disable and delete the OLTs in VOLTHA
168 [Tags] non-critical teardown
169 FOR ${olt_device_id} IN @{olt_device_ids}
170 Disable Device ${olt_device_id}
171 Delete Device ${olt_device_id}
172 END
173
174 Set Suite Variable ${olt_device_ids}
175
176*** Keywords ***
177Setup Suite
178 [Documentation] Setup test global variables and starts a timer
179 Set Suite Variable ${KUBECTL_CONFIG} export KUBECONFIG=%{KUBECONFIG}
180 Set Suite Variable ${VOLTCTL_CONFIG} export VOLTCONFIG=%{VOLTCONFIG}
181
182 ${total_onus}= Evaluate ${olt} * ${pon} * ${onu}
183 Set Suite Variable ${total_onus}
184
185 Configure Timer 10 minutes 0 seconds SuiteTimer
186 Start Timer SuiteTimer
187
188Teardown Suite
189 [Documentation] Verify the timer
190 Stop Timer SuiteTimer
191 Verify Single Timer 10 minutes 0 seconds SuiteTimer