X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Frobot%2Fhoneycomb%2Fbridge_domain.robot;h=76122fa8f9549a42e392970a2872f1be7a1a94fc;hp=29510bdd7a4fecfb4c0512cc004cb4f907d02a1f;hb=4f5f136f8d445c60db38c9f59622f379f04ff3bb;hpb=fdc6e0fc0c675eb4faa699fef7e1e2ca91df2b03 diff --git a/resources/libraries/robot/honeycomb/bridge_domain.robot b/resources/libraries/robot/honeycomb/bridge_domain.robot index 29510bdd7a..76122fa8f9 100644 --- a/resources/libraries/robot/honeycomb/bridge_domain.robot +++ b/resources/libraries/robot/honeycomb/bridge_domain.robot @@ -16,6 +16,8 @@ | Library | resources.libraries.python.honeycomb.HcAPIKwBridgeDomain.BridgeDomainKeywords | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords | ... | WITH NAME | InterfaceAPI +| Library | resources.libraries.python.InterfaceUtil +| ... | WITH NAME | interfaceCLI *** Keywords *** | Honeycomb creates first L2 bridge domain @@ -23,9 +25,9 @@ | | ... | VPP node. Any other bridge domains will be removed in the process. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary -| | ... | - bd_name - name of the created bridge domain. Type: string -| | ... | - settings - settings for the created bridge domain. Type: dictionary +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - bd_name - Name of the created bridge domain. Type: string +| | ... | - settings - Settings for the created bridge domain. Type: dictionary | | ... | | ... | *Example:* | | ... @@ -39,9 +41,9 @@ | | ... | VPP node. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary -| | ... | - bd_name - name of the created bridge domain. Type: string -| | ... | - settings - settings for the created bridge domain. Type: dictionary +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - bd_name - Name of the created bridge domain. Type: string +| | ... | - settings - Settings for the created bridge domain. Type: dictionary | | ... | | ... | *Example:* | | ... @@ -55,9 +57,9 @@ | | ... | against provided values. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary -| | ... | - bd_name - name of the bridge domain. Type: string -| | ... | - settings - expected settings for the bridge domain. Type: dictionary +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - bd_name - Name of the bridge domain. Type: string +| | ... | - settings - Expected settings for the bridge domain. Type: dictionary | | ... | | ... | *Example:* | | ... @@ -73,9 +75,9 @@ | | ... | against provided values. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary -| | ... | - bd_name - name of the bridge domain. Type: string -| | ... | - settings - expected settings for the bridge domain. Type: dictionary +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - bd_name - Name of the bridge domain. Type: string +| | ... | - settings - Expected settings for the bridge domain. Type: dictionary | | ... | | ... | *Example:* | | ... @@ -93,11 +95,11 @@ | | ... | domain. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary -| | ... | - interface1, interface2 - names of interfaces to assign to bridge\ +| | ... | - 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.\ +| | ... | - bd_name - Name of the bridge domain. Type: string +| | ... | - settings - Bridge domain specific interface settings.\ | | ... | Type: dictionary | | ... | | ... | *Example:* @@ -112,9 +114,9 @@ | | interfaceAPI.Add bridge domain to interface | | ... | ${node} | ${interface2} | ${bd_name} | &{settings} -| Honeycomb should show interfaces assigned to bridge domain -| | [Documentation] | Uses Honeycomb API to verify interface assignment to\ -| | ... | bridge domain. +| 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 @@ -126,6 +128,29 @@ | | ... | | ... | *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. +| | ... +| | ... | *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 should show interfaces assigned to bridge domain \ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| GigabitEthernet0/9/0 \ | | ... | \| bd-04 \| ${{split_horizon_group:2, bvi:False}} \| @@ -144,16 +169,39 @@ | | ... | ${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. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary -| | ... | - index - index of bridge domains on VPP node. Starts from 0,\ +| | ... | - 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 +| | ... | - interface1, interface2 - names of interfaces to check bridge domain\ +| | ... | assignment on. Type: string | | ... | - settings - bridge domain specific interface settings.\ | | ... | Type: dictionary | | ... @@ -174,12 +222,36 @@ | | | 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. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary +| | ... | - node - Information about a DUT node. Type: dictionary | | ... | | ... | *Example:* | | ... @@ -192,7 +264,7 @@ | | ... | bridge domains. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary +| | ... | - node - Information about a DUT node. Type: dictionary | | ... | | ... | *Example:* | | ... @@ -205,7 +277,7 @@ | | [Documentation] | Uses VAT to verify the removal of all bridge domains. | | ... | | ... | *Arguments:* -| | ... | - node - information about a DUT node. Type: dictionary +| | ... | - node - Information about a DUT node. Type: dictionary | | ... | | ... | *Example:* | | ... @@ -213,3 +285,82 @@ | | [Arguments] | ${node} | | Run Keyword And Expect Error | ValueError: No JSON object could be decoded | | ... | VPP get bridge domain data | ${node} + +| Honeycomb adds interface to bridge domain +| | [Documentation] | Uses Honeycomb API to assign interface to a bridge\ +| | ... | domain. +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - interface - Name of interface 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 adds interfaces to bridge domain \| ${nodes['DUT1']} \ +| | ... | \| GigabitEthernet0/8/0 \| bd-04 \ +| | ... | \| ${{split_horizon_group:2, bvi:False}} \| +| | ... +| | [Arguments] | ${node} | ${interface} | ${bd_name} | ${settings} +| | ... +| | interfaceAPI.Add bridge domain to interface +| | ... | ${node} | ${interface} | ${settings['bridge-domain']} +| | ... | ${settings['split-horizon-group']} +| | ... | ${settings['bridged-virtual-interface']} + +| Bridge domain configuration in interface operational data should be empty +| | [Documentation] | Get interface operational data and retrieve bridge +| | ... | domain configuration from it. It should be empty. +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - interface - Name of interface where the bridge domain parameters \ +| | ... | will be checked.Type: string +| | ... +| | ... | *Example:* +| | ... | \| Bridge domain configuration in interface operational data should \ +| | ... | be empty \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| +| | ... +| | [Arguments] | ${node} | ${interface} +| | ... +| | ${if_data}= | interfaceAPI.Get BD Oper Data From Interface +| | ... | ${node} | ${interface} +| | Should be empty | ${if_data} + +| Bridge domain configuration in interface operational data should be +| | [Documentation] | Get interface operational data and retrieve bridge +| | ... | domain configuration from it. Compare the data to the expected one. +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - interface - Name of interface where the bridge domain parameters \ +| | ... | will be checked. Type: string +| | ... | - bd_settings - The referential bridge domain data. Type: dictionary +| | ... +| | ... | *Example:* +| | ... | \| Bridge domain configuration in interface operational data should \ +| | ... | be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${if_bd_settings} \| +| | ... +| | [Arguments] | ${node} | ${interface} | ${bd_settings} +| | ... +| | ${if_data}= | interfaceAPI.Get BD Oper Data From Interface +| | ... | ${node} | ${interface} +| | interfaceAPI.Compare Data Structures | ${if_data} | ${bd_settings} + +| VAT removes bridge domain +| | [Documentation] Remove the specified bridge domain using VAT. +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - bd_id - Bridge domain ID. Type: integer +| | ... +| | ... | *Example:* +| | ... | \| VAT removes bridge domain \ +| | ... | \| ${nodes['DUT1']} \| 1 \| +| | ... +| | [Arguments] | ${node} | ${bd_id} +| | ... +| | Delete Bridge Domain VAT | ${node} | ${bd_id}