Update Honeycomb tests 22/1222/4
authorselias <samelias@cisco.com>
Fri, 20 May 2016 11:51:48 +0000 (13:51 +0200)
committerMatej Klotton <mklotton@cisco.com>
Mon, 30 May 2016 10:09:35 +0000 (10:09 +0000)
 - add new test cases based on reported bugs
 - minor fixes

Change-Id: I8b7464bc1f4e786e3a0ef67ba64d81e1c25ae5cf
Signed-off-by: selias <samelias@cisco.com>
resources/libraries/python/IPUtil.py
resources/libraries/robot/honeycomb/bridge_domain.robot
resources/libraries/robot/honeycomb/honeycomb.robot
resources/libraries/robot/honeycomb/interfaces.robot
resources/libraries/robot/honeycomb/vxlan.robot
tests/suites/honeycomb/2 - vxlan.robot
tests/suites/honeycomb/3 - bridge_domain.robot

index 4b6e276..e364e60 100644 (file)
@@ -56,9 +56,9 @@ def convert_ipv4_netmask_prefix(network):
     net = IPv4Network(u"{0}/{1}".format(temp_address, network), False)
 
     if isinstance(network, int) and (0 < network < 33):
     net = IPv4Network(u"{0}/{1}".format(temp_address, network), False)
 
     if isinstance(network, int) and (0 < network < 33):
-        return net.netmask
+        return str(net.netmask)
     elif isinstance(network, basestring):
     elif isinstance(network, basestring):
-        return net.prefixlen
+        return int(net.prefixlen)
     else:
         raise Exception("Value {0} is not a valid ipv4 netmask or network"
                         " prefix length".format(network))
     else:
         raise Exception("Value {0} is not a valid ipv4 netmask or network"
                         " prefix length".format(network))
index f84bcc3..29510bd 100644 (file)
@@ -64,7 +64,7 @@
 | | ... | \| Bridge domain configuration from Honeycomb should be \
 | | ... | \| ${nodes['DUT1']} \| bd-04 \| ${{flood:True,learn:False}} \|
 | | [Arguments] | ${node} | ${bd_name} | ${settings}
 | | ... | \| Bridge domain configuration from Honeycomb should be \
 | | ... | \| ${nodes['DUT1']} \| bd-04 \| ${{flood:True,learn:False}} \|
 | | [Arguments] | ${node} | ${bd_name} | ${settings}
-| | ${api_data}= | Get bd cfg data | ${node} | ${bd_name}
+| | ${api_data}= | Get bd oper data | ${node} | ${bd_name}
 | | :FOR | ${key} | IN | @{settings.keys()}
 | | | Should be equal | ${settings['${key}']} | ${api_data['${key}']}
 
 | | :FOR | ${key} | IN | @{settings.keys()}
 | | | Should be equal | ${settings['${key}']} | ${api_data['${key}']}
 
 | | ${if2_data}= | interfaceAPI.Get interface oper data
 | | ... | ${node} | ${interface2}
 | | Should be equal | ${if1_data['v3po:l2']['bridge-domain']}
 | | ${if2_data}= | interfaceAPI.Get interface oper data
 | | ... | ${node} | ${interface2}
 | | Should be equal | ${if1_data['v3po:l2']['bridge-domain']}
-| | ... | ${if1_data['v3po:l2']['bridge-domain']} | ${bd_name}
-| | :FOR | ${key} | IN | @{settings.keys()}
-| | | Should be equal | ${if1_data['v3po:l2']['${key}']}
-| | | ... | ${if2_data['v3po:l2']['${key}']} | ${settings['${key}']}
+| | ... | ${if2_data['v3po:l2']['bridge-domain']} | ${bd_name}
+| | Should be equal | ${if1_data['v3po:l2']['split-horizon-group']}
+| | ... | ${if2_data['v3po:l2']['split-horizon-group']}
+| | ... | ${settings['split_horizon_group']}
+| | Should be equal | ${if1_data['v3po:l2']['bridged-virtual-interface']}
+| | ... | ${if2_data['v3po:l2']['bridged-virtual-interface']}
+| | ... | ${settings['bvi']}
 
 | VAT should show interfaces assigned to bridge domain
 | | [Documentation] | Uses VAT to verify interface assignment to\
 
 | VAT should show interfaces assigned to bridge domain
 | | [Documentation] | Uses VAT to verify interface assignment to\
 | | ...
 | | ... | \| Honeycomb should show no bridge domains \| ${nodes['DUT1']} \|
 | | [Arguments] | ${node}
 | | ...
 | | ... | \| Honeycomb should show no bridge domains \| ${nodes['DUT1']} \|
 | | [Arguments] | ${node}
