diff options
author | selias <samelias@cisco.com> | 2016-05-20 13:51:48 +0200 |
---|---|---|
committer | Matej Klotton <mklotton@cisco.com> | 2016-05-30 10:09:35 +0000 |
commit | fdc6e0fc0c675eb4faa699fef7e1e2ca91df2b03 (patch) | |
tree | 04131831a5c50bc1965e6ffe9ad64cc7202c8a91 | |
parent | f94e16167519c74707ec8b606da3f7b97c749c66 (diff) |
Update Honeycomb tests
- add new test cases based on reported bugs
- minor fixes
Change-Id: I8b7464bc1f4e786e3a0ef67ba64d81e1c25ae5cf
Signed-off-by: selias <samelias@cisco.com>
-rw-r--r-- | resources/libraries/python/IPUtil.py | 4 | ||||
-rw-r--r-- | resources/libraries/robot/honeycomb/bridge_domain.robot | 15 | ||||
-rw-r--r-- | resources/libraries/robot/honeycomb/honeycomb.robot | 4 | ||||
-rw-r--r-- | resources/libraries/robot/honeycomb/interfaces.robot | 1 | ||||
-rw-r--r-- | resources/libraries/robot/honeycomb/vxlan.robot | 8 | ||||
-rw-r--r-- | tests/suites/honeycomb/2 - vxlan.robot | 23 | ||||
-rw-r--r-- | tests/suites/honeycomb/3 - bridge_domain.robot | 38 |
7 files changed, 63 insertions, 30 deletions
diff --git a/resources/libraries/python/IPUtil.py b/resources/libraries/python/IPUtil.py index 4b6e2766d8..e364e60cee 100644 --- a/resources/libraries/python/IPUtil.py +++ b/resources/libraries/python/IPUtil.py @@ -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): - return net.netmask + return str(net.netmask) 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)) diff --git a/resources/libraries/robot/honeycomb/bridge_domain.robot b/resources/libraries/robot/honeycomb/bridge_domain.robot index f84bcc3b2f..29510bdd7a 100644 --- a/resources/libraries/robot/honeycomb/bridge_domain.robot +++ b/resources/libraries/robot/honeycomb/bridge_domain.robot @@ -64,7 +64,7 @@ | | ... | \| 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}']} @@ -136,10 +136,13 @@ | | ${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\ @@ -195,7 +198,7 @@ | | ... | | ... | \| 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 diff --git a/resources/libraries/robot/honeycomb/honeycomb.robot b/resources/libraries/robot/honeycomb/honeycomb.robot index c71d6a7257..ee8cfbc408 100644 --- a/resources/libraries/robot/honeycomb/honeycomb.robot +++ b/resources/libraries/robot/honeycomb/honeycomb.robot @@ -28,7 +28,7 @@ | | ... | - 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 @@ -50,7 +50,7 @@ | | ... | 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 diff --git a/resources/libraries/robot/honeycomb/interfaces.robot b/resources/libraries/robot/honeycomb/interfaces.robot index f1f7cea2d5..a187a107ff 100644 --- a/resources/libraries/robot/honeycomb/interfaces.robot +++ b/resources/libraries/robot/honeycomb/interfaces.robot @@ -334,4 +334,3 @@ | | [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} diff --git a/resources/libraries/robot/honeycomb/vxlan.robot b/resources/libraries/robot/honeycomb/vxlan.robot index a57c965fa3..07c5495ec7 100644 --- a/resources/libraries/robot/honeycomb/vxlan.robot +++ b/resources/libraries/robot/honeycomb/vxlan.robot @@ -29,7 +29,7 @@ | | ... | *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} @@ -62,7 +62,7 @@ | | ... | | ... | \| 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} @@ -82,7 +82,7 @@ | | ... | | ... | \| 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\ @@ -145,7 +145,7 @@ | | ... | | ... | \| 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. diff --git a/tests/suites/honeycomb/2 - vxlan.robot b/tests/suites/honeycomb/2 - vxlan.robot index 678717c74f..64bfb3814c 100644 --- a/tests/suites/honeycomb/2 - vxlan.robot +++ b/tests/suites/honeycomb/2 - vxlan.robot @@ -23,6 +23,8 @@ | ... | 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 @@ -60,6 +62,22 @@ | | ... | ${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. @@ -90,13 +108,14 @@ | | [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 -| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6} +| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6_long} | | And VxLAN configuration from VAT should be | | ... | ${node} | ${vxlan_settings_ipv6} - diff --git a/tests/suites/honeycomb/3 - bridge_domain.robot b/tests/suites/honeycomb/3 - bridge_domain.robot index e99b659b3f..d1f1c7b329 100644 --- a/tests/suites/honeycomb/3 - bridge_domain.robot +++ b/tests/suites/honeycomb/3 - bridge_domain.robot @@ -42,19 +42,6 @@ | | 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. @@ -81,3 +68,28 @@ | | 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} |