Update Honeycomb tests 16/1616/11
authorselias <samelias@cisco.com>
Wed, 8 Jun 2016 13:51:19 +0000 (15:51 +0200)
committerMatej Klotton <mklotton@cisco.com>
Tue, 28 Jun 2016 11:54:55 +0000 (11:54 +0000)
 - add new negative test for bridged-virtual-interface setting
 - modify variables in original bd tests to use bvi=False
 - separate interface ipv4 test case into netmask and prefix
 - replace per-testcase tag definitions with per-suite forced tags
 - add separate tag for persistence suite, due to it's long execution time

Change-Id: I79ae699125d4838ed8b394dc80a028e08b4de684
Signed-off-by: selias <samelias@cisco.com>
resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
resources/libraries/robot/honeycomb/bridge_domain.robot
resources/libraries/robot/honeycomb/interfaces.robot
tests/suites/honeycomb/1 - interface_management.robot
tests/suites/honeycomb/2 - vxlan.robot
tests/suites/honeycomb/3 - bridge_domain.robot
tests/suites/honeycomb/4 - tap.robot
tests/suites/honeycomb/5 - interface_vhost_user.robot
tests/suites/honeycomb/6 - sub_interface.robot
tests/suites/honeycomb/7 - persistence.robot

index afd6076..ec928a7 100644 (file)
@@ -448,30 +448,6 @@ class InterfaceKeywords(object):
         return InterfaceKeywords._set_interface_properties(
             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.
@@ -603,30 +579,6 @@ class InterfaceKeywords(object):
         return InterfaceKeywords._set_interface_properties(
             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.
index 4c455ff..76122fa 100644 (file)
 | | 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.
 | | ... | ${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.
 | | ... | - 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:*
 | | | 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.
index 02d0a49..ea1d2b0 100644 (file)
@@ -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.
 | | ...
 | | ... | - 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\
 | | ... | - 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\
 | | ... | - 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
 | | ... | \| 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}
 | | [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.
index ce5fa04..01be01a 100644 (file)
 | ${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
 | | ... | ${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}
 | 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
index 64bfb38..c49c14c 100644 (file)
@@ -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
index 8eea9fb..c2986b6 100644 (file)
 | &{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
 | | 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}
index e3613c0..4bce990 100644 (file)
@@ -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
index 505eb89..bba026e 100644 (file)
@@ -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}
 | 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}
 | 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}
 | 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}
 | 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}
index 49f5691..0ad6deb 100644 (file)
 | 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']}
index f992b64..ad0aece 100644 (file)
@@ -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

©2016 FD.io a Linux Foundation Collaborative Project. All Rights Reserved.
Linux Foundation is a registered trademark of The Linux Foundation. Linux is a registered trademark of Linus Torvalds.
Please see our privacy policy and terms of use.