| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Variables | resources/test_data/honeycomb/sub_interfaces.py
-| Suite Teardown
-| ... | Restart Honeycomb and VPP | ${node}
+| ...
+| Suite Setup | Run Keywords
+| ... | Set Up Honeycomb Functional Test Suite | ${node} | AND
+| ... | Add Interface local0 To Topology | ${node}
+| ...
+| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node}
+| ...
| Force Tags | HC_FUNC
+| ...
| Documentation | *Honeycomb sub-interface management test suite.*
*** Variables ***
| TC01: Honeycomb creates sub-interface
| | [Documentation] | Check if Honeycomb creates a sub-interface.
| | ...
-| | Given Honeycomb sets interface state | ${node} | ${super_if} | down
+| | Given Honeycomb configures interface state | ${node} | ${super_if} | down
| | And sub-interface Operational Data From Honeycomb Should Be empty
| | ... | ${node} | ${super_if} | ${sub_if_id}
| | And interface Operational Data From VAT Should Be empty
| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down
| | Sub-interface state from VAT should be
| | ... | ${node} | ${sub_if_name} | down | down
-| | When Honeycomb sets interface state
+| | When Honeycomb configures interface state
| | ... | ${node} | ${super_if} | up
| | Then interface state from Honeycomb should be
| | ... | ${node} | ${super_if} | up
| | ... | ${node} | ${super_if} | up
| | And interface state from VAT should be
| | ... | ${node} | ${super_if} | up
-| | When Honeycomb sets interface state
+| | When Honeycomb configures interface state
| | ... | ${node} | ${super_if} | down
| | Then interface state from Honeycomb should be
| | ... | ${node} | ${super_if} | down
| TC17: Honeycomb modifies existing sub-interface ipv4 address
| | [Documentation] | Check if Honeycomb can modify an ipv4 address already\
| | ... | configured on the sub-interface.
+| | ...
| | [Teardown] | Honeycomb removes all sub-interface ipv4 addresses
| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | ...
| | Given sub-interface ipv4 address from Honeycomb should be empty
| | ... | ${node} | ${super_if} | ${sub_if_id}
| | And sub-interface ipv4 address from VAT should be empty
| TC18: Honeycomb modifies sub-interface exact tag match
| | [Documentation] | Check if Honeycomb can modify a sub-interface with exact\
| | ... | tag match.
-| | Given Honeycomb sets interface state | ${node} | ${super_if2} | down
+| | ...
+| | Given Honeycomb configures interface state | ${node} | ${super_if2} | down
| | And sub-interface Operational Data From Honeycomb Should Be empty
| | ... | ${node} | ${super_if2} | ${sub_if_id}
| | And interface Operational Data From VAT Should Be empty
| TC21: Honeycomb modifies existing sub-interface ipv6 address
| | [Documentation] | Check if Honeycomb can modify an ipv6 address already\
| | ... | configured on the sub-interface.
+| | ...
| | [Teardown] | Honeycomb removes all sub-interface ipv6 addresses
| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | ...
| | Given sub-interface ipv6 address from Honeycomb should be empty
| | ... | ${node} | ${super_if} | ${sub_if_id}
| | And sub-interface ipv6 address from VAT should be empty
| | ... | ${node} | ${sub_if_name}
| | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']}
+| TC22: Honeycomb can configure unnumbered sub-interface
+| | [Documentation] | Check if Honeycomb can configure an unnumbered interface\
+| | ... | on a sub-interface, borrowing the IP address of 'local0'.
+| | ...
+| | Given sub-interface ipv4 address from Honeycomb should be empty
+| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | And sub-interface ipv4 address from VAT should be empty
+| | ... | ${node} | ${sub_if_name}
+| | And Honeycomb sets interface IPv4 address | ${node}
+| | ... | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | When Honeycomb adds unnumbered configuration to interface
+| | ... | ${node} | ${super_if}.${sub_if_id} | local0
+| | Then IPv4 address from Honeycomb should be
+| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | And IPv4 address from VAT should be
+| | ... | ${node} | local0
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']}
+| | And sub-interface ipv4 address from Honeycomb should be
+| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | And sub-interface ipv4 address from VAT should be
+| | ... | ${node} | ${sub_if_name}
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
+
+| TC23: Honeycomb removes sub-interface unnumbered configuration
+| | [Documentation] | Check if Honeycomb can remove unnumbered configuration\
+| | ... | from a sub-interface.
+| | ...
+| | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node}
+| | ... | local0
+| | ...
+| | Given IPv4 address from Honeycomb should be
+| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | And IPv4 address from VAT should be
+| | ... | ${node} | local0
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']}
+| | And sub-interface ipv4 address from Honeycomb should be
+| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | And sub-interface ipv4 address from VAT should be
+| | ... | ${node} | ${sub_if_name}
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | When Honeycomb removes unnumbered configuration from interface
+| | ... | ${node} | ${super_if}.${sub_if_id}
+| | Then IPv4 address from Honeycomb should be
+| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | And IPv4 address from VAT should be
+| | ... | ${node} | local0
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']}
+| | And sub-interface ipv4 address from Honeycomb should be empty
+| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | And sub-interface ipv4 address from VAT should be empty
+| | ... | ${node} | ${sub_if_name}
+
+| TC24: Honeycomb can configure unnumbered interface using a sub-interface
+| | [Documentation] | Check if Honeycomb can configure an unnumbered interface\
+| | ... | on an interface, borrowing the IP address of a sub-interface.
+| | ...
+| | Given IPv4 address from Honeycomb should be empty | ${node} | local0
+| | And ipv4 address from VAT should be empty | ${node} | local0
+| | And sub-interface ipv4 address from Honeycomb should be empty
+| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | And sub-interface ipv4 address from VAT should be empty
+| | ... | ${node} | ${sub_if_name}
+| | And Honeycomb sets sub-interface ipv4 address
+| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | When Honeycomb adds unnumbered configuration to interface
+| | ... | ${node} | local0 | ${super_if}.${sub_if_id}
+| | Then IPv4 address from Honeycomb should be
+| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | And IPv4 address from VAT should be
+| | ... | ${node} | local0
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']}
+| | And sub-interface ipv4 address from Honeycomb should be
+| | ... | ${node} | ${super_if} | ${sub_if_id}
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
+| | And sub-interface ipv4 address from VAT should be
+| | ... | ${node} | ${sub_if_name}
+| | ... | ${ipv4['address']} | ${ipv4['prefix-length']}
*** Keywords ***
| Set super and sub interfaces up
| | ...
| | [Arguments] | ${node} | ${super_interface} | ${identifier}
| | ...
-| | Honeycomb sets interface state
+| | Honeycomb configures interface state
| | ... | ${node} | ${super_interface} | up
| | Honeycomb sets the sub-interface up
| | ... | ${node} | ${super_interface} | ${identifier}
| | ...
| | [Arguments] | ${node} | ${super_interface} | ${identifier}
| | ...
-| | Honeycomb sets interface state
+| | Honeycomb configures interface state
| | ... | ${node} | ${super_interface} | down
| | Honeycomb sets the sub-interface down
| | ... | ${node} | ${super_interface} | ${identifier}