-| | ${bd_data} | Get all BDs cfg data | ${node}
+| | ${bd_data}= | Get all BDs oper data | ${node}
 | | Should be empty | ${bd_data}
 
 | VAT should show no bridge domains
 | | Should be empty | ${bd_data}
 
 | VAT should show no bridge domains
index c71d6a7..ee8cfbc 100644 (file)
@@ -28,7 +28,7 @@
 | | ... | - 4. Configure honeycomb nodes using HTTP PUT request
 | | ...
 | | ... | _Arguments:_
 | | ... | - 4. Configure honeycomb nodes using HTTP PUT request
 | | ...
 | | ... | _Arguments:_
-| | ... | - ${duts} - list of nodes to setup Honeycomb on
+| | ... | - duts - list of nodes to setup Honeycomb on
 | | ...
 | | ... | _Used global constants and variables:_
 | | ... | - RESOURCES_TPL_HC - path to honeycomb templates directory
 | | ...
 | | ... | _Used global constants and variables:_
 | | ... | - RESOURCES_TPL_HC - path to honeycomb templates directory
@@ -50,7 +50,7 @@
 | | ... | 200 -> 404 -> connection refused (pass)
 | | ...
 | | ... | _Arguments:_
 | | ... | 200 -> 404 -> connection refused (pass)
 | | ...
 | | ... | _Arguments:_
-| | ... | - ${duts} - list of nodes to stop Honeycomb on
+| | ... | - duts - list of nodes to stop Honeycomb on
 | | ...
 | | ... | _Used global constants and variables:_
 | | ... | - RESOURCES_TPL_HC - path to honeycomb templates directory
 | | ...
 | | ... | _Used global constants and variables:_
 | | ... | - RESOURCES_TPL_HC - path to honeycomb templates directory
index f1f7cea..a187a10 100644 (file)
 | | [Arguments] | ${node} | ${interface} | ${mtu} | ${vrf-id}
 | | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface}
 | | Should be equal | ${vat_data['mtu']} | ${mtu}
 | | [Arguments] | ${node} | ${interface} | ${mtu} | ${vrf-id}
 | | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface}
 | | Should be equal | ${vat_data['mtu']} | ${mtu}
