From 20a24b36a6fc172c209dcc154e138f6e06e85bd5 Mon Sep 17 00:00:00 2001 From: selias Date: Mon, 23 Jan 2017 18:14:46 +0100 Subject: csit-func-hc naming change - change test suite filenames - add numbering to all test cases more details at https://wiki.fd.io/view/CSIT/csit-perf-tc-naming-change Change-Id: I58e6c60f750c07e99c6949d8fe2510780fa9007a Signed-off-by: selias --- .../func/honeycomb/010_interface_management.robot | 133 ------ tests/func/honeycomb/020_bridge_domain.robot | 100 ----- tests/func/honeycomb/021_l2_fib.robot | 234 ----------- tests/func/honeycomb/030_vxlan.robot | 129 ------ tests/func/honeycomb/031_vxlan_gpe.robot | 163 -------- tests/func/honeycomb/040_tap.robot | 74 ---- .../func/honeycomb/050_interface_vhost_user.robot | 163 -------- tests/func/honeycomb/060_sub_interface.robot | 445 --------------------- tests/func/honeycomb/070_netconf.robot | 59 --- tests/func/honeycomb/071_notification.robot | 59 --- .../func/honeycomb/080_access_control_lists.robot | 160 -------- tests/func/honeycomb/081_ietf_acl_traffic.robot | 374 ----------------- .../honeycomb/090_provider_backbone_bridge.robot | 82 ---- tests/func/honeycomb/100_lisp.robot | 159 -------- tests/func/honeycomb/110_nsh_sfc.robot | 127 ------ tests/func/honeycomb/120_port_mirroring.robot | 65 --- tests/func/honeycomb/130_nat.robot | 104 ----- tests/func/honeycomb/900_persistence.robot | 65 --- .../honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot | 160 ++++++++ .../mgmt-cfg-ietfacl-apihc-apivat-func.robot | 374 +++++++++++++++++ .../func/honeycomb/mgmt-cfg-int-apihcnc-func.robot | 59 +++ .../mgmt-cfg-int-subint-apihc-apivat-func.robot | 445 +++++++++++++++++++++ .../mgmt-cfg-intip4-intip6-apihc-apivat-func.robot | 133 ++++++ .../mgmt-cfg-inttap-apihc-apivat-func.robot | 74 ++++ .../mgmt-cfg-intvhost-apihc-apivat-func.robot | 163 ++++++++ .../mgmt-cfg-l2bd-apihc-apivat-func.robot | 100 +++++ .../mgmt-cfg-l2fib-apihc-apivat-func.robot | 234 +++++++++++ .../mgmt-cfg-lisp-apihc-apivat-func.robot | 159 ++++++++ .../honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot | 127 ++++++ .../honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot | 82 ++++ .../mgmt-cfg-snat44-apihc-apivat-func.robot | 104 +++++ .../mgmt-cfg-spanrx-apihc-apivat-func.robot | 65 +++ .../mgmt-cfg-vxlan-apihc-apivat-func.robot | 129 ++++++ .../mgmt-cfg-vxlangpe-apihc-apivat-func.robot | 163 ++++++++ tests/func/honeycomb/mgmt-notif-apihcnc-func.robot | 59 +++ .../honeycomb/mgmt-statepersist-apihc-func.robot | 65 +++ 36 files changed, 2695 insertions(+), 2695 deletions(-) delete mode 100644 tests/func/honeycomb/010_interface_management.robot delete mode 100644 tests/func/honeycomb/020_bridge_domain.robot delete mode 100644 tests/func/honeycomb/021_l2_fib.robot delete mode 100644 tests/func/honeycomb/030_vxlan.robot delete mode 100644 tests/func/honeycomb/031_vxlan_gpe.robot delete mode 100644 tests/func/honeycomb/040_tap.robot delete mode 100644 tests/func/honeycomb/050_interface_vhost_user.robot delete mode 100644 tests/func/honeycomb/060_sub_interface.robot delete mode 100644 tests/func/honeycomb/070_netconf.robot delete mode 100644 tests/func/honeycomb/071_notification.robot delete mode 100644 tests/func/honeycomb/080_access_control_lists.robot delete mode 100644 tests/func/honeycomb/081_ietf_acl_traffic.robot delete mode 100644 tests/func/honeycomb/090_provider_backbone_bridge.robot delete mode 100644 tests/func/honeycomb/100_lisp.robot delete mode 100644 tests/func/honeycomb/110_nsh_sfc.robot delete mode 100644 tests/func/honeycomb/120_port_mirroring.robot delete mode 100644 tests/func/honeycomb/130_nat.robot delete mode 100644 tests/func/honeycomb/900_persistence.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-ietfacl-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot create mode 100644 tests/func/honeycomb/mgmt-notif-apihcnc-func.robot create mode 100644 tests/func/honeycomb/mgmt-statepersist-apihc-func.robot (limited to 'tests/func/honeycomb') diff --git a/tests/func/honeycomb/010_interface_management.robot b/tests/func/honeycomb/010_interface_management.robot deleted file mode 100644 index 5773b9bdfa..0000000000 --- a/tests/func/honeycomb/010_interface_management.robot +++ /dev/null @@ -1,133 +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 *** -# 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}= | 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 -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Force Tags | honeycomb_sanity -| Suite Teardown | Run Keyword If Any Tests Failed -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| 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 from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | And Interface state from VAT should be | ${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 IPv4 address with netmask -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ -| | ... | with address and netmask provided. -| | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface} -| | And ipv4 address from VAT should be empty | ${node} | ${interface} -| | When Honeycomb sets interface ipv4 address | ${node} | ${interface} -| | ... | ${ipv4_address} | ${ipv4_mask} -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_mask} - -| Honeycomb removes IPv4 address from interface -| | [Documentation] | Check if Honeycomb API can remove configured ipv4\ -| | ... | addresses from interface. -| | Given IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_mask} -| | 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 IPv4 address with prefix -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ -| | ... | with address and prefix provided. -| | [Teardown] | Honeycomb removes interface ipv4 addresses | ${node} -| | ... | ${interface} -| | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface} -| | And ipv4 address from VAT should be empty | ${node} | ${interface} -| | When Honeycomb sets interface ipv4 address with prefix -| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_mask} - -| Honeycomb modifies IPv4 neighbor table -| | [Documentation] | Check if Honeycomb API can add and remove ARP entries. -# Operational data and VAT dump not available (HONEYCOMB-111) -| | [Tags] | EXPECTED_FAILING -| | [Teardown] | Honeycomb clears all interface ipv4 neighbors -| | ... | ${node} | ${interface} -| | When Honeycomb adds interface ipv4 neighbor -| | ... | ${node} | ${interface} | @{ipv4_neighbor} -| | Then IPv4 neighbor from Honeycomb should be -| | ... | ${node} | ${interface} | @{ipv4_neighbor} - -| Honeycomb modifies interface configuration - IPv6 -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6. -# Configuring IPv6 not implemented (HONEYCOMB-102) -| | [Tags] | EXPECTED_FAILING -| | When Honeycomb sets interface ipv6 address -| | ... | ${node} | ${interface} | @{ipv6_address} -| | Then IPv6 address from Honeycomb should be -| | ... | ${node} | ${interface} | @{ipv6_address} -| | And IPv6 address from VAT should be -| | ... | ${node} | ${interface} | @{ipv6_address} - -# TODO: Honeycomb modifies IPv6 neighbor table - -| Honeycomb modifies interface configuration - MTU -| | [Documentation] | Check if Honeycomb API can configure interface\ -| | ... | MTU value. -# Configuring MTU not implemented (HONEYCOMB-126) -| | [Tags] | EXPECTED_FAILING -| | When Honeycomb sets interface ethernet configuration -| | ... | ${node} | ${interface} | ${ethernet} -| | Then Interface ethernet configuration from Honeycomb should be -| | ... | ${node} | ${interface} | ${ethernet} -| | And Interface ethernet configuration from VAT should be -| | ... | ${node} | ${interface} | ${ethernet['mtu']} - -# TODO: Honeycomb configures routing on interface diff --git a/tests/func/honeycomb/020_bridge_domain.robot b/tests/func/honeycomb/020_bridge_domain.robot deleted file mode 100644 index 0854051033..0000000000 --- a/tests/func/honeycomb/020_bridge_domain.robot +++ /dev/null @@ -1,100 +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 *** -# 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/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Suite Teardown | Run keywords -| ... | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| ... | AND | Honeycomb removes all bridge domains | ${node} | @{interfaces} -| 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. -# Bridge domain references not cleaned up on delete (HONEYCOMB-267) -| | [Tags] | EXPECTED_FAILING -| | 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} -| | And Honeycomb should not show interfaces assigned to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} diff --git a/tests/func/honeycomb/021_l2_fib.robot b/tests/func/honeycomb/021_l2_fib.robot deleted file mode 100644 index 81b8260610..0000000000 --- a/tests/func/honeycomb/021_l2_fib.robot +++ /dev/null @@ -1,234 +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/honeycomb.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 | resources/test_data/honeycomb/l2_fib.py | ${node} | ${interface} -| ... | ${interface2} -| Documentation | *Honeycomb L2 FIB management test suite.* -| Suite Setup | Run keywords -| ... | Set test interface down -| ... | AND -| ... | Honeycomb removes all bridge domains | ${node} | ${interface} -| Suite Teardown | Run keywords -| ... | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| ... | AND | Honeycomb removes all bridge domains | ${node} -| Force tags | honeycomb_sanity - -*** Variables *** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${interface2}= | ${node['interfaces']['port3']['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/func/honeycomb/030_vxlan.robot b/tests/func/honeycomb/030_vxlan.robot deleted file mode 100644 index a44628a593..0000000000 --- a/tests/func/honeycomb/030_vxlan.robot +++ /dev/null @@ -1,129 +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 *** -# 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/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/vxlan.robot -# import additional VxLAN settings from resource file -| Variables | resources/test_data/honeycomb/vxlan.py -| Force Tags | honeycomb_sanity -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| 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} -| | ${vxlan_index}= | Get Interface index from oper data -| | ... | ${node} | ${vx_interface} -| | Set Suite Variable | ${vxlan_index} - -| 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 Honeycomb should not show disabled interface in oper data -| | ... | ${node} | ${vxlan_index} -| | 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 Honeycomb should show disabled interface in oper data -| | ... | ${node} | ${vxlan_index} -| | 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 Honeycomb should show disabled interface in oper data -| | ... | ${node} | ${vxlan_index} -| | 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 Honeycomb should not show disabled interface in oper data -| | ... | ${node} | ${vxlan_index} -| | 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/func/honeycomb/031_vxlan_gpe.robot b/tests/func/honeycomb/031_vxlan_gpe.robot deleted file mode 100644 index 9c6134b3cb..0000000000 --- a/tests/func/honeycomb/031_vxlan_gpe.robot +++ /dev/null @@ -1,163 +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 *** -# 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/honeycomb.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 | resources/test_data/honeycomb/vxlan_gpe.py -| Documentation | *Honeycomb VxLAN-GPE management test suite.* -| Force Tags | honeycomb_sanity -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} - -*** Test Cases *** -| Honeycomb creates VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb API can configure a 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 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} -| | And 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. -| | ... -| | Given VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} -| | 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 Honeycomb should be empty -| | ... | ${node} | ${vxlan_gpe_if1} -| | And VxLAN GPE configuration from VAT should be empty -| | ... | ${node} - -| 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 a VxLAN GPE tunnel\ -| | ... | with IPv6 addresses. -| | ... -| | Given VxLAN GPE configuration from VAT should be empty -| | ... | ${node} -| | And VxLAN GPE configuration from Honeycomb should be empty -| | ... | ${node} | ${vxlan_gpe_if5} -| | When Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if5} -| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} -| | Then 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 VxLAN GPE Interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${vxlan_gpe_if5} - -| Honeycomb creates a second VxLAN GPE tunnel with ipv6 -| | [Documentation] | Check if Honeycomb API can configure another 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 VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if6} -| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} -| | And VxLAN GPE configuration from VAT should be -| | ... | ${node} | ${vxlan_gpe_if6} | ${vxlan_gpe_ipv6_settings2} -| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${vxlan_gpe_if6} diff --git a/tests/func/honeycomb/040_tap.robot b/tests/func/honeycomb/040_tap.robot deleted file mode 100644 index cf45107ade..0000000000 --- a/tests/func/honeycomb/040_tap.robot +++ /dev/null @@ -1,74 +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 *** -# 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/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/tap.robot -| Force Tags | honeycomb_sanity -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| 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/func/honeycomb/050_interface_vhost_user.robot b/tests/func/honeycomb/050_interface_vhost_user.robot deleted file mode 100644 index 1310f2c7d6..0000000000 --- a/tests/func/honeycomb/050_interface_vhost_user.robot +++ /dev/null @@ -1,163 +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 *** -| ${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/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/vhost_user.robot -# Whole suite failing due to bug https://jira.fd.io/browse/VPP-562 -| Force Tags | honeycomb_sanity | EXPECTED_FAILING -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| 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/func/honeycomb/060_sub_interface.robot b/tests/func/honeycomb/060_sub_interface.robot deleted file mode 100644 index 9e58f2766d..0000000000 --- a/tests/func/honeycomb/060_sub_interface.robot +++ /dev/null @@ -1,445 +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/honeycomb.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 | resources/test_data/honeycomb/sub_interfaces.py -| Suite Teardown | Run keywords -| ... | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| ... | AND | 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 Honeycomb sets interface state | ${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 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} -| | 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\ -| | ... | and of its sub-interface to up. -| | ... -| | Given interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | Sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | Sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | 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 -| | When Honeycomb sets the sub-interface up -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then 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 interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up -| | And sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | up -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | 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 first 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} - -| Honeycomb configures sub-interface ipv4 address -| | [Documentation] | Check if Honeycomb can configure an ipv4 address on the\ -| | ... | sub-interface. -| | ... -| | Given sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | When Honeycomb sets sub-interface ipv4 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | Then sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} - -| Honeycomb removes sub-interface ipv4 address -| | [Documentation] | Check if Honeycomb can remove configured ipv4 addresses\ -| | ... | from the sub-interface. -| | ... -| | Given sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | Run Keyword And Continue On Failure -| | ... | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | When Honeycomb removes all sub-interface ipv4 addresses -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} - -| Honeycomb modifies existing sub-interface ipv4 address -| | [Documentation] | Check if Honeycomb can modify an ipv4 address already\ -| | ... | configured on the sub-interface. -| | [Teardown] | Honeycomb removes all sub-interface ipv4 addresses -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Given sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | When Honeycomb sets sub-interface ipv4 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And Honeycomb sets sub-interface ipv4 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} -| | Then sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} -| | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} - -*** 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/func/honeycomb/070_netconf.robot b/tests/func/honeycomb/070_netconf.robot deleted file mode 100644 index f74947ccf0..0000000000 --- a/tests/func/honeycomb/070_netconf.robot +++ /dev/null @@ -1,59 +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/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/netconf.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI -| Variables | resources/test_data/honeycomb/netconf/triggers.py -| Documentation | *Netconf test suite. Contains test cases that need to bypass\ -| ... | REST API.* -| Force Tags | honeycomb_sanity -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} - -*** Variables *** -| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} -| ... | unknown-unicast-flood=${True} | arp-termination=${True} - -*** Test Cases *** -| Honeycomb can create and delete interfaces -| | [Documentation] | Repeatedly create and delete an interface through Netconf\ -| | ... | and check the reply for any errors. -| | Given Netconf session is established | ${node} -| | And Honeycomb creates first L2 bridge domain -| | ... | ${node} | bd_netconf | ${bd_settings} -| | :FOR | ${index} | IN RANGE | 20 -| | | When Error trigger is sent | ${trigger_105} -| | | Then Replies should not contain RPC errors - -| Transaction revert test case 1 -| | [Documentation] | Configure two conflicting VxLAN tunnels, then verify\ -| | ... | that neither tunnel exists. -| | Given Netconf session is established | ${node} -| | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node} -| | When Error trigger is sent | ${trigger_revert1} -| | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} -| | Then Should be equal | ${if_data} | ${if_data_new} - -| Transaction revert test case 2 -| | [Documentation] | Configure two conflicting TAP interfaces, then verify\ -| | ... | that neither interface exists. -| | Given Netconf session is established | ${node} -| | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node} -| | When Error trigger is sent | ${trigger_revert1} -| | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} -| | Then Should be equal | ${if_data} | ${if_data_new} diff --git a/tests/func/honeycomb/071_notification.robot b/tests/func/honeycomb/071_notification.robot deleted file mode 100644 index 41d04913a6..0000000000 --- a/tests/func/honeycomb/071_notification.robot +++ /dev/null @@ -1,59 +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 *** -# 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/honeycomb.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 -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} - -*** 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/func/honeycomb/080_access_control_lists.robot b/tests/func/honeycomb/080_access_control_lists.robot deleted file mode 100644 index 566ec44f14..0000000000 --- a/tests/func/honeycomb/080_access_control_lists.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 *** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot -| Variables | resources/test_data/honeycomb/acl.py -| Suite Teardown | Run keywords -| ... | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| ... | AND | Clear all ACL settings | ${node} -| Documentation | *Honeycomb access control lists test suite.* -| Force Tags | Honeycomb_sanity - -*** Test Cases *** -| Honeycomb can create ACL classify table -| | [Documentation] | Check if Honeycomb API can create an ACL table. -| | Given ACL table from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} -| | And ACL table from VAT should not exist -| | ... | ${node} | ${table_index} -| | When Honeycomb creates ACL table -| | ... | ${node} | ${hc_acl_table} -| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} - -| Honeycomb can remove ACL table -| | [Documentation] | Check if Honeycomb API can delete an ACL table. -| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | When Honeycomb removes ACL table | ${node} | ${hc_acl_table['name']} -| | Then ACL table from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} -| | And ACL table from VAT should not exist -| | ... | ${node} | ${table_index} - -| Honeycomb manages more than one ACL table -| | [Documentation] | Check if Honeycomb API can create another ACL table. -| | Given ACL table from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} -| | And ACL table from VAT should not exist -| | ... | ${node} | ${table_index} -| | When Honeycomb creates ACL table | ${node} | ${hc_acl_table} -| | And Honeycomb creates ACL table | ${node} | ${hc_acl_table2} -| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | And ACL table from Honeycomb should be | ${node} | ${hc_acl_table2} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index2} | ${vat_acl_table2} - -| Honeycomb can add ACL session to table -| | [Documentation] | Check if Honeycomb API can add an ACL session to a table. -| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | When Honeycomb adds ACL session -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | Then ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} - -| Honeycomb can remove ACL session -| | [Documentation] | Check if Honeycomb API can remove an ACL session. -| | Given ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} -| | When Honeycomb removes ACL session -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} -| | Then ACL session from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} -| | And ACL session from VAT should not exist -| | ... | ${node} | ${table_index} | ${session_index} - -| Honeycomb manages more than one ACL session on one table -| | [Documentation] | Check if Honeycomb API can add another ACL session\ -| | ... | to a table. -| | Given ACL session from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} -| | And ACL session from VAT should not exist -| | ... | ${node} | ${table_index} | ${session_index} -| | When Honeycomb adds ACL session -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And Honeycomb adds ACL session -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session2} -| | Then ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} -| | And ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session2} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index2} | ${vat_acl_session2} - -| Honeycomb enables ACL on interface -| | [Documentation] | Check if Honeycomb API can enable ACL on an interface. -| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | And ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} -| | When Honeycomb enables ACL on interface -| | ... | ${node} | ${interface} | ${hc_acl_table['name']} -| | Then Interface ACL settings from Honeycomb should be -| | ... | ${node} | ${interface} | ${hc_acl_table['name']} -| | And Interface ACL settings from VAT should be -| | ... | ${node} | ${interface} | ${table_index} - -| Honeycomb disables ACL on interface -| | [Documentation] | Check if Honeycomb API can disable ACL on an interface. -| | Given Interface ACL settings from Honeycomb should be -| | ... | ${node} | ${interface} | ${hc_acl_table['name']} -| | And Interface ACL settings from VAT should be -| | ... | ${node} | ${interface} | ${table_index} -| | When Honeycomb disables ACL on interface | ${node} | ${interface} -| | Then Interface ACL settings from Honeycomb should be empty -| | ... | ${node} | ${interface} -| | And Interface ACL settings from VAT should be empty -| | ... | ${node} | ${interface} - -| Honeycomb can remove one out of multiple ACL tables -| | [Documentation] | Check if Honeycomb API can delete an ACL table if more\ -| | ... | than one table exists. -# Attempting to remove one ACL table removes all of them (VPP-206) -| | [Tags] | EXPECTED_FAILING -| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | And ACL table from Honeycomb should be | ${node} | ${hc_acl_table2} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index2} | ${vat_acl_table2} -| | When Honeycomb removes ACL table | ${node} | ${hc_acl_table2['name']} -| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | And ACL table from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table2['name']} -| | And ACL table from VAT should not exist -| | ... | ${node} | ${table_index2} diff --git a/tests/func/honeycomb/081_ietf_acl_traffic.robot b/tests/func/honeycomb/081_ietf_acl_traffic.robot deleted file mode 100644 index a0b967980a..0000000000 --- a/tests/func/honeycomb/081_ietf_acl_traffic.robot +++ /dev/null @@ -1,374 +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 *** -| &{if_settings}= | enabled=True -# Bridge domain settings -| ${bd_name}= | bd1 -| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} -| ... | unknown-unicast-flood=${True} | arp-termination=${False} -| &{bd_if_settings}= | split_horizon_group=${0} | bvi=${False} -# Names for AC lists -| ${acl_name_l2}= | acl_l2 -| ${acl_name_l3_ip4}= | acl_l3_ip4 -| ${acl_name_l3_ip6}= | acl_l3_ip6 -| ${acl_name_l4}= | acl_l4 -| ${acl_name_mixed}= | acl_mixed -| ${acl_name_multirule}= | acl_multirule - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.honeycomb.HcAPIKwACL.ACLKeywords -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv4Setup -| Library | resources.libraries.python.IPv4Util -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.Routing -| Test Teardown | Run Keywords | Clear IETF-ACL settings -| ... | ${node} | ${dut_to_tg_if1} | AND -| ... | Show Packet Trace on All DUTs | ${nodes} -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| Documentation | *Honeycomb access control lists test suite for IETF-ACL node.* -# Test suite out of date since https://gerrit.fd.io/r/#/c/4331/ -# | Force Tags | Honeycomb_sanity - -*** Test Cases *** -| TC01: L2 ACL MAC filtering through IETF-ACL node -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure L2 MAC ACL on ingress interface. -| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ -| | ... | using different MACs. Receive all packets except those with\ -| | ... | MACs in the filtered ranges. -| | [Teardown] | Run Keywords -| | ... | Clear IETF-ACL Settings | ${node} | ${dut_to_tg_if1} | AND -| | ... | Show Packet Trace On All DUTs | ${nodes} | AND -| | ... | Honeycomb Removes All Bridge Domains -| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | Given Setup Interfaces And Bridge Domain For IETF-ACL Test -| | ... | L2 | ${acl_name_l2} -| | When Honeycomb Creates ACL Chain Through IETF Node -| | ... | ${dut_node} | ${acl_name_l2} | L2 | ${acl_settings} -| | And Honeycomb Assigns IETF-ACL Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | L2 | ingress | ${acl_name_l2} -| | ... | permit -| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${src_mac} -| | ... | ${tg_to_dut_if2} | ${dst_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src} -| | ... | ${tg_to_dut_if2} | ${classify_dst} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src2} -| | ... | ${tg_to_dut_if2} | ${classify_dst2} -| | ... | TCP | ${src_port} | ${dst_port} - -| TC02: L2 ACL MAC filtering through IETF-ACL node on egress interface -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure L2 MAC ACL on egress interface. -| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ -| | ... | using different MACs. Receive all packets except those with\ -| | ... | MACs in the filtered ranges. -| | [Teardown] | Run Keywords -| | ... | Clear IETF-ACL Settings | ${node} | ${dut_to_tg_if2} | AND -| | ... | Show Packet Trace On All DUTs | ${nodes} | AND -| | ... | Honeycomb Removes All Bridge Domains -| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | Given Setup Interfaces And Bridge Domain For IETF-ACL Test -| | ... | L2 | ${acl_name_l2} -| | When Honeycomb Creates ACL Chain Through IETF Node -| | ... | ${dut_node} | ${acl_name_l2} | L2 | ${acl_settings} -| | And Honeycomb Assigns IETF-ACL Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if2} | L2 | egress | ${acl_name_l2} -| | ... | permit -| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${src_mac} -| | ... | ${tg_to_dut_if2} | ${dst_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src} -| | ... | ${tg_to_dut_if2} | ${classify_dst} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src2} -| | ... | ${tg_to_dut_if2} | ${classify_dst2} -| | ... | TCP | ${src_port} | ${dst_port} - -| TC03: L3 ACL IPv4 filtering through IETF-ACL node -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ -| | ... | interfaces to TG, add ARP entry and routes, and configure L3 IPv4 ACL\ -| | ... | on ingress interface with src/dst IP and protocol. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different IPv4 IPs. Receive all packets except\ -| | ... | those with IPs in the filtered ranges and UDP protocol payload. -| | Given Setup Interface IPs And Routes For IPv4 IETF-ACL Test -| | ... | L3_IP4 | ${acl_name_l3_ip4} -| | When Honeycomb Creates ACL Chain Through IETF Node -| | ... | ${dut_node} | ${acl_name_l3_ip4} | L3_IP4 | ${acl_settings} -| | And Honeycomb Assigns IETF-ACL Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | L3_IP4 | ingress | ${acl_name_l3_ip4} -| | ... | permit -| | Then Send TCP Or UDP Packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} -| | And Send TCP Or UDP Packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} - -| TC04: L3 ACL IPv6 filtering through IETF-ACL node -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv6 addresses on both\ -| | ... | interfaces to TG, add IP neighbor entry and routes, and configure\ -| | ... | L3 IPv6 ACL on ingress interface with src/dst IP and next-header. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different IPv6 IPs. Receive all packets except\ -| | ... | those with IPs in the filtered ranges and UDP protocol payload. -| | Given Path for 2-node testing is set -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Import Variables | resources/test_data/honeycomb/ietf_acl.py -| | ... | L3_IP6 | ${acl_name_l3_ip6} -| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if2} | up -# TODO: Configure addresses through Honeycomb when implemented. (Honeycomb-102) -| | And Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | And Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2} -# TODO: Configure route through Honeycomb when implemented.(Honeycomb-58) -| | And Add IP Neighbor -| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} -| | And VPP Route Add | ${node} | ${dst_net} | ${prefix_length} -| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False -| | And VPP Route Add | ${node} | ${classify_dst_net} | ${prefix_length} -| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False -| | When Honeycomb Creates ACL Chain Through IETF Node -| | ... | ${dut_node} | ${acl_name_l3_ip6} | L3_IP6 | ${acl_settings} -| | And Honeycomb Assigns IETF-ACL Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | L3_IP6 | ingress | ${acl_name_l3_ip6} -| | ... | permit -| | Then Send TCP Or UDP Packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} -| | And Send TCP Or UDP Packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} - -| TC05: L4 ACL port filtering through IETF-ACL node -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ -| | ... | interfaces to TG, add ARP entry and routes, and configure L4 port ACL\ -| | ... | on ingress interface with src/dst port ranges. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different ports. Receive all packets except\ -| | ... | those with ports in the filtered ranges. -| | Given Setup Interface IPs And Routes For IPv4 IETF-ACL Test -| | ... | L4 | ${acl_name_l4} -| | When Honeycomb Creates ACL Chain Through IETF Node -| | ... | ${dut_node} | ${acl_name_l4} | mixed | ${acl_settings} -| | And Honeycomb Assigns IETF-ACL Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | mixed | ingress | ${acl_name_l4} -| | ... | permit | L3 -| | Then Send TCP Or UDP Packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${classify_src} | ${classify_dst} - -| TC06: L2,L3 and L4 ACL together on L2-mode interface -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure L2, L3 and L4 ACL on ingress interface\ -| | ... | with src/dst MAC, src/dst IP, protocol and src/dst port ranges. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different MACs, IPv4 IPs and ports. Receive\ -| | ... | all packets except those with MACs, IPs and ports in the filtered\ -| | ... | ranges and UDP protocol payload. -| | [Teardown] | Run Keywords -| | ... | Clear IETF-ACL Settings | ${node} | ${dut_to_tg_if1} | AND -| | ... | Show Packet Trace On All DUTs | ${nodes} | AND -| | ... | Honeycomb Removes All Bridge Domains -| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | Given Setup Interfaces And Bridge Domain For IETF-ACL Test -| | ... | mixed | ${acl_name_mixed} -| | When Honeycomb Creates ACL Chain Through IETF Node -| | ... | ${dut_node} | ${acl_name_mixed} | mixed | ${acl_settings} -| | And Honeycomb Assigns IETF-ACL Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | mixed | ingress | ${acl_name_mixed} -| | ... | permit | L2 -| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src_mac} -| | ... | ${tg_to_dut_if2} | ${classify_dst_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} -| | ... | ${classify_src_ip} | ${classify_dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src_mac} -| | ... | ${tg_to_dut_if2} | ${classify_dst_mac} -| | ... | UDP | ${classify_src_port} | ${classify_dst_port} - -| TC07: L2,L3 and L4 ACL together on L3-mode interface -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ -| | ... | interfaces to TG, add ARP entry and routes, and configure\ -| | ... | L2, L3 and L4 ACL on ingress interface with src/dst MAC, src/dst IP,\ -| | ... | protocol and src/dst port ranges. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different MACs, IPv4 IPs and ports. Receive\ -| | ... | all packets except those with MACs, IPs and ports in the filtered\ -| | ... | ranges and UDP protocol payload. -| | Setup Interface IPs And Routes For IPv4 IETF-ACL Test -| | ... | mixed | ${acl_name_mixed} -| | When Honeycomb Creates ACL Chain Through IETF Node -| | ... | ${dut_node} | ${acl_name_mixed} | mixed | ${acl_settings} -| | And Honeycomb Assigns IETF-ACL Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | mixed | ingress | ${acl_name_mixed} -| | ... | permit | L3 -| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src_mac} -| | ... | ${tg_to_dut_if2} | ${classify_dst_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} -| | ... | ${classify_src_ip} | ${classify_dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src_mac} -| | ... | ${tg_to_dut_if2} | ${classify_dst_mac} -| | ... | UDP | ${classify_src_port} | ${classify_dst_port} - -| TC08: Multiple classify rules in one ACL -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure a series of L2 MAC ACL rules on ingress interface. -| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ -| | ... | using different MACs. Receive all packets except those with\ -| | ... | MACs in the ranges filtered by any rule. -| | [Teardown] | Run Keywords -| | ... | Clear IETF-ACL Settings | ${node} | ${dut_to_tg_if1} | AND -| | ... | Show Packet Trace On All DUTs | ${nodes} | AND -| | ... | Honeycomb Removes All Bridge Domains -| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | Given Setup Interfaces And Bridge Domain For IETF-ACL Test -| | ... | multirule | ${acl_name_multirule} -| | When Honeycomb Creates ACL Chain Through IETF Node -| | ... | ${dut_node} | ${acl_name_multirule} | L2 | ${acl_settings} -| | And Honeycomb Assigns IETF-ACL Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | L2 | ingress | ${acl_name_multirule} -| | ... | permit -| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${src_mac} -| | ... | ${tg_to_dut_if2} | ${dst_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src} -| | ... | ${tg_to_dut_if2} | ${classify_dst} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src2} -| | ... | ${tg_to_dut_if2} | ${classify_dst2} -| | ... | TCP | ${src_port} | ${dst_port} - -*** Keywords *** -| Setup interface IPs and routes for IPv4 ietf-ACL test -| | [Arguments] | ${test_data_id} | ${acl_name} -| | Path for 2-node testing is set -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Import Variables | resources/test_data/honeycomb/ietf_acl.py -| | ... | ${test_data_id} | ${acl_name} -| | Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if2} | up -| | Honeycomb sets interface ipv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | Honeycomb sets interface ipv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -# TODO: Configure routes through Honeycomb when implemented.(Honeycomb-58) -| | Add ARP on DUT -| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} -| | VPP Route Add -| | ... | ${node} | ${dst_net} | ${prefix_length} | ${gateway} -| | ... | interface=${dut_to_tg_if2} | use_sw_index=False -| | VPP Route Add -| | ... | ${node} | ${classify_dst_net} | ${prefix_length} | ${gateway} -| | ... | interface=${dut_to_tg_if2} | use_sw_index=False - -| Setup interfaces and bridge domain for ietf-ACL test -| | [Arguments] | ${test_data_id} | ${acl_name} -| | Path For 2-node Testing Is Set -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Import Variables | resources/test_data/honeycomb/ietf_acl.py -| | ... | ${test_data_id} | ${acl_name} -| | Honeycomb Sets Interface State | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb Sets Interface State | ${dut_node} | ${dut_to_tg_if2} | up -| | Honeycomb Creates first L2 Bridge Domain -| | ... | ${dut_node} | ${bd_name} | ${bd_settings} -| | Honeycomb Adds Interfaces To Bridge Domain -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | ... | ${bd_name} | ${bd_if_settings} \ No newline at end of file diff --git a/tests/func/honeycomb/090_provider_backbone_bridge.robot b/tests/func/honeycomb/090_provider_backbone_bridge.robot deleted file mode 100644 index 16791e236b..0000000000 --- a/tests/func/honeycomb/090_provider_backbone_bridge.robot +++ /dev/null @@ -1,82 +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*** -| ${super_if}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/provider_backbone_bridge.robot -| Variables | resources/test_data/honeycomb/pbb/pbb.py -| Documentation | *Honeycomb provider backbone bridge test suite.* -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| Force Tags | honeycomb_sanity - -*** Test Cases *** -# TODO: add verifications once operational data or VPP dump is available. -| TC01: Honeycomb sets PBB sub-interface -| | [Documentation] | Honeycomb creates a new PBB sub-interface. -| | ... -| | Honeycomb creates PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_1} - -| TC02: Honeycomb modifies existing PBB sub-interface -| | [Documentation] | Honeycomb modifies an existing PBB sub-interface. -| | ... -| | Honeycomb creates PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_1_mod} - -| TC03: Honeycomb deletes existing PBB sub-interface -| | [Documentation] | Honeycomb deletes an existing PBB sub-interface. -| | ... -| | Honeycomb Removes PBB sub interface -| | ... | ${node} | ${super_if} - -| TC05: Honeycomb fails to set wrong destination-address for new PBB sub-interface -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ -| | ... | wrong value of parameter destination-address, type yang:mac-address. -| | ... -| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_wrong_dst_addr} - -| TC06: Honeycomb fails to set wrong source-address for new PBB sub-interface -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ -| | ... | wrong value of parameter source-address, type yang:mac-address. -| | ... -| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_wrong_src_addr} - -| TC07: Honeycomb fails to set wrong b-vlan-tag-vlan-id for new PBB sub-interface -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ -| | ... | wrong value of parameter b-vlan-tag-vlan-id, type uint16, 12 bit\ -| | ... | range, range "1..4095". -| | ... -| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_wrong_vlan_tag} - -| TC08: Honeycomb fails to set wrong i-tag-isid for new PBB sub-interface -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ -| | ... | wrong value of parameter i-tag-isid, type uint32, 24 bit range,\ -| | ... | range "1..16777215". -| | ... -| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_wrong_i_tag} - -| TC07: Honeycomb fails to create new PBB sub-interface without vlan tag -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface without\ -| | ... | parameter b-vlan-tag-vlan-id. -| | ... -| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_no_vlan_tag} diff --git a/tests/func/honeycomb/100_lisp.robot b/tests/func/honeycomb/100_lisp.robot deleted file mode 100644 index 5f602c5780..0000000000 --- a/tests/func/honeycomb/100_lisp.robot +++ /dev/null @@ -1,159 +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*** -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${bd_name}= | bd_lisp -| ${bd2_name}= | bd2_lisp -| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} -| ... | unknown-unicast-flood=${True} | arp-termination=${True} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/lisp.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Variables | resources/test_data/honeycomb/lisp.py -| Documentation | *Honeycomb Lisp test suite.* -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| Force Tags | honeycomb_sanity - -*** Test Cases *** -| TC01: Honeycomb enables Lisp feature -| | [Documentation] | Check if Honeycomb can enable the Lisp feature. -| | Given Lisp Should Not Be Configured | ${node} -| | When Honeycomb Enables Lisp | ${node} -| | Then Lisp state From Honeycomb Should Be | ${node} | enabled -| | And Lisp state From VAT Should Be | ${node} | enabled - -| TC02: Honeycomb adds locator set and locator -| | [Documentation] | Check if Honeycomb can configure a locator set. -| | Given Lisp state From Honeycomb Should Be | ${node} | enabled -| | When Honeycomb adds locator set | ${node} | ${interface} | ${locator_set} -| | Then Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} - -| TC03: Honeycomb configures Lisp - remote mapping - Bridge Domain -| | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\ -| | ... | with a bridge domain. -| | Given Lisp state From Honeycomb Should Be | ${node} | enabled -| | And Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | When Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_remote_bd} -| | Then Lisp mapping From Honeycomb Should Be -| | ... | ${node} | ${remote_bd_subtable} -| | And Lisp mapping From VAT Should Be -| | ... | ${node} | ${vat_remote_bd} - -| TC04: Honeycomb can remove Lisp mapping -| | [Documentation] | Check if Honeycomb can remove a configured Lisp mapping. -| | Given Lisp mapping From Honeycomb Should Be -| | ... | ${node} | ${remote_bd_subtable} -| | And Lisp mapping From VAT Should Be -| | ... | ${node} | ${vat_remote_bd} -| | When Honeycomb removes all lisp mappings | ${node} -| | Then Lisp mappings from Honeycomb should not exist -| | ... | ${node} -| | And Lisp mappings from VAT should not exist -| | ... | ${node} - -| TC05: Honeycomb configures Lisp - remote mapping - VRF -| | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\ -| | ... | with VRF. -| | [Teardown] | Honeycomb removes all lisp mappings | ${node} -| | Given Lisp mappings from Honeycomb should not exist -| | ... | ${node} -| | And Lisp mappings from VAT should not exist -| | ... | ${node} -| | When Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_remote_vrf} -| | Then Lisp mapping From Honeycomb Should Be -| | ... | ${node} | ${remote_vrf_subtable} -| | And Lisp mapping From VAT Should Be | ${node} | ${vat_remote_vrf} - -| TC06: Honeycomb configures Lisp - local mapping - Bridge Domain -| | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\ -| | ... | with a bridge domain. -| | [Teardown] | Honeycomb removes all lisp mappings | ${node} -| | Given Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} -| | And Lisp mappings from Honeycomb should not exist -| | ... | ${node} -| | And Lisp mappings from VAT should not exist -| | ... | ${node} -| | And Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd2_name} | ${bd_settings} -| | When Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_local_bd} -| | Then Lisp mapping From Honeycomb Should Be | ${node} | ${local_bd_subtable} -| | And Lisp mapping From VAT Should Be | ${node} | ${vat_local_bd} - -| TC07: Honeycomb configures Lisp - local mapping - VRF -| | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\ -| | ... | with VRF. -| | [Teardown] | Honeycomb removes all lisp mappings | ${node} -| | Given Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} -| | And Lisp mappings from Honeycomb should not exist -| | ... | ${node} -| | And Lisp mappings from VAT should not exist -| | ... | ${node} -| | When Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_local_vrf} -| | Then Lisp mapping From Honeycomb Should Be | ${node} | ${local_vrf_subtable} -| | And Lisp mapping From VAT Should Be | ${node} | ${vat_local_vrf} - -| TC08: Honeycomb configures Lisp mapping with adjacency -| | [Documentation] | Check if Honeycomb can configure local and remote Lisp\ -| | ... | mappings with VRF, and configure adjacency. -| | [Tags] | EXPECTED_FAILING -# Requests below "vrf-subtable" level fail on table-id lookup (HONEYCOMB-290) -| | [Teardown] | Honeycomb removes all lisp mappings | ${node} -| | Given Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} -| | And Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd2_name} | ${bd_settings} -| | And Lisp mappings from Honeycomb should not exist -| | ... | ${node} -| | And Lisp mappings from VAT should not exist -| | ... | ${node} -| | And Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_local_vrf} -| | And Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_remote_vrf} -| | When Honeycomb adds Lisp adjacency | ${node} | ${4} | remote_map_vrf -| | ... | adj01 | ${remote_vrf_adjacency} -| | Then Lisp mapping from Honeycomb should be -| | ... | ${node} | ${remote_adj_subtable} - -| TC09: Honeycomb configures Lisp map resolver -| | [Documentation] | Check if Honeycomb can configure a Lisp map resolver. -| | Given Lisp state From Honeycomb Should Be | ${node} | enabled -| | And Lisp state From VAT Should Be | ${node} | enabled -| | When Honeycomb adds Lisp Map resolver | ${node} | 192.168.0.4 -| | Then Map resolver from Honeycomb should be | ${node} | 192.168.0.4 -| | And Map resolver from VAT should be | ${node} | 192.168.0.4 - -| TC10: Honeycomb enabled Lisp PITR feature -| | [Documentation] | Check if Honeycomb can configure the Lisp PITR feature. -| | Given Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} -| | When Honeycomb enables Lisp PITR feature | ${node} | ${locator_set} -| | Then PITR config from Honeycomb should be | ${node} | ${locator_set} -| | And PITR config from VAT should be | ${node} | ${locator_set} - -| TC11: Honeycomb can remove configuration of Lisp features -| | [Documentation] | Check if Honeycomb can disable all Lisp features. -| | [Tags] | EXPECTED_FAILING -# Delete operation fails due to incorrect write order(HONEYCOMB-296), -# but returns code 200: OK (HONEYCOMB-297) -| | Given Map resolver from Honeycomb should be | ${node} | 192.168.0.4 -| | And PITR config from Honeycomb should be | ${node} | ${locator_set} -| | When Honeycomb disables all Lisp features | ${node} -| | Then Lisp Should Not Be Configured | ${node} diff --git a/tests/func/honeycomb/110_nsh_sfc.robot b/tests/func/honeycomb/110_nsh_sfc.robot deleted file mode 100644 index f7e262234a..0000000000 --- a/tests/func/honeycomb/110_nsh_sfc.robot +++ /dev/null @@ -1,127 +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*** -| ${super_if}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/nsh.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot -| Variables | resources/test_data/honeycomb/nsh.py -| Variables | resources/test_data/honeycomb/vxlan_gpe.py -| Documentation | *Honeycomb NSH test suite.* -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| Force Tags | honeycomb_sanity - -*** Test Cases *** -| TC01: Honeycomb can configure NSH entry -| | [Documentation] | Check if Honeycomb can configure an NSH entry. -| | Given NSH configuration from Honeycomb should be empty | ${node} -| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} -| | Then NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} - -| TC02: Honeycomb can remove NSH entry -| | [Documentation] | Check if Honeycomb can remove an existing NSH entry. -| | Given NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | When Honeycomb removes NSH entry | ${node} | entry1 -| | Then NSH configuration from Honeycomb should be empty | ${node} - -| TC03: Honeycomb can configure new NSH entry -| | [Documentation] | Check if Honeycomb can configure an NSH antry after one\ -| | ... | has been deleted. -| | [Teardown] | Honeycomb removes NSH entry | ${node} | entry2 -| | Given NSH configuration from Honeycomb should be empty | ${node} -| | When Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2} -| | Then NSH entry from Honeycomb should be -| | ... | ${node} | entry2 | ${nsh_entry2_oper} - -| TC04: Honeycomb can configure multiple NSH entries at the same time -| | [Documentation] | Check if Honeycomb can configure an NSH entry when one\ -| | ... | already exists. -| | [Teardown] | Honeycomb clears NSH configuration | ${node} -| | Given NSH configuration from Honeycomb should be empty | ${node} -| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} -| | And Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2} -| | Then NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry2 | ${nsh_entry2_oper} - -| TC05: Honeycomb can configure NSH map -| | [Documentation] | Check if Honeycomb can configure an NSH map. -| | Given NSH configuration from Honeycomb should be empty | ${node} -| | And Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} -| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} -| | And Honeycomb adds NSH map | ${node} | map1 | ${nsh_map1} -| | Then NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper} - -| TC06: Honeycomb can remove NSH map -| | [Documentation] | Check if Honeycomb can remove an existing NSH map. -| | Given NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | And VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} -| | And NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper} -| | When Honeycomb removes NSH map | ${node} | map1 -| | Then NSH map from Honeycomb should not exist | ${node} | map1 -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} - -| TC07: Honeycomb can modify existing NSH map -| | [Documentation] | Check if Honeycomb can configure an NSH map after one\ -| | ... | has been deleted. -| | [Teardown] | Honeycomb removes NSH map | ${node} | map1_edit -| | Given NSH map from Honeycomb should not exist | ${node} | map1_edit -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | And VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} -| | When Honeycomb adds NSH map | ${node} | map1_edit | ${nsh_map1_edit} -| | Then NSH map from Honeycomb should be -| | ... | ${node} | map1_edit | ${nsh_map1_edit_oper} -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} - -| TC08: Honeycomb can configure multiple NSH maps at the same time -| | [Documentation] | Check if Honeycomb can configure and NSH map when one\ -| | ... | already exists. -| | [Teardown] | Run Keywords -| | ... | Honeycomb clears NSH configuration | ${node} | AND -| | ... | Honeycomb removes VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if1} | AND -| | ... | Honeycomb removes VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if2} -| | Given NSH map from Honeycomb should not exist | ${node} | map2 -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | And VxLAN GPE configuration from Honeycomb should be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} -| | And Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if2} -| | ... | ${vxlan_gpe_base_settings2} | ${vxlan_gpe_settings2} -| | When Honeycomb adds NSH map | ${node} | map1 | ${nsh_map1} -| | And Honeycomb adds NSH map | ${node} | map2 | ${nsh_map2} -| | Then NSH map from Honeycomb should be -| | ... | ${node} | map1 | ${nsh_map1_oper} -| | And NSH map from Honeycomb should be -| | ... | ${node} | map2 | ${nsh_map2_oper} diff --git a/tests/func/honeycomb/120_port_mirroring.robot b/tests/func/honeycomb/120_port_mirroring.robot deleted file mode 100644 index 48fe5ae08a..0000000000 --- a/tests/func/honeycomb/120_port_mirroring.robot +++ /dev/null @@ -1,65 +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/port_mirroring.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -# Test suite out of date since https://gerrit.fd.io/r/4272 -# | Force Tags | honeycomb_sanity -| Suite Setup | Add Interface local0 To Topology | ${node} -| Suite Teardown | Run Keyword If Any Tests Failed -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| Documentation | *Honeycomb port mirroring test suite.* -| ... -| ... | Test suite uses the first interface of the first DUT node. - -*** Variables *** -| ${interface1}= | ${node['interfaces']['port1']['name']} -| ${interface2}= | ${node['interfaces']['port3']['name']} -| ${interface3}= | local0 - -*** Test Cases *** -# TODO: Add verification once operational data is available (HONEYCOMB-306) -| Honeycomb can configure SPAN on an interface -| | [Documentation] | Honeycomb configures SPAN on interface and verifies/ -| | ... | against VPP SPAN dump. -| | Given SPAN configuration from VAT should not exist -| | ... | ${node} -| | When Honeycomb Configures SPAN on interface -| | ... | ${node} | ${interface1} | ${interface2} -| | Then Interface SPAN configuration from VAT should be -| | ... | ${node} | ${interface1} | ${interface2} - -| Honeycomb can disable SPAN on interface -| | [Documentation] | Honeycomb removes existing SPAN configuration\ -| | ... | on interface and verifies against VPP SPAN dump. -| | Given Interface SPAN configuration from VAT should be -| | ... | ${node} | ${interface1} | ${interface2} -| | When Honeycomb removes interface SPAN configuration -| | ... | ${node} | ${interface1} -| | Then SPAN configuration from VAT should not exist -| | ... | ${node} - -| Honeycomb can configure SPAN on one interface to mirror two interfaces -| | [Documentation] | Honeycomb configures SPAN on interface, mirroring\ -| | ... | two interfaces at the same time. Then verifies against VPP SPAN dump. -| | [Teardown] | Honeycomb removes interface SPAN configuration -| | ... | ${node} | ${interface1} -| | Given SPAN configuration from VAT should not exist -| | ... | ${node} -| | When Honeycomb Configures SPAN on interface -| | ... | ${node} | ${interface1} | ${interface2} | ${interface3} -| | Then Interface SPAN configuration from VAT should be -| | ... | ${node} | ${interface1} | ${interface2} | ${interface3} diff --git a/tests/func/honeycomb/130_nat.robot b/tests/func/honeycomb/130_nat.robot deleted file mode 100644 index d761cabe52..0000000000 --- a/tests/func/honeycomb/130_nat.robot +++ /dev/null @@ -1,104 +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*** -| ${interface}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/nat.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Variables | resources/test_data/honeycomb/nat.py | ${node} | ${interface} -| Documentation | *Honeycomb NAT test suite.* -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| Force Tags | honeycomb_sanity - -*** Test Cases *** -| TC01: Honeycomb configures NAT entry -| | [Documentation] | Honeycomb configures a static NAT entry. -| | Given NAT configuration from Honeycomb should be empty -| | ... | ${node} | ${nat_empty} -| | When Honeycomb Configures NAT Entry | ${node} | ${entry1} -| | Then NAT Entries From Honeycomb Should Be | ${node} | ${entry1} -| | And NAT Entries From VAT Should Be | ${node} | ${entry1_vat} - -| TC02: Honeycomb removes NAT entry -| | [Documentation] | Honeycomb removes a configured static NAT entry. -| | Given NAT Entries From Honeycomb Should Be | ${node} | ${entry1} -| | And NAT Entries From VAT Should Be | ${node} | ${entry1_vat} -| | When Honeycomb Configures NAT Entry | ${node} | ${NONE} -| | Then NAT configuration from Honeycomb should be empty -| | ... | ${node} | ${nat_empty} - -| TC03: Honeycomb configures multiple NAT entries -| | [Documentation] | Honeycomb configures two static NAT entries. -| | [Teardown] | Honeycomb Configures NAT Entry | ${node} | ${NONE} -| | Given NAT configuration from Honeycomb should be empty -| | ... | ${node} | ${nat_empty} -| | When Honeycomb Configures NAT Entry | ${node} | ${entry1} | ${0} | ${1} -| | And Honeycomb Configures NAT Entry | ${node} | ${entry2} | ${0} | ${2} -| | Then NAT Entries From Honeycomb Should Be -| | ... | ${node} | ${entry1_2_oper} | ${0} -| | And NAT Entries From VAT Should Be | ${node} | ${entry1_2_vat} - -| TC04: Honeycomb enables NAT on interface - inbound -| | [Documentation] | Honeycomb configures NAT on an interface\ -| | ... | in inbound direction. -# Interface config not visible in VAT - https://jira.fd.io/browse/HC2VPP-8 -| | [Tags] | EXPECTED_FAILING -| | Given NAT Interface Configuration From Honeycomb Should Be Empty -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Configuration From Honeycomb Should Be Empty -| | ... | ${node} | ${interface} | outbound -| | When Honeycomb Configures NAT On Interface -| | ... | ${node} | ${interface} | inbound -| | Then NAT Interface Configuration From Honeycomb Should Be -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Configuration From VAT Should Be -| | ... | ${node} | ${nat_interface_vat_in} -| | And NAT Interface Configuration From Honeycomb Should be empty -| | ... | ${node} | ${interface} | outbound - -| TC05: Honeycomb removes NAT interface configuration -| | [Documentation] | Honeycomb removes NAT configuration from an interface. -| | Given NAT Interface Configuration From Honeycomb Should Be -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Configuration From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | outbound -| | When Honeycomb removes NAT interface configuration -| | ... | ${node} | ${interface} | inbound -| | Then NAT Interface Configuration From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Configuration From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | outbound - -| TC06: Honeycomb enables NAT on interface - outbound -| | [Documentation] | Honeycomb configures NAT on an interface\ -| | ... | in outbound direction. -# Interface config not visible in VAT - https://jira.fd.io/browse/HC2VPP-8 -| | [Tags] | EXPECTED_FAILING -| | [Teardown] | Honeycomb removes NAT interface configuration -| | ... | ${node} | ${interface} | outbound -| | Given NAT Interface Configuration From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Configuration From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | outbound -| | When Honeycomb Configures NAT on Interface -| | ... | ${node} | ${interface} | outbound -| | Then NAT Interface Configuration From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Configuration From Honeycomb Should Be -| | ... | ${node} | ${interface} | outbound -| | And NAT Interface Configuration From VAT Should Be -| | ... | ${node} | ${nat_interface_vat_out} diff --git a/tests/func/honeycomb/900_persistence.robot b/tests/func/honeycomb/900_persistence.robot deleted file mode 100644 index e0c8ea1b46..0000000000 --- a/tests/func/honeycomb/900_persistence.robot +++ /dev/null @@ -1,65 +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*** -# 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_sanity -| 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. -# Vxlan tunnel name is not properly restored (HONEYCOMB-301) -| | [Tags] | EXPECTED_FAILING -| | 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. -# Vxlan tunnel name is not properly restored (HONEYCOMB-301) -| | [Tags] | EXPECTED_FAILING -| | 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. -# Vxlan tunnel name is not properly restored (HONEYCOMB-301) -| | [Tags] | EXPECTED_FAILING -| | 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 Honeycomb And VPP 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} diff --git a/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot new file mode 100644 index 0000000000..98ff3bda13 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot @@ -0,0 +1,160 @@ +# 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/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot +| Variables | resources/test_data/honeycomb/acl.py +| Suite Teardown | Run keywords +| ... | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| ... | AND | Clear all ACL settings | ${node} +| Documentation | *Honeycomb access control lists test suite.* +| Force Tags | Honeycomb_sanity + +*** Test Cases *** +| TC01: Honeycomb can create ACL classify table +| | [Documentation] | Check if Honeycomb API can create an ACL table. +| | Given ACL table from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} +| | And ACL table from VAT should not exist +| | ... | ${node} | ${table_index} +| | When Honeycomb creates ACL table +| | ... | ${node} | ${hc_acl_table} +| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} + +| TC02: Honeycomb can remove ACL table +| | [Documentation] | Check if Honeycomb API can delete an ACL table. +| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | When Honeycomb removes ACL table | ${node} | ${hc_acl_table['name']} +| | Then ACL table from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} +| | And ACL table from VAT should not exist +| | ... | ${node} | ${table_index} + +| TC03: Honeycomb manages more than one ACL table +| | [Documentation] | Check if Honeycomb API can create another ACL table. +| | Given ACL table from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} +| | And ACL table from VAT should not exist +| | ... | ${node} | ${table_index} +| | When Honeycomb creates ACL table | ${node} | ${hc_acl_table} +| | And Honeycomb creates ACL table | ${node} | ${hc_acl_table2} +| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | And ACL table from Honeycomb should be | ${node} | ${hc_acl_table2} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index2} | ${vat_acl_table2} + +| TC04: Honeycomb can add ACL session to table +| | [Documentation] | Check if Honeycomb API can add an ACL session to a table. +| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | When Honeycomb adds ACL session +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | Then ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} + +| TC05: Honeycomb can remove ACL session +| | [Documentation] | Check if Honeycomb API can remove an ACL session. +| | Given ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} +| | When Honeycomb removes ACL session +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} +| | Then ACL session from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} +| | And ACL session from VAT should not exist +| | ... | ${node} | ${table_index} | ${session_index} + +| TC06: Honeycomb manages more than one ACL session on one table +| | [Documentation] | Check if Honeycomb API can add another ACL session\ +| | ... | to a table. +| | Given ACL session from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} +| | And ACL session from VAT should not exist +| | ... | ${node} | ${table_index} | ${session_index} +| | When Honeycomb adds ACL session +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And Honeycomb adds ACL session +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session2} +| | Then ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} +| | And ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session2} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index2} | ${vat_acl_session2} + +| TC07: Honeycomb enables ACL on interface +| | [Documentation] | Check if Honeycomb API can enable ACL on an interface. +| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | And ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} +| | When Honeycomb enables ACL on interface +| | ... | ${node} | ${interface} | ${hc_acl_table['name']} +| | Then Interface ACL settings from Honeycomb should be +| | ... | ${node} | ${interface} | ${hc_acl_table['name']} +| | And Interface ACL settings from VAT should be +| | ... | ${node} | ${interface} | ${table_index} + +| TC08: Honeycomb disables ACL on interface +| | [Documentation] | Check if Honeycomb API can disable ACL on an interface. +| | Given Interface ACL settings from Honeycomb should be +| | ... | ${node} | ${interface} | ${hc_acl_table['name']} +| | And Interface ACL settings from VAT should be +| | ... | ${node} | ${interface} | ${table_index} +| | When Honeycomb disables ACL on interface | ${node} | ${interface} +| | Then Interface ACL settings from Honeycomb should be empty +| | ... | ${node} | ${interface} +| | And Interface ACL settings from VAT should be empty +| | ... | ${node} | ${interface} + +| TC09: Honeycomb can remove one out of multiple ACL tables +| | [Documentation] | Check if Honeycomb API can delete an ACL table if more\ +| | ... | than one table exists. +# Attempting to remove one ACL table removes all of them (VPP-206) +| | [Tags] | EXPECTED_FAILING +| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | And ACL table from Honeycomb should be | ${node} | ${hc_acl_table2} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index2} | ${vat_acl_table2} +| | When Honeycomb removes ACL table | ${node} | ${hc_acl_table2['name']} +| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | And ACL table from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table2['name']} +| | And ACL table from VAT should not exist +| | ... | ${node} | ${table_index2} diff --git a/tests/func/honeycomb/mgmt-cfg-ietfacl-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-ietfacl-apihc-apivat-func.robot new file mode 100644 index 0000000000..a0b967980a --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-ietfacl-apihc-apivat-func.robot @@ -0,0 +1,374 @@ +# 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 *** +| &{if_settings}= | enabled=True +# Bridge domain settings +| ${bd_name}= | bd1 +| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} +| ... | unknown-unicast-flood=${True} | arp-termination=${False} +| &{bd_if_settings}= | split_horizon_group=${0} | bvi=${False} +# Names for AC lists +| ${acl_name_l2}= | acl_l2 +| ${acl_name_l3_ip4}= | acl_l3_ip4 +| ${acl_name_l3_ip6}= | acl_l3_ip6 +| ${acl_name_l4}= | acl_l4 +| ${acl_name_mixed}= | acl_mixed +| ${acl_name_multirule}= | acl_multirule + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot +| Resource | resources/libraries/robot/testing_path.robot +| Resource | resources/libraries/robot/traffic.robot +| Library | resources.libraries.python.honeycomb.HcAPIKwACL.ACLKeywords +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv4Setup +| Library | resources.libraries.python.IPv4Util +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.Routing +| Test Teardown | Run Keywords | Clear IETF-ACL settings +| ... | ${node} | ${dut_to_tg_if1} | AND +| ... | Show Packet Trace on All DUTs | ${nodes} +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Documentation | *Honeycomb access control lists test suite for IETF-ACL node.* +# Test suite out of date since https://gerrit.fd.io/r/#/c/4331/ +# | Force Tags | Honeycomb_sanity + +*** Test Cases *** +| TC01: L2 ACL MAC filtering through IETF-ACL node +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure L2 MAC ACL on ingress interface. +| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ +| | ... | using different MACs. Receive all packets except those with\ +| | ... | MACs in the filtered ranges. +| | [Teardown] | Run Keywords +| | ... | Clear IETF-ACL Settings | ${node} | ${dut_to_tg_if1} | AND +| | ... | Show Packet Trace On All DUTs | ${nodes} | AND +| | ... | Honeycomb Removes All Bridge Domains +| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | Given Setup Interfaces And Bridge Domain For IETF-ACL Test +| | ... | L2 | ${acl_name_l2} +| | When Honeycomb Creates ACL Chain Through IETF Node +| | ... | ${dut_node} | ${acl_name_l2} | L2 | ${acl_settings} +| | And Honeycomb Assigns IETF-ACL Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | L2 | ingress | ${acl_name_l2} +| | ... | permit +| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${src_mac} +| | ... | ${tg_to_dut_if2} | ${dst_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src} +| | ... | ${tg_to_dut_if2} | ${classify_dst} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src2} +| | ... | ${tg_to_dut_if2} | ${classify_dst2} +| | ... | TCP | ${src_port} | ${dst_port} + +| TC02: L2 ACL MAC filtering through IETF-ACL node on egress interface +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure L2 MAC ACL on egress interface. +| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ +| | ... | using different MACs. Receive all packets except those with\ +| | ... | MACs in the filtered ranges. +| | [Teardown] | Run Keywords +| | ... | Clear IETF-ACL Settings | ${node} | ${dut_to_tg_if2} | AND +| | ... | Show Packet Trace On All DUTs | ${nodes} | AND +| | ... | Honeycomb Removes All Bridge Domains +| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | Given Setup Interfaces And Bridge Domain For IETF-ACL Test +| | ... | L2 | ${acl_name_l2} +| | When Honeycomb Creates ACL Chain Through IETF Node +| | ... | ${dut_node} | ${acl_name_l2} | L2 | ${acl_settings} +| | And Honeycomb Assigns IETF-ACL Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if2} | L2 | egress | ${acl_name_l2} +| | ... | permit +| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${src_mac} +| | ... | ${tg_to_dut_if2} | ${dst_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src} +| | ... | ${tg_to_dut_if2} | ${classify_dst} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src2} +| | ... | ${tg_to_dut_if2} | ${classify_dst2} +| | ... | TCP | ${src_port} | ${dst_port} + +| TC03: L3 ACL IPv4 filtering through IETF-ACL node +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ +| | ... | interfaces to TG, add ARP entry and routes, and configure L3 IPv4 ACL\ +| | ... | on ingress interface with src/dst IP and protocol. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different IPv4 IPs. Receive all packets except\ +| | ... | those with IPs in the filtered ranges and UDP protocol payload. +| | Given Setup Interface IPs And Routes For IPv4 IETF-ACL Test +| | ... | L3_IP4 | ${acl_name_l3_ip4} +| | When Honeycomb Creates ACL Chain Through IETF Node +| | ... | ${dut_node} | ${acl_name_l3_ip4} | L3_IP4 | ${acl_settings} +| | And Honeycomb Assigns IETF-ACL Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | L3_IP4 | ingress | ${acl_name_l3_ip4} +| | ... | permit +| | Then Send TCP Or UDP Packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} +| | And Send TCP Or UDP Packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} + +| TC04: L3 ACL IPv6 filtering through IETF-ACL node +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv6 addresses on both\ +| | ... | interfaces to TG, add IP neighbor entry and routes, and configure\ +| | ... | L3 IPv6 ACL on ingress interface with src/dst IP and next-header. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different IPv6 IPs. Receive all packets except\ +| | ... | those with IPs in the filtered ranges and UDP protocol payload. +| | Given Path for 2-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Import Variables | resources/test_data/honeycomb/ietf_acl.py +| | ... | L3_IP6 | ${acl_name_l3_ip6} +| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if2} | up +# TODO: Configure addresses through Honeycomb when implemented. (Honeycomb-102) +| | And Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | And Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2} +# TODO: Configure route through Honeycomb when implemented.(Honeycomb-58) +| | And Add IP Neighbor +| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} +| | And VPP Route Add | ${node} | ${dst_net} | ${prefix_length} +| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False +| | And VPP Route Add | ${node} | ${classify_dst_net} | ${prefix_length} +| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False +| | When Honeycomb Creates ACL Chain Through IETF Node +| | ... | ${dut_node} | ${acl_name_l3_ip6} | L3_IP6 | ${acl_settings} +| | And Honeycomb Assigns IETF-ACL Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | L3_IP6 | ingress | ${acl_name_l3_ip6} +| | ... | permit +| | Then Send TCP Or UDP Packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} +| | And Send TCP Or UDP Packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} + +| TC05: L4 ACL port filtering through IETF-ACL node +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ +| | ... | interfaces to TG, add ARP entry and routes, and configure L4 port ACL\ +| | ... | on ingress interface with src/dst port ranges. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different ports. Receive all packets except\ +| | ... | those with ports in the filtered ranges. +| | Given Setup Interface IPs And Routes For IPv4 IETF-ACL Test +| | ... | L4 | ${acl_name_l4} +| | When Honeycomb Creates ACL Chain Through IETF Node +| | ... | ${dut_node} | ${acl_name_l4} | mixed | ${acl_settings} +| | And Honeycomb Assigns IETF-ACL Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | mixed | ingress | ${acl_name_l4} +| | ... | permit | L3 +| | Then Send TCP Or UDP Packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${classify_src} | ${classify_dst} + +| TC06: L2,L3 and L4 ACL together on L2-mode interface +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure L2, L3 and L4 ACL on ingress interface\ +| | ... | with src/dst MAC, src/dst IP, protocol and src/dst port ranges. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different MACs, IPv4 IPs and ports. Receive\ +| | ... | all packets except those with MACs, IPs and ports in the filtered\ +| | ... | ranges and UDP protocol payload. +| | [Teardown] | Run Keywords +| | ... | Clear IETF-ACL Settings | ${node} | ${dut_to_tg_if1} | AND +| | ... | Show Packet Trace On All DUTs | ${nodes} | AND +| | ... | Honeycomb Removes All Bridge Domains +| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | Given Setup Interfaces And Bridge Domain For IETF-ACL Test +| | ... | mixed | ${acl_name_mixed} +| | When Honeycomb Creates ACL Chain Through IETF Node +| | ... | ${dut_node} | ${acl_name_mixed} | mixed | ${acl_settings} +| | And Honeycomb Assigns IETF-ACL Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | mixed | ingress | ${acl_name_mixed} +| | ... | permit | L2 +| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src_mac} +| | ... | ${tg_to_dut_if2} | ${classify_dst_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} +| | ... | ${classify_src_ip} | ${classify_dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src_mac} +| | ... | ${tg_to_dut_if2} | ${classify_dst_mac} +| | ... | UDP | ${classify_src_port} | ${classify_dst_port} + +| TC07: L2,L3 and L4 ACL together on L3-mode interface +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ +| | ... | interfaces to TG, add ARP entry and routes, and configure\ +| | ... | L2, L3 and L4 ACL on ingress interface with src/dst MAC, src/dst IP,\ +| | ... | protocol and src/dst port ranges. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different MACs, IPv4 IPs and ports. Receive\ +| | ... | all packets except those with MACs, IPs and ports in the filtered\ +| | ... | ranges and UDP protocol payload. +| | Setup Interface IPs And Routes For IPv4 IETF-ACL Test +| | ... | mixed | ${acl_name_mixed} +| | When Honeycomb Creates ACL Chain Through IETF Node +| | ... | ${dut_node} | ${acl_name_mixed} | mixed | ${acl_settings} +| | And Honeycomb Assigns IETF-ACL Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | mixed | ingress | ${acl_name_mixed} +| | ... | permit | L3 +| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src_mac} +| | ... | ${tg_to_dut_if2} | ${classify_dst_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} +| | ... | ${classify_src_ip} | ${classify_dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src_mac} +| | ... | ${tg_to_dut_if2} | ${classify_dst_mac} +| | ... | UDP | ${classify_src_port} | ${classify_dst_port} + +| TC08: Multiple classify rules in one ACL +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure a series of L2 MAC ACL rules on ingress interface. +| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ +| | ... | using different MACs. Receive all packets except those with\ +| | ... | MACs in the ranges filtered by any rule. +| | [Teardown] | Run Keywords +| | ... | Clear IETF-ACL Settings | ${node} | ${dut_to_tg_if1} | AND +| | ... | Show Packet Trace On All DUTs | ${nodes} | AND +| | ... | Honeycomb Removes All Bridge Domains +| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | Given Setup Interfaces And Bridge Domain For IETF-ACL Test +| | ... | multirule | ${acl_name_multirule} +| | When Honeycomb Creates ACL Chain Through IETF Node +| | ... | ${dut_node} | ${acl_name_multirule} | L2 | ${acl_settings} +| | And Honeycomb Assigns IETF-ACL Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | L2 | ingress | ${acl_name_multirule} +| | ... | permit +| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${src_mac} +| | ... | ${tg_to_dut_if2} | ${dst_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src} +| | ... | ${tg_to_dut_if2} | ${classify_dst} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src2} +| | ... | ${tg_to_dut_if2} | ${classify_dst2} +| | ... | TCP | ${src_port} | ${dst_port} + +*** Keywords *** +| Setup interface IPs and routes for IPv4 ietf-ACL test +| | [Arguments] | ${test_data_id} | ${acl_name} +| | Path for 2-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Import Variables | resources/test_data/honeycomb/ietf_acl.py +| | ... | ${test_data_id} | ${acl_name} +| | Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if2} | up +| | Honeycomb sets interface ipv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | Honeycomb sets interface ipv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +# TODO: Configure routes through Honeycomb when implemented.(Honeycomb-58) +| | Add ARP on DUT +| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} +| | VPP Route Add +| | ... | ${node} | ${dst_net} | ${prefix_length} | ${gateway} +| | ... | interface=${dut_to_tg_if2} | use_sw_index=False +| | VPP Route Add +| | ... | ${node} | ${classify_dst_net} | ${prefix_length} | ${gateway} +| | ... | interface=${dut_to_tg_if2} | use_sw_index=False + +| Setup interfaces and bridge domain for ietf-ACL test +| | [Arguments] | ${test_data_id} | ${acl_name} +| | Path For 2-node Testing Is Set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Import Variables | resources/test_data/honeycomb/ietf_acl.py +| | ... | ${test_data_id} | ${acl_name} +| | Honeycomb Sets Interface State | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb Sets Interface State | ${dut_node} | ${dut_to_tg_if2} | up +| | Honeycomb Creates first L2 Bridge Domain +| | ... | ${dut_node} | ${bd_name} | ${bd_settings} +| | Honeycomb Adds Interfaces To Bridge Domain +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | ... | ${bd_name} | ${bd_if_settings} \ No newline at end of file diff --git a/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot b/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot new file mode 100644 index 0000000000..118a4c67f7 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot @@ -0,0 +1,59 @@ +# 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/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/netconf.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords +| ... | WITH NAME | InterfaceAPI +| Variables | resources/test_data/honeycomb/netconf/triggers.py +| Documentation | *Netconf test suite. Contains test cases that need to bypass\ +| ... | REST API.* +| Force Tags | honeycomb_sanity +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} + +*** Variables *** +| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} +| ... | unknown-unicast-flood=${True} | arp-termination=${True} + +*** Test Cases *** +| TC01: Honeycomb can create and delete interfaces +| | [Documentation] | Repeatedly create and delete an interface through Netconf\ +| | ... | and check the reply for any errors. +| | Given Netconf session is established | ${node} +| | And Honeycomb creates first L2 bridge domain +| | ... | ${node} | bd_netconf | ${bd_settings} +| | :FOR | ${index} | IN RANGE | 20 +| | | When Error trigger is sent | ${trigger_105} +| | | Then Replies should not contain RPC errors + +| TC02: Transaction revert test case 1 +| | [Documentation] | Configure two conflicting VxLAN tunnels, then verify\ +| | ... | that neither tunnel exists. +| | Given Netconf session is established | ${node} +| | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node} +| | When Error trigger is sent | ${trigger_revert1} +| | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} +| | Then Should be equal | ${if_data} | ${if_data_new} + +| TC03: Transaction revert test case 2 +| | [Documentation] | Configure two conflicting TAP interfaces, then verify\ +| | ... | that neither interface exists. +| | Given Netconf session is established | ${node} +| | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node} +| | When Error trigger is sent | ${trigger_revert1} +| | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} +| | Then Should be equal | ${if_data} | ${if_data_new} diff --git a/tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot new file mode 100644 index 0000000000..9e2216b6a4 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot @@ -0,0 +1,445 @@ +# 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/honeycomb.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 | resources/test_data/honeycomb/sub_interfaces.py +| Suite Teardown | Run keywords +| ... | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| ... | AND | 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 *** +| TC01: Honycomb creates sub-interface +| | [Documentation] | Check if Honeycomb creates a sub-interface. +| | ... +| | Given Honeycomb sets interface state | ${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 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} +| | And sub-interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${super_if} | ${sub_if_id} + +| TC02: Honeycomb sets interface and sub-interface up +| | [Documentation] | Honeycomb changes the state of interface\ +| | ... | and of its sub-interface to up. +| | ... +| | Given interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | Sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | Sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | 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 +| | When Honeycomb sets the sub-interface up +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then 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 + +| TC03: 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 interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up +| | And sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | up +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | up + +| TC04: 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 + +| TC05: 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 + +| TC06: 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} + +| TC07: 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 first 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} + +| TC08: 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} + +| TC09: 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} + +| TC10: 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} + +| TC11: 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} + +| TC12: 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} + +| TC13: 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} + +| TC14: 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} + +| TC15: Honeycomb configures sub-interface ipv4 address +| | [Documentation] | Check if Honeycomb can configure an ipv4 address on the\ +| | ... | sub-interface. +| | ... +| | Given sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | When Honeycomb sets sub-interface ipv4 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | Then sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} + +| TC16: Honeycomb removes sub-interface ipv4 address +| | [Documentation] | Check if Honeycomb can remove configured ipv4 addresses\ +| | ... | from the sub-interface. +| | ... +| | Given sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | Run Keyword And Continue On Failure +| | ... | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | When Honeycomb removes all sub-interface ipv4 addresses +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} + +| TC17: Honeycomb modifies existing sub-interface ipv4 address +| | [Documentation] | Check if Honeycomb can modify an ipv4 address already\ +| | ... | configured on the sub-interface. +| | [Teardown] | Honeycomb removes all sub-interface ipv4 addresses +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Given sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | When Honeycomb sets sub-interface ipv4 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And Honeycomb sets sub-interface ipv4 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} +| | Then sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} +| | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} + +*** 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/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot new file mode 100644 index 0000000000..4ffac6d438 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot @@ -0,0 +1,133 @@ +# 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}= | 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 +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Force Tags | honeycomb_sanity +| Suite Teardown | Run Keyword If Any Tests Failed +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Documentation | *Honeycomb interface management test suite.* +| ... +| ... | Test suite uses the first interface of the first DUT node. + +*** Test Cases *** +| TC01: Honeycomb configures and reads interface state +| | [Documentation] | Check if Honeycomb API can modify the admin state of\ +| | ... | VPP interfaces. +| | Given Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | And Interface state from VAT should be | ${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 + +| TC02: Honeycomb modifies interface IPv4 address with netmask +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ +| | ... | with address and netmask provided. +| | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface} +| | And ipv4 address from VAT should be empty | ${node} | ${interface} +| | When Honeycomb sets interface ipv4 address | ${node} | ${interface} +| | ... | ${ipv4_address} | ${ipv4_mask} +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_mask} + +| TC03: Honeycomb removes IPv4 address from interface +| | [Documentation] | Check if Honeycomb API can remove configured ipv4\ +| | ... | addresses from interface. +| | Given IPv4 address from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_mask} +| | 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} + +| TC04: Honeycomb modifies interface IPv4 address with prefix +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ +| | ... | with address and prefix provided. +| | [Teardown] | Honeycomb removes interface ipv4 addresses | ${node} +| | ... | ${interface} +| | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface} +| | And ipv4 address from VAT should be empty | ${node} | ${interface} +| | When Honeycomb sets interface ipv4 address with prefix +| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_mask} + +| TC05: Honeycomb modifies IPv4 neighbor table +| | [Documentation] | Check if Honeycomb API can add and remove ARP entries. +# Operational data and VAT dump not available (HONEYCOMB-111) +| | [Tags] | EXPECTED_FAILING +| | [Teardown] | Honeycomb clears all interface ipv4 neighbors +| | ... | ${node} | ${interface} +| | When Honeycomb adds interface ipv4 neighbor +| | ... | ${node} | ${interface} | @{ipv4_neighbor} +| | Then IPv4 neighbor from Honeycomb should be +| | ... | ${node} | ${interface} | @{ipv4_neighbor} + +| TC06: Honeycomb modifies interface configuration - IPv6 +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6. +# Configuring IPv6 not implemented (HONEYCOMB-102) +| | [Tags] | EXPECTED_FAILING +| | When Honeycomb sets interface ipv6 address +| | ... | ${node} | ${interface} | @{ipv6_address} +| | Then IPv6 address from Honeycomb should be +| | ... | ${node} | ${interface} | @{ipv6_address} +| | And IPv6 address from VAT should be +| | ... | ${node} | ${interface} | @{ipv6_address} + +# TODO: Honeycomb modifies IPv6 neighbor table + +| TC07: Honeycomb modifies interface configuration - MTU +| | [Documentation] | Check if Honeycomb API can configure interface\ +| | ... | MTU value. +# Configuring MTU not implemented (HONEYCOMB-126) +| | [Tags] | EXPECTED_FAILING +| | When Honeycomb sets interface ethernet configuration +| | ... | ${node} | ${interface} | ${ethernet} +| | Then Interface ethernet configuration from Honeycomb should be +| | ... | ${node} | ${interface} | ${ethernet} +| | And Interface ethernet configuration from VAT should be +| | ... | ${node} | ${interface} | ${ethernet['mtu']} + +# TODO: Honeycomb configures routing on interface diff --git a/tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot new file mode 100644 index 0000000000..04f94b81c0 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot @@ -0,0 +1,74 @@ +# 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/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/tap.robot +| Force Tags | honeycomb_sanity +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Documentation | *Honeycomb TAP management test suite.* +| ... +| ... | Test suite uses the first interface of the first DUT node. + +*** Test Cases *** +| TC01: 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} + +| TC02: 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} + +| TC03: 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/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot new file mode 100644 index 0000000000..f96187278e --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot @@ -0,0 +1,163 @@ +# 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/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/vhost_user.robot +# Whole suite failing due to bug https://jira.fd.io/browse/VPP-562 +| Force Tags | honeycomb_sanity | EXPECTED_FAILING +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| 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 *** +| TC01: 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} + +| TC02: 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} + +| TC03: 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} + +| TC04: 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} + +| TC05: 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} + +| TC06: 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} + +| TC07: 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} + +| TC08: 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/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot new file mode 100644 index 0000000000..3a32f02136 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot @@ -0,0 +1,100 @@ +# 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/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Suite Teardown | Run keywords +| ... | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| ... | AND | Honeycomb removes all bridge domains | ${node} | @{interfaces} +| 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 *** +| TC01: 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} + +| TC02: 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} + +| TC03: 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} + +| TC04: 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} + +| TC05: Honeycomb removes bridge domain with an interface assigned +| | [Documentation] | Check if Honeycomb can remove a bridge domain that has an\ +| | ... | interface assigned to it. +# Bridge domain references not cleaned up on delete (HONEYCOMB-267) +| | [Tags] | EXPECTED_FAILING +| | 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} +| | And Honeycomb should not show interfaces assigned to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} diff --git a/tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot new file mode 100644 index 0000000000..9a299df231 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot @@ -0,0 +1,234 @@ +# 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/honeycomb.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 | resources/test_data/honeycomb/l2_fib.py | ${node} | ${interface} +| ... | ${interface2} +| Documentation | *Honeycomb L2 FIB management test suite.* +| Suite Setup | Run keywords +| ... | Set test interface down +| ... | AND +| ... | Honeycomb removes all bridge domains | ${node} | ${interface} +| Suite Teardown | Run keywords +| ... | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| ... | AND | Honeycomb removes all bridge domains | ${node} +| Force tags | honeycomb_sanity + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${interface2}= | ${node['interfaces']['port3']['name']} + +*** Test Cases *** +| TC01: 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} + +| TC02: 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} + +| TC03: 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} + +| TC04: 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} + +| TC05: 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} + +| TC06: 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} + +| TC07: 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/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot new file mode 100644 index 0000000000..5f602c5780 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.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']} +| ${bd_name}= | bd_lisp +| ${bd2_name}= | bd2_lisp +| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} +| ... | unknown-unicast-flood=${True} | arp-termination=${True} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/lisp.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Variables | resources/test_data/honeycomb/lisp.py +| Documentation | *Honeycomb Lisp test suite.* +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Force Tags | honeycomb_sanity + +*** Test Cases *** +| TC01: Honeycomb enables Lisp feature +| | [Documentation] | Check if Honeycomb can enable the Lisp feature. +| | Given Lisp Should Not Be Configured | ${node} +| | When Honeycomb Enables Lisp | ${node} +| | Then Lisp state From Honeycomb Should Be | ${node} | enabled +| | And Lisp state From VAT Should Be | ${node} | enabled + +| TC02: Honeycomb adds locator set and locator +| | [Documentation] | Check if Honeycomb can configure a locator set. +| | Given Lisp state From Honeycomb Should Be | ${node} | enabled +| | When Honeycomb adds locator set | ${node} | ${interface} | ${locator_set} +| | Then Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} + +| TC03: Honeycomb configures Lisp - remote mapping - Bridge Domain +| | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\ +| | ... | with a bridge domain. +| | Given Lisp state From Honeycomb Should Be | ${node} | enabled +| | And Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | When Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_remote_bd} +| | Then Lisp mapping From Honeycomb Should Be +| | ... | ${node} | ${remote_bd_subtable} +| | And Lisp mapping From VAT Should Be +| | ... | ${node} | ${vat_remote_bd} + +| TC04: Honeycomb can remove Lisp mapping +| | [Documentation] | Check if Honeycomb can remove a configured Lisp mapping. +| | Given Lisp mapping From Honeycomb Should Be +| | ... | ${node} | ${remote_bd_subtable} +| | And Lisp mapping From VAT Should Be +| | ... | ${node} | ${vat_remote_bd} +| | When Honeycomb removes all lisp mappings | ${node} +| | Then Lisp mappings from Honeycomb should not exist +| | ... | ${node} +| | And Lisp mappings from VAT should not exist +| | ... | ${node} + +| TC05: Honeycomb configures Lisp - remote mapping - VRF +| | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\ +| | ... | with VRF. +| | [Teardown] | Honeycomb removes all lisp mappings | ${node} +| | Given Lisp mappings from Honeycomb should not exist +| | ... | ${node} +| | And Lisp mappings from VAT should not exist +| | ... | ${node} +| | When Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_remote_vrf} +| | Then Lisp mapping From Honeycomb Should Be +| | ... | ${node} | ${remote_vrf_subtable} +| | And Lisp mapping From VAT Should Be | ${node} | ${vat_remote_vrf} + +| TC06: Honeycomb configures Lisp - local mapping - Bridge Domain +| | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\ +| | ... | with a bridge domain. +| | [Teardown] | Honeycomb removes all lisp mappings | ${node} +| | Given Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} +| | And Lisp mappings from Honeycomb should not exist +| | ... | ${node} +| | And Lisp mappings from VAT should not exist +| | ... | ${node} +| | And Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd2_name} | ${bd_settings} +| | When Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_local_bd} +| | Then Lisp mapping From Honeycomb Should Be | ${node} | ${local_bd_subtable} +| | And Lisp mapping From VAT Should Be | ${node} | ${vat_local_bd} + +| TC07: Honeycomb configures Lisp - local mapping - VRF +| | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\ +| | ... | with VRF. +| | [Teardown] | Honeycomb removes all lisp mappings | ${node} +| | Given Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} +| | And Lisp mappings from Honeycomb should not exist +| | ... | ${node} +| | And Lisp mappings from VAT should not exist +| | ... | ${node} +| | When Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_local_vrf} +| | Then Lisp mapping From Honeycomb Should Be | ${node} | ${local_vrf_subtable} +| | And Lisp mapping From VAT Should Be | ${node} | ${vat_local_vrf} + +| TC08: Honeycomb configures Lisp mapping with adjacency +| | [Documentation] | Check if Honeycomb can configure local and remote Lisp\ +| | ... | mappings with VRF, and configure adjacency. +| | [Tags] | EXPECTED_FAILING +# Requests below "vrf-subtable" level fail on table-id lookup (HONEYCOMB-290) +| | [Teardown] | Honeycomb removes all lisp mappings | ${node} +| | Given Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} +| | And Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd2_name} | ${bd_settings} +| | And Lisp mappings from Honeycomb should not exist +| | ... | ${node} +| | And Lisp mappings from VAT should not exist +| | ... | ${node} +| | And Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_local_vrf} +| | And Honeycomb adds Lisp mapping | ${node} | ${lisp_settings_remote_vrf} +| | When Honeycomb adds Lisp adjacency | ${node} | ${4} | remote_map_vrf +| | ... | adj01 | ${remote_vrf_adjacency} +| | Then Lisp mapping from Honeycomb should be +| | ... | ${node} | ${remote_adj_subtable} + +| TC09: Honeycomb configures Lisp map resolver +| | [Documentation] | Check if Honeycomb can configure a Lisp map resolver. +| | Given Lisp state From Honeycomb Should Be | ${node} | enabled +| | And Lisp state From VAT Should Be | ${node} | enabled +| | When Honeycomb adds Lisp Map resolver | ${node} | 192.168.0.4 +| | Then Map resolver from Honeycomb should be | ${node} | 192.168.0.4 +| | And Map resolver from VAT should be | ${node} | 192.168.0.4 + +| TC10: Honeycomb enabled Lisp PITR feature +| | [Documentation] | Check if Honeycomb can configure the Lisp PITR feature. +| | Given Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} +| | When Honeycomb enables Lisp PITR feature | ${node} | ${locator_set} +| | Then PITR config from Honeycomb should be | ${node} | ${locator_set} +| | And PITR config from VAT should be | ${node} | ${locator_set} + +| TC11: Honeycomb can remove configuration of Lisp features +| | [Documentation] | Check if Honeycomb can disable all Lisp features. +| | [Tags] | EXPECTED_FAILING +# Delete operation fails due to incorrect write order(HONEYCOMB-296), +# but returns code 200: OK (HONEYCOMB-297) +| | Given Map resolver from Honeycomb should be | ${node} | 192.168.0.4 +| | And PITR config from Honeycomb should be | ${node} | ${locator_set} +| | When Honeycomb disables all Lisp features | ${node} +| | Then Lisp Should Not Be Configured | ${node} diff --git a/tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot new file mode 100644 index 0000000000..f7e262234a --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot @@ -0,0 +1,127 @@ +# 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*** +| ${super_if}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/nsh.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot +| Variables | resources/test_data/honeycomb/nsh.py +| Variables | resources/test_data/honeycomb/vxlan_gpe.py +| Documentation | *Honeycomb NSH test suite.* +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Force Tags | honeycomb_sanity + +*** Test Cases *** +| TC01: Honeycomb can configure NSH entry +| | [Documentation] | Check if Honeycomb can configure an NSH entry. +| | Given NSH configuration from Honeycomb should be empty | ${node} +| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} +| | Then NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} + +| TC02: Honeycomb can remove NSH entry +| | [Documentation] | Check if Honeycomb can remove an existing NSH entry. +| | Given NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | When Honeycomb removes NSH entry | ${node} | entry1 +| | Then NSH configuration from Honeycomb should be empty | ${node} + +| TC03: Honeycomb can configure new NSH entry +| | [Documentation] | Check if Honeycomb can configure an NSH antry after one\ +| | ... | has been deleted. +| | [Teardown] | Honeycomb removes NSH entry | ${node} | entry2 +| | Given NSH configuration from Honeycomb should be empty | ${node} +| | When Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2} +| | Then NSH entry from Honeycomb should be +| | ... | ${node} | entry2 | ${nsh_entry2_oper} + +| TC04: Honeycomb can configure multiple NSH entries at the same time +| | [Documentation] | Check if Honeycomb can configure an NSH entry when one\ +| | ... | already exists. +| | [Teardown] | Honeycomb clears NSH configuration | ${node} +| | Given NSH configuration from Honeycomb should be empty | ${node} +| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} +| | And Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2} +| | Then NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry2 | ${nsh_entry2_oper} + +| TC05: Honeycomb can configure NSH map +| | [Documentation] | Check if Honeycomb can configure an NSH map. +| | Given NSH configuration from Honeycomb should be empty | ${node} +| | And Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} +| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} +| | And Honeycomb adds NSH map | ${node} | map1 | ${nsh_map1} +| | Then NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper} + +| TC06: Honeycomb can remove NSH map +| | [Documentation] | Check if Honeycomb can remove an existing NSH map. +| | Given NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | And VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} +| | And NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper} +| | When Honeycomb removes NSH map | ${node} | map1 +| | Then NSH map from Honeycomb should not exist | ${node} | map1 +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} + +| TC07: Honeycomb can modify existing NSH map +| | [Documentation] | Check if Honeycomb can configure an NSH map after one\ +| | ... | has been deleted. +| | [Teardown] | Honeycomb removes NSH map | ${node} | map1_edit +| | Given NSH map from Honeycomb should not exist | ${node} | map1_edit +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | And VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} +| | When Honeycomb adds NSH map | ${node} | map1_edit | ${nsh_map1_edit} +| | Then NSH map from Honeycomb should be +| | ... | ${node} | map1_edit | ${nsh_map1_edit_oper} +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} + +| TC08: Honeycomb can configure multiple NSH maps at the same time +| | [Documentation] | Check if Honeycomb can configure and NSH map when one\ +| | ... | already exists. +| | [Teardown] | Run Keywords +| | ... | Honeycomb clears NSH configuration | ${node} | AND +| | ... | Honeycomb removes VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if1} | AND +| | ... | Honeycomb removes VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if2} +| | Given NSH map from Honeycomb should not exist | ${node} | map2 +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | And VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} +| | And Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if2} +| | ... | ${vxlan_gpe_base_settings2} | ${vxlan_gpe_settings2} +| | When Honeycomb adds NSH map | ${node} | map1 | ${nsh_map1} +| | And Honeycomb adds NSH map | ${node} | map2 | ${nsh_map2} +| | Then NSH map from Honeycomb should be +| | ... | ${node} | map1 | ${nsh_map1_oper} +| | And NSH map from Honeycomb should be +| | ... | ${node} | map2 | ${nsh_map2_oper} diff --git a/tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot new file mode 100644 index 0000000000..99396028f6 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot @@ -0,0 +1,82 @@ +# 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*** +| ${super_if}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/provider_backbone_bridge.robot +| Variables | resources/test_data/honeycomb/pbb/pbb.py +| Documentation | *Honeycomb provider backbone bridge test suite.* +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Force Tags | honeycomb_sanity + +*** Test Cases *** +# TODO: add verifications once operational data or VPP dump is available. +| TC01: Honeycomb sets PBB sub-interface +| | [Documentation] | Honeycomb creates a new PBB sub-interface. +| | ... +| | Honeycomb creates PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_1} + +| TC02: Honeycomb modifies existing PBB sub-interface +| | [Documentation] | Honeycomb modifies an existing PBB sub-interface. +| | ... +| | Honeycomb creates PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_1_mod} + +| TC03: Honeycomb deletes existing PBB sub-interface +| | [Documentation] | Honeycomb deletes an existing PBB sub-interface. +| | ... +| | Honeycomb Removes PBB sub interface +| | ... | ${node} | ${super_if} + +| TC04: Honeycomb fails to set wrong destination-address for new PBB sub-interface +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ +| | ... | wrong value of parameter destination-address, type yang:mac-address. +| | ... +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_dst_addr} + +| TC05: Honeycomb fails to set wrong source-address for new PBB sub-interface +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ +| | ... | wrong value of parameter source-address, type yang:mac-address. +| | ... +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_src_addr} + +| TC06: Honeycomb fails to set wrong b-vlan-tag-vlan-id for new PBB sub-interface +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ +| | ... | wrong value of parameter b-vlan-tag-vlan-id, type uint16, 12 bit\ +| | ... | range, range "1..4095". +| | ... +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_vlan_tag} + +| TC07: Honeycomb fails to set wrong i-tag-isid for new PBB sub-interface +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ +| | ... | wrong value of parameter i-tag-isid, type uint32, 24 bit range,\ +| | ... | range "1..16777215". +| | ... +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_i_tag} + +| TC08: Honeycomb fails to create new PBB sub-interface without vlan tag +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface without\ +| | ... | parameter b-vlan-tag-vlan-id. +| | ... +| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_no_vlan_tag} diff --git a/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot new file mode 100644 index 0000000000..d761cabe52 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot @@ -0,0 +1,104 @@ +# 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']} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/nat.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Variables | resources/test_data/honeycomb/nat.py | ${node} | ${interface} +| Documentation | *Honeycomb NAT test suite.* +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Force Tags | honeycomb_sanity + +*** Test Cases *** +| TC01: Honeycomb configures NAT entry +| | [Documentation] | Honeycomb configures a static NAT entry. +| | Given NAT configuration from Honeycomb should be empty +| | ... | ${node} | ${nat_empty} +| | When Honeycomb Configures NAT Entry | ${node} | ${entry1} +| | Then NAT Entries From Honeycomb Should Be | ${node} | ${entry1} +| | And NAT Entries From VAT Should Be | ${node} | ${entry1_vat} + +| TC02: Honeycomb removes NAT entry +| | [Documentation] | Honeycomb removes a configured static NAT entry. +| | Given NAT Entries From Honeycomb Should Be | ${node} | ${entry1} +| | And NAT Entries From VAT Should Be | ${node} | ${entry1_vat} +| | When Honeycomb Configures NAT Entry | ${node} | ${NONE} +| | Then NAT configuration from Honeycomb should be empty +| | ... | ${node} | ${nat_empty} + +| TC03: Honeycomb configures multiple NAT entries +| | [Documentation] | Honeycomb configures two static NAT entries. +| | [Teardown] | Honeycomb Configures NAT Entry | ${node} | ${NONE} +| | Given NAT configuration from Honeycomb should be empty +| | ... | ${node} | ${nat_empty} +| | When Honeycomb Configures NAT Entry | ${node} | ${entry1} | ${0} | ${1} +| | And Honeycomb Configures NAT Entry | ${node} | ${entry2} | ${0} | ${2} +| | Then NAT Entries From Honeycomb Should Be +| | ... | ${node} | ${entry1_2_oper} | ${0} +| | And NAT Entries From VAT Should Be | ${node} | ${entry1_2_vat} + +| TC04: Honeycomb enables NAT on interface - inbound +| | [Documentation] | Honeycomb configures NAT on an interface\ +| | ... | in inbound direction. +# Interface config not visible in VAT - https://jira.fd.io/browse/HC2VPP-8 +| | [Tags] | EXPECTED_FAILING +| | Given NAT Interface Configuration From Honeycomb Should Be Empty +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Configuration From Honeycomb Should Be Empty +| | ... | ${node} | ${interface} | outbound +| | When Honeycomb Configures NAT On Interface +| | ... | ${node} | ${interface} | inbound +| | Then NAT Interface Configuration From Honeycomb Should Be +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Configuration From VAT Should Be +| | ... | ${node} | ${nat_interface_vat_in} +| | And NAT Interface Configuration From Honeycomb Should be empty +| | ... | ${node} | ${interface} | outbound + +| TC05: Honeycomb removes NAT interface configuration +| | [Documentation] | Honeycomb removes NAT configuration from an interface. +| | Given NAT Interface Configuration From Honeycomb Should Be +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Configuration From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | outbound +| | When Honeycomb removes NAT interface configuration +| | ... | ${node} | ${interface} | inbound +| | Then NAT Interface Configuration From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Configuration From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | outbound + +| TC06: Honeycomb enables NAT on interface - outbound +| | [Documentation] | Honeycomb configures NAT on an interface\ +| | ... | in outbound direction. +# Interface config not visible in VAT - https://jira.fd.io/browse/HC2VPP-8 +| | [Tags] | EXPECTED_FAILING +| | [Teardown] | Honeycomb removes NAT interface configuration +| | ... | ${node} | ${interface} | outbound +| | Given NAT Interface Configuration From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Configuration From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | outbound +| | When Honeycomb Configures NAT on Interface +| | ... | ${node} | ${interface} | outbound +| | Then NAT Interface Configuration From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Configuration From Honeycomb Should Be +| | ... | ${node} | ${interface} | outbound +| | And NAT Interface Configuration From VAT Should Be +| | ... | ${node} | ${nat_interface_vat_out} diff --git a/tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot new file mode 100644 index 0000000000..ff72f956af --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot @@ -0,0 +1,65 @@ +# 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/port_mirroring.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +# Test suite out of date since https://gerrit.fd.io/r/4272 +# | Force Tags | honeycomb_sanity +| Suite Setup | Add Interface local0 To Topology | ${node} +| Suite Teardown | Run Keyword If Any Tests Failed +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Documentation | *Honeycomb port mirroring test suite.* +| ... +| ... | Test suite uses the first interface of the first DUT node. + +*** Variables *** +| ${interface1}= | ${node['interfaces']['port1']['name']} +| ${interface2}= | ${node['interfaces']['port3']['name']} +| ${interface3}= | local0 + +*** Test Cases *** +# TODO: Add verification once operational data is available (HONEYCOMB-306) +| TC01: Honeycomb can configure SPAN on an interface +| | [Documentation] | Honeycomb configures SPAN on interface and verifies/ +| | ... | against VPP SPAN dump. +| | Given SPAN configuration from VAT should not exist +| | ... | ${node} +| | When Honeycomb Configures SPAN on interface +| | ... | ${node} | ${interface1} | ${interface2} +| | Then Interface SPAN configuration from VAT should be +| | ... | ${node} | ${interface1} | ${interface2} + +| TC02: Honeycomb can disable SPAN on interface +| | [Documentation] | Honeycomb removes existing SPAN configuration\ +| | ... | on interface and verifies against VPP SPAN dump. +| | Given Interface SPAN configuration from VAT should be +| | ... | ${node} | ${interface1} | ${interface2} +| | When Honeycomb removes interface SPAN configuration +| | ... | ${node} | ${interface1} +| | Then SPAN configuration from VAT should not exist +| | ... | ${node} + +| TC03: Honeycomb can configure SPAN on one interface to mirror two interfaces +| | [Documentation] | Honeycomb configures SPAN on interface, mirroring\ +| | ... | two interfaces at the same time. Then verifies against VPP SPAN dump. +| | [Teardown] | Honeycomb removes interface SPAN configuration +| | ... | ${node} | ${interface1} +| | Given SPAN configuration from VAT should not exist +| | ... | ${node} +| | When Honeycomb Configures SPAN on interface +| | ... | ${node} | ${interface1} | ${interface2} | ${interface3} +| | Then Interface SPAN configuration from VAT should be +| | ... | ${node} | ${interface1} | ${interface2} | ${interface3} diff --git a/tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot new file mode 100644 index 0000000000..55131e713c --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot @@ -0,0 +1,129 @@ +# 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/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/vxlan.robot +# import additional VxLAN settings from resource file +| Variables | resources/test_data/honeycomb/vxlan.py +| Force Tags | honeycomb_sanity +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Documentation | *Honeycomb VxLAN management test suite.* +| ... +| ... | Test suite uses the first interface of the first DUT node. + +*** Test Cases *** +| TC01: 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} +| | ${vxlan_index}= | Get Interface index from oper data +| | ... | ${node} | ${vx_interface} +| | Set Suite Variable | ${vxlan_index} + +| TC02: 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 Honeycomb should not show disabled interface in oper data +| | ... | ${node} | ${vxlan_index} +| | 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 Honeycomb should show disabled interface in oper data +| | ... | ${node} | ${vxlan_index} +| | And VxLAN configuration from VAT should be empty | ${node} + +| TC03: 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 Honeycomb should show disabled interface in oper data +| | ... | ${node} | ${vxlan_index} +| | 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 Honeycomb should not show disabled interface in oper data +| | ... | ${node} | ${vxlan_index} +| | And VxLAN configuration from VAT should be +| | ... | ${node} | ${vxlan_settings2} + +| TC04: 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} + +| TC05: 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} + +| TC06: 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/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot new file mode 100644 index 0000000000..bb95b20f04 --- /dev/null +++ b/tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot @@ -0,0 +1,163 @@ +# 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/honeycomb.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 | resources/test_data/honeycomb/vxlan_gpe.py +| Documentation | *Honeycomb VxLAN-GPE management test suite.* +| Force Tags | honeycomb_sanity +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} + +*** Test Cases *** +| TC01: Honeycomb creates VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb API can configure a 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 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} +| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if1} + +| TC02: Honeycomb removes VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb API can remove VxLAN GPE tunnel. +| | ... +| | Given VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} +| | 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 Honeycomb should be empty +| | ... | ${node} | ${vxlan_gpe_if1} +| | And VxLAN GPE configuration from VAT should be empty +| | ... | ${node} + +| TC03: 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} + +| TC04: 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} + +| TC05: 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} + +| TC06: Honeycomb creates VxLAN GPE tunnel with ipv6 +| | [Documentation] | Check if Honeycomb API can configure a VxLAN GPE tunnel\ +| | ... | with IPv6 addresses. +| | ... +| | Given VxLAN GPE configuration from VAT should be empty +| | ... | ${node} +| | And VxLAN GPE configuration from Honeycomb should be empty +| | ... | ${node} | ${vxlan_gpe_if5} +| | When Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if5} +| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} +| | Then 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 VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if5} + +| TC07: Honeycomb creates a second VxLAN GPE tunnel with ipv6 +| | [Documentation] | Check if Honeycomb API can configure another 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 VxLAN GPE configuration from Honeycomb should be +| | ... | ${node} | ${vxlan_gpe_if6} +| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} +| | And VxLAN GPE configuration from VAT should be +| | ... | ${node} | ${vxlan_gpe_if6} | ${vxlan_gpe_ipv6_settings2} +| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if6} diff --git a/tests/func/honeycomb/mgmt-notif-apihcnc-func.robot b/tests/func/honeycomb/mgmt-notif-apihcnc-func.robot new file mode 100644 index 0000000000..2b6802c205 --- /dev/null +++ b/tests/func/honeycomb/mgmt-notif-apihcnc-func.robot @@ -0,0 +1,59 @@ +# 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/honeycomb.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 +| Suite Teardown | Run Keyword If Any Tests Failed +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} + +*** Test Cases *** +| TC01: 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 + +| TC02: 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/func/honeycomb/mgmt-statepersist-apihc-func.robot b/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot new file mode 100644 index 0000000000..84dad452b5 --- /dev/null +++ b/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot @@ -0,0 +1,65 @@ +# 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_sanity +| Documentation | *Honeycomb configuration persistence test suite.* + +*** Test Cases *** +| TC01: Honeycomb persists configuration through restart of both Honeycomb and VPP +| | [Documentation] | Checks if Honeycomb maintains configuration after both\ +| | ... | Honeycomb and VPP are restarted. +# Vxlan tunnel name is not properly restored (HONEYCOMB-301) +| | [Tags] | EXPECTED_FAILING +| | 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} + +| TC02: Honeycomb persists configuration through restart of Honeycomb +| | [Documentation] | Checks if Honeycomb maintains configuration after it\ +| | ... | is restarted. +# Vxlan tunnel name is not properly restored (HONEYCOMB-301) +| | [Tags] | EXPECTED_FAILING +| | 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} + +| TC03: Honeycomb persists configuration through restart of VPP +| | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\ +| | ... | restarted. +# Vxlan tunnel name is not properly restored (HONEYCOMB-301) +| | [Tags] | EXPECTED_FAILING +| | 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} + +| TC04: 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 Honeycomb And VPP 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} -- cgit 1.2.3-korg