aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--resources/libraries/python/honeycomb/HcAPIKwInterfaces.py48
-rw-r--r--resources/libraries/robot/honeycomb/bridge_domain.robot76
-rw-r--r--resources/libraries/robot/honeycomb/interfaces.robot91
-rw-r--r--tests/suites/honeycomb/1 - interface_management.robot57
-rw-r--r--tests/suites/honeycomb/2 - vxlan.robot7
-rw-r--r--tests/suites/honeycomb/3 - bridge_domain.robot20
-rw-r--r--tests/suites/honeycomb/4 - tap.robot4
-rw-r--r--tests/suites/honeycomb/5 - interface_vhost_user.robot9
-rw-r--r--tests/suites/honeycomb/6 - sub_interface.robot2
-rw-r--r--tests/suites/honeycomb/7 - persistence.robot2
10 files changed, 213 insertions, 103 deletions
diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
index afd6076c7b..ec928a7567 100644
--- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
+++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
@@ -449,30 +449,6 @@ class InterfaceKeywords(object):
node, interface, path, None)
@staticmethod
- def add_first_ipv4_neighbor(node, interface, ip_addr, link_layer_address):
- """Add the first IPv4 neighbour.
-
- If there are any other neighbours configured, they will be removed.
-
- :param node: Honeycomb node.
- :param interface: The name of interface.
- :param ip_addr: IPv4 address of neighbour to be set.
- :param link_layer_address: Link layer address.
- :type node: dict
- :type interface: str
- :type ip_addr: str
- :type link_layer_address: str
- :return: Content of response.
- :rtype: bytearray
- """
-
- path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv4")
- neighbor = {"neighbor": [{"ip": ip_addr,
- "link-layer-address": link_layer_address}, ]}
- return InterfaceKeywords._set_interface_properties(
- node, interface, path, neighbor)
-
- @staticmethod
def add_ipv4_neighbor(node, interface, ip_addr, link_layer_address):
"""Add the IPv4 neighbour.
@@ -604,30 +580,6 @@ class InterfaceKeywords(object):
node, interface, path, None)
@staticmethod
- def add_first_ipv6_neighbor(node, interface, ip_addr, link_layer_address):
- """Add the first IPv6 neighbour.
-
- If there are any other neighbours configured, they will be removed.
-
- :param node: Honeycomb node.
- :param interface: The name of interface.
- :param ip_addr: IPv6 address of neighbour to be set.
- :param link_layer_address: Link layer address.
- :type node: dict
- :type interface: str
- :type ip_addr: str
- :type link_layer_address: str
- :return: Content of response.
- :rtype: bytearray
- """
-
- path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv6")
- neighbor = {"neighbor": [{"ip": ip_addr,
- "link-layer-address": link_layer_address}, ]}
- return InterfaceKeywords._set_interface_properties(
- node, interface, path, neighbor)
-
- @staticmethod
def add_ipv6_neighbor(node, interface, ip_addr, link_layer_address):
"""Add the IPv6 neighbour.
diff --git a/resources/libraries/robot/honeycomb/bridge_domain.robot b/resources/libraries/robot/honeycomb/bridge_domain.robot
index 4c455ff50d..76122fa8f9 100644
--- a/resources/libraries/robot/honeycomb/bridge_domain.robot
+++ b/resources/libraries/robot/honeycomb/bridge_domain.robot
@@ -114,6 +114,29 @@
| | interfaceAPI.Add bridge domain to interface
| | ... | ${node} | ${interface2} | ${bd_name} | &{settings}
+| Honeycomb fails to add interfaces to bridge domain
+| | [Documentation] | Uses Honeycomb API to assign interfaces to a bridge\
+| | ... | domain.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ... | - interface1, interface2 - names of interfaces to assign to bridge\
+| | ... | domain. Type: string
+| | ... | - bd_name - name of the bridge domain. Type: string
+| | ... | - settings - bridge domain specific interface settings.\
+| | ... | Type: dictionary
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Honeycomb fails to add interfaces to bridge domain \
+| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| GigabitEthernet0/9/0 \
+| | ... | \| bd-04 \| ${{split_horizon_group:2, bvi:True}} \|
+| | [Arguments] | ${node} | ${interface1} | ${interface2} | ${bd_name}
+| | ... | ${settings}
+| | Run keyword and expect error | *Failed to validate*
+| | ... | Honeycomb adds interfaces to bridge domain | ${node} | ${interface1}
+| | ... | ${interface2} | ${bd_name} | ${settings}
+
| Honeycomb should show interfaces assigned to bridge domain
| | [Documentation] | Uses Honeycomb API to verify interface assignment to\
| | ... | bridge domain.
@@ -146,6 +169,29 @@
| | ... | ${if2_data['v3po:l2']['bridged-virtual-interface']}
| | ... | ${settings['bvi']}
+| Honeycomb should not show interfaces assigned to bridge domain
+| | [Documentation] | Uses Honeycomb API to verify interface assignment to\
+| | ... | bridge domain.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ... | - interface1, interface2 - names of interfaces to check bridge domain\
+| | ... | assignment on. Type: string
+| | ... | - bd_name - name of the bridge domain. Type: string
+| | ... | - settings - bridge domain specific interface settings.\
+| | ... | Type: dictionary
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Honeycomb should not show interfaces assigned to bridge domain \
+| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| GigabitEthernet0/9/0 \
+| | ... | \| bd-04 \| ${{split_horizon_group:2, bvi:False}} \|
+| | [Arguments] | ${node} | ${interface1} | ${interface2} | ${bd_name}
+| | ... | ${settings}
+| | Run keyword and expect error | *ValueError*
+| | ... | Honeycomb should show interfaces assigned to bridge domain
+| | ... | ${node} | ${interface1} | ${interface2} | ${bd_name} | ${settings}
+
| VAT should show interfaces assigned to bridge domain
| | [Documentation] | Uses VAT to verify interface assignment to\
| | ... | bridge domain.
@@ -154,9 +200,9 @@
| | ... | - node - Information about a DUT node. Type: dictionary
| | ... | - index - Index of bridge domains on VPP node. Starts from 0,\
| | ... | new BDs reuse numbers after a bridge domain is removed. Type: int
-| | ... | - interface1, interface2 - Names of interfaces to assign to bridge\
-| | ... | domain. Type: string
-| | ... | - settings - Bridge domain specific interface settings.\
+| | ... | - interface1, interface2 - names of interfaces to check bridge domain\
+| | ... | assignment on. Type: string
+| | ... | - settings - bridge domain specific interface settings.\
| | ... | Type: dictionary
| | ...
| | ... | *Example:*
@@ -176,6 +222,30 @@
| | | Should contain | ${if_indices} | ${interface['sw_if_index']}
| | | Should be equal | ${interface['shg']} | ${settings['split_horizon_group']}
+| VAT should not show interfaces assigned to bridge domain
+| | [Documentation] | Uses VAT to verify interface assignment to\
+| | ... | bridge domain, and expects to fail.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ... | - index - index of bridge domains on VPP node. Starts from 0,\
+| | ... | new BDs reuse numbers after a bridge domain is removed. Type: integer
+| | ... | - interface1, interface2 - names of interfaces to check bridge domain\
+| | ... | assignment on. Type: string
+| | ... | - settings - bridge domain specific interface settings.\
+| | ... | Type: dictionary
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| VAT should not show interfaces assigned to bridge domain \
+| | ... | \| ${nodes['DUT1']} \| ${4} \| GigabitEthernet0/8/0 \
+| | ... | \| GigabitEthernet0/9/0 \| ${{split_horizon_group:2, bvi:False}} \|
+| | [Arguments] | ${node} | ${index} | ${interface1} | ${interface2}
+| | ... | ${settings}
+| | Run keyword and expect error | *No JSON object could be decoded*
+| | ... | VAT should show interfaces assigned to bridge domain
+| | ... | ${node} | ${index} | ${interface1} | ${interface2} | ${settings}
+
| Honeycomb removes all bridge domains
| | [Documentation] | Uses Honeycomb API to remove all bridge domains from the \
| | ... | VPP node.
diff --git a/resources/libraries/robot/honeycomb/interfaces.robot b/resources/libraries/robot/honeycomb/interfaces.robot
index 02d0a49cb8..ea1d2b090b 100644
--- a/resources/libraries/robot/honeycomb/interfaces.robot
+++ b/resources/libraries/robot/honeycomb/interfaces.robot
@@ -90,7 +90,7 @@
| | ... | ${vat_data['admin_up_down']} == 1 | up | down
| | Should be equal | ${vat_state} | ${state}
-| Honeycomb sets interface ipv4 configuration
+| Honeycomb sets interface ipv4 address
| | [Documentation] | Uses Honeycomb API to change ipv4 configuration\
| | ... | of the specified interface.
| | ...
@@ -99,25 +99,21 @@
| | ... | - interface - name of an interface on the specified node. Type: string
| | ... | - address - IP address to set. Type: string
| | ... | - netmask - subnet mask to set. Type: string
-| | ... | - fib_address - IP address to add to fib table. Type: string
-| | ... | - fib_mac - MAC address to add to fib table. Type: string
| | ... | - settings - ipv4 interface settings. Type: dictionary
| | ...
| | ... | *Example:*
| | ...
| | ... | \| Honeycomb sets interface ipv4 configuration \| ${nodes['DUT1']} \
| | ... | \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 255.255.255.0 \
-| | ... | \| 192.168.0.3 \| 08:00:27:c0:5d:37 \
| | ... | \| ${{'enabled': True, 'mtu': 1500}} \|
| | [Arguments] | ${node} | ${interface} | ${address} | ${netmask}
-| | ... | ${fib_address} | ${fib_mac} | ${settings}
+| | ... | ${settings}
| | interfaceAPI.Add first ipv4 address
| | ... | ${node} | ${interface} | ${address} | ${netmask}
-| | interfaceAPI.Add first ipv4 neighbor
-| | ... | ${node} | ${interface} | ${fib_address} | ${fib_mac}
| | :FOR | ${key} | IN | @{settings.keys()}
| | | interfaceAPI.Configure interface ipv4
| | | ... | ${node} | ${interface} | ${key} | ${settings['${key}']}
+| | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
| Honeycomb sets interface ipv4 address with prefix
| | [Documentation] | Uses Honeycomb API to assign an ipv4 address to the\
@@ -128,14 +124,38 @@
| | ... | - interface - name of an interface on the specified node. Type: string
| | ... | - address - IP address to set. Type: string
| | ... | - prefix - length of address network prefix. Type: int
+| | ... | - settings - ipv4 interface settings. Type: dictionary
| | ...
| | ... | *Example:*
| | ...
| | ... | \| Honeycomb sets interface ipv4 address with prefix \
| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 24 \|
| | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
+| | ... | ${settings}
| | interfaceAPI.Add first ipv4 address
| | ... | ${node} | ${interface} | ${address} | ${prefix}
+| | :FOR | ${key} | IN | @{settings.keys()}
+| | | interfaceAPI.Configure interface ipv4
+| | | ... | ${node} | ${interface} | ${key} | ${settings['${key}']}
+
+| Honeycomb adds interface ipv4 neighbor
+| | [Documentation] | Uses Honeycomb API to assign an ipv4 neighbor to the\
+| | ... | specified interface.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ... | - interface - name of an interface on the specified node. Type: string
+| | ... | - fib_address - IP address to add to fib table. Type: string
+| | ... | - fib_mac - MAC address to add to fib table. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Honeycomb adds interface ipv4 neighbor \| ${nodes['DUT1']} \
+| | ... | \| GigabitEthernet0/8/0 \| 192.168.0.3 \| 08:00:27:c0:5d:37 \
+| | ... | \| ${{'enabled': True, 'mtu': 1500}} \|
+| | [Arguments] | ${node} | ${interface} | ${fib_address} | ${fib_mac}
+| | interfaceAPI.Add ipv4 neighbor
+| | ... | ${node} | ${interface} | ${fib_address} | ${fib_mac}
| IPv4 config from Honeycomb should be
| | [Documentation] | Retrieves interface ipv4 configuration through Honeycomb\
@@ -145,7 +165,7 @@
| | ... | - node - information about a DUT node. Type: dictionary
| | ... | - interface - name of an interface on the specified node. Type: string
| | ... | - address - IP address to expect. Type: string
-| | ... | - netmask - subnet mask to expect. Type: string
+| | ... | - prefix - prefix length to expect. Type: string
| | ... | - fib_address - IP address to expect in fib table. Type: string
| | ... | - fib_mac - MAC address to expect in fib table. Type: string
| | ... | - settings - ipv4 interface settings to expect. Type: dictionary
@@ -156,13 +176,13 @@
| | ... | \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 255.255.255.0 \
| | ... | \| 192.168.0.3 \| 08:00:27:c0:5d:37 \
| | ... | \| ${{'enabled': True, 'mtu': 1500}} \|
-| | [Arguments] | ${node} | ${interface} | ${address} | ${netmask}
+| | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
| | ... | ${fib_address} | ${fib_mac} | ${settings}
| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
| | Should be equal | ${address}
| | ... | ${api_data['ietf-ip:ipv4']['address'][0]['ip']}
-| | Should be equal | ${netmask}
-| | ... | ${api_data['ietf-ip:ipv4']['address'][0]['netmask']}
+| | Should be equal | ${prefix}
+| | ... | ${api_data['ietf-ip:ipv4']['address'][0]['prefix-length']}
| | Should be equal | ${fib_address}
| | ... | ${api_data['ietf-ip:ipv4']['neighbor'][0]['ip']
| | Should be equal | ${fib_mac}
@@ -188,9 +208,58 @@
| | [Arguments] | ${node} | ${interface} | ${address} | ${netmask}
| | ${vpp_data}= | interfaceCLI.VPP get interface ip addresses
| | ... | ${node} | ${interface} | ipv4
+#TODO: update based on resolution of bug https://jira.fd.io/browse/VPP-132
| | Should be equal | ${vpp_data[0]['ip']} | ${address}
| | Should be equal | ${vpp_data[0]['netmask']} | ${netmask}
+| Honeycomb removes interface ipv4 addresses
+| | [Documentation] | Removes all configured ipv4 addresses from the specified\
+| | ... | interface.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ... | - interface - name of an interface on the specified node. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Honeycomb removes interface ipv4 addresses \| ${nodes['DUT1']} \
+| | ... | \| GigabitEthernet0/8/0 \|
+| | [Arguments] | ${node} | ${interface}
+| | Remove all ipv4 addresses | ${node} | ${interface}
+
+| IPv4 address from Honeycomb should be empty
+| | [Documentation] | Retrieves interface ipv4 configuration through Honeycomb\
+| | ... | and expects to find no IPv4 addresses.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ... | - interface - name of an interface on the specified node. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| IPv4 address from Honeycomb should be empty\| ${nodes['DUT1']} \
+| | ... | \| GigabitEthernet0/8/0 \|
+| | [Arguments] | ${node} | ${interface}
+| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
+| | Should be empty | ${api_data['ietf-ip:ipv4']['address']
+
+| IPv4 address from VAT should be empty
+| | [Documentation] | Retrieves interface ipv4 configuration through VAT and\
+| | ... | and expects to find no ipv4 addresses.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ... | - interface - name of an interface on the specified node. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| IPv4 config from VAT should be empty \| ${nodes['DUT1']} \
+| | ... | \| GigabitEthernet0/8/0 \|
+| | [Arguments] | ${node} | ${interface}
+| | Run keyword and expect error | *No JSON object could be decoded.*
+| | ... | InterfaceCLI.VPP get interface ip addresses
+| | ... | ${node} | ${interface} | ipv4
+
| Honeycomb sets interface ipv6 configuration
| | [Documentation] | Uses Honeycomb API to change ipv6 configuration\
| | ... | of the specified interface.
diff --git a/tests/suites/honeycomb/1 - interface_management.robot b/tests/suites/honeycomb/1 - interface_management.robot
index ce5fa0492f..01be01a6b0 100644
--- a/tests/suites/honeycomb/1 - interface_management.robot
+++ b/tests/suites/honeycomb/1 - interface_management.robot
@@ -16,8 +16,10 @@
| ${node}= | ${nodes['DUT1']}
| ${interface}= | ${node['interfaces']['port1']['name']}
# Configuration which will be set and verified during tests.
-| @{ipv4_address_mask}= | 192.168.0.2 | 255.255.255.0
-| @{ipv4_address_prefix}= | 192.168.0.3 | ${16}
+| ${ipv4_address}= | 192.168.0.2
+| ${ipv4_address2}= | 192.168.0.3
+| ${ipv4_mask}= | 255.255.255.0
+| ${ipv4_prefix}= | ${24}
| @{ipv4_neighbor}= | 192.168.0.4 | 08:00:27:c0:5d:37
| &{ipv4_settings}= | enabled=${True} | forwarding=${True} | mtu=${9000}
| @{ipv6_address}= | 10::10 | ${64}
@@ -32,6 +34,7 @@
*** Settings ***
| Resource | resources/libraries/robot/default.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
+| Force Tags | honeycomb_sanity
| Documentation | *Honeycomb interface management test suite.*
| ...
| ... | Test suite uses the first interface of the first DUT node.
@@ -40,7 +43,6 @@
| Honeycomb configures and reads interface state
| | [Documentation] | Check if Honeycomb API can modify the admin state of\
| | ... | VPP interfaces.
-| | [Tags] | honeycomb_sanity
| | Given Interface state is | ${node} | ${interface} | down
| | When Honeycomb sets interface state | ${node} | ${interface} | up
| | Then Interface state from Honeycomb should be
@@ -51,28 +53,50 @@
| | ... | ${node} | ${interface} | down
| | And Interface state from VAT should be | ${node} | ${interface} | down
-| Honeycomb modifies interface configuration - ipv4
-| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4.
-| | [Tags] | honeycomb_sanity
-| | When Honeycomb sets interface ipv4 configuration
-| | ... | ${node} | ${interface} | @{ipv4_address_mask} | @{ipv4_neighbor}
-| | ... | ${ipv4_settings}
+| Honeycomb modifies interface configuration - ipv4 (netmask)
+| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\
+| | ... | with address and netmask provided.
+| | When Honeycomb sets interface ipv4 address | ${node} | ${interface}
+| | ... | ${ipv4_address} | ${ipv4_mask} | ${ipv4_settings}
+| | And Honeycomb adds interface ipv4 neighbor
+| | ... | ${node} | ${interface} | @{ipv4_neighbor}
| | Then IPv4 config from Honeycomb should be
-| | ... | ${node} | ${interface} | @{ipv4_address_mask} | @{ipv4_neighbor}
-| | ... | ${ipv4_settings}
+| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
+| | ... | @{ipv4_neighbor} | ${ipv4_settings}
+| | And IPv4 config from VAT should be
+| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
+
+| Honeycomb removes ipv4 address from interface
+| | [Documentation] | Check if Honeycomb API can remove configured ipv4\
+| | ... | addresses from interface.
+| | Given IPv4 config from Honeycomb should be
+| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
+| | ... | @{ipv4_neighbor} | ${ipv4_settings}
| | And IPv4 config from VAT should be
-| | ... | ${node} | ${interface} | @{ipv4_address_mask}
+| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
+| | When Honeycomb removes interface ipv4 addresses | ${node} | ${interface}
+| | Then IPv4 address from Honeycomb should be empty | ${node} |${interface}
+| | And ipv4 address from VAT should be empty | ${node} | ${interface}
+
+| Honeycomb modifies interface configuration - ipv4 (prefix)
+| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\
+| | ... | with address and prefix provided.
+| | [Teardown] | Honeycomb removes interface ipv4 addresses | ${node}
+| | ... | ${interface}
| | When Honeycomb sets interface ipv4 address with prefix
-| | ... | ${node} | ${interface} | @{ipv4_address_prefix}
+| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix}
+| | ... | ${ipv4_settings}
+| | And Honeycomb adds interface ipv4 neighbor
+| | ... | ${node} | ${interface} | @{ipv4_neighbor}
| | Then IPv4 config from Honeycomb should be
-| | ... | ${node} | ${interface} | @{ipv4_address_prefix} | @{ipv4_neighbor}
+| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix}
+| | ... | @{ipv4_neighbor}
| | ... | ${ipv4_settings}
| | And IPv4 config from VAT should be
-| | ... | ${node} | ${interface} | @{ipv4_address_prefix}
+| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix}
| Honeycomb modifies interface configuration - ipv6
| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6.
-| | [Tags] | honeycomb_sanity
| | When Honeycomb sets interface ipv6 configuration
| | ... | ${node} | ${interface} | @{ipv6_address} | @{ipv6_neighbor}
| | ... | ${ipv6_settings}
@@ -85,7 +109,6 @@
| Honeycomb modifies interface configuration - ethernet,routing
| | [Documentation] | Check if Honeycomb API can configure interface ethernet\
| | ... | and routing settings.
-| | [Tags] | honeycomb_sanity
| | When Honeycomb sets interface ethernet and routing configuration
| | ... | ${node} | ${interface} | ${ethernet} | ${routing}
| | Then Interface ethernet and routing configuration from Honeycomb should be
diff --git a/tests/suites/honeycomb/2 - vxlan.robot b/tests/suites/honeycomb/2 - vxlan.robot
index 64bfb3814c..c49c14c9f8 100644
--- a/tests/suites/honeycomb/2 - vxlan.robot
+++ b/tests/suites/honeycomb/2 - vxlan.robot
@@ -32,6 +32,7 @@
| Resource | resources/libraries/robot/honeycomb/vxlan.robot
# import additional VxLAN settings from resource file
| Variables | tests/suites/honeycomb/resources/vxlan.py
+| Force Tags | honeycomb_sanity
| Documentation | *Honeycomb VxLAN management test suite.*
| ...
| ... | Test suite uses the first interface of the first DUT node.
@@ -39,7 +40,6 @@
*** Test Cases ***
| Honeycomb configures VxLAN tunnel
| | [Documentation] | Check if Honeycomb API can configure VxLAN settings.
-| | [Tags] | honeycomb_sanity
| | Given VxLAN configuration from Honeycomb should be empty
| | ... | ${node} | ${vx_interface}
| | And VxLAN configuration from VAT should be empty | ${node}
@@ -52,7 +52,6 @@
| Honeycomb disables VxLAN tunnel
| | [Documentation] | Check if Honeycomb API can reset VxLAN configuration.
-| | [Tags] | honeycomb_sanity
| | Given VxLAN configuration from Honeycomb should be
| | ... | ${node} | ${vx_interface} | ${vxlan_settings}
| | And VxLAN configuration from VAT should be
@@ -65,7 +64,6 @@
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.
-| | [Tags] | honeycomb_sanity
| | [Teardown] | Honeycomb removes VxLAN tunnel settings
| | ... | ${node} | ${vx_interface}
| | Given VxLAN configuration from Honeycomb should be empty
@@ -81,7 +79,6 @@ Honeycomb can configure VXLAN tunnel after one has been disabled
| Honeycomb does not set VxLAN configuration on another interface type
| | [Documentation] | Check if Honeycomb API prevents setting VxLAN\
| | ... | on incorrect interface.
-| | [Tags] | honeycomb_sanity
| | Given VxLAN configuration from Honeycomb should be empty
| | ... | ${node} | ${interface}
| | And VxLAN configuration from VAT should be empty | ${node}
@@ -95,7 +92,6 @@ Honeycomb can configure VXLAN tunnel after one has been disabled
| Honeycomb does not set invalid VxLAN configuration
| | [Documentation] | Check if Honeycomb API prevents setting incorrect VxLAN\
| | ... | settings.
-| | [Tags] | honeycomb_sanity
| | Given VxLAN configuration from Honeycomb should be empty
| | ... | ${node} | ${vx_interface}
| | And VxLAN configuration from VAT should be empty | ${node}
@@ -107,7 +103,6 @@ Honeycomb can configure VXLAN tunnel after one has been disabled
| Honeycomb configures VxLAN tunnel with ipv6
| | [Documentation] | Check if Honeycomb API can configure VxLAN with\
| | ... | ipv6 settings.
-| | [Tags] | honeycomb_sanity
| | [Teardown] | Honeycomb removes VxLAN tunnel settings
| | ... | ${node} | ${vx_interface}
| | Given VxLAN configuration from Honeycomb should be empty
diff --git a/tests/suites/honeycomb/3 - bridge_domain.robot b/tests/suites/honeycomb/3 - bridge_domain.robot
index 8eea9fb359..c2986b65b7 100644
--- a/tests/suites/honeycomb/3 - bridge_domain.robot
+++ b/tests/suites/honeycomb/3 - bridge_domain.robot
@@ -22,12 +22,14 @@
| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True}
| ... | unknown-unicast-flood=${True} | arp-termination=${True}
| &{if_settings}= | split_horizon_group=${1} | bvi=${False}
+| &{if_settings2}= | split_horizon_group=${2} | bvi=${True}
*** Settings ***
| Resource | resources/libraries/robot/default.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
| Suite Teardown | Honeycomb removes all bridge domains | ${node}
+| Force Tags | honeycomb_sanity
| Documentation | *Honeycomb bridge domain management test suite.*
| ...
| ... | Test suite uses the first two interfaces on the first DUT node.
@@ -35,7 +37,6 @@
*** Test Cases ***
| Honeycomb sets up l2 bridge domain
| | [Documentation] | Check if Honeycomb can create bridge domains on VPP node.
-| | [Tags] | honeycomb_sanity
| | When Honeycomb creates first l2 bridge domain
| | ... | ${node} | ${bd1_name} | ${bd_settings}
| | Then Bridge domain configuration from Honeycomb should be
@@ -46,7 +47,6 @@
| Honeycomb manages multiple bridge domains on node
| | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\
| | ... | a single node.
-| | [Tags] | honeycomb_sanity
| | Given Bridge domain configuration from Honeycomb should be
| | ... | ${node} | ${bd1_name} | ${bd_settings}
| | When Honeycomb creates l2 bridge domain
@@ -63,7 +63,6 @@
| Honeycomb removes bridge domains
| | [Documentation] | Check if Honeycomb can remove bridge domains from a VPP\
| | ... | node.
-| | [Tags] | honeycomb_sanity
| | Given Bridge domain configuration from Honeycomb should be
| | ... | ${node} | ${bd1_name} | ${bd_settings}
| | When Honeycomb removes all bridge domains | ${node}
@@ -73,7 +72,6 @@
| Honeycomb assigns interfaces to bridge domain
| | [Documentation] | Check if Honeycomb can assign VPP interfaces to an\
| | ... | existing bridge domain.
-| | [Tags] | honeycomb_sanity
| | Given Honeycomb creates first l2 bridge domain
| | ... | ${node} | ${bd1_name} | ${bd_settings}
| | When Honeycomb adds interfaces to bridge domain
@@ -86,7 +84,6 @@
| Honeycomb removes bridge domain with an interface assigned
| | [Documentation] | Check if Honeycomb can remove a bridge domain that has an\
| | ... | interface assigned to it.
-| | [Tags] | honeycomb_sanity
| | Given Honeycomb should show interfaces assigned to bridge domain
| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings}
| | And VAT should show interfaces assigned to bridge domain
@@ -94,3 +91,16 @@
| | When Honeycomb removes all bridge domains | ${node}
| | Then Honeycomb should show no bridge domains | ${node}
| | And VAT should show no bridge domains | ${node}
+
+| Honeycomb does not assign two bridged virtual interfaces to one bridge domain.
+| | [Documentation] | Check if Honeycomb can assign two bridged virtual\
+| | ... | interfaces to a single bridge domain, and expect to fail.
+| | [Teardown] | Honeycomb removes all bridge domains | ${node}
+| | Given Honeycomb creates first l2 bridge domain
+| | ... | ${node} | ${bd1_name} | ${bd_settings}
+| | When Honeycomb fails to add interfaces to bridge domain
+| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings2}
+| | Then Honeycomb should not show interfaces assigned to bridge domain
+| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings2}
+| | And VAT should not show interfaces assigned to bridge domain
+| | ... | ${node} | ${0} | @{interfaces} | ${if_settings2}
diff --git a/tests/suites/honeycomb/4 - tap.robot b/tests/suites/honeycomb/4 - tap.robot
index e3613c0e48..4bce990ee8 100644
--- a/tests/suites/honeycomb/4 - tap.robot
+++ b/tests/suites/honeycomb/4 - tap.robot
@@ -26,6 +26,7 @@
| Resource | resources/libraries/robot/default.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/tap.robot
+| Force Tags | honeycomb_sanity
| Documentation | *Honeycomb TAP management test suite.*
| ...
| ... | Test suite uses the first interface of the first DUT node.
@@ -33,7 +34,6 @@
*** Test Cases ***
| Honeycomb configures TAP interface
| | [Documentation] | Check if Honeycomb API can configure a TAP interface.
-| | [Tags] | honeycomb_sanity
| | Given TAP configuration from Honeycomb should be empty
| | ... | ${node} | ${tap_interface}
| | And TAP configuration from VAT should be empty
@@ -48,7 +48,6 @@
| Honeycomb modifies existing TAP interface configuration
| | [Documentation] | Check if Honeycomb API can re-configure and existing TAP\
| | ... | interface with new settings.
-| | [Tags] | honeycomb_sanity
| | Given TAP configuration from Honeycomb should be
| | ... | ${node} | ${tap_interface} | ${tap_settings}
| | And TAP configuration from VAT should be
@@ -62,7 +61,6 @@
| Honeycomb removes TAP interface
| | [Documentation] | Check if Honeycomb API can remove TAP interface.
-| | [Tags] | honeycomb_sanity
| | Given TAP configuration from Honeycomb should be
| | ... | ${node} | ${tap_interface} | ${tap_settings2}
| | And TAP configuration from VAT should be
diff --git a/tests/suites/honeycomb/5 - interface_vhost_user.robot b/tests/suites/honeycomb/5 - interface_vhost_user.robot
index 505eb8929b..bba026ebc4 100644
--- a/tests/suites/honeycomb/5 - interface_vhost_user.robot
+++ b/tests/suites/honeycomb/5 - interface_vhost_user.robot
@@ -26,6 +26,7 @@
*** Settings ***
| Resource | resources/libraries/robot/default.robot
| Resource | resources/libraries/robot/honeycomb/vhost_user.robot
+| Force Tags | honeycomb_sanity
| Documentation | *Honeycomb vhost-user interface management test suite.*
| ...
| ... | This test suite tests if it is posible to create, modify and\
@@ -35,7 +36,6 @@
| Honycomb creates vhost-user interface - server
| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\
| | ... | server.
-| | [Tags] | honeycomb_sanity
| | ...
| | Given vhost-user configuration from Honeycomb should be empty
| | ... | ${node} | ${vhost_interface}
@@ -49,7 +49,6 @@
| Honycomb modifies vhost-user interface - server
| | [Documentation] | Check if Honeycomb can modify properties of existing\
| | ... | vhost-user interface, role: server.
-| | [Tags] | honeycomb_sanity
| | ...
| | Given vhost-user configuration from Honeycomb should be
| | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
@@ -75,7 +74,6 @@
| Honycomb deletes vhost-user interface - server
| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\
| | ... | interface, role: server.
-| | [Tags] | honeycomb_sanity
| | ...
| | Given vhost-user configuration from Honeycomb should be
| | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
@@ -89,7 +87,6 @@
| Honycomb creates vhost-user interface - client
| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\
| | ... | client.
-| | [Tags] | honeycomb_sanity
| | ...
| | Given vhost-user configuration from Honeycomb should be empty
| | ... | ${node} | ${vhost_interface}
@@ -103,7 +100,6 @@
| Honycomb modifies vhost-user interface - client
| | [Documentation] | Check if Honeycomb can modify properties of existing\
| | ... | vhost-user interface, role: client.
-| | [Tags] | honeycomb_sanity
| | ...
| | Given vhost-user configuration from Honeycomb should be
| | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
@@ -129,7 +125,6 @@
| Honycomb deletes vhost-user interface - client
| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\
| | ... | interface, role: client.
-| | [Tags] | honeycomb_sanity
| | ...
| | Given vhost-user configuration from Honeycomb should be
| | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
@@ -143,7 +138,6 @@
| 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.
-| | [Tags] | honeycomb_sanity
| | ...
| | When Honeycomb fails setting vhost-user on different interface type
| | ... | ${node} | ${interface} | ${vhost_user_server}
@@ -155,7 +149,6 @@
| Honeycomb does not set invalid vhost-user configuration
| | [Documentation] | Check if Honeycomb refuses to set invalid parameters to\
| | ... | vhost-user interface.
-| | [Tags] | honeycomb_sanity
| | ...
| | Given vhost-user configuration from Honeycomb should be empty
| | ... | ${node} | ${vhost_interface}
diff --git a/tests/suites/honeycomb/6 - sub_interface.robot b/tests/suites/honeycomb/6 - sub_interface.robot
index 49f56914be..0ad6deb0d6 100644
--- a/tests/suites/honeycomb/6 - sub_interface.robot
+++ b/tests/suites/honeycomb/6 - sub_interface.robot
@@ -18,11 +18,11 @@
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Variables | tests/suites/honeycomb/resources/sub_interfaces.py
| Suite Teardown | Honeycomb removes all bridge domains | ${node}
+| Force Tags | honeycomb_sanity
| Documentation | *Honeycomb sub-interface management test suite.*
| ...
| ... | This test suite tests if it is posible to create, modify and \
| ... | delete a sub-interface.
-| Force Tags | honeycomb_sanity
*** Variables ***
| ${node}= | ${nodes['DUT1']}
diff --git a/tests/suites/honeycomb/7 - persistence.robot b/tests/suites/honeycomb/7 - persistence.robot
index f992b64010..ad0aeced8d 100644
--- a/tests/suites/honeycomb/7 - persistence.robot
+++ b/tests/suites/honeycomb/7 - persistence.robot
@@ -21,8 +21,8 @@
| Resource | resources/libraries/robot/honeycomb/persistence.robot
| Suite Setup | Restart Honeycomb and VPP and clear persisted configuration
| ... | ${node}
+| Force Tags | honeycomb_persistence
| Documentation | *Honeycomb configuration persistence test suite.*
-| Force Tags | honeycomb_sanity
*** Test Cases ***
| Honeycomb persists configuration through restart of both Honeycomb and VPP