From d9716ad55cf9d1ec63d4297c9b61134a62d5be64 Mon Sep 17 00:00:00 2001 From: selias Date: Wed, 29 Jun 2016 10:38:31 +0200 Subject: Rename Honeycomb test suites - update test suite numbering to be future-proof - reorder suite execution: - persistence suite should always run last - l2_fib suite follows after l2 - VxLAN gpe suite follows after VxLAN - fix issue with interface name vs. index introduced in change #1032 - change ${node} variable to global scope, set in _init_.robot Change-Id: Ib4ca7265586026faab219da9923e7ca312ef2c79 Signed-off-by: selias --- .../honeycomb/010_interface_management.robot | 116 ++++++ tests/suites/honeycomb/020_bridge_domain.robot | 105 ++++++ tests/suites/honeycomb/021_l2_fib.robot | 228 ++++++++++++ tests/suites/honeycomb/030_vxlan.robot | 115 ++++++ tests/suites/honeycomb/031_vxlan_gpe.robot | 174 +++++++++ tests/suites/honeycomb/040_tap.robot | 71 ++++ .../honeycomb/050_interface_vhost_user.robot | 159 +++++++++ tests/suites/honeycomb/060_sub_interface.robot | 388 ++++++++++++++++++++ tests/suites/honeycomb/070_notification.robot | 56 +++ .../honeycomb/1 - interface_management.robot | 117 ------- tests/suites/honeycomb/2 - vxlan.robot | 116 ------ tests/suites/honeycomb/3 - bridge_domain.robot | 106 ------ tests/suites/honeycomb/4 - tap.robot | 72 ---- .../honeycomb/5 - interface_vhost_user.robot | 160 --------- tests/suites/honeycomb/6 - sub_interface.robot | 389 --------------------- tests/suites/honeycomb/7 - persistence.robot | 77 ---- tests/suites/honeycomb/8 - vxlan_gpe.robot | 175 --------- tests/suites/honeycomb/9 - l2_fib.robot | 229 ------------ tests/suites/honeycomb/9 - notification.robot | 57 --- tests/suites/honeycomb/900_persistence.robot | 76 ++++ tests/suites/honeycomb/__init__.robot | 4 +- 21 files changed, 1491 insertions(+), 1499 deletions(-) create mode 100644 tests/suites/honeycomb/010_interface_management.robot create mode 100644 tests/suites/honeycomb/020_bridge_domain.robot create mode 100644 tests/suites/honeycomb/021_l2_fib.robot create mode 100644 tests/suites/honeycomb/030_vxlan.robot create mode 100644 tests/suites/honeycomb/031_vxlan_gpe.robot create mode 100644 tests/suites/honeycomb/040_tap.robot create mode 100644 tests/suites/honeycomb/050_interface_vhost_user.robot create mode 100644 tests/suites/honeycomb/060_sub_interface.robot create mode 100644 tests/suites/honeycomb/070_notification.robot delete mode 100644 tests/suites/honeycomb/1 - interface_management.robot delete mode 100644 tests/suites/honeycomb/2 - vxlan.robot delete mode 100644 tests/suites/honeycomb/3 - bridge_domain.robot delete mode 100644 tests/suites/honeycomb/4 - tap.robot delete mode 100644 tests/suites/honeycomb/5 - interface_vhost_user.robot delete mode 100644 tests/suites/honeycomb/6 - sub_interface.robot delete mode 100644 tests/suites/honeycomb/7 - persistence.robot delete mode 100644 tests/suites/honeycomb/8 - vxlan_gpe.robot delete mode 100644 tests/suites/honeycomb/9 - l2_fib.robot delete mode 100644 tests/suites/honeycomb/9 - notification.robot create mode 100644 tests/suites/honeycomb/900_persistence.robot (limited to 'tests') diff --git a/tests/suites/honeycomb/010_interface_management.robot b/tests/suites/honeycomb/010_interface_management.robot new file mode 100644 index 0000000000..e9798167c7 --- /dev/null +++ b/tests/suites/honeycomb/010_interface_management.robot @@ -0,0 +1,116 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +# Configuration which will be set and verified during tests. +| ${ipv4_address}= | 192.168.0.2 +| ${ipv4_address2}= | 192.168.0.3 +| ${ipv4_mask}= | 255.255.255.0 +| ${ipv4_prefix}= | ${24} +| @{ipv4_neighbor}= | 192.168.0.4 | 08:00:27:c0:5d:37 +| &{ipv4_settings}= | enabled=${True} | forwarding=${True} | mtu=${9000} +| @{ipv6_address}= | 10::10 | ${64} +| @{ipv6_neighbor}= | 10::11 | 08:00:27:c0:5d:37 +| &{ipv6_settings}= | enabled=${True} | forwarding=${True} | mtu=${9000} +| ... | dup-addr-detect-transmits=${5} +| &{ethernet}= | mtu=${9000} +| &{routing}= | vrf-id=${27} +| &{vxlan_settings}= | src=10.0.1.20 | dst=10.0.3.20 | vni=${1000} +| ... | encap-vrf-id=${1000} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Force Tags | honeycomb_sanity +| Documentation | *Honeycomb interface management test suite.* +| ... +| ... | Test suite uses the first interface of the first DUT node. + +*** Test Cases *** +| Honeycomb configures and reads interface state +| | [Documentation] | Check if Honeycomb API can modify the admin state of\ +| | ... | VPP interfaces. +| | Given Interface state is | ${node} | ${interface} | down +| | When Honeycomb sets interface state | ${node} | ${interface} | up +| | Then Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | up +| | And Interface state from VAT should be | ${node} | ${interface} | up +| | When Honeycomb sets interface state | ${node} | ${interface} | down +| | Then Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | And Interface state from VAT should be | ${node} | ${interface} | down + +| Honeycomb modifies interface configuration - ipv4 (netmask) +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ +| | ... | with address and netmask provided. +| | When Honeycomb sets interface ipv4 address | ${node} | ${interface} +| | ... | ${ipv4_address} | ${ipv4_mask} | ${ipv4_settings} +| | And Honeycomb adds interface ipv4 neighbor +| | ... | ${node} | ${interface} | @{ipv4_neighbor} +| | Then IPv4 config from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | ... | @{ipv4_neighbor} | ${ipv4_settings} +| | And IPv4 config from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} + +| Honeycomb removes ipv4 address from interface +| | [Documentation] | Check if Honeycomb API can remove configured ipv4\ +| | ... | addresses from interface. +| | Given IPv4 config from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | ... | @{ipv4_neighbor} | ${ipv4_settings} +| | And IPv4 config from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | When Honeycomb removes interface ipv4 addresses | ${node} | ${interface} +| | Then IPv4 address from Honeycomb should be empty | ${node} |${interface} +| | And ipv4 address from VAT should be empty | ${node} | ${interface} + +| Honeycomb modifies interface configuration - ipv4 (prefix) +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ +| | ... | with address and prefix provided. +| | [Teardown] | Honeycomb removes interface ipv4 addresses | ${node} +| | ... | ${interface} +| | When Honeycomb sets interface ipv4 address with prefix +| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} +| | ... | ${ipv4_settings} +| | And Honeycomb adds interface ipv4 neighbor +| | ... | ${node} | ${interface} | @{ipv4_neighbor} +| | Then IPv4 config from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} +| | ... | @{ipv4_neighbor} +| | ... | ${ipv4_settings} +| | And IPv4 config from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} + +| Honeycomb modifies interface configuration - ipv6 +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6. +| | When Honeycomb sets interface ipv6 configuration +| | ... | ${node} | ${interface} | @{ipv6_address} | @{ipv6_neighbor} +| | ... | ${ipv6_settings} +| | Then IPv6 config from Honeycomb should be +| | ... | ${node} | ${interface} | @{ipv6_address} | @{ipv6_neighbor} +| | ... | ${ipv6_settings} +| | And IPv6 config from VAT should be +| | ... | ${node} | ${interface} | @{ipv6_address} + +| Honeycomb modifies interface configuration - ethernet,routing +| | [Documentation] | Check if Honeycomb API can configure interface ethernet\ +| | ... | and routing settings. +| | When Honeycomb sets interface ethernet and routing configuration +| | ... | ${node} | ${interface} | ${ethernet} | ${routing} +| | Then Interface ethernet and routing configuration from Honeycomb should be +| | ... | ${node} | ${interface} | ${ethernet} | ${routing} +| | And Interface ethernet and routing configuration from VAT should be +| | ... | ${node} | ${interface} | ${ethernet['mtu']} | ${routing['vrf-id']} diff --git a/tests/suites/honeycomb/020_bridge_domain.robot b/tests/suites/honeycomb/020_bridge_domain.robot new file mode 100644 index 0000000000..0bd4463ea0 --- /dev/null +++ b/tests/suites/honeycomb/020_bridge_domain.robot @@ -0,0 +1,105 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interfaces to run tests on. +| @{interfaces}= | ${node['interfaces']['port1']['name']} +| ... | ${node['interfaces']['port3']['name']} +# Configuration which will be set and verified during tests. +| ${bd1_name}= | bd-01 +| ${bd2_name}= | bd-02 +| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} +| ... | unknown-unicast-flood=${True} | arp-termination=${True} +| &{if_settings}= | split_horizon_group=${1} | bvi=${False} +| &{if_settings2}= | split_horizon_group=${2} | bvi=${True} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Suite Teardown | Honeycomb removes all bridge domains | ${node} +| Force Tags | honeycomb_sanity +| Documentation | *Honeycomb bridge domain management test suite.* +| ... +| ... | Test suite uses the first two interfaces on the first DUT node. + +*** Test Cases *** +| Honeycomb sets up l2 bridge domain +| | [Documentation] | Check if Honeycomb can create bridge domains on VPP node. +| | When Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | Then Bridge domain configuration from Honeycomb should be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | And Bridge domain configuration from VAT should be +| | ... | ${node} | ${0} | ${bd_settings} + +| Honeycomb manages multiple bridge domains on node +| | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\ +| | ... | a single node. +| | Given Bridge domain configuration from Honeycomb should be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | When Honeycomb creates l2 bridge domain +| | ... | ${node} | ${bd2_name} | ${bd_settings} +| | Then Bridge domain configuration from Honeycomb should be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | And Bridge domain configuration from Honeycomb should be +| | ... | ${node} | ${bd2_name} | ${bd_settings} +| | And Bridge domain configuration from VAT should be +| | ... | ${node} | ${0} | ${bd_settings} +| | And Bridge domain configuration from VAT should be +| | ... | ${node} | ${1} | ${bd_settings} + +| Honeycomb removes bridge domains +| | [Documentation] | Check if Honeycomb can remove bridge domains from a VPP\ +| | ... | node. +| | Given Bridge domain configuration from Honeycomb should be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | When Honeycomb removes all bridge domains | ${node} +| | Then Honeycomb should show no bridge domains | ${node} +| | And VAT should show no bridge domains | ${node} + +| Honeycomb assigns interfaces to bridge domain +| | [Documentation] | Check if Honeycomb can assign VPP interfaces to an\ +| | ... | existing bridge domain. +| | Given Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | When Honeycomb adds interfaces to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} +| | Then Honeycomb should show interfaces assigned to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} +| | And VAT should show interfaces assigned to bridge domain +| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} + +| Honeycomb removes bridge domain with an interface assigned +| | [Documentation] | Check if Honeycomb can remove a bridge domain that has an\ +| | ... | interface assigned to it. +| | Given Honeycomb should show interfaces assigned to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} +| | And VAT should show interfaces assigned to bridge domain +| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} +| | When Honeycomb removes all bridge domains | ${node} +| | Then Honeycomb should show no bridge domains | ${node} +| | And VAT should show no bridge domains | ${node} + +| Honeycomb does not assign two bridged virtual interfaces to one bridge domain. +| | [Documentation] | Check if Honeycomb can assign two bridged virtual\ +| | ... | interfaces to a single bridge domain, and expect to fail. +| | [Teardown] | Honeycomb removes all bridge domains | ${node} +| | Given Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | When Honeycomb fails to add interfaces to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings2} +| | Then Honeycomb should not show interfaces assigned to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings2} +| | And VAT should not show interfaces assigned to bridge domain +| | ... | ${node} | ${0} | @{interfaces} | ${if_settings2} diff --git a/tests/suites/honeycomb/021_l2_fib.robot b/tests/suites/honeycomb/021_l2_fib.robot new file mode 100644 index 0000000000..c994ad3b5b --- /dev/null +++ b/tests/suites/honeycomb/021_l2_fib.robot @@ -0,0 +1,228 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Resource | resources/libraries/robot/honeycomb/l2_fib.robot +| Variables | tests/suites/honeycomb/resources/l2_fib.py +| Documentation | *Honeycomb L2 FIB management test suite.* +| Suite Setup | Run keywords +| ... | Set test interface down +| ... | AND +| ... | Honeycomb removes all bridge domains | ${node} +| Suite Teardown | Honeycomb removes all bridge domains | ${node} +| Force tags | honeycomb_sanity + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} + +*** Test Cases *** +| Honeycomb adds L2 FIB entry (forward) +| | [Documentation] | Honeycomb creates a bridge domain and assignes an \ +| | ... | interface to it. Then adds an L2 FIB entry (forward) to the bridge \ +| | ... | domain. +| | ... +| | [Teardown] | Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} +| | ... +| | Given Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | When Honeycomb sets interface state +| | ... | ${node} | ${interface} | up +| | Then Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | up +| | When Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | Then Bridge domain configuration from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | Given Bridge domain configuration in interface operational data should be empty +| | ... | ${node} | ${interface} +| | When Honeycomb adds interface to bridge domain +| | ... | ${node} | ${interface} | ${bd_name} | ${if_bd_settings} +| | Then Bridge domain configuration in interface operational data should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | Given L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} + +| Honeycomb adds L2 FIB entry (static, forward) +| | [Documentation] | Honeycomb adds an L2 FIB entry (static, forward) to the \ +| | ... | bridge domain. +| | ... +| | [Teardown] | Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper['phys-address']} +| | ... +| | Given Bridge domain configuration in interface operational data should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_static_forward_vat} + +| Honeycomb adds L2 FIB entry (static, filter) +| | [Documentation] | Honeycomb adds an L2 FIB entry (static, filter) to the \ +| | ... | bridge domain. +| | ... +| | [Teardown] | Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper['phys-address']} +| | ... +| | Given Bridge domain configuration in interface operational data should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_filter_vat} + +| Honeycomb adds and removes L2 FIB entry (forward) +| | [Documentation] | Honeycomb adds an L2 FIB entry (forward) to the bridge \ +| | ... | domain and then Honeycomb removes it from the bridge domain. +| | ... +| | [Teardown] | Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} +| | ... +| | Given Bridge domain configuration in interface operational data should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} +| | When Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} +| | Then L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} + +| Honeycomb adds more than one L2 FIB entry +| | [Documentation] | Honeycomb adds three L2 FIB entries to the bridge domain. +| | ... +| | [Teardown] | Honeycomb removes all L2 FIB entries +| | ... | ${node} | ${bd_name} +| | ... +| | Given Bridge domain configuration in interface operational data should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} +| | And Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_cfg} +| | And Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | And L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper} +| | And L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_static_forward_vat} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_filter_vat} + +| Honeycomb fails to set wrong L2 FIB entry +| | [Documentation] | Honeycomb tries to add an L2 FIB entry with wrong \ +| | ... | parameters to the bridge domain. It must fail. +| | ... +| | [Teardown] | Honeycomb removes all L2 FIB entries +| | ... | ${node} | ${bd_name} +| | ... +| | Given Bridge domain configuration in interface operational data should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb fails to add wrong L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_mac} +| | Then L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb fails to add wrong L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_if} +| | Then L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb fails to add wrong L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_action} +| | Then L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} + +| Honeycomb fails to modify existing L2 FIB entry +| | [Documentation] | Honeycomb tries to modify an existing L2 FIB entry. It \ +| | ... | must fail. +| | ... +| | [Teardown] | Honeycomb removes all L2 FIB entries +| | ... | ${node} | ${bd_name} +| | ... +| | Given Bridge domain configuration in interface operational data should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | When Honeycomb fails to modify L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} +| | ... | outgoing-interface +| | ... | ${l2_fib_forward_modified_cfg['outgoing-interface']} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} + +*** Keywords *** +| Set test interface down +| | [Documentation] | Set the interface used in tests down. +| | ... +| | Honeycomb sets interface state +| | ... | ${node} | ${interface} | down diff --git a/tests/suites/honeycomb/030_vxlan.robot b/tests/suites/honeycomb/030_vxlan.robot new file mode 100644 index 0000000000..03a3d71cd5 --- /dev/null +++ b/tests/suites/honeycomb/030_vxlan.robot @@ -0,0 +1,115 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interfaces to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${vx_interface}= | vx_tunnel_test +# Configuration which will be set and verified during tests. +| &{vxlan_settings}= | src=192.168.0.2 | dst=192.168.0.3 | vni=${88} +| ... | encap-vrf-id=${0} +| &{vxlan_settings2}= | src=192.168.0.4 | dst=192.168.0.5 | vni=${47} +| ... | encap-vrf-id=${0} +| &{vxlan_settings_ipv6}= | src=10::10 | dst=10::11 | vni=${88} +| ... | encap-vrf-id=${0} +| &{vxlan_settings_ipv6_long}= | src=10:0:0:0:0:0:0:10 | dst=10:0:0:0:0:0:0:11 +| ... | vni=${88} | encap-vrf-id=${0} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/vxlan.robot +# import additional VxLAN settings from resource file +| Variables | tests/suites/honeycomb/resources/vxlan.py +| Force Tags | honeycomb_sanity +| Documentation | *Honeycomb VxLAN management test suite.* +| ... +| ... | Test suite uses the first interface of the first DUT node. + +*** Test Cases *** +| Honeycomb configures VxLAN tunnel +| | [Documentation] | Check if Honeycomb API can configure VxLAN settings. +| | Given VxLAN configuration from Honeycomb should be empty +| | ... | ${node} | ${vx_interface} +| | And VxLAN configuration from VAT should be empty | ${node} +| | When Honeycomb sets interface VxLAN configuration +| | ... | ${node} | ${vx_interface} | ${vxlan_settings} +| | Then VxLAN configuration from Honeycomb should be +| | ... | ${node} | ${vx_interface} | ${vxlan_settings} +| | And VxLAN configuration from VAT should be +| | ... | ${node} | ${vxlan_settings} + +| Honeycomb disables VxLAN tunnel +| | [Documentation] | Check if Honeycomb API can reset VxLAN configuration. +| | Given VxLAN configuration from Honeycomb should be +| | ... | ${node} | ${vx_interface} | ${vxlan_settings} +| | And VxLAN configuration from VAT should be +| | ... | ${node} | ${vxlan_settings} +| | When Honeycomb removes VxLAN tunnel settings | ${node} | ${vx_interface} +| | Then VxLAN configuration from Honeycomb should be empty +| | ... | ${node} | ${vx_interface} +| | And VxLAN configuration from VAT should be empty | ${node} + +Honeycomb can configure VXLAN tunnel after one has been disabled +| | [Documentation] | Check if Honeycomb API can configure VxLAN settings again\ +| | ... | after previous settings have been removed. +| | [Teardown] | Honeycomb removes VxLAN tunnel settings +| | ... | ${node} | ${vx_interface} +| | Given VxLAN configuration from Honeycomb should be empty +| | ... | ${node} | ${vx_interface} +| | And VxLAN configuration from VAT should be empty | ${node} +| | When Honeycomb sets interface VxLAN configuration +| | ... | ${node} | ${vx_interface} | ${vxlan_settings2} +| | Then VxLAN configuration from Honeycomb should be +| | ... | ${node} | ${vx_interface} | ${vxlan_settings2} +| | And VxLAN configuration from VAT should be +| | ... | ${node} | ${vxlan_settings2} + +| Honeycomb does not set VxLAN configuration on another interface type +| | [Documentation] | Check if Honeycomb API prevents setting VxLAN\ +| | ... | on incorrect interface. +| | Given VxLAN configuration from Honeycomb should be empty +| | ... | ${node} | ${interface} +| | And VxLAN configuration from VAT should be empty | ${node} +| | When Honeycomb fails setting VxLan on different interface type +| | ... | ${node} | ${interface} | ${vxlan_settings2} +| | Then VxLAN configuration from Honeycomb should be empty +| | ... | ${node} | ${interface} +| | And VxLAN configuration from VAT should be empty +| | ... | ${node} + +| Honeycomb does not set invalid VxLAN configuration +| | [Documentation] | Check if Honeycomb API prevents setting incorrect VxLAN\ +| | ... | settings. +| | Given VxLAN configuration from Honeycomb should be empty +| | ... | ${node} | ${vx_interface} +| | And VxLAN configuration from VAT should be empty | ${node} +| | When Honeycomb fails setting invalid VxLAN configuration +| | ... | ${node} | ${vx_interface} | ${vxlan_invalid} +| | Then VxLAN configuration from Honeycomb should be empty +| | ... | ${node} | ${vx_interface} + +| Honeycomb configures VxLAN tunnel with ipv6 +| | [Documentation] | Check if Honeycomb API can configure VxLAN with\ +| | ... | ipv6 settings. +| | [Teardown] | Honeycomb removes VxLAN tunnel settings +| | ... | ${node} | ${vx_interface} +| | Given VxLAN configuration from Honeycomb should be empty +| | ... | ${node} | ${vx_interface} +| | And VxLAN configuration from VAT should be empty | ${node} +| | When Honeycomb sets interface VxLAN configuration +| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6} +| | Then VxLAN configuration from Honeycomb should be +| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6_long} +| | And VxLAN configuration from VAT should be +| | ... | ${node} | ${vxlan_settings_ipv6} diff --git a/tests/suites/honeycomb/031_vxlan_gpe.robot b/tests/suites/honeycomb/031_vxlan_gpe.robot new file mode 100644 index 0000000000..ec2ef3a518 --- /dev/null +++ b/tests/suites/honeycomb/031_vxlan_gpe.robot @@ -0,0 +1,174 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} + +# Parameters to be set on existing interface +| ${vxlan_gpe_existing_if}= | ${interface} +| &{vxlan_gpe_base_wrong_interface_settings}= +| ... | name=${vxlan_gpe_existing_if} +| ... | type=iana-if-type:ethernetCsmacd +| ... | description=for testing purposes +| ... | enabled=true +| ... | link-up-down-trap-enable=enabled +| &{vxlan_gpe_wrong_interface_settings}= +| ... | local=192.168.50.77 +| ... | remote=192.168.50.72 +| ... | vni=${9} +| ... | next-protocol=wrong_ipv4 +| ... | encap-vrf-id=${0} +| ... | decap-vrf-id=${0} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot +# Import additional VxLAN GPE settings from resource file +| Variables | tests/suites/honeycomb/resources/vxlan_gpe.py +| Documentation | *Honeycomb VxLAN-GPE management test suite.* +| Force Tags | honeycomb_sanity + +*** Test Cases *** +| Honeycomb creates VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb API can configure VxLAN GPE tunnel. +| | ... +| | Given interface configuration from Honeycomb should be empty +| | ... | ${node} | ${vxlan_gpe_if1} +| | And interface configuration from VAT should be empty +| | ... | ${node} | ${vxlan_gpe_if1} +| | When Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} +| | Then run keyword and continue on failure +| | ... | VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} +| | And run keyword and continue on failure +| | ... | VxLAN GPE configuration from VAT should be +| | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings} +| | And run keyword and continue on failure +| | ... | VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if1} + +| Honeycomb removes VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb API can remove VxLAN GPE tunnel. +| | ... +# Disabled beacuse of bug in Honeycomb. +# TODO: Enable when fixed. +#| | Given VxLAN GPE configuration from Honeycomb should be +#| | ... | ${node} | ${vxlan_gpe_if1} +#| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} +#| | And VxLAN GPE configuration from VAT should be +#| | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings} +| | When Honeycomb removes VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if1} +| | Then VxLAN GPE configuration from VAT should be empty +| | ... | ${node} +| | And VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_disabled_base_settings} | ${vxlan_gpe_settings} + +| Honeycomb sets wrong interface type while creating VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ +| | ... | with a wrong interface type set. +| | ... +| | Given interface configuration from Honeycomb should be empty +| | ... | ${node} | ${vxlan_gpe_if2} +| | And interface configuration from VAT should be empty +| | ... | ${node} | ${vxlan_gpe_if2} +| | When Honeycomb fails to create VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if2} +| | ... | ${vxlan_gpe_wrong_type_base_settings} | ${vxlan_gpe_settings} +| | Then interface configuration from Honeycomb should be empty +| | ... | ${node} | ${vxlan_gpe_if2} +| | And interface configuration from VAT should be empty +| | ... | ${node} | ${vxlan_gpe_if2} + +| Honeycomb sets wrong protocol while creating VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ +| | ... | with a wrong next-protocol set. +| | ... +| | Given interface configuration from Honeycomb should be empty +| | ... | ${node} | ${vxlan_gpe_if3} +| | And interface configuration from VAT should be empty +| | ... | ${node} | ${vxlan_gpe_if3} +| | When Honeycomb fails to create VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if3} +| | ... | ${vxlan_gpe_wrong_protocol_base_settings} +| | ... | ${vxlan_gpe_wrong_protocol_settings} +| | Then interface configuration from Honeycomb should be empty +| | ... | ${node} | ${vxlan_gpe_if3} +| | And interface configuration from VAT should be empty +| | ... | ${node} | ${vxlan_gpe_if3} + +| Honeycomb sets VxLAN GPE tunnel on existing interface with wrong type +| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ +| | ... | on existing interface with wrong type. +| | ... +| | Given VxLAN GPE configuration from VAT should be empty +| | ... | ${node} +| | When Honeycomb fails to create VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_existing_if} +| | ... | ${vxlan_gpe_base_wrong_interface_settings} +| | ... | ${vxlan_gpe_wrong_interface_settings} +| | Then VxLAN GPE configuration from VAT should be empty +| | ... | ${node} + +| Honeycomb creates VxLAN GPE tunnel with ipv6 +| | [Documentation] | Check if Honeycomb API can configure VxLAN GPE tunnel\ +| | ... | with IPv6 addresses. +| | ... +| | Given VxLAN GPE configuration from VAT should be empty +| | ... | ${node} +# Disabled beacuse of bug in Honeycomb +# TODO: Enable when fixed. +#| | And VxLAN GPE configuration from Honeycomb should be +#| | ... | ${node} | ${vxlan_gpe_if5} +#| | ... | ${vxlan_gpe_disabled_base_settings} | ${vxlan_gpe_settings} +| | When Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if5} +| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} +| | Then run keyword and continue on failure +| | ... | VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if5} +| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} +| | And run keyword and continue on failure +| | ... | VxLAN GPE configuration from VAT should be +| | ... | ${node} | ${vxlan_gpe_if5} | ${vxlan_gpe_ipv6_settings} +| | And run keyword and continue on failure +| | ... | VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if5} + +| Honeycomb creates the second VxLAN GPE tunnel with ipv6 +| | [Documentation] | Check if Honeycomb API can configure another one VxLAN\ +| | ... | GPE tunnel with IPv6 addresses. +| | ... +| | Given interface configuration from Honeycomb should be empty +| | ... | ${node} | ${vxlan_gpe_if6} +| | And interface configuration from VAT should be empty +| | ... | ${node} | ${vxlan_gpe_if6} +| | When Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if6} +| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} +| | Then run keyword and continue on failure +| | ... | VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if6} +| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} +| | And run keyword and continue on failure +| | ... | VxLAN GPE configuration from VAT should be +| | ... | ${node} | ${vxlan_gpe_if6} | ${vxlan_gpe_ipv6_settings2} +| | And run keyword and continue on failure +| | ... | VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if6} diff --git a/tests/suites/honeycomb/040_tap.robot b/tests/suites/honeycomb/040_tap.robot new file mode 100644 index 0000000000..329ca8a3c1 --- /dev/null +++ b/tests/suites/honeycomb/040_tap.robot @@ -0,0 +1,71 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interfaces to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${tap_interface}= | tap_test +# Configuration which will be set and verified during tests. +| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 +| ... | device-instance=${1} +| &{tap_settings2}= | tap-name=tap_test | mac=08:00:27:60:26:ab +| ... | device-instance=${2} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/tap.robot +| Force Tags | honeycomb_sanity +| Documentation | *Honeycomb TAP management test suite.* +| ... +| ... | Test suite uses the first interface of the first DUT node. + +*** Test Cases *** +| Honeycomb configures TAP interface +| | [Documentation] | Check if Honeycomb API can configure a TAP interface. +| | Given TAP configuration from Honeycomb should be empty +| | ... | ${node} | ${tap_interface} +| | And TAP configuration from VAT should be empty +| | ... | ${node} | ${tap_interface} +| | When Honeycomb creates TAP interface +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | Then TAP configuration from Honeycomb should be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And TAP configuration from VAT should be +| | ... | ${node} | ${tap_interface} | ${tap_settings} + +| Honeycomb modifies existing TAP interface configuration +| | [Documentation] | Check if Honeycomb API can re-configure and existing TAP\ +| | ... | interface with new settings. +| | Given TAP configuration from Honeycomb should be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And TAP configuration from VAT should be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | When Honeycomb configures TAP interface +| | ... | ${node} | ${tap_interface} | ${tap_settings2} +| | Then TAP configuration from Honeycomb should be +| | ... | ${node} | ${tap_interface} | ${tap_settings2} +| | And TAP configuration from VAT should be +| | ... | ${node} | ${tap_interface} | ${tap_settings2} + +| Honeycomb removes TAP interface +| | [Documentation] | Check if Honeycomb API can remove TAP interface. +| | Given TAP configuration from Honeycomb should be +| | ... | ${node} | ${tap_interface} | ${tap_settings2} +| | And TAP configuration from VAT should be +| | ... | ${node} | ${tap_interface} | ${tap_settings2} +| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} +| | Then TAP configuration from Honeycomb should be empty +| | ... | ${node} | ${tap_interface} +| | And TAP configuration from VAT should be empty +| | ... | ${node} | ${tap_interface} diff --git a/tests/suites/honeycomb/050_interface_vhost_user.robot b/tests/suites/honeycomb/050_interface_vhost_user.robot new file mode 100644 index 0000000000..2c2a5ae91a --- /dev/null +++ b/tests/suites/honeycomb/050_interface_vhost_user.robot @@ -0,0 +1,159 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${vhost_interface}= | test_vhost +| &{vhost_user_server}= | socket=soc1 | role=server +| &{vhost_user_server_edit_1}= | socket=soc12 | role=server +| &{vhost_user_server_edit_2}= | socket=soc12 | role=client +| &{vhost_user_client}= | socket=soc2 | role=client +| &{vhost_user_client_edit_1}= | socket=soc22 | role=client +| &{vhost_user_client_edit_2}= | socket=soc22 | role=server +| &{vhost_user_wrong}= | socket=soc2 | role=wrong + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/vhost_user.robot +| Force Tags | honeycomb_sanity +| Documentation | *Honeycomb vhost-user interface management test suite.* +| ... +| ... | This test suite tests if it is posible to create, modify and\ +| ... | delete a vhost-user interface. + +*** Test Cases *** +| Honycomb creates vhost-user interface - server +| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\ +| | ... | server. +| | ... +| | Given vhost-user configuration from Honeycomb should be empty +| | ... | ${node} | ${vhost_interface} +| | When Honeycomb creates vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | Then vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | And vhost-user configuration from VAT should be +| | ... | ${node} | ${vhost_user_server} + +| Honycomb modifies vhost-user interface - server +| | [Documentation] | Check if Honeycomb can modify properties of existing\ +| | ... | vhost-user interface, role: server. +| | ... +| | Given vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1} +| | Then vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1} +| | And vhost-user configuration from VAT should be +| | ... | ${node} | ${vhost_user_server_edit_1} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2} +| | Then vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2} +| | And vhost-user configuration from VAT should be +| | ... | ${node} | ${vhost_user_server_edit_2} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | Then vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | And vhost-user configuration from VAT should be +| | ... | ${node} | ${vhost_user_server} + +| Honycomb deletes vhost-user interface - server +| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\ +| | ... | interface, role: server. +| | ... +| | Given vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | When Honeycomb removes vhost-user interface +| | ... | ${node} | ${vhost_interface} +| | Then vhost-user configuration from Honeycomb should be empty +| | ... | ${node} | ${vhost_interface} +| | And vhost-user configuration from VAT should be empty +| | ... | ${node} + +| Honycomb creates vhost-user interface - client +| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\ +| | ... | client. +| | ... +| | Given vhost-user configuration from Honeycomb should be empty +| | ... | ${node} | ${vhost_interface} +| | When Honeycomb creates vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | Then vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | And vhost-user configuration from VAT should be +| | ... | ${node} | ${vhost_user_client} + +| Honycomb modifies vhost-user interface - client +| | [Documentation] | Check if Honeycomb can modify properties of existing\ +| | ... | vhost-user interface, role: client. +| | ... +| | Given vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1} +| | Then vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1} +| | And vhost-user configuration from VAT should be +| | ... | ${node} | ${vhost_user_client_edit_1} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2} +| | Then vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2} +| | And vhost-user configuration from VAT should be +| | ... | ${node} | ${vhost_user_client_edit_2} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | Then vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | And vhost-user configuration from VAT should be +| | ... | ${node} | ${vhost_user_client} + +| Honycomb deletes vhost-user interface - client +| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\ +| | ... | interface, role: client. +| | ... +| | Given vhost-user configuration from Honeycomb should be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | When Honeycomb removes vhost-user interface +| | ... | ${node} | ${vhost_interface} +| | Then vhost-user configuration from Honeycomb should be empty +| | ... | ${node} | ${vhost_interface} +| | And vhost-user configuration from VAT should be empty +| | ... | ${node} + +| Honeycomb does not set vhost-user configuration on another interface type +| | [Documentation] | Check if Honeycomb refuses to set vhost-user\ +| | ... | configuration for interface which is not v3po:vhost-user type. +| | ... +| | When Honeycomb fails setting vhost-user on different interface type +| | ... | ${node} | ${interface} | ${vhost_user_server} +| | Then vhost-user configuration from Honeycomb should be empty +| | ... | ${node} | ${interface} +| | And vhost-user configuration from VAT should be empty +| | ... | ${node} + +| Honeycomb does not set invalid vhost-user configuration +| | [Documentation] | Check if Honeycomb refuses to set invalid parameters to\ +| | ... | vhost-user interface. +| | ... +| | Given vhost-user configuration from Honeycomb should be empty +| | ... | ${node} | ${vhost_interface} +| | When Honeycomb fails setting invalid vhost-user configuration +| | ... | ${node} | ${vhost_interface} | ${vhost_user_wrong} +| | Then vhost-user configuration from Honeycomb should be empty +| | ... | ${node} | ${vhost_interface} +| | And vhost-user configuration from VAT should be empty +| | ... | ${node} diff --git a/tests/suites/honeycomb/060_sub_interface.robot b/tests/suites/honeycomb/060_sub_interface.robot new file mode 100644 index 0000000000..8f43a52e2e --- /dev/null +++ b/tests/suites/honeycomb/060_sub_interface.robot @@ -0,0 +1,388 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/sub_interface.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Variables | tests/suites/honeycomb/resources/sub_interfaces.py +| Suite Teardown | Honeycomb removes all bridge domains | ${node} +| Force Tags | honeycomb_sanity +| Documentation | *Honeycomb sub-interface management test suite.* +| ... +| ... | This test suite tests if it is posible to create, modify and \ +| ... | delete a sub-interface. + +*** Variables *** +# Test interface 1 and its sub-interface parameters: +| ${super_if}= | ${node['interfaces']['port1']['name']} +| ${sub_if_id}= | ${sub_if_1_settings['identifier']} +| ${sub_if_name}= | ${super_if}.${sub_if_id} + +*** Test Cases *** +| Honycomb creates sub-interface +| | [Documentation] | Check if Honeycomb creates a sub-interface. +| | ... +| | Given interface state is | ${node} | ${super_if} | down +| | And sub-interface configuration from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And interface configuration from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | When Honeycomb creates sub-interface | ${node} | ${super_if} +| | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings} +| | Then run keyword and continue on failure +| | ... | Sub-interface configuration from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} +| | And run keyword and continue on failure +| | ... | Sub-interface configuration from VAT should be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} +| | And sub-interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${super_if} | ${sub_if_id} + +| Honeycomb sets interface and sub-interface up +| | [Documentation] | Honeycomb changes the state of interface up and then \ +| | ... | changes the state of its sub-interface up, in this order. +| | ... +| | Given interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | When Honeycomb sets interface state +| | ... | ${node} | ${super_if} | up +| | Then interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up +| | Given run keyword and continue on failure +| | ... | Sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | And run keyword and continue on failure +| | ... | Sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down +| | When Honeycomb sets the sub-interface up +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then run keyword and continue on failure +| | ... | Sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | up | up +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | up | up + +| Honeycomb sets sub-interface down while its super-interface is up +| | [Documentation] | Honeycomb sets the sub-interface down while its \ +| | ... | super-interface is up. It must be possible. +| | ... +| | [Teardown] | Set super and sub interfaces up +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | up | up +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | up | up +| | And interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up +| | When Honeycomb sets the sub-interface down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down +| | And interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up + +| Honeycomb sets interface and sub-interface down +| | [Documentation] | Honeycomb changes the state of interface down and then \ +| | ... | changes the state of its sub-interface down, in this order. +| | ... +| | [Teardown] | Set super and sub interfaces down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up +| | When Honeycomb sets interface state +| | ... | ${node} | ${super_if} | down +| | Then interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | Given sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | up | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | up | down +| | When Honeycomb sets the sub-interface down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down + +| Honeycomb fails to set sub-interface up while its super-interface is down +| | [Documentation] | Honeycomb tries to set the sub-interface up while its \ +| | ... | super-interface is down. It must not be possible. +| | ... +| | Given interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | And sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down +| | When Honeycomb fails to set sub-interface up +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | And sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down + +| Honeycomb fails to delete sub-interface +| | [Documentation] | Check if Honeycomb can delete an existing sub-interface. +| | ... +| | [Setup] | Set super and sub interfaces down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given sub-interface configuration from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} +| | And sub-interface configuration from VAT should be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} +| | When Honeycomb fails to remove all sub-interfaces +| | ... | ${node} | ${super_if} +| | Then sub-interface configuration from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} +| | And sub-interface configuration from VAT should be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} + +| Honeycomb adds sub-interface to new bridge domain +| | [Documentation] | Check if Honeycomb adds a sub-interface to bridge domain. +| | ... +| | [Setup] | Set super and sub interfaces down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given sub-interface configuration from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} +| | And sub-interface configuration from VAT should be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} +| | When Honeycomb creates L2 bridge domain +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | Then bridge domain configuration from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | When Honeycomb adds sub-interface to bridge domain +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings} +| | Then sub-interface bridge domain configuration from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings} +| | And sub-interface bridge domain configuration from VAT should be +| | ... | ${node} | ${sub_if_name} | ${sub_bd_settings} +| | And sub-interface configuration from VAT should be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} + +| Honeycomb enables tag-rewrite pop 1 +| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ +| | ... | parameters correctly. Case: pop 1. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} + +| Honeycomb enables tag-rewrite push +| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ +| | ... | parameters correctly. Case: push. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT} + +| Honeycomb enables tag-rewrite translate 1-2 +| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ +| | ... | parameters correctly. Case: translate 1-2. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${tag_rewrite_translate_1_2_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT} + +| Honeycomb disables tag-rewrite +| | [Documentation] | Check if Honeycomb disables the tag-rewrite. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} +| | Then rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} + +| Honeycomb enables tag-rewrite pop 1 again +| | [Documentation] | Check if Honeycomb can enable tag-rewrite again, once it \ +| | ... | was disabled by Honeycomb. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} + +| Honeycomb modifies the tag-rewrite +| | [Documentation] | Honeycomb sets the tag-rewrite: +| | ... | 1. pop 1, then +| | ... | 2. push, then +| | ... | 3. translate 1 - 2 +| | ... | Then Honeycomb disables the tag-rewrite. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${tag_rewrite_translate_1_2_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} +| | Then rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} + +| Honeycomb fails to set wrong vlan-type in tag-rewrite +| | [Documentation] | Check that Honeycomb does not accept wrong values of \ +| | ... | vlan-type in tag-rewrite. +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb fails to set wrong rewrite tag +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${tag_rewrite_translate_1_2_wrong} +| | Then rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} + +*** Keywords *** +| Set super and sub interfaces up +| | [Documentation] | Honeycomb sets super-interface and sub-interface up, in \ +| | ... | this order. +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - super_interface - Super interface. Type: string +| | ... | - identifier - Sub-interface identifier. Type: integer or string +| | ... +| | ... | *Example:* +| | ... | \| Set super and sub interfaces up\ +| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| +| | ... +| | [Arguments] | ${node} | ${super_interface} | ${identifier} +| | ... +| | Honeycomb sets interface state +| | ... | ${node} | ${super_interface} | up +| | Honeycomb sets the sub-interface up +| | ... | ${node} | ${super_interface} | ${identifier} + +| Set super and sub interfaces down +| | [Documentation] | Honeycomb sets super-interface and sub-interface down, in\ +| | ... | this order. +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - super_interface - Super interface. Type: string +| | ... | - identifier - Sub-interface identifier. Type: integer or string +| | ... +| | ... | *Example:* +| | ... | \| Set super and sub interfaces down\ +| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| +| | ... +| | [Arguments] | ${node} | ${super_interface} | ${identifier} +| | ... +| | Honeycomb sets interface state +| | ... | ${node} | ${super_interface} | down +| | Honeycomb sets the sub-interface down +| | ... | ${node} | ${super_interface} | ${identifier} + +| Honeycomb disables tag rewrite +| | [Documentation] | +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - super_if - Super-interface. Type: string +| | ... | - identifier - Sub-interface ID. Type: integer or string +| | ... +| | ... | *Example:* +| | ... | \| Honeycomb disables tag rewrite \ +| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| +| | ... +| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} diff --git a/tests/suites/honeycomb/070_notification.robot b/tests/suites/honeycomb/070_notification.robot new file mode 100644 index 0000000000..117f024b21 --- /dev/null +++ b/tests/suites/honeycomb/070_notification.robot @@ -0,0 +1,56 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interfaces to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${tap_interface}= | tap_test +| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 +| ... | device-instance=${1} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/tap.robot +| Resource | resources/libraries/robot/honeycomb/notifications.robot +| Suite Setup | Run keywords +| ... | Honeycomb sets interface state +| ... | ${node} | ${interface} | down | AND +| ... | Honeycomb creates TAP interface +| ... | ${node} | ${tap_interface} | ${tap_settings} +| Documentation | *Honeycomb notifications test suite.* +| Force Tags | honeycomb_sanity + +*** Test Cases *** +| Honeycomb sends notification on interface state change +| | [Documentation] | Check if Honeycomb sends a state-changed notification\ +| | ... | when the state of an interface is changed. +| | Given Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | And Interface state from VAT should be | ${node} | ${interface} | down +| | And Notification listener is established | ${node} +| | When Honeycomb sets interface state | ${node} | ${interface} | up +| | Then Honeycomb should send interface state notification | ${interface} | up +| | When Honeycomb sets interface state | ${node} | ${interface} | down +| | And Honeycomb should send interface state notification | ${interface} | down + +| Honeycomb sends notification on interface deletion +| | [Documentation] | Check if Honeycomb sends an interface-deleted notification +| | ... | when an interface is deleted. +| | Given TAP configuration from Honeycomb should be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And TAP configuration from VAT should be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And Notification listener is established | ${node} +| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} +| | Then Honeycomb should send interface deleted notification | ${tap_interface} diff --git a/tests/suites/honeycomb/1 - interface_management.robot b/tests/suites/honeycomb/1 - interface_management.robot deleted file mode 100644 index 01be01a6b0..0000000000 --- a/tests/suites/honeycomb/1 - interface_management.robot +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Node and interface to run tests on. -| ${node}= | ${nodes['DUT1']} -| ${interface}= | ${node['interfaces']['port1']['name']} -# Configuration which will be set and verified during tests. -| ${ipv4_address}= | 192.168.0.2 -| ${ipv4_address2}= | 192.168.0.3 -| ${ipv4_mask}= | 255.255.255.0 -| ${ipv4_prefix}= | ${24} -| @{ipv4_neighbor}= | 192.168.0.4 | 08:00:27:c0:5d:37 -| &{ipv4_settings}= | enabled=${True} | forwarding=${True} | mtu=${9000} -| @{ipv6_address}= | 10::10 | ${64} -| @{ipv6_neighbor}= | 10::11 | 08:00:27:c0:5d:37 -| &{ipv6_settings}= | enabled=${True} | forwarding=${True} | mtu=${9000} -| ... | dup-addr-detect-transmits=${5} -| &{ethernet}= | mtu=${9000} -| &{routing}= | vrf-id=${27} -| &{vxlan_settings}= | src=10.0.1.20 | dst=10.0.3.20 | vni=${1000} -| ... | encap-vrf-id=${1000} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Force Tags | honeycomb_sanity -| Documentation | *Honeycomb interface management test suite.* -| ... -| ... | Test suite uses the first interface of the first DUT node. - -*** Test Cases *** -| Honeycomb configures and reads interface state -| | [Documentation] | Check if Honeycomb API can modify the admin state of\ -| | ... | VPP interfaces. -| | Given Interface state is | ${node} | ${interface} | down -| | When Honeycomb sets interface state | ${node} | ${interface} | up -| | Then Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | up -| | And Interface state from VAT should be | ${node} | ${interface} | up -| | When Honeycomb sets interface state | ${node} | ${interface} | down -| | Then Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | And Interface state from VAT should be | ${node} | ${interface} | down - -| Honeycomb modifies interface configuration - ipv4 (netmask) -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ -| | ... | with address and netmask provided. -| | When Honeycomb sets interface ipv4 address | ${node} | ${interface} -| | ... | ${ipv4_address} | ${ipv4_mask} | ${ipv4_settings} -| | And Honeycomb adds interface ipv4 neighbor -| | ... | ${node} | ${interface} | @{ipv4_neighbor} -| | Then IPv4 config from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | ... | @{ipv4_neighbor} | ${ipv4_settings} -| | And IPv4 config from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} - -| Honeycomb removes ipv4 address from interface -| | [Documentation] | Check if Honeycomb API can remove configured ipv4\ -| | ... | addresses from interface. -| | Given IPv4 config from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | ... | @{ipv4_neighbor} | ${ipv4_settings} -| | And IPv4 config from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | When Honeycomb removes interface ipv4 addresses | ${node} | ${interface} -| | Then IPv4 address from Honeycomb should be empty | ${node} |${interface} -| | And ipv4 address from VAT should be empty | ${node} | ${interface} - -| Honeycomb modifies interface configuration - ipv4 (prefix) -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ -| | ... | with address and prefix provided. -| | [Teardown] | Honeycomb removes interface ipv4 addresses | ${node} -| | ... | ${interface} -| | When Honeycomb sets interface ipv4 address with prefix -| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} -| | ... | ${ipv4_settings} -| | And Honeycomb adds interface ipv4 neighbor -| | ... | ${node} | ${interface} | @{ipv4_neighbor} -| | Then IPv4 config from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} -| | ... | @{ipv4_neighbor} -| | ... | ${ipv4_settings} -| | And IPv4 config from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} - -| Honeycomb modifies interface configuration - ipv6 -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6. -| | When Honeycomb sets interface ipv6 configuration -| | ... | ${node} | ${interface} | @{ipv6_address} | @{ipv6_neighbor} -| | ... | ${ipv6_settings} -| | Then IPv6 config from Honeycomb should be -| | ... | ${node} | ${interface} | @{ipv6_address} | @{ipv6_neighbor} -| | ... | ${ipv6_settings} -| | And IPv6 config from VAT should be -| | ... | ${node} | ${interface} | @{ipv6_address} - -| Honeycomb modifies interface configuration - ethernet,routing -| | [Documentation] | Check if Honeycomb API can configure interface ethernet\ -| | ... | and routing settings. -| | When Honeycomb sets interface ethernet and routing configuration -| | ... | ${node} | ${interface} | ${ethernet} | ${routing} -| | Then Interface ethernet and routing configuration from Honeycomb should be -| | ... | ${node} | ${interface} | ${ethernet} | ${routing} -| | And Interface ethernet and routing configuration from VAT should be -| | ... | ${node} | ${interface} | ${ethernet['mtu']} | ${routing['vrf-id']} diff --git a/tests/suites/honeycomb/2 - vxlan.robot b/tests/suites/honeycomb/2 - vxlan.robot deleted file mode 100644 index c49c14c9f8..0000000000 --- a/tests/suites/honeycomb/2 - vxlan.robot +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Node and interfaces to run tests on. -| ${node}= | ${nodes['DUT1']} -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${vx_interface}= | vx_tunnel_test -# Configuration which will be set and verified during tests. -| &{vxlan_settings}= | src=192.168.0.2 | dst=192.168.0.3 | vni=${88} -| ... | encap-vrf-id=${0} -| &{vxlan_settings2}= | src=192.168.0.4 | dst=192.168.0.5 | vni=${47} -| ... | encap-vrf-id=${0} -| &{vxlan_settings_ipv6}= | src=10::10 | dst=10::11 | vni=${88} -| ... | encap-vrf-id=${0} -| &{vxlan_settings_ipv6_long}= | src=10:0:0:0:0:0:0:10 | dst=10:0:0:0:0:0:0:11 -| ... | vni=${88} | encap-vrf-id=${0} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/vxlan.robot -# import additional VxLAN settings from resource file -| Variables | tests/suites/honeycomb/resources/vxlan.py -| Force Tags | honeycomb_sanity -| Documentation | *Honeycomb VxLAN management test suite.* -| ... -| ... | Test suite uses the first interface of the first DUT node. - -*** Test Cases *** -| Honeycomb configures VxLAN tunnel -| | [Documentation] | Check if Honeycomb API can configure VxLAN settings. -| | Given VxLAN configuration from Honeycomb should be empty -| | ... | ${node} | ${vx_interface} -| | And VxLAN configuration from VAT should be empty | ${node} -| | When Honeycomb sets interface VxLAN configuration -| | ... | ${node} | ${vx_interface} | ${vxlan_settings} -| | Then VxLAN configuration from Honeycomb should be -| | ... | ${node} | ${vx_interface} | ${vxlan_settings} -| | And VxLAN configuration from VAT should be -| | ... | ${node} | ${vxlan_settings} - -| Honeycomb disables VxLAN tunnel -| | [Documentation] | Check if Honeycomb API can reset VxLAN configuration. -| | Given VxLAN configuration from Honeycomb should be -| | ... | ${node} | ${vx_interface} | ${vxlan_settings} -| | And VxLAN configuration from VAT should be -| | ... | ${node} | ${vxlan_settings} -| | When Honeycomb removes VxLAN tunnel settings | ${node} | ${vx_interface} -| | Then VxLAN configuration from Honeycomb should be empty -| | ... | ${node} | ${vx_interface} -| | And VxLAN configuration from VAT should be empty | ${node} - -Honeycomb can configure VXLAN tunnel after one has been disabled -| | [Documentation] | Check if Honeycomb API can configure VxLAN settings again\ -| | ... | after previous settings have been removed. -| | [Teardown] | Honeycomb removes VxLAN tunnel settings -| | ... | ${node} | ${vx_interface} -| | Given VxLAN configuration from Honeycomb should be empty -| | ... | ${node} | ${vx_interface} -| | And VxLAN configuration from VAT should be empty | ${node} -| | When Honeycomb sets interface VxLAN configuration -| | ... | ${node} | ${vx_interface} | ${vxlan_settings2} -| | Then VxLAN configuration from Honeycomb should be -| | ... | ${node} | ${vx_interface} | ${vxlan_settings2} -| | And VxLAN configuration from VAT should be -| | ... | ${node} | ${vxlan_settings2} - -| Honeycomb does not set VxLAN configuration on another interface type -| | [Documentation] | Check if Honeycomb API prevents setting VxLAN\ -| | ... | on incorrect interface. -| | Given VxLAN configuration from Honeycomb should be empty -| | ... | ${node} | ${interface} -| | And VxLAN configuration from VAT should be empty | ${node} -| | When Honeycomb fails setting VxLan on different interface type -| | ... | ${node} | ${interface} | ${vxlan_settings2} -| | Then VxLAN configuration from Honeycomb should be empty -| | ... | ${node} | ${interface} -| | And VxLAN configuration from VAT should be empty -| | ... | ${node} - -| Honeycomb does not set invalid VxLAN configuration -| | [Documentation] | Check if Honeycomb API prevents setting incorrect VxLAN\ -| | ... | settings. -| | Given VxLAN configuration from Honeycomb should be empty -| | ... | ${node} | ${vx_interface} -| | And VxLAN configuration from VAT should be empty | ${node} -| | When Honeycomb fails setting invalid VxLAN configuration -| | ... | ${node} | ${vx_interface} | ${vxlan_invalid} -| | Then VxLAN configuration from Honeycomb should be empty -| | ... | ${node} | ${vx_interface} - -| Honeycomb configures VxLAN tunnel with ipv6 -| | [Documentation] | Check if Honeycomb API can configure VxLAN with\ -| | ... | ipv6 settings. -| | [Teardown] | Honeycomb removes VxLAN tunnel settings -| | ... | ${node} | ${vx_interface} -| | Given VxLAN configuration from Honeycomb should be empty -| | ... | ${node} | ${vx_interface} -| | And VxLAN configuration from VAT should be empty | ${node} -| | When Honeycomb sets interface VxLAN configuration -| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6} -| | Then VxLAN configuration from Honeycomb should be -| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6_long} -| | And VxLAN configuration from VAT should be -| | ... | ${node} | ${vxlan_settings_ipv6} diff --git a/tests/suites/honeycomb/3 - bridge_domain.robot b/tests/suites/honeycomb/3 - bridge_domain.robot deleted file mode 100644 index c2986b65b7..0000000000 --- a/tests/suites/honeycomb/3 - bridge_domain.robot +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Node and interfaces to run tests on. -| ${node}= | ${nodes['DUT1']} -| @{interfaces}= | ${node['interfaces']['port1']['name']} -| ... | ${node['interfaces']['port3']['name']} -# Configuration which will be set and verified during tests. -| ${bd1_name}= | bd-01 -| ${bd2_name}= | bd-02 -| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} -| ... | unknown-unicast-flood=${True} | arp-termination=${True} -| &{if_settings}= | split_horizon_group=${1} | bvi=${False} -| &{if_settings2}= | split_horizon_group=${2} | bvi=${True} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Suite Teardown | Honeycomb removes all bridge domains | ${node} -| Force Tags | honeycomb_sanity -| Documentation | *Honeycomb bridge domain management test suite.* -| ... -| ... | Test suite uses the first two interfaces on the first DUT node. - -*** Test Cases *** -| Honeycomb sets up l2 bridge domain -| | [Documentation] | Check if Honeycomb can create bridge domains on VPP node. -| | When Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | Then Bridge domain configuration from Honeycomb should be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | And Bridge domain configuration from VAT should be -| | ... | ${node} | ${0} | ${bd_settings} - -| Honeycomb manages multiple bridge domains on node -| | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\ -| | ... | a single node. -| | Given Bridge domain configuration from Honeycomb should be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | When Honeycomb creates l2 bridge domain -| | ... | ${node} | ${bd2_name} | ${bd_settings} -| | Then Bridge domain configuration from Honeycomb should be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | And Bridge domain configuration from Honeycomb should be -| | ... | ${node} | ${bd2_name} | ${bd_settings} -| | And Bridge domain configuration from VAT should be -| | ... | ${node} | ${0} | ${bd_settings} -| | And Bridge domain configuration from VAT should be -| | ... | ${node} | ${1} | ${bd_settings} - -| Honeycomb removes bridge domains -| | [Documentation] | Check if Honeycomb can remove bridge domains from a VPP\ -| | ... | node. -| | Given Bridge domain configuration from Honeycomb should be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | When Honeycomb removes all bridge domains | ${node} -| | Then Honeycomb should show no bridge domains | ${node} -| | And VAT should show no bridge domains | ${node} - -| Honeycomb assigns interfaces to bridge domain -| | [Documentation] | Check if Honeycomb can assign VPP interfaces to an\ -| | ... | existing bridge domain. -| | Given Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | When Honeycomb adds interfaces to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} -| | Then Honeycomb should show interfaces assigned to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} -| | And VAT should show interfaces assigned to bridge domain -| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} - -| Honeycomb removes bridge domain with an interface assigned -| | [Documentation] | Check if Honeycomb can remove a bridge domain that has an\ -| | ... | interface assigned to it. -| | Given Honeycomb should show interfaces assigned to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} -| | And VAT should show interfaces assigned to bridge domain -| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} -| | When Honeycomb removes all bridge domains | ${node} -| | Then Honeycomb should show no bridge domains | ${node} -| | And VAT should show no bridge domains | ${node} - -| Honeycomb does not assign two bridged virtual interfaces to one bridge domain. -| | [Documentation] | Check if Honeycomb can assign two bridged virtual\ -| | ... | interfaces to a single bridge domain, and expect to fail. -| | [Teardown] | Honeycomb removes all bridge domains | ${node} -| | Given Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | When Honeycomb fails to add interfaces to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings2} -| | Then Honeycomb should not show interfaces assigned to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings2} -| | And VAT should not show interfaces assigned to bridge domain -| | ... | ${node} | ${0} | @{interfaces} | ${if_settings2} diff --git a/tests/suites/honeycomb/4 - tap.robot b/tests/suites/honeycomb/4 - tap.robot deleted file mode 100644 index 4bce990ee8..0000000000 --- a/tests/suites/honeycomb/4 - tap.robot +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Node and interfaces to run tests on. -| ${node}= | ${nodes['DUT1']} -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${tap_interface}= | tap_test -# Configuration which will be set and verified during tests. -| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 -| ... | device-instance=${1} -| &{tap_settings2}= | tap-name=tap_test | mac=08:00:27:60:26:ab -| ... | device-instance=${2} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/tap.robot -| Force Tags | honeycomb_sanity -| Documentation | *Honeycomb TAP management test suite.* -| ... -| ... | Test suite uses the first interface of the first DUT node. - -*** Test Cases *** -| Honeycomb configures TAP interface -| | [Documentation] | Check if Honeycomb API can configure a TAP interface. -| | Given TAP configuration from Honeycomb should be empty -| | ... | ${node} | ${tap_interface} -| | And TAP configuration from VAT should be empty -| | ... | ${node} | ${tap_interface} -| | When Honeycomb creates TAP interface -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | Then TAP configuration from Honeycomb should be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And TAP configuration from VAT should be -| | ... | ${node} | ${tap_interface} | ${tap_settings} - -| Honeycomb modifies existing TAP interface configuration -| | [Documentation] | Check if Honeycomb API can re-configure and existing TAP\ -| | ... | interface with new settings. -| | Given TAP configuration from Honeycomb should be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And TAP configuration from VAT should be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | When Honeycomb configures TAP interface -| | ... | ${node} | ${tap_interface} | ${tap_settings2} -| | Then TAP configuration from Honeycomb should be -| | ... | ${node} | ${tap_interface} | ${tap_settings2} -| | And TAP configuration from VAT should be -| | ... | ${node} | ${tap_interface} | ${tap_settings2} - -| Honeycomb removes TAP interface -| | [Documentation] | Check if Honeycomb API can remove TAP interface. -| | Given TAP configuration from Honeycomb should be -| | ... | ${node} | ${tap_interface} | ${tap_settings2} -| | And TAP configuration from VAT should be -| | ... | ${node} | ${tap_interface} | ${tap_settings2} -| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} -| | Then TAP configuration from Honeycomb should be empty -| | ... | ${node} | ${tap_interface} -| | And TAP configuration from VAT should be empty -| | ... | ${node} | ${tap_interface} diff --git a/tests/suites/honeycomb/5 - interface_vhost_user.robot b/tests/suites/honeycomb/5 - interface_vhost_user.robot deleted file mode 100644 index bba026ebc4..0000000000 --- a/tests/suites/honeycomb/5 - interface_vhost_user.robot +++ /dev/null @@ -1,160 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -| ${node}= | ${nodes['DUT1']} -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${vhost_interface}= | test_vhost -| &{vhost_user_server}= | socket=soc1 | role=server -| &{vhost_user_server_edit_1}= | socket=soc12 | role=server -| &{vhost_user_server_edit_2}= | socket=soc12 | role=client -| &{vhost_user_client}= | socket=soc2 | role=client -| &{vhost_user_client_edit_1}= | socket=soc22 | role=client -| &{vhost_user_client_edit_2}= | socket=soc22 | role=server -| &{vhost_user_wrong}= | socket=soc2 | role=wrong - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/vhost_user.robot -| Force Tags | honeycomb_sanity -| Documentation | *Honeycomb vhost-user interface management test suite.* -| ... -| ... | This test suite tests if it is posible to create, modify and\ -| ... | delete a vhost-user interface. - -*** Test Cases *** -| Honycomb creates vhost-user interface - server -| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\ -| | ... | server. -| | ... -| | Given vhost-user configuration from Honeycomb should be empty -| | ... | ${node} | ${vhost_interface} -| | When Honeycomb creates vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | Then vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | And vhost-user configuration from VAT should be -| | ... | ${node} | ${vhost_user_server} - -| Honycomb modifies vhost-user interface - server -| | [Documentation] | Check if Honeycomb can modify properties of existing\ -| | ... | vhost-user interface, role: server. -| | ... -| | Given vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1} -| | Then vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1} -| | And vhost-user configuration from VAT should be -| | ... | ${node} | ${vhost_user_server_edit_1} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2} -| | Then vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2} -| | And vhost-user configuration from VAT should be -| | ... | ${node} | ${vhost_user_server_edit_2} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | Then vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | And vhost-user configuration from VAT should be -| | ... | ${node} | ${vhost_user_server} - -| Honycomb deletes vhost-user interface - server -| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\ -| | ... | interface, role: server. -| | ... -| | Given vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | When Honeycomb removes vhost-user interface -| | ... | ${node} | ${vhost_interface} -| | Then vhost-user configuration from Honeycomb should be empty -| | ... | ${node} | ${vhost_interface} -| | And vhost-user configuration from VAT should be empty -| | ... | ${node} - -| Honycomb creates vhost-user interface - client -| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\ -| | ... | client. -| | ... -| | Given vhost-user configuration from Honeycomb should be empty -| | ... | ${node} | ${vhost_interface} -| | When Honeycomb creates vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | Then vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | And vhost-user configuration from VAT should be -| | ... | ${node} | ${vhost_user_client} - -| Honycomb modifies vhost-user interface - client -| | [Documentation] | Check if Honeycomb can modify properties of existing\ -| | ... | vhost-user interface, role: client. -| | ... -| | Given vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1} -| | Then vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1} -| | And vhost-user configuration from VAT should be -| | ... | ${node} | ${vhost_user_client_edit_1} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2} -| | Then vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2} -| | And vhost-user configuration from VAT should be -| | ... | ${node} | ${vhost_user_client_edit_2} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | Then vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | And vhost-user configuration from VAT should be -| | ... | ${node} | ${vhost_user_client} - -| Honycomb deletes vhost-user interface - client -| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\ -| | ... | interface, role: client. -| | ... -| | Given vhost-user configuration from Honeycomb should be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | When Honeycomb removes vhost-user interface -| | ... | ${node} | ${vhost_interface} -| | Then vhost-user configuration from Honeycomb should be empty -| | ... | ${node} | ${vhost_interface} -| | And vhost-user configuration from VAT should be empty -| | ... | ${node} - -| Honeycomb does not set vhost-user configuration on another interface type -| | [Documentation] | Check if Honeycomb refuses to set vhost-user\ -| | ... | configuration for interface which is not v3po:vhost-user type. -| | ... -| | When Honeycomb fails setting vhost-user on different interface type -| | ... | ${node} | ${interface} | ${vhost_user_server} -| | Then vhost-user configuration from Honeycomb should be empty -| | ... | ${node} | ${interface} -| | And vhost-user configuration from VAT should be empty -| | ... | ${node} - -| Honeycomb does not set invalid vhost-user configuration -| | [Documentation] | Check if Honeycomb refuses to set invalid parameters to\ -| | ... | vhost-user interface. -| | ... -| | Given vhost-user configuration from Honeycomb should be empty -| | ... | ${node} | ${vhost_interface} -| | When Honeycomb fails setting invalid vhost-user configuration -| | ... | ${node} | ${vhost_interface} | ${vhost_user_wrong} -| | Then vhost-user configuration from Honeycomb should be empty -| | ... | ${node} | ${vhost_interface} -| | And vhost-user configuration from VAT should be empty -| | ... | ${node} diff --git a/tests/suites/honeycomb/6 - sub_interface.robot b/tests/suites/honeycomb/6 - sub_interface.robot deleted file mode 100644 index 0ad6deb0d6..0000000000 --- a/tests/suites/honeycomb/6 - sub_interface.robot +++ /dev/null @@ -1,389 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/sub_interface.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Variables | tests/suites/honeycomb/resources/sub_interfaces.py -| Suite Teardown | Honeycomb removes all bridge domains | ${node} -| Force Tags | honeycomb_sanity -| Documentation | *Honeycomb sub-interface management test suite.* -| ... -| ... | This test suite tests if it is posible to create, modify and \ -| ... | delete a sub-interface. - -*** Variables *** -| ${node}= | ${nodes['DUT1']} - -# Test interface 1 and its sub-interface parameters: -| ${super_if}= | ${node['interfaces']['port1']['name']} -| ${sub_if_id}= | ${sub_if_1_settings['identifier']} -| ${sub_if_name}= | ${super_if}.${sub_if_id} - -*** Test Cases *** -| Honycomb creates sub-interface -| | [Documentation] | Check if Honeycomb creates a sub-interface. -| | ... -| | Given sub-interface configuration from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And interface configuration from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | When Honeycomb creates sub-interface | ${node} | ${super_if} -| | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings} -| | Then run keyword and continue on failure -| | ... | Sub-interface configuration from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} -| | And run keyword and continue on failure -| | ... | Sub-interface configuration from VAT should be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} -| | And sub-interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${super_if} | ${sub_if_id} - -| Honeycomb sets interface and sub-interface up -| | [Documentation] | Honeycomb changes the state of interface up and then \ -| | ... | changes the state of its sub-interface up, in this order. -| | ... -| | Given interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | When Honeycomb sets interface state -| | ... | ${node} | ${super_if} | up -| | Then interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up -| | Given run keyword and continue on failure -| | ... | Sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | And run keyword and continue on failure -| | ... | Sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down -| | When Honeycomb sets the sub-interface up -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then run keyword and continue on failure -| | ... | Sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | up | up -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | up | up - -| Honeycomb sets sub-interface down while its super-interface is up -| | [Documentation] | Honeycomb sets the sub-interface down while its \ -| | ... | super-interface is up. It must be possible. -| | ... -| | [Teardown] | Set super and sub interfaces up -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | up | up -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | up | up -| | And interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up -| | When Honeycomb sets the sub-interface down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down -| | And interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up - -| Honeycomb sets interface and sub-interface down -| | [Documentation] | Honeycomb changes the state of interface down and then \ -| | ... | changes the state of its sub-interface down, in this order. -| | ... -| | [Teardown] | Set super and sub interfaces down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up -| | When Honeycomb sets interface state -| | ... | ${node} | ${super_if} | down -| | Then interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | Given sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | up | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | up | down -| | When Honeycomb sets the sub-interface down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down - -| Honeycomb fails to set sub-interface up while its super-interface is down -| | [Documentation] | Honeycomb tries to set the sub-interface up while its \ -| | ... | super-interface is down. It must not be possible. -| | ... -| | Given interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | And sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down -| | When Honeycomb fails to set sub-interface up -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | And sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down - -| Honeycomb fails to delete sub-interface -| | [Documentation] | Check if Honeycomb can delete an existing sub-interface. -| | ... -| | [Setup] | Set super and sub interfaces down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given sub-interface configuration from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} -| | And sub-interface configuration from VAT should be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} -| | When Honeycomb fails to remove all sub-interfaces -| | ... | ${node} | ${super_if} -| | Then sub-interface configuration from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} -| | And sub-interface configuration from VAT should be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} - -| Honeycomb adds sub-interface to new bridge domain -| | [Documentation] | Check if Honeycomb adds a sub-interface to bridge domain. -| | ... -| | [Setup] | Set super and sub interfaces down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given sub-interface configuration from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} -| | And sub-interface configuration from VAT should be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} -| | When Honeycomb creates L2 bridge domain -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | Then bridge domain configuration from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | When Honeycomb adds sub-interface to bridge domain -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings} -| | Then sub-interface bridge domain configuration from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings} -| | And sub-interface bridge domain configuration from VAT should be -| | ... | ${node} | ${sub_if_name} | ${sub_bd_settings} -| | And sub-interface configuration from VAT should be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} - -| Honeycomb enables tag-rewrite pop 1 -| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ -| | ... | parameters correctly. Case: pop 1. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} - -| Honeycomb enables tag-rewrite push -| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ -| | ... | parameters correctly. Case: push. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT} - -| Honeycomb enables tag-rewrite translate 1-2 -| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ -| | ... | parameters correctly. Case: translate 1-2. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${tag_rewrite_translate_1_2_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT} - -| Honeycomb disables tag-rewrite -| | [Documentation] | Check if Honeycomb disables the tag-rewrite. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} -| | Then rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} - -| Honeycomb enables tag-rewrite pop 1 again -| | [Documentation] | Check if Honeycomb can enable tag-rewrite again, once it \ -| | ... | was disabled by Honeycomb. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} - -| Honeycomb modifies the tag-rewrite -| | [Documentation] | Honeycomb sets the tag-rewrite: -| | ... | 1. pop 1, then -| | ... | 2. push, then -| | ... | 3. translate 1 - 2 -| | ... | Then Honeycomb disables the tag-rewrite. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${tag_rewrite_translate_1_2_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} -| | Then rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} - -| Honeycomb fails to set wrong vlan-type in tag-rewrite -| | [Documentation] | Check that Honeycomb does not accept wrong values of \ -| | ... | vlan-type in tag-rewrite. -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb fails to set wrong rewrite tag -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${tag_rewrite_translate_1_2_wrong} -| | Then rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} - -*** Keywords *** -| Set super and sub interfaces up -| | [Documentation] | Honeycomb sets super-interface and sub-interface up, in \ -| | ... | this order. -| | ... -| | ... | *Arguments:* -| | ... | - node - Information about a DUT node. Type: dictionary -| | ... | - super_interface - Super interface. Type: string -| | ... | - identifier - Sub-interface identifier. Type: integer or string -| | ... -| | ... | *Example:* -| | ... | \| Set super and sub interfaces up\ -| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| -| | ... -| | [Arguments] | ${node} | ${super_interface} | ${identifier} -| | ... -| | Honeycomb sets interface state -| | ... | ${node} | ${super_interface} | up -| | Honeycomb sets the sub-interface up -| | ... | ${node} | ${super_interface} | ${identifier} - -| Set super and sub interfaces down -| | [Documentation] | Honeycomb sets super-interface and sub-interface down, in\ -| | ... | this order. -| | ... -| | ... | *Arguments:* -| | ... | - node - Information about a DUT node. Type: dictionary -| | ... | - super_interface - Super interface. Type: string -| | ... | - identifier - Sub-interface identifier. Type: integer or string -| | ... -| | ... | *Example:* -| | ... | \| Set super and sub interfaces down\ -| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| -| | ... -| | [Arguments] | ${node} | ${super_interface} | ${identifier} -| | ... -| | Honeycomb sets interface state -| | ... | ${node} | ${super_interface} | down -| | Honeycomb sets the sub-interface down -| | ... | ${node} | ${super_interface} | ${identifier} - -| Honeycomb disables tag rewrite -| | [Documentation] | -| | ... -| | ... | *Arguments:* -| | ... | - node - Information about a DUT node. Type: dictionary -| | ... | - super_if - Super-interface. Type: string -| | ... | - identifier - Sub-interface ID. Type: integer or string -| | ... -| | ... | *Example:* -| | ... | \| Honeycomb disables tag rewrite \ -| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| -| | ... -| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} diff --git a/tests/suites/honeycomb/7 - persistence.robot b/tests/suites/honeycomb/7 - persistence.robot deleted file mode 100644 index ad0aeced8d..0000000000 --- a/tests/suites/honeycomb/7 - persistence.robot +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables*** -# Node and interface to run tests on. -| ${node}= | ${nodes['DUT1']} -| ${interface}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/persistence.robot -| Suite Setup | Restart Honeycomb and VPP and clear persisted configuration -| ... | ${node} -| Force Tags | honeycomb_persistence -| Documentation | *Honeycomb configuration persistence test suite.* - -*** Test Cases *** -| Honeycomb persists configuration through restart of both Honeycomb and VPP -| | [Documentation] | Checks if Honeycomb maintains configuration after both\ -| | ... | Honeycomb and VPP are restarted. -| | Given Honeycomb configures every setting | ${node} | ${interface} -| | And Honeycomb and VPP should verify every setting | ${node} | ${interface} -| | When Honeycomb and VPP are restarted | ${node} -| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} -| | And Honeycomb should show no rogue interfaces | ${node} - -| Honeycomb persists configuration through restart of Honeycomb -| | [Documentation] | Checks if Honeycomb maintains configuration after it\ -| | ... | is restarted. -| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface} -| | When Honeycomb is restarted | ${node} -| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} -| | And Honeycomb should show no rogue interfaces | ${node} - -| Honeycomb persists configuration through restart of VPP -| | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\ -| | ... | restarted. -| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface} -| | When VPP is restarted | ${node} -| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} -| | And Honeycomb should show no rogue interfaces | ${node} - -| Honeycomb reverts to defaults if persistence files are invalid -| | [Documentation] | Checks if Honeycomb reverts to default configuration when\ -| | ... | persistence files are damaged or invalid. -| | [Teardown] | Run keyword if test failed -| | ... | Restart both systems and clear persisted configuration | ${node} -| | Given Honeycomb and VPP should not have default configuration | ${node} -| | When Persistence file is damaged during restart | ${node} -| | Then Honeycomb and VPP should have default configuration | ${node} - -*** Keywords *** -| Restart Honeycomb and VPP and clear persisted configuration -| | [Documentation] | Restarts Honeycomb and VPP with default configuration. -| | ... -| | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | Restart both systems and clear persisted configuration \ -| | ... | \| ${nodes['DUT1']} \| -| | [Arguments] | ${node} -| | Stop Honeycomb service on DUTs | ${node} -| | Clear persisted Honeycomb configuration | ${node} -| | Setup DUT | ${node} -| | Setup Honeycomb service on DUTs | ${node} \ No newline at end of file diff --git a/tests/suites/honeycomb/8 - vxlan_gpe.robot b/tests/suites/honeycomb/8 - vxlan_gpe.robot deleted file mode 100644 index 0031a0a92d..0000000000 --- a/tests/suites/honeycomb/8 - vxlan_gpe.robot +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Node and interfaces to run tests on. -| ${node}= | ${nodes['DUT1']} -| ${interface}= | ${node['interfaces']['port1']['name']} - -# Parameters to be set on existing interface -| ${vxlan_gpe_existing_if}= | ${interface} -| &{vxlan_gpe_base_wrong_interface_settings}= -| ... | name=${vxlan_gpe_existing_if} -| ... | type=iana-if-type:ethernetCsmacd -| ... | description=for testing purposes -| ... | enabled=true -| ... | link-up-down-trap-enable=enabled -| &{vxlan_gpe_wrong_interface_settings}= -| ... | local=192.168.50.77 -| ... | remote=192.168.50.72 -| ... | vni=${9} -| ... | next-protocol=wrong_ipv4 -| ... | encap-vrf-id=${0} -| ... | decap-vrf-id=${0} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot -# Import additional VxLAN GPE settings from resource file -| Variables | tests/suites/honeycomb/resources/vxlan_gpe.py -| Documentation | *Honeycomb VxLAN-GPE management test suite.* -| Force Tags | honeycomb_sanity - -*** Test Cases *** -| Honeycomb creates VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb API can configure VxLAN GPE tunnel. -| | ... -| | Given interface configuration from Honeycomb should be empty -| | ... | ${node} | ${vxlan_gpe_if1} -| | And interface configuration from VAT should be empty -| | ... | ${node} | ${vxlan_gpe_if1} -| | When Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} -| | Then run keyword and continue on failure -| | ... | VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} -| | And run keyword and continue on failure -| | ... | VxLAN GPE configuration from VAT should be -| | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings} -| | And run keyword and continue on failure -| | ... | VxLAN GPE Interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${vxlan_gpe_if1} - -| Honeycomb removes VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb API can remove VxLAN GPE tunnel. -| | ... -# Disabled beacuse of bug in Honeycomb. -# TODO: Enable when fixed. -#| | Given VxLAN GPE configuration from Honeycomb should be -#| | ... | ${node} | ${vxlan_gpe_if1} -#| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} -#| | And VxLAN GPE configuration from VAT should be -#| | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings} -| | When Honeycomb removes VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if1} -| | Then VxLAN GPE configuration from VAT should be empty -| | ... | ${node} -| | And VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_disabled_base_settings} | ${vxlan_gpe_settings} - -| Honeycomb sets wrong interface type while creating VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ -| | ... | with a wrong interface type set. -| | ... -| | Given interface configuration from Honeycomb should be empty -| | ... | ${node} | ${vxlan_gpe_if2} -| | And interface configuration from VAT should be empty -| | ... | ${node} | ${vxlan_gpe_if2} -| | When Honeycomb fails to create VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if2} -| | ... | ${vxlan_gpe_wrong_type_base_settings} | ${vxlan_gpe_settings} -| | Then interface configuration from Honeycomb should be empty -| | ... | ${node} | ${vxlan_gpe_if2} -| | And interface configuration from VAT should be empty -| | ... | ${node} | ${vxlan_gpe_if2} - -| Honeycomb sets wrong protocol while creating VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ -| | ... | with a wrong next-protocol set. -| | ... -| | Given interface configuration from Honeycomb should be empty -| | ... | ${node} | ${vxlan_gpe_if3} -| | And interface configuration from VAT should be empty -| | ... | ${node} | ${vxlan_gpe_if3} -| | When Honeycomb fails to create VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if3} -| | ... | ${vxlan_gpe_wrong_protocol_base_settings} -| | ... | ${vxlan_gpe_wrong_protocol_settings} -| | Then interface configuration from Honeycomb should be empty -| | ... | ${node} | ${vxlan_gpe_if3} -| | And interface configuration from VAT should be empty -| | ... | ${node} | ${vxlan_gpe_if3} - -| Honeycomb sets VxLAN GPE tunnel on existing interface with wrong type -| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ -| | ... | on existing interface with wrong type. -| | ... -| | Given VxLAN GPE configuration from VAT should be empty -| | ... | ${node} -| | When Honeycomb fails to create VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_existing_if} -| | ... | ${vxlan_gpe_base_wrong_interface_settings} -| | ... | ${vxlan_gpe_wrong_interface_settings} -| | Then VxLAN GPE configuration from VAT should be empty -| | ... | ${node} - -| Honeycomb creates VxLAN GPE tunnel with ipv6 -| | [Documentation] | Check if Honeycomb API can configure VxLAN GPE tunnel\ -| | ... | with IPv6 addresses. -| | ... -| | Given VxLAN GPE configuration from VAT should be empty -| | ... | ${node} -# Disabled beacuse of bug in Honeycomb -# TODO: Enable when fixed. -#| | And VxLAN GPE configuration from Honeycomb should be -#| | ... | ${node} | ${vxlan_gpe_if5} -#| | ... | ${vxlan_gpe_disabled_base_settings} | ${vxlan_gpe_settings} -| | When Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if5} -| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} -| | Then run keyword and continue on failure -| | ... | VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if5} -| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} -| | And run keyword and continue on failure -| | ... | VxLAN GPE configuration from VAT should be -| | ... | ${node} | ${vxlan_gpe_if5} | ${vxlan_gpe_ipv6_settings} -| | And run keyword and continue on failure -| | ... | VxLAN GPE Interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${vxlan_gpe_if5} - -| Honeycomb creates the second VxLAN GPE tunnel with ipv6 -| | [Documentation] | Check if Honeycomb API can configure another one VxLAN\ -| | ... | GPE tunnel with IPv6 addresses. -| | ... -| | Given interface configuration from Honeycomb should be empty -| | ... | ${node} | ${vxlan_gpe_if6} -| | And interface configuration from VAT should be empty -| | ... | ${node} | ${vxlan_gpe_if6} -| | When Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if6} -| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} -| | Then run keyword and continue on failure -| | ... | VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if6} -| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} -| | And run keyword and continue on failure -| | ... | VxLAN GPE configuration from VAT should be -| | ... | ${node} | ${vxlan_gpe_if6} | ${vxlan_gpe_ipv6_settings2} -| | And run keyword and continue on failure -| | ... | VxLAN GPE Interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${vxlan_gpe_if6} diff --git a/tests/suites/honeycomb/9 - l2_fib.robot b/tests/suites/honeycomb/9 - l2_fib.robot deleted file mode 100644 index bc56f4e85c..0000000000 --- a/tests/suites/honeycomb/9 - l2_fib.robot +++ /dev/null @@ -1,229 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Resource | resources/libraries/robot/honeycomb/l2_fib.robot -| Variables | tests/suites/honeycomb/resources/l2_fib.py -| Documentation | *Honeycomb L2 FIB management test suite.* -| Suite Setup | Run keywords -| ... | Set test interface down -| ... | AND -| ... | Honeycomb removes all bridge domains | ${node} -| Suite Teardown | Honeycomb removes all bridge domains | ${node} -| Force tags | honeycomb_sanity - -*** Variables *** -# Node and interface used in tests. -| ${node}= | ${nodes['DUT1']} -| ${interface}= | GigabitEthernet0/8/0 - -*** Test Cases *** -| Honeycomb adds L2 FIB entry (forward) -| | [Documentation] | Honeycomb creates a bridge domain and assignes an \ -| | ... | interface to it. Then adds an L2 FIB entry (forward) to the bridge \ -| | ... | domain. -| | ... -| | [Teardown] | Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} -| | ... -| | Given Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | When Honeycomb sets interface state -| | ... | ${node} | ${interface} | up -| | Then Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | up -| | When Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | Then Bridge domain configuration from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | Given Bridge domain configuration in interface operational data should be empty -| | ... | ${node} | ${interface} -| | When Honeycomb adds interface to bridge domain -| | ... | ${node} | ${interface} | ${bd_name} | ${if_bd_settings} -| | Then Bridge domain configuration in interface operational data should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | Given L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} - -| Honeycomb adds L2 FIB entry (static, forward) -| | [Documentation] | Honeycomb adds an L2 FIB entry (static, forward) to the \ -| | ... | bridge domain. -| | ... -| | [Teardown] | Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper['phys-address']} -| | ... -| | Given Bridge domain configuration in interface operational data should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_static_forward_vat} - -| Honeycomb adds L2 FIB entry (static, filter) -| | [Documentation] | Honeycomb adds an L2 FIB entry (static, filter) to the \ -| | ... | bridge domain. -| | ... -| | [Teardown] | Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper['phys-address']} -| | ... -| | Given Bridge domain configuration in interface operational data should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_filter_vat} - -| Honeycomb adds and removes L2 FIB entry (forward) -| | [Documentation] | Honeycomb adds an L2 FIB entry (forward) to the bridge \ -| | ... | domain and then Honeycomb removes it from the bridge domain. -| | ... -| | [Teardown] | Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} -| | ... -| | Given Bridge domain configuration in interface operational data should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} -| | When Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} -| | Then L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} - -| Honeycomb adds more than one L2 FIB entry -| | [Documentation] | Honeycomb adds three L2 FIB entries to the bridge domain. -| | ... -| | [Teardown] | Honeycomb removes all L2 FIB entries -| | ... | ${node} | ${bd_name} -| | ... -| | Given Bridge domain configuration in interface operational data should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} -| | And Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_cfg} -| | And Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | And L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper} -| | And L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_static_forward_vat} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_filter_vat} - -| Honeycomb fails to set wrong L2 FIB entry -| | [Documentation] | Honeycomb tries to add an L2 FIB entry with wrong \ -| | ... | parameters to the bridge domain. It must fail. -| | ... -| | [Teardown] | Honeycomb removes all L2 FIB entries -| | ... | ${node} | ${bd_name} -| | ... -| | Given Bridge domain configuration in interface operational data should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb fails to add wrong L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_mac} -| | Then L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb fails to add wrong L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_if} -| | Then L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb fails to add wrong L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_action} -| | Then L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} - -| Honeycomb fails to modify existing L2 FIB entry -| | [Documentation] | Honeycomb tries to modify an existing L2 FIB entry. It \ -| | ... | must fail. -| | ... -| | [Teardown] | Honeycomb removes all L2 FIB entries -| | ... | ${node} | ${bd_name} -| | ... -| | Given Bridge domain configuration in interface operational data should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | When Honeycomb fails to modify L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} -| | ... | outgoing-interface -| | ... | ${l2_fib_forward_modified_cfg['outgoing-interface']} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} - -*** Keywords *** -| Set test interface down -| | [Documentation] | Set the interface used in tests down. -| | ... -| | Honeycomb sets interface state -| | ... | ${node} | ${interface} | down diff --git a/tests/suites/honeycomb/9 - notification.robot b/tests/suites/honeycomb/9 - notification.robot deleted file mode 100644 index 5769ea0e73..0000000000 --- a/tests/suites/honeycomb/9 - notification.robot +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Node and interfaces to run tests on. -| ${node}= | ${nodes['DUT1']} -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${tap_interface}= | tap_test -| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 -| ... | device-instance=${1} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/tap.robot -| Resource | resources/libraries/robot/honeycomb/notifications.robot -| Suite Setup | Run keywords -| ... | Honeycomb sets interface state -| ... | ${node} | ${interface} | down | AND -| ... | Honeycomb creates TAP interface -| ... | ${node} | ${tap_interface} | ${tap_settings} -| Documentation | *Honeycomb notifications test suite.* -| Force Tags | honeycomb_sanity - -*** Test Cases *** -| Honeycomb sends notification on interface state change -| | [Documentation] | Check if Honeycomb sends a state-changed notification\ -| | ... | when the state of an interface is changed. -| | Given Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | And Interface state from VAT should be | ${node} | ${interface} | down -| | And Notification listener is established | ${node} -| | When Honeycomb sets interface state | ${node} | ${interface} | up -| | Then Honeycomb should send interface state notification | ${interface} | up -| | When Honeycomb sets interface state | ${node} | ${interface} | down -| | And Honeycomb should send interface state notification | ${interface} | down - -| Honeycomb sends notification on interface deletion -| | [Documentation] | Check if Honeycomb sends an interface-deleted notification -| | ... | when an interface is deleted. -| | Given TAP configuration from Honeycomb should be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And TAP configuration from VAT should be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And Notification listener is established | ${node} -| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} -| | Then Honeycomb should send interface deleted notification | ${tap_interface} diff --git a/tests/suites/honeycomb/900_persistence.robot b/tests/suites/honeycomb/900_persistence.robot new file mode 100644 index 0000000000..e3f68ccc33 --- /dev/null +++ b/tests/suites/honeycomb/900_persistence.robot @@ -0,0 +1,76 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables*** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/persistence.robot +| Suite Setup | Restart Honeycomb and VPP and clear persisted configuration +| ... | ${node} +| Force Tags | honeycomb_persistence +| Documentation | *Honeycomb configuration persistence test suite.* + +*** Test Cases *** +| Honeycomb persists configuration through restart of both Honeycomb and VPP +| | [Documentation] | Checks if Honeycomb maintains configuration after both\ +| | ... | Honeycomb and VPP are restarted. +| | Given Honeycomb configures every setting | ${node} | ${interface} +| | And Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | When Honeycomb and VPP are restarted | ${node} +| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | And Honeycomb should show no rogue interfaces | ${node} + +| Honeycomb persists configuration through restart of Honeycomb +| | [Documentation] | Checks if Honeycomb maintains configuration after it\ +| | ... | is restarted. +| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | When Honeycomb is restarted | ${node} +| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | And Honeycomb should show no rogue interfaces | ${node} + +| Honeycomb persists configuration through restart of VPP +| | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\ +| | ... | restarted. +| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | When VPP is restarted | ${node} +| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | And Honeycomb should show no rogue interfaces | ${node} + +| Honeycomb reverts to defaults if persistence files are invalid +| | [Documentation] | Checks if Honeycomb reverts to default configuration when\ +| | ... | persistence files are damaged or invalid. +| | [Teardown] | Run keyword if test failed +| | ... | Restart both systems and clear persisted configuration | ${node} +| | Given Honeycomb and VPP should not have default configuration | ${node} +| | When Persistence file is damaged during restart | ${node} +| | Then Honeycomb and VPP should have default configuration | ${node} + +*** Keywords *** +| Restart Honeycomb and VPP and clear persisted configuration +| | [Documentation] | Restarts Honeycomb and VPP with default configuration. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | Restart both systems and clear persisted configuration \ +| | ... | \| ${nodes['DUT1']} \| +| | [Arguments] | ${node} +| | Stop Honeycomb service on DUTs | ${node} +| | Clear persisted Honeycomb configuration | ${node} +| | Setup DUT | ${node} +| | Setup Honeycomb service on DUTs | ${node} \ No newline at end of file diff --git a/tests/suites/honeycomb/__init__.robot b/tests/suites/honeycomb/__init__.robot index 264f604599..d38852a090 100644 --- a/tests/suites/honeycomb/__init__.robot +++ b/tests/suites/honeycomb/__init__.robot @@ -12,6 +12,7 @@ # limitations under the License. *** Variables*** +# Honeycomb node to run tests on. | ${node}= | ${nodes['DUT1']} *** Settings *** @@ -20,5 +21,6 @@ | Resource | resources/libraries/robot/honeycomb/honeycomb.robot | Suite Setup | Run keywords | Setup all DUTs before test | AND | ... | Clear persisted Honeycomb configuration | ${node} | AND -| ... | Setup Honeycomb service on DUTs | ${node} +| ... | Setup Honeycomb service on DUTs | ${node} | AND +| ... | Set Global Variable | ${node} | Suite Teardown | Stop Honeycomb service on DUTs | ${node} -- cgit 1.2.3-korg