blob: d5a8f3abca3bdf1334db5d40c293f5c0202e910b [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
Matteo Scandolo96dbe432020-05-28 10:51:57 -070059${ONOS_REST_PORT} 8181
Matteo Scandolo142e6272020-04-29 17:36:59 -070060
61# Scale pipeline values
62${olt} 1
63${pon} 1
64${onu} 1
65
Matteo Scandolo142e6272020-04-29 17:36:59 -070066${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
Andrea Campanella70cf0a72020-05-27 10:55:15 +020073# as of now the LLDP flow is always installed
74${withLLDP} true
Matteo Scandolo142e6272020-04-29 17:36:59 -070075
76# Per-test logging on failure is turned off by default; set this variable to enable
77${container_log_dir} ${None}
78
79*** Test Cases ***
80
81Create and Enable devices
82 [Documentation] Create and enable the OLTs in VOLTHA
Andrea Campanella70cf0a72020-05-27 10:55:15 +020083 [Tags] non-critical setup
Matteo Scandolo142e6272020-04-29 17:36:59 -070084 ${olt_device_ids}= Create List
85 FOR ${INDEX} IN RANGE 0 ${olt}
Matteo Scandoloeb26a842020-05-08 10:06:24 -070086 ${olt_device_id}= Create Device bbsim${INDEX} 50060 openolt
Matteo Scandolo142e6272020-04-29 17:36:59 -070087 Enable Device ${olt_device_id}
88 Append To List ${olt_device_ids} ${olt_device_id}
89 END
90
91 Set Suite Variable ${olt_device_ids}
92
93Onu Activation in VOLTHA
94 [Documentation] Check that all ONUs reach the ACTIVE/ENABLED state in VOLTHA
95 [Tags] non-critical activation plot-voltha-onus
96 Wait For ONUs In VOLTHA ${total_onus}
97
98Port Discovery in ONOS
99 [Documentation] Check that all the UNI ports show up in ONOS
100 [Tags] non-critical activation plot-onos-ports
101 Wait for Ports in ONOS ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${total_onus} BBSM
102
103Flows validation in VOLTHA before subscriber provisioning
Matteo Scandoloeb26a842020-05-08 10:06:24 -0700104 [Documentation] Check that all the flows has been stored in the logical device
Matteo Scandolo142e6272020-04-29 17:36:59 -0700105 [Tags] non-critical flow-before plot-voltha-flows-before
106 # NOTE fail the test immediately if we're trying to check flows without provisioning them
107 Should Be Equal ${enableFlowProvisioning} true
108 Wait for Logical Devices flows ${workflow} ${total_onus} ${olt} false
Andrea Campanella70cf0a72020-05-27 10:55:15 +0200109 ... ${withEapol} ${withDhcp} ${withIgmp} ${withLLDP}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700110
Matteo Scandolo616daab2020-05-13 11:49:24 -0700111Flows validation in VOLTHA Adapters before subscriber provisioning
112 [Documentation] Check that all flows has been store in devices of type openolt
Matteo Scandolo96dbe432020-05-28 10:51:57 -0700113 [Tags] non-critical flow-before plot-voltha-openolt-flows-before only-me
Matteo Scandolo616daab2020-05-13 11:49:24 -0700114 Should Be Equal ${enableFlowProvisioning} true
115 Wait for OpenOLT Devices flows ${workflow} ${total_onus} ${olt} false
Andrea Campanella70cf0a72020-05-27 10:55:15 +0200116 ... ${withEapol} ${withDhcp} ${withIgmp} ${withLLDP}
Matteo Scandolo616daab2020-05-13 11:49:24 -0700117
Matteo Scandolo142e6272020-04-29 17:36:59 -0700118Flows validation in ONOS before subscriber provisioning
Matteo Scandoloeb26a842020-05-08 10:06:24 -0700119 [Documentation] Check that all the flows has been acknowledged
Matteo Scandolo142e6272020-04-29 17:36:59 -0700120 [Tags] non-critical flow-before plot-onos-flows-before
121 # NOTE fail the test immediately if we're trying to check flows without provisioning them
122 Should Be Equal ${enableFlowProvisioning} true
123 Wait for all flows to in ADDED state ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Andrea Campanella70cf0a72020-05-27 10:55:15 +0200124 ... ${workflow} ${total_onus} ${olt} false ${withEapol} ${withDhcp}
125 ... ${withIgmp} ${withLLDP}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700126
127Wait for subscribers to be Authenticated
128 [Documentation] Check that all subscribers have successfully authenticated
129 [Tags] non-critical authentication plot-onos-auth
130 Wait for AAA Authentication ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${total_onus}
131
132Provision subscribers
133 [Documentation] Provision data plane flows for all the subscribers
134 [Tags] non-critical provision
135 Should Be Equal ${enableSubscriberProvisioning} true
136 ${olts}= List OLTs ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
137 FOR ${olt} IN @{olts}
Matteo Scandolo96dbe432020-05-28 10:51:57 -0700138 Provision all subscribers on device ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${ONOS_REST_PORT} ${olt}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700139 END
140
141Flows validation in VOLTHA after subscriber provisioning
142 [Documentation] Check that all the flows has been stored in the logical device
143 [Tags] non-critical flow-after plot-voltha-flows-after
144 # NOTE fail the test immediately if we're trying to check flows without provisioning them
145 Should Be Equal ${enableFlowProvisioning} true
146 Wait for Logical Devices flows ${workflow} ${total_onus} ${olt} true
Andrea Campanella70cf0a72020-05-27 10:55:15 +0200147 ... ${withEapol} ${withDhcp} ${withIgmp} ${withLLDP}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700148
Matteo Scandolo616daab2020-05-13 11:49:24 -0700149Flows validation in VOLTHA Adapters after subscriber provisioning
150 [Documentation] Check that all flows has been store in devices of type openolt
Matteo Scandolo96dbe432020-05-28 10:51:57 -0700151 [Tags] non-critical flow-after plot-voltha-openolt-flows-after only-me
Matteo Scandolo616daab2020-05-13 11:49:24 -0700152 Should Be Equal ${enableFlowProvisioning} true
153 Wait for OpenOLT Devices flows ${workflow} ${total_onus} ${olt} true
Andrea Campanella70cf0a72020-05-27 10:55:15 +0200154 ... ${withEapol} ${withDhcp} ${withIgmp} ${withLLDP}
Matteo Scandolo616daab2020-05-13 11:49:24 -0700155
Matteo Scandolo142e6272020-04-29 17:36:59 -0700156Flows validation in ONOS after subscriber provisioning
157 [Documentation] Check that all the flows has been acknowledged
158 [Tags] non-critical flow-after plot-onos-flows-after
159 # NOTE fail the test immediately if we're trying to check flows without provisioning them
160 Should Be Equal ${enableFlowProvisioning} true
161 Wait for all flows to in ADDED state ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Andrea Campanella70cf0a72020-05-27 10:55:15 +0200162 ... ${workflow} ${total_onus} ${olt} true ${withEapol} ${withDhcp}
163 ... ${withIgmp} ${withLLDP}
Matteo Scandolo142e6272020-04-29 17:36:59 -0700164
165Wait for subscribers to have an IP
166 [Documentation] Check that all subscribers have received a DHCP_ACK
167 [Tags] non-critical dhcp plot-onos-dhcp
168 Wait for DHCP Ack ${ONOS_SSH_IP} ${ONOS_SSH_PORT} ${total_onus}
169
170Disable and Delete devices
171 [Documentation] Disable and delete the OLTs in VOLTHA
172 [Tags] non-critical teardown
173 FOR ${olt_device_id} IN @{olt_device_ids}
174 Disable Device ${olt_device_id}
175 Delete Device ${olt_device_id}
176 END
177
178 Set Suite Variable ${olt_device_ids}
179
180*** Keywords ***
181Setup Suite
182 [Documentation] Setup test global variables and starts a timer
183 Set Suite Variable ${KUBECTL_CONFIG} export KUBECONFIG=%{KUBECONFIG}
184 Set Suite Variable ${VOLTCTL_CONFIG} export VOLTCONFIG=%{VOLTCONFIG}
185
186 ${total_onus}= Evaluate ${olt} * ${pon} * ${onu}
187 Set Suite Variable ${total_onus}
188
189 Configure Timer 10 minutes 0 seconds SuiteTimer
190 Start Timer SuiteTimer
191
192Teardown Suite
193 [Documentation] Verify the timer
194 Stop Timer SuiteTimer
195 Verify Single Timer 10 minutes 0 seconds SuiteTimer