-| | Should be equal | ${vat_data['sub_inner_vlan_id']} | ${vrf-id}
index a57c965..07c5495 100644 (file)
@@ -29,7 +29,7 @@
 | | ... | *Example:*
 | | ... | \| Honeycomb sets interface VxLAN configuration \
 | | ... | \|${nodes['DUT1']} \| vxlan_01 \| ${{'src':'192.168.0.2',\
 | | ... | *Example:*
 | | ... | \| Honeycomb sets interface VxLAN configuration \
 | | ... | \|${nodes['DUT1']} \| vxlan_01 \| ${{'src':'192.168.0.2',\
-| | ... |  'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
+| | ... | 'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | interfaceAPI.Create VxLAN interface | ${node} | ${interface}
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | interfaceAPI.Create VxLAN interface | ${node} | ${interface}
@@ -62,7 +62,7 @@
 | | ...
 | | ... | \| VxLAN configuration from Honeycomb should be \
 | | ... | \|${nodes['DUT1']} \| vxlan_01 \| ${{'src':'192.168.0.2',\
 | | ...
 | | ... | \| VxLAN configuration from Honeycomb should be \
 | | ... | \|${nodes['DUT1']} \| vxlan_01 \| ${{'src':'192.168.0.2',\
-| | ... |  'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
+| | ... | 'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
@@ -82,7 +82,7 @@
 | | ...
 | | ... | \| VxLAN configuration from Honeycomb should be \
 | | ... | \|${nodes['DUT1']} \| ${{'src':'192.168.0.2',\
 | | ...
 | | ... | \| VxLAN configuration from Honeycomb should be \
 | | ... | \|${nodes['DUT1']} \| ${{'src':'192.168.0.2',\
-| | ... |  'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
+| | ... | 'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
 | | ...
 | | ... | *Note:*
 | | ... | Due to the difficulty of identifying newly created interfaces by name\
 | | ...
 | | ... | *Note:*
 | | ... | Due to the difficulty of identifying newly created interfaces by name\
 | | ...
 | | ... | \| Honeycomb fails setting VxLan on different interface type\
 | | ... | \|${nodes['DUT1']} \| GigabitEthernet0/9/0 \| ${{'src':'192.168.0.2',\
 | | ...
 | | ... | \| Honeycomb fails setting VxLan on different interface type\
 | | ... | \|${nodes['DUT1']} \| GigabitEthernet0/9/0 \| ${{'src':'192.168.0.2',\
-| | ... |  'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
+| | ... | 'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | Run Keyword And Expect Error | HoneycombError: * Status code: 500.
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | Run Keyword And Expect Error | HoneycombError: * Status code: 500.
index 678717c..64bfb38 100644 (file)
@@ -23,6 +23,8 @@
 | ... | encap-vrf-id=${0}
 | &{vxlan_settings_ipv6}= | src=10::10 | dst=10::11 | vni=${88}
 | ... | encap-vrf-id=${0}
 | ... | 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
 
 *** Settings ***
 | Resource | resources/libraries/robot/default.robot
 | | ... | ${node} | ${vx_interface}
 | | And VxLAN configuration from VAT should be empty | ${node}
 
 | | ... | ${node} | ${vx_interface}
 | | And VxLAN configuration from VAT should be empty | ${node}
 
+Honeycomb can configure VXLAN tunnel after one has been disabled
+| | [Documentation] | Check if Honeycomb API can configure VxLAN settings again\
+| | ... | after previous settings have been removed.
+| | [Tags] | honeycomb_sanity
+| | [Teardown] | Honeycomb removes VxLAN tunnel settings
+| | ... | ${node} | ${vx_interface}
+| | Given VxLAN configuration from Honeycomb should be empty
+| | ... | ${node} | ${vx_interface}
+| | And VxLAN configuration from VAT should be empty | ${node}
+| | When Honeycomb sets interface VxLAN configuration
+| | ... | ${node} | ${vx_interface} | ${vxlan_settings2}
+| | Then VxLAN configuration from Honeycomb should be
+| | ... | ${node} | ${vx_interface} | ${vxlan_settings2}
+| | And VxLAN configuration from VAT should be
+| | ... | ${node} | ${vxlan_settings2}
+
 | Honeycomb does not set VxLAN configuration on another interface type
 | | [Documentation] | Check if Honeycomb API prevents setting VxLAN\
 | | ... | on incorrect interface.
 | Honeycomb does not set VxLAN configuration on another interface type
 | | [Documentation] | Check if Honeycomb API prevents setting VxLAN\
 | | ... | on incorrect interface.
 | | [Documentation] | Check if Honeycomb API can configure VxLAN with\
 | | ... | ipv6 settings.
 | | [Tags] | honeycomb_sanity
 | | [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
 | | ... | ${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
 | | 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}
+| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6_long}
 | | And VxLAN configuration from VAT should be
 | | ... | ${node} | ${vxlan_settings_ipv6}
 | | And VxLAN configuration from VAT should be
 | | ... | ${node} | ${vxlan_settings_ipv6}
-
index e99b659..d1f1c7b 100644 (file)
 | | And Bridge domain configuration from VAT should be
 | | ... | ${node} | ${0} | ${bd_settings}
 
 | | And Bridge domain configuration from VAT should be
 | | ... | ${node} | ${0} | ${bd_settings}
 
-| Honeycomb assigns interfaces to bridge domain
-| | [Documentation] | Check if Honeycomb can assign VPP interfaces to an\
-| | ... | existing bridge domain.
-| | [Tags] | honeycomb_sanity
-| | Given Bridge domain configuration from Honeycomb should be
-| | ... | ${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 manages multiple bridge domains on node
 | | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\
 | | ... | a single node.
 | Honeycomb manages multiple bridge domains on node
 | | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\
 | | ... | a single node.
 | | When Honeycomb removes all bridge domains | ${node}
 | | Then Honeycomb should show no bridge domains | ${node}
 | | And VAT should show no bridge domains | ${node}
 | | 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.
+| | [Tags] | honeycomb_sanity
+| | 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.
+| | [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
+| | ... | ${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}