CSIT-562 HC Test: Persistence suite rework, part1 22/6622/4
authorselias <samelias@cisco.com>
Tue, 9 May 2017 10:38:35 +0000 (12:38 +0200)
committerSamuel Eliáš <samelias@cisco.com>
Wed, 17 May 2017 07:27:59 +0000 (07:27 +0000)
 - rename keywords that check operational data, to distinguish from keywords
that check configuration data
 - modify existing persistence cases so that they don't affect each other
 - add feature-specific persistence tests for: Interface Management, L2 bridge
 - move Interface Management variables to separate file so they can be reused
 - add new tag HC_PERSIST to execute persistence tests separately
 - update existing Honeycomb tags to comply with CSIT conventions

More feature-specific tests to be added in part2.

Change-Id: I8657da4bb9e9a3d5261c04f5f1999b2572f605ef
Signed-off-by: selias <samelias@cisco.com>
43 files changed:
bootstrap-hc2vpp-integration.sh
bootstrap-hc2vpp-verify.sh
docs/tag_documentation.rst
resources/libraries/robot/honeycomb/bridge_domain.robot
resources/libraries/robot/honeycomb/dhcp.robot
resources/libraries/robot/honeycomb/honeycomb.robot
resources/libraries/robot/honeycomb/interfaces.robot
resources/libraries/robot/honeycomb/nat.robot
resources/libraries/robot/honeycomb/nsh.robot
resources/libraries/robot/honeycomb/persistence.robot
resources/libraries/robot/honeycomb/policer.robot
resources/libraries/robot/honeycomb/port_mirroring.robot
resources/libraries/robot/honeycomb/slaac.robot
resources/libraries/robot/honeycomb/sub_interface.robot
resources/libraries/robot/honeycomb/tap.robot
resources/libraries/robot/honeycomb/vhost_user.robot
resources/libraries/robot/honeycomb/vxlan.robot
resources/libraries/robot/honeycomb/vxlan_gpe.robot
resources/test_data/honeycomb/interface_ip.py [new file with mode: 0644]
tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot
tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot
tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot
tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot
tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot
tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-notif-apihcnc-func.robot
tests/func/honeycomb/mgmt-statepersist-apihc-func.robot

index 21b4ae7..ab5fa22 100755 (executable)
@@ -224,7 +224,7 @@ fi
 PYTHONPATH=`pwd` pybot -L TRACE -W 136\
     -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \
     --suite "tests.func" \
-    --include honeycomb_sanity \
+    --include HC_FUNC \
     --noncritical EXPECTED_FAILING \
     tests/
 
index 57fb8a6..196fb80 100755 (executable)
@@ -220,7 +220,7 @@ fi
 PYTHONPATH=`pwd` pybot -L TRACE -W 136\
     -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \
     --suite "tests.func" \
-    --include honeycomb_sanity \
+    --include HC_FUNC \
     --noncritical EXPECTED_FAILING \
     tests/
 
index a10ac0e..10d00cc 100644 (file)
@@ -439,3 +439,20 @@ Multi-threading tags
 
     8 worker threads pinned to 8 dedicated physical cores. 4 receive queues per
     interface. Main thread pinned to core 0.
+
+
+Honeycomb tags
+--------------
+
+.. topic:: HC_FUNC
+
+    Honeycomb functional test cases.
+
+.. topic:: HC_PERSIST
+
+    Honeycomb persistence test cases.
+
+.. topic:: HC_REST_ONLY
+
+    (Exclusion tag) Honeycomb test cases that cannot be run in Netconf mode
+    using ODL client for Restfconf -> Netconf translation.
index a286d11..8f17eda 100644 (file)
@@ -52,7 +52,7 @@
 | | [Arguments] | ${node} | ${bd_name} | ${settings}
 | | Add BD | ${node} | ${bd_name} | &{settings}
 
-| Bridge domain configuration from Honeycomb should be
+| Bridge domain Operational Data From Honeycomb Should Be
 | | [Documentation] | Uses Honeycomb API to verify bridge domain settings\
 | | ... | against provided values.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Bridge domain configuration from Honeycomb should be \
+| | ... | \| Bridge domain Operational Data From Honeycomb Should Be \
 | | ... | \| ${nodes['DUT1']} \| bd-04 \| ${{flood:True,learn:False}} \|
 | | [Arguments] | ${node} | ${bd_name} | ${settings}
 | | ${api_data}= | Get bd oper data | ${node} | ${bd_name}
 | | :FOR | ${key} | IN | @{settings.keys()}
 | | | Should be equal | ${settings['${key}']} | ${api_data['${key}']}
 
-| Bridge domain configuration from VAT should be
+| Bridge domain Operational Data From VAT Should Be
 | | [Documentation] | Uses VAT to verify bridge domain settings\
 | | ... | against provided values.
 | | ...
@@ -81,7 +81,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Bridge domain configuration from VAT should be \
+| | ... | \| Bridge domain Operational Data From VAT Should Be \
 | | ... | \| ${nodes['DUT1']} \| bd-04 \| ${{flood:True,learn:False}} \|
 | | [Arguments] | ${node} | ${bd_index} | ${settings}
 | | ${vat_data}= | VPP get bridge domain data | ${node}
 | | ... | ${settings['split-horizon-group']}
 | | ... | ${settings['bridged-virtual-interface']}
 
-| Bridge domain configuration in interface operational data should be empty
+| Bridge domain Operational Interface Assignment should be empty
 | | [Documentation] | Get interface operational data and retrieve bridge
 | | ... | domain configuration from it. It should be empty.
 | | ...
 | | ... | will be checked.Type: string
 | | ...
 | | ... | *Example:*
-| | ... | \| Bridge domain configuration in interface operational data should \
+| | ... | \| Bridge domain Operational Interface Assignment should \
 | | ... | be empty \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
 | | ... | ${node} | ${interface}
 | | Should be empty | ${if_data}
 
-| Bridge domain configuration in interface operational data should be
+| Bridge domain Operational Interface Assignment should be
 | | [Documentation] | Get interface operational data and retrieve bridge
 | | ... | domain configuration from it. Compare the data to the expected one.
 | | ...
 | | ... | - bd_settings - The referential bridge domain data. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Bridge domain configuration in interface operational data should \
+| | ... | \| Bridge domain Operational Interface Assignment should \
 | | ... | be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${if_bd_settings} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${bd_settings}
index d3fe942..966c73f 100644 (file)
@@ -17,7 +17,7 @@
 | Documentation | Keywords used to test Honeycomb DHCP features.
 
 *** Keywords ***
-| DHCP relay configuration from Honeycomb should be empty
+| DHCP relay Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Uses Honeycomb API to retrieve DHCP relay configuration\
 | | ... | and expects to fail.
 | | ...
@@ -26,7 +26,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| DHCP relay configuration from Honeycomb should be empty \
+| | ... | \| DHCP relay Operational Data From Honeycomb Should Be empty \
 | | ... | \| ${nodes['DUT1']} \|
 | | [Arguments] | ${node}
 | | Run keyword and expect error | *Status code: 404*
index 27aa078..7813ee2 100644 (file)
@@ -85,9 +85,9 @@
 | | ... | \| Restart Honeycomb and VPP and clear persisted configuration \
 | | ... | \| ${nodes['DUT1']} \|
 | | [Arguments] | ${node}
-| | Log | Performing clean restart of Honeycomb and VPP. | console=True
 | | Stop Honeycomb service on DUTs | ${node}
 | | Clear persisted Honeycomb configuration | ${node}
+| | Log | Persistence files cleared. | console=True
 | | Setup DUT | ${node}
 | | Setup Honeycomb service on DUTs | ${node}
 
 | | ...
 | | ... | \| Restart Honeycomb and VPP \| ${nodes['DUT1']} \|
 | | [Arguments] | ${node}
-| | Log | Performing clean restart of Honeycomb and VPP. | console=True
 | | Restart Honeycomb and VPP on DUTs | ${node}
 | | Wait until keyword succeeds | 4min | 16sec
 | | ... | Check honeycomb startup state | ${node}
index a08ce3f..2ab97e0 100644 (file)
 | | | interfaceAPI.Configure interface ethernet
 | | | ... | ${node} | ${interface} | ${key} | ${ethernet['${key}']}
 
-| Interface ethernet configuration from Honeycomb should be
+| Interface ethernet Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves interface ethernet configuration\
 | | ... | through Honeycomb and compares with settings supplied in arguments.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Interface ethernet configuration from Honeycomb should be \
+| | ... | \| Interface ethernet Operational Data From Honeycomb Should Be \
 | | ... | should be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \
 | | ... | \| ${{'mtu': 1500}} \|
 | | [Arguments] | ${node} | ${interface} | ${ethernet}
 | | | Should be equal
 | | | ... | ${api_data['v3po:ethernet']['${key}']} | ${ethernet['${key}']}
 
-| Interface ethernet configuration from VAT should be
+| Interface ethernet Operational Data From VAT Should Be
 | | [Documentation] | Retrieves interface ethernet configuration\
 | | ... | through VAT and compares with settings supplied in arguments.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Interface ethernet configuration from VAT should be \
+| | ... | \| Interface ethernet Operational Data From VAT Should Be \
 | | ... | should be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1500} \|
 | | [Arguments] | ${node} | ${interface} | ${mtu}
 | | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface}
 | | ... | ${node} | ${interface}
 | | Should be equal | ${vat_data} | ${vrf_id}
 
-| Interface configuration from Honeycomb should be empty
+| Interface Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Attempts to retrieve interface configuration through\
 | | ... | Honeycomb and expects to get empty dictionary.
 | | ...
 | | ... | string
 | | ...
 | | ... | *Example:*
-| | ... | \| Interface configuration from Honeycomb should be empty\
+| | ... | \| Interface Operational Data 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}
 
-| Interface configuration from VAT should be empty
+| Interface Operational Data From VAT Should Be empty
 | | [Documentation] | Attempts to retrieve Interface configuration through\
 | | ... | VAT and expects to get empty dictionary.
 | | ...
 | | ... | string
 | | ...
 | | ... | *Example:*
-| | ... | \| Interface configuration from VAT should be empty\
+| | ... | \| Interface Operational Data From VAT Should Be empty\
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \|
 | | ...
 | | [Arguments] | ${node} | ${interface} |
index 17cda47..81bffe6 100644 (file)
@@ -18,7 +18,7 @@
 | Documentation | Keywords used to test Honeycomb NAT node.
 
 *** Keywords ***
-| NAT configuration from Honeycomb should be empty
+| NAT Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Uses Honeycomb API to retrieve NAT operational data\
 | | ... | and expects to find only default values.
 | | ...
@@ -28,7 +28,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| NAT configuration from Honeycomb should be empty \
+| | ... | \| NAT Operational Data From Honeycomb Should Be empty \
 | | ... | \| ${nodes['DUT1']} \| ${default_settings} \|
 | | [Arguments] | ${node} | ${default_settings}
 | | ${data}= | Get NAT Oper data | ${node}
 | | Configure NAT on interface
 | | ... | ${node} | ${interface} | ${direction} | ${True}
 
-| NAT interface configuration from Honeycomb should be
+| NAT interface Operational Data From Honeycomb Should Be
 | | [Documentation] | Uses Honeycomb API to retrieve interface operational data\
 | | ... | and compares the NAT section against expected settings.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| NAT interface configuration from Honeycomb should be \
+| | ... | \| NAT interface Operational Data From Honeycomb Should Be \
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| outbound \|
 | | [Arguments] | ${node} | ${interface} | ${direction}
 | | ${data}= | Get interface oper data | ${node} | ${interface}
 | | Variable should exist | ${data['interface-nat:nat']['${direction}']}
 
-| NAT interface configuration from Honeycomb should be empty
+| NAT interface Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Uses Honeycomb API to retrieve interface operational data\
 | | ... | and expects to find no data for the given direction.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| NAT interface configuration from Honeycomb should be empty \
+| | ... | \| NAT interface Operational Data From Honeycomb Should Be empty \
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| outbound \|
 | | [Arguments] | ${node} | ${interface} | ${direction}
 | | ${data}= | Get interface oper data | ${node} | ${interface}
 | | Variable should not exist | ${data['interface-nat:nat']['${direction}']}
 
-| NAT interface configuration from VAT should be
+| NAT interface Operational Data From VAT Should Be
 | | [Documentation] | Uses Honeycomb API to retrieve NAT configured interfaces\
 | | ... | and compares with expected settings.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| NAT interface configuration from VAT should be \
+| | ... | \| NAT interface Operational Data From VAT Should Be \
 | | ... | \| ${nodes['DUT1']} \| ${settings} \|
 | | [Arguments] | ${node} | ${settings}
 | | ${data}= | VPP get NAT interfaces | ${node}
index f2a8ffd..434c72f 100644 (file)
@@ -19,7 +19,7 @@
 | Documentation | Keywords used to test Honeycomb NSH node.
 
 *** Keywords ***
-| NSH configuration from Honeycomb should be empty
+| NSH Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Uses Honeycomb API to retrieve NSH configuration\
 | | ... | and expects to fail.
 | | ...
@@ -28,7 +28,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| NSH configuration from Honeycomb should be empty \
+| | ... | \| NSH Operational Data From Honeycomb Should Be empty \
 | | ... | \| ${nodes['DUT1']} \|
 | | [Arguments] | ${node}
 | | Run keyword and expect error | *Status code: 404*
index a1c08c2..2744ba6 100644 (file)
@@ -87,7 +87,7 @@
 | | Setup DUT | ${node}
 | | Setup Honeycomb service on DUTs | ${node}
 
-| Honeycomb configures every setting
+| Multi-Feature Persistence Test Configuration
 | | [Documentation] | Uses Honeycomb to set basic settings for VxLAN,\
 | | ... | bridge domains, TAP, vhost-user and VLAN.
 | | ...
@@ -97,7 +97,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Honeycomb configures every setting \| ${nodes['DUT1']} \
+| | ... | \| Multi-Feature Persistence Test Configuration \| ${nodes['DUT1']} \
 | | ... | \| GigabitEthernet0/8/0 \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
 | | Honeycomb configures tag rewrite
 | | ... | ${node} | ${interface} | ${sub_if_id} | ${tag_rewrite_pop_1}
 
-| Honeycomb and VPP should verify every setting
+| Multi-Feature persistence Test Verification
 | | [Documentation] | Uses Honeycomb and VAT to verify settings for VxLAN,\
 | | ... | bridge domains, TAP, vhost-user and VLAN.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Honeycomb and VPP should verify every setting \| ${nodes['DUT1']} \
+| | ... | \| Multi-Feature persistence Test Verification \| ${nodes['DUT1']} \
 | | ... | \| GigabitEthernet0/8/0 \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
-| | VxLAN configuration from Honeycomb should be
+| | VxLAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vx_interface} | ${vxlan_settings}
-| | VxLAN configuration from VAT should be
+| | VxLAN Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_settings}
-| | Bridge domain configuration from Honeycomb should be
+| | Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd_name} | ${bd_settings}
-| | Bridge domain configuration from VAT should be
+| | Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${0} | ${bd_settings}
-| | TAP configuration from Honeycomb should be
+| | TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
-| | TAP configuration from VAT should be
+| | TAP Operational Data From VAT Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
-| | Vhost-user configuration from Honeycomb should be
+| | Vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
-| | Vhost-user configuration from VAT should be
+| | Vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_client}
-| | Sub-interface configuration from Honeycomb should be
+| | Sub-interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface} | ${sub_if_id} | ${sub_if_1_oper}
-| | Sub-interface configuration from VAT should be
+| | Sub-interface Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
 | | Interface state from Honeycomb should be | ${node} | ${interface} | up
 | | Interface state from VAT should be | ${node} | ${interface} | up
-| | Sub-interface bridge domain configuration from Honeycomb should be
+| | Sub-interface bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface} | ${sub_if_id} | ${sub_bd_settings}
-| | Sub-interface bridge domain configuration from VAT should be
+| | Sub-interface bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if_name} | ${sub_bd_settings}
 | | Rewrite tag from Honeycomb should be
 | | ... | ${node} | ${interface} | ${sub_if_id} | ${tag_rewrite_pop_1_oper}
 | | Rewrite tag from VAT should be
 | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT}
+| | ${data_conf}= | InterfaceAPI.Get all interfaces cfg data | ${node}
+| | ${data_oper}= | InterfaceAPI.Get all interfaces oper data | ${node}
+| | Compare interface lists | ${data_conf} | ${data_oper}
 
 | Honeycomb and VPP should have default configuration
 | | [Documentation] | Uses Honeycomb and VAT to verify settings for VxLAN,\
 | | ... | ${nodes['DUT1']} \|
 | | ...
 | | [Arguments] | ${node}
-| | VxLAN configuration from Honeycomb should be empty
+| | VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
-| | VxLAN configuration from VAT should be empty | ${node}
+| | VxLAN Operational Data From VAT Should Be empty | ${node}
 | | Honeycomb should show no bridge domains | ${node}
 | | VAT should show no bridge domains | ${node}
-| | TAP configuration from Honeycomb should be empty
+| | TAP Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${tap_interface}
-| | TAP configuration from VAT should be empty
+| | TAP Operational Data From VAT Should Be empty
 | | ... | ${node} | ${tap_interface}
-| | Vhost-user configuration from Honeycomb should be empty
+| | Vhost-user Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vhost_interface}
-| | Vhost-user configuration from VAT should be empty
+| | Vhost-user Operational Data From VAT Should Be empty
 | | ... | ${node}
 | | interface state from Honeycomb should be
 | | ... | ${node} | ${interface} | down
 | | And interface state from VAT should be
 | | ... | ${node} | ${interface} | down
 
-| Honeycomb and VPP should not have default configuration
-| | [Documentation] | Uses Honeycomb and VAT to verify settings for VxLAN,\
-| | ... | bridge domains, TAP, vhost-user and VLAN. Expects any\
-| | ... | configuration other than default.
+| Persistence file is damaged during restart
+| | [Documentation] | Shuts down Honeycomb, modifies persistence files to\
+| | ... | simulate damage, then restarts VPP and starts up Honeycomb again.
 | | ...
 | | ... | *Arguments:*
 | | ... | - node - information about a DUT node. Type: dictionary
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Honeycomb and VPP should not have default configuration \
-| | ... | \| ${nodes['DUT1']} \|
+| | ... | \| Persistence file is damaged during restart \| ${nodes['DUT1']} \|
 | | ...
 | | [Arguments] | ${node}
-| | Run keyword and expect error | *
-| | ... | Honeycomb and VPP should have default configuration | ${node}
+| | Stop Honeycomb service on DUTs | ${node}
+| | Modify persistence files | ${node} | { | abc
+| | Setup DUT | ${node}
+| | Setup Honeycomb service on DUTs | ${node}
 
-| Honeycomb should show no rogue interfaces
-| | [Documentation] | Checks if operational data contains interfaces not\
-| | ... | present in configuration and vice versa.
+| Log persisted configuration on node
+| | [Documentation] | Logs the content of Honeycomb's persitence files.
 | | ...
 | | ... | *Arguments:*
 | | ... | - node - information about a DUT node. Type: dictionary
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Honeycomb should show no rogue interfaces \| ${nodes['DUT1']} \|
+| | ... | \| Log persisted configuration on node \| ${nodes['DUT1']} \|
 | | ...
 | | [Arguments] | ${node}
-| | ${data_conf}= | InterfaceAPI.Get all interfaces cfg data | ${node}
-| | ${data_oper}= | InterfaceAPI.Get all interfaces oper data | ${node}
-| | Compare interface lists | ${data_conf} | ${data_oper}
+| | Log persisted configuration | ${node}
 
-| Persistence file is damaged during restart
-| | [Documentation] | Shuts down Honeycomb, modifies persistence files to\
-| | ... | simulate damage, then restarts VPP and starts up Honeycomb again.
+| Interface Persistence Setup
+| | [Documentation] | Configure interface state, ipv4 and ipv6 addresses
+| | ... | and neighbors.
 | | ...
 | | ... | *Arguments:*
 | | ... | - node - information about a DUT node. Type: dictionary
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Persistence file is damaged during restart \| ${nodes['DUT1']} \|
+| | ... | \| Interface Persistence Setup \| ${nodes['DUT1']} \|
 | | ...
 | | [Arguments] | ${node}
-| | Stop Honeycomb service on DUTs | ${node}
-| | Modify persistence files | ${node} | { | abc
-| | Setup DUT | ${node}
-| | Setup Honeycomb service on DUTs | ${node}
+| | Honeycomb and VPP should have default configuration | ${node}
+| | Import Variables | resources/test_data/honeycomb/interface_ip.py
+| | Honeycomb sets interface state | ${node} | ${interface} | up
+| | Honeycomb sets interface ipv4 address with prefix
+| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
+| | Honeycomb adds interface ipv4 neighbor
+| | ... | ${node} | ${interface} | ${ipv4_neighbor} | ${neighbor_mac}
+| | Honeycomb sets interface ipv6 address
+| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix}
+| | Honeycomb adds interface ipv6 neighbor
+| | ... | ${node} | ${interface} | ${ipv6_neighbor} | ${neighbor_mac}
 
-| Log persisted configuration on node
-| | [Documentation] | Logs the content of Honeycomb's persitence files.
+| Interface Persistence Check
+| | [Documentation] | Verify interface state, ipv4 and ipv6 addresses
+| | ... | and neighbors.
 | | ...
 | | ... | *Arguments:*
 | | ... | - node - information about a DUT node. Type: dictionary
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Log persisted configuration on node \| ${nodes['DUT1']} \|
+| | ... | \| Interface Persistence Check \| ${nodes['DUT1']} \|
+| | ...
+| | [Arguments] | ${node}
+| | Interface state from Honeycomb should be | ${node} | ${interface} | up
+| | IPv4 address from Honeycomb should be
+| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
+| | IPv4 address from VAT should be
+| | ... | ${node} | ${interface} | ${ipv4_address}
+| | ... | ${ipv4_prefix} | ${ipv4_mask}
+| | IPv4 neighbor from Honeycomb should be
+| | ... | ${node} | ${interface} | ${ipv4_neighbor} | ${neighbor_mac}
+| | IPv6 address from Honeycomb should contain
+| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix}
+| | IPv6 address from VAT should contain
+| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix}
+| | IPv6 neighbor from Honeycomb should be
+| | ... | ${node} | ${interface} | ${ipv6_neighbor} | ${neighbor_mac}
+
+| Bridge Domain Persistence Setup
+| | [Documentation] | Configure bridge domain, BD interface assignment
+| | ... | and L2 fib entry.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Bridge Domain Persistence Setup \| ${nodes['DUT1']} \|
 | | ...
 | | [Arguments] | ${node}
-| | Log persisted configuration | ${node}
\ No newline at end of file
+| | Honeycomb and VPP should have default configuration | ${node}
+| | Import Variables | resources/test_data/honeycomb/l2_fib.py
+| | ... | ${node} | ${interface} | ${interface}
+| | Honeycomb creates first l2 bridge domain
+| | ... | ${node} | ${bd_name} | ${bd_settings}
+| | Honeycomb adds interface to bridge domain
+| | ... | ${node} | ${interface} | ${bd_name} | ${if_bd_settings}
+| | Honeycomb adds L2 FIB entry to bridge domain
+| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg}
+
+| Bridge Domain Persistence Check
+| | [Documentation] | Verify bridge domain, BD interface assignment
+| | ... | and L2 fib entry.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - information about a DUT node. Type: dictionary
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Bridge Domain Persistence Check \| ${nodes['DUT1']} \|
+| | ...
+| | [Arguments] | ${node}
+| | Bridge domain Operational Data From Honeycomb Should Be
+| | ... | ${node} | ${bd_name} | ${bd_settings}
+| | Bridge domain Operational Data From VAT Should Be
+| | ... | ${node} | ${0} | ${bd_settings}
+| | Bridge domain Operational Interface Assignment should be
+| | ... | ${node} | ${interface} | ${if_bd_settings}
+| | L2 FIB Entry from Honeycomb should be
+| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper}
+| | L2 FIB entry from VAT should be
+| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat}
\ No newline at end of file
index 65ef319..965b0f3 100644 (file)
@@ -36,7 +36,7 @@
 | | Configure Policer
 | | ... | ${node} | ${policer_data['name']} | ${policer_data}
 
-| Policer configuration from Honeycomb should be
+| Policer Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves Policer operational data and verifies if\
 | | ... | Policer is configured correctly.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Policer configuration from Honeycomb should be \
+| | ... | \| Policer Operational Data From Honeycomb Should Be \
 | | ... | \| ${node} \| ${policer_data} \|
 | | ...
 | | [Arguments] | ${node} | ${policer_data}
 | | ${data}= | Get Policer oper data | ${node} | ${policer_data['name']}
 | | Compare data structures | ${data[0]} | ${policer_data}
 
-| Policer configuration from Honeycomb should be empty
+| Policer Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Checks whether Policer configuration from Honeycomb \
 | | ... | is empty.
 | | ...
@@ -63,7 +63,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Policer configuration from Honeycomb should be empty \
+| | ... | \| Policer Operational Data From Honeycomb Should Be empty \
 | | ... | \| ${node} \|
 | | ...
 | | [Arguments] | ${node}
index 81eedb9..ef41c51 100644 (file)
@@ -42,7 +42,7 @@
 | | InterfaceAPI.Configure interface SPAN
 | | ... | ${node} | ${dst_interface} | ${src_interfaces}
 
-| Interface SPAN configuration from Honeycomb should be
+| Interface SPAN Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves interface operational data and verifies that\
 | | ... | SPAN mirroring is configured with the provided interfaces.
 | | ...
@@ -54,7 +54,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Interface SPAN configuration from Honeycomb should be \
+| | ... | \| Interface SPAN Operational Data From Honeycomb Should Be \
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| GigabitEthernet0/9/0 \|
 | | ...
 | | [Arguments] | ${node} | ${dst_interface} | @{src_interfaces}
@@ -65,7 +65,7 @@
 | | Sort list | ${src_interfaces}
 | | Lists should be equal | ${data} | ${src_interfaces}
 
-| Interface SPAN configuration from Honeycomb should be empty
+| Interface SPAN Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Checks whether SPAN configuration from Honeycomb is empty.
 | | ...
 | | ... | *Arguments:*
@@ -74,7 +74,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Interface SPAN configuration from Honeycomb should be empty \
+| | ... | \| Interface SPAN Operational Data From Honeycomb Should Be empty \
 | | ... | \| ${node} \| GigabitEthernetO/8/0 \|
 | | ...
 | | [Arguments] | ${node} | ${dst_interface}
@@ -82,7 +82,7 @@
 | | Variable should not exist
 | | ... | ${data['v3po:span']['mirrored-interfaces']['mirrored-interface']}
 
-| Interface SPAN configuration from VAT should be
+| Interface SPAN Operational Data From VAT Should Be
 | | [Documentation] | Retrieves SPAN configuration from VAT dump and verifies\
 | | ... | that SPAN mirroring is configured with the provided interfaces.
 | | ...
@@ -94,7 +94,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Interface SPAN configuration from VAT should be \
+| | ... | \| Interface SPAN Operational Data From VAT Should Be \
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| GigabitEthernet0/9/0 \|
 | | ...
 | | [Arguments] | ${node} | ${dst_interface} | @{src_interfaces}
index 87abf3c..10e4887 100644 (file)
@@ -35,7 +35,7 @@
 | | Configure interface SLAAC
 | | ... | ${node} | ${interface} | ${slaac_data}
 
-| SLAAC configuration from Honeycomb should be
+| SLAAC Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves SLAAC operational data and verifies that\
 | | ... | SLAAC is configured with the provided interfaces.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| SLAAC configuration from Honeycomb should be \
+| | ... | \| SLAAC Operational Data From Honeycomb Should Be \
 | | ... | \| ${node} \| ${interface} \| ${slaac_data} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${slaac_data}
 | | ${data}= | Get interface SLAAC oper data | ${node} | ${interface}
 | | Dictionaries should be equal | ${data} | ${slaac_data}
 
-| SLAAC configuration from Honeycomb should be empty
+| SLAAC Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Checks whether SLAAC configuration from Honeycomb \
 | | ... | is empty.
 | | ...
@@ -64,7 +64,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| SLAAC configuration from Honeycomb should be empty \
+| | ... | \| SLAAC Operational Data From Honeycomb Should Be empty \
 | | ... | \| ${node} \| ${interface} \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
index 5a42b56..1b1b800 100644 (file)
@@ -46,7 +46,7 @@
 | | interfaceAPI.Create sub interface | ${node} | ${super_interface}
 | | ... | ${match} | ${tags} | &{sub_interface_settings}
 
-| Sub-interface configuration from Honeycomb should be
+| Sub-interface Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves sub-interface configuration through Honeycomb\
 | | ... | and compares it with settings supplied in argument.
 | | ...
@@ -58,7 +58,7 @@
 | | ... | Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Sub-interface configuration from Honeycomb should be\
+| | ... | \| Sub-interface Operational Data From Honeycomb Should Be\
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1\
 | | ... | \| ${sub_if_1_params} \|
 | | ...
@@ -69,7 +69,7 @@
 | | ... | ${node} | ${super_interface} | ${identifier}
 | | interfaceAPI.Compare Data Structures | ${api_data} | ${sub_if_settings}
 
-| Sub-interface configuration from Honeycomb should be empty
+| Sub-interface Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Retrieves sub-interface configuration through Honeycomb \
 | | ... | and expects no data.
 | | ...
@@ -79,7 +79,7 @@
 | | ... | - identifier - Sub-interface ID. Type: integer or string
 | | ...
 | | ... | *Example:*
-| | ... | \| Sub-interface configuration from Honeycomb should be empty\
+| | ... | \| Sub-interface Operational Data From Honeycomb Should Be empty\
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \|
 | | ...
 | | [Arguments] | ${node} | ${super_interface} | ${identifier}
 | | Should be equal | ${api_data['admin-status']} | ${admin_state}
 | | Should be equal | ${api_data['oper-status']} | ${oper_state}
 
-| Sub-interface configuration from VAT should be
+| Sub-interface Operational Data From VAT Should Be
 | | [Documentation] | Retrieves sub-interface configuration through VAT and\
 | | ... | compares it with settings supplied in argument.
 | | ...
 | | ... | sub-interface to be checked. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Sub-interface configuration from VAT should be\
+| | ... | \| Sub-interface Operational Data From VAT Should Be\
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0.1 \| ${sub_if_1_params} \|
 | | ...
 | | [Arguments] | ${node} | ${sub_interface} | ${sub_interface_settings}
 | | interfaceAPI.Add bridge domain to sub interface
 | | ... | ${node} | ${super_if} | ${identifier} | ${sub_bd_setings}
 
-| Sub-interface bridge domain configuration from Honeycomb should be
+| Sub-interface bridge domain Operational Data From Honeycomb Should Be
 | | [Documentation] | Uses Honeycomb API to verify sub-interface assignment to\
 | | ... | a bridge domain.
 | | ...
 | | ... | - settings - Bridge domain parameters to be checked. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Sub-interface bridge domain configuration from Honeycomb should be\
+| | ... | \| Sub-interface bridge domain Operational Data From Honeycomb Should Be\
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| ${bd_settings} \|
 | | ...
 | | [Arguments] | ${node} | ${super_if} | ${identifier} | ${settings}
 | | Should be equal | ${if_data['bridge-domain']}
 | | ... | ${settings['bridge-domain']}
 
-| Sub-interface bridge domain configuration from VAT should be
+| Sub-interface bridge domain Operational Data From VAT Should Be
 | | [Documentation] | Uses VAT to verify sub-interface assignment to a bridge\
 | | ... | domain.
 | | ...
 | | ... | - setings - Parameters to be checked. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Sub-interface bridge domain configuration from VAT should be\
+| | ... | \| Sub-interface bridge domain Operational Data From VAT Should Be\
 | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0.1 \| ${sub_bd_setings} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
index 2fffffa..1a045d1 100644 (file)
@@ -67,7 +67,7 @@
 | | [Arguments] | ${node} | ${interface}
 | | interfaceAPI.Delete interface | ${node} | ${interface}
 
-| TAP configuration from Honeycomb should be
+| TAP Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves interface TAP configuration through Honeycomb\
 | | ... | and compares with settings supplied in argument.
 | | ...
@@ -78,7 +78,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| TAP configuration from Honeycomb should be \
+| | ... | \| TAP Operational Data From Honeycomb Should Be \
 | | ... | \| ${nodes['DUT1']} \| tap_int1 \| ${{'tap-name':'tap1',\
 | | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \|
 | | ...
@@ -89,7 +89,7 @@
 | | ${api_mac}= | Set Variable | ${api_data['phys-address']}
 | | Should be equal | ${api_mac} | ${settings['mac']}
 
-| TAP configuration from VAT should be
+| TAP Operational Data From VAT Should Be
 | | [Documentation] | Retrieves interface TAP configuration through VAT and\
 | | ... | compares with settings supplied in argument.
 | | ...
@@ -99,7 +99,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| TAP configuration from Honeycomb should be \
+| | ... | \| TAP Operational Data From Honeycomb Should Be \
 | | ... | \| ${nodes['DUT1']} \| ${{'tap-name':'tap1',\
 | | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \|
 | | ...
 | | Should be equal | ${vat_data['dev_name']} | ${settings['tap-name']}
 # other settings not accessible through VAT commands
 
-| TAP configuration from Honeycomb should be empty
+| TAP Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Attempts to retrieve interface TAP configuration\
 | | ... | through Honeycomb and expects to recieve an empty dictionary.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| TAP configuration from Honeycomb should be empty\
+| | ... | \| TAP Operational Data From Honeycomb Should Be empty\
 | | ... | \| ${nodes['DUT1']} \| tap_int1 \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
 | | Run keyword and expect error | *KeyError: 'v3po:tap' | Set Variable
 | | ... | ${api_data['v3po:tap']}
 
-| TAP configuration from VAT should be empty
+| TAP Operational Data From VAT Should Be empty
 | | [Documentation] | Attempts to retrieve interface TAP configuration\
 | | ... | through VAT and expects a "no data" error.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| TAP configuration from VAT should be empty\
+| | ... | \| TAP Operational Data From VAT Should Be empty\
 | | ... | \| ${nodes['DUT1']} \| tap_int1 \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
index 89f6ddf..b0941ed 100644 (file)
@@ -67,7 +67,7 @@
 | | interfaceAPI.Configure interface vhost user | ${node} | ${interface}
 | | ... | &{settings}
 
-| Vhost-user configuration from Honeycomb should be
+| Vhost-user Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves interface vhost-user configuration through\
 | | ... | Honeycomb and compares it with settings supplied in argument.
 | | ...
@@ -78,7 +78,7 @@
 | | ... | Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Vhost-user configuration from Honeycomb should be\
+| | ... | \| Vhost-user Operational Data From Honeycomb Should Be\
 | | ... | \| ${nodes['DUT1']} \| vhost_test \| ${vhost_user_settings} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
@@ -87,7 +87,7 @@
 | | :FOR | ${key} | IN | @{settings.keys()}
 | | | Should be equal | ${api_vhost['${key}']} | ${settings['${key}']}
 
-| Vhost-user configuration from VAT should be
+| Vhost-user Operational Data From VAT Should Be
 | | [Documentation] | Retrieves interface vhost-user configuration through VAT\
 | | ... | and compares it with settings supplied in argument.
 | | ...
@@ -97,7 +97,7 @@
 | | ... | Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Vhost-user configuration from VAT should be\
+| | ... | \| Vhost-user Operational Data From VAT Should Be\
 | | ... | \| ${nodes['DUT1']} \| vhost_test \|
 | | ...
 | | ... | *Note:*
 | | should be equal as strings | ${vat_data['is_server']}
 | | ... | ${translate['${settings['role']}']}
 
-| Vhost-user configuration from Honeycomb should be empty
+| Vhost-user Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Attempts to retrieve interface vhost-user configuration\
 | | ... | through Honeycomb and expects to recieve an empty dictionary.
 | | ...
 | | ... | - interface - name of an interface on the specified node. Type: string
 | | ...
 | | ... | *Example:*
-| | ... | \| Vhost-user configuration from Honeycomb should be empty\
+| | ... | \| Vhost-user Operational Data From Honeycomb Should Be empty\
 | | ... | \| ${nodes['DUT1']} \| vhost_test \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
 | | Run keyword and expect error | *KeyError: 'v3po:vhost-user'
 | | ... | Should be empty | ${api_data['v3po:vhost-user']}
 
-| Vhost-user configuration from VAT should be empty
+| Vhost-user Operational Data From VAT Should Be empty
 | | [Documentation] | Attempts to retrieve interface vhost-user configuration\
 | | ... | through VAT and expects a "no data" error.
 | | ...
 | | ... | - node - information about a DUT node. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Vhost-user configuration from VAT should be empty\
+| | ... | \| Vhost-user Operational Data From VAT Should Be empty\
 | | ... | \| ${nodes['DUT1']} \|
 | | ...
 | | [Arguments] | ${node}
index 07c5495..b3bf083 100644 (file)
@@ -49,7 +49,7 @@
 | | [Arguments] | ${node} | ${interface}
 | | interfaceAPI.Delete interface | ${node} | ${interface}
 
-| VxLAN configuration from Honeycomb should be
+| VxLAN Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves interface VxLAN configuration through Honeycomb\
 | | ... | and compares with settings supplied in argument.
 | | ...
@@ -60,7 +60,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| VxLAN configuration from Honeycomb should be \
+| | ... | \| VxLAN Operational Data From Honeycomb Should Be \
 | | ... | \|${nodes['DUT1']} \| vxlan_01 \| ${{'src':'192.168.0.2',\
 | | ... | 'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
 | | ...
@@ -70,7 +70,7 @@
 | | :FOR | ${key} | IN | @{settings.keys()}
 | | | Should be equal | ${api_vxlan['${key}']} | ${settings['${key}']}
 
-| VxLAN configuration from VAT should be
+| VxLAN Operational Data From VAT Should Be
 | | [Documentation] | Retrieves interface VxLAN configuration through VAT and\
 | | ... | compares with settings supplied in argument.
 | | ...
@@ -80,7 +80,7 @@
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| VxLAN configuration from Honeycomb should be \
+| | ... | \| VxLAN Operational Data From Honeycomb Should Be \
 | | ... | \|${nodes['DUT1']} \| ${{'src':'192.168.0.2',\
 | | ... | 'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \|
 | | ...
@@ -97,7 +97,7 @@
 | | Should be equal
 | | ... | ${vat_data['encap_vrf_id']} | ${settings['encap-vrf-id']}
 
-| VxLAN configuration from Honeycomb should be empty
+| VxLAN Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Attempts to retrieve interface VxLAN configuration\
 | | ... | through Honeycomb and expects to recieve an empty dictionary.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| VxLAN configuration from Honeycomb should be empty\
+| | ... | \| VxLAN Operational Data From Honeycomb Should Be empty\
 | | ... | \|${nodes['DUT1']} \| vxlan_01 \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
 | | Run keyword and expect error | *KeyError: 'v3po:vxlan' | Set Variable
 | | ... | ${api_data['v3po:vxlan']}
 
-| VxLAN configuration from VAT should be empty
+| VxLAN Operational Data From VAT Should Be empty
 | | [Documentation] | Attempts to retrieve interface VxLAN configuration\
 | | ... | through VAT and expects a "no data" error.
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| VxLAN configuration from VAT should be empty\
+| | ... | \| VxLAN Operational Data From VAT Should Be empty\
 | | ... | \| ${nodes['DUT1']} \|
 | | ...
 | | [Arguments] | ${node}
index 14a4910..6384061 100644 (file)
@@ -66,7 +66,7 @@
 | | ...
 | | interfaceAPI.Delete interface | ${node} | ${interface}
 
-| VxLAN GPE configuration from Honeycomb should be
+| VxLAN GPE Operational Data From Honeycomb Should Be
 | | [Documentation] | Uses Honeycomb API to get operational data about the\
 | | ... | given interface and compares them to the values provided as arguments.
 | | ...
@@ -78,7 +78,7 @@
 | | ... | - vxlan_gpe_settings - VxLAN GPE specific parameters. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| VxLAN GPE configuration from Honeycomb should be \
+| | ... | \| VxLAN GPE Operational Data From Honeycomb Should Be \
 | | ... | \| ${nodes['DUT1']} \| vxlan_gpe_tunnel0 \| ${base_params} \
 | | ... | \| ${vxlan_gpe_params} \|
 | | ...
 | | ... | AND
 | | ... | Should be equal as strings | ${api_data['oper-status']} | down
 
-| VxLAN GPE configuration from VAT should be
+| VxLAN GPE Operational Data From VAT Should Be
 | | [Documentation] | Uses VAT to get operational data about the given\
 | | ... | interface and compares them to the values provided as arguments.
 | | ...
 | | ... | - vxlan_gpe_settings - VxLAN GPE specific parameters. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| VxLAN GPE configuration from VAT should be \
+| | ... | \| VxLAN GPE Operational Data From VAT Should Be \
 | | ... | \| ${nodes['DUT1']} \| vxlan_gpe_tunnel0 \| ${vxlan_gpe_params} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${vxlan_gpe_params}
 | | Should be equal as strings
 | | ... | ${api_data['if-index']} | ${sw_if_index}
 
-| VxLAN GPE configuration from Honeycomb should be empty
+| VxLAN GPE Operational Data From Honeycomb Should Be empty
 | | [Documentation] | Uses Honeycomb API to get operational data about\
 | | ... | the given interface and expects to fail.
 | | ...
 | | ... | - node - information about a DUT node. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| VxLAN GPE configuration from Honeycomb should be empty\
+| | ... | \| VxLAN GPE Operational Data From Honeycomb Should Be empty\
 | | ... | \| ${nodes['DUT1']} \| vxlan_gpe_tunnel0 \|
 | | ...
 | | [Arguments] | ${node} | ${interface}
 | | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
 | | Should be empty | ${api_data}
 
-| VxLAN GPE configuration from VAT should be empty
+| VxLAN GPE Operational Data From VAT Should Be empty
 | | [Documentation] | Uses VAT to get operational data about the given\
 | | ... | interface and expects an empty dictionary.
 | | ...
 | | ... | - node - information about a DUT node. Type: dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| VxLAN GPE configuration from VAT should be empty\
+| | ... | \| VxLAN GPE Operational Data From VAT Should Be empty\
 | | ... | \| ${nodes['DUT1']} \|
 | | ...
 | | [Arguments] | ${node}
diff --git a/resources/test_data/honeycomb/interface_ip.py b/resources/test_data/honeycomb/interface_ip.py
new file mode 100644 (file)
index 0000000..392623b
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Test variables for Basic interface management and IP addresses."""
+
+# Configuration which will be set and verified during tests.
+ipv4_address = "192.168.0.2"
+ipv4_address2 = "192.168.1.2"
+ipv4_prefix = 24
+ipv4_mask = "255.255.255.0"
+ipv4_neighbor = "192.168.0.4"
+ipv4_neighbor2 = "192.168.1.4"
+ipv4_settings = {"mtu": 9000}
+ipv6_address = "10::10"
+ipv6_address2 = "11::10"
+ipv6_prefix = 64
+ipv6_neighbor = "10::11"
+ipv6_neighbor2 = "11::11"
+neighbor_mac = "08:00:27:c0:5d:37"
+neighbor_mac2 = "08:00:27:c0:5d:37"
+ipv6_settings = {"enabled": True, "forwarding": True, "mtu": 9000,
+                 "dup-addr-detect-transmits": 5}
+ethernet = {"mtu": 9000}
+routing = {"vrf-id": 27}
index 1dac598..7792fb3 100644 (file)
@@ -22,7 +22,7 @@
 | Variables | resources/test_data/honeycomb/acl.py
 | Suite Teardown | Restart Honeycomb and VPP | ${node}
 | Documentation | *Honeycomb access control lists test suite.*
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Honeycomb can create ACL classify table
index 4405da1..ba39c02 100644 (file)
@@ -27,7 +27,7 @@
 | Documentation | *Honeycomb DHCP relay test suite.*
 | Test Setup | Clear Packet Trace on All DUTs | ${nodes}
 | Suite Teardown | Restart Honeycomb and VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Honeycomb can configure DHCP relay entry
@@ -40,7 +40,7 @@
 | | ... | on the second TG interface and verify required fields.
 | | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
 | | ... | AND | Log DHCP relay configuration from VAT | ${node} | ipv4
-| | Given DHCP relay configuration from Honeycomb should be empty | ${node}
+| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures DHCP relay | ${node} | ${relay1} | ipv4 | ${0}
 | | Then DHCP relay configuration from Honeycomb should contain
 | | ... | ${node} | ${relay1_oper}
 | | Given DHCP relay configuration from Honeycomb should contain
 | | ... | ${node} | ${relay1_oper}
 | | When Honeycomb clears DHCP relay configuration | ${node}
-| | Then DHCP relay configuration from Honeycomb should be empty | ${node}
+| | Then DHCP relay Operational Data From Honeycomb Should Be empty | ${node}
 
 | TC03: Honeycomb can configure multiple DHCP relay servers.
 | | [Documentation] | Configure multiple DHCP relay servers and verify\
 | | ... | their configuration using operational data.
 | | [Teardown] | Honeycomb clears DHCP relay configuration | ${node}
-| | Given DHCP relay configuration from Honeycomb should be empty | ${node}
+| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node}
 | | And Honeycomb configures DHCP relay | ${node} | ${relay2} | ipv4 | ${0}
 | | Then DHCP relay configuration from Honeycomb should contain
 | | ... | ${node} | ${relay2_oper}
@@ -77,7 +77,7 @@
 | | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
 | | ... | AND | Log DHCP relay configuration from VAT | ${node} | ipv6
 | | ... | AND | Honeycomb clears DHCP relay configuration | ${node}
-| | Given DHCP relay configuration from Honeycomb should be empty | ${node}
+| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures DHCP relay | ${node} | ${relay_v6} | ipv6 | ${0}
 | | Then DHCP relay configuration from Honeycomb should contain
 | | ... | ${node} | ${relay_v6_oper}
index 8f5796a..4fe9dde 100644 (file)
@@ -21,7 +21,7 @@
 | Variables | resources/test_data/honeycomb/netconf/triggers.py
 | Documentation | *Netconf test suite. Contains test cases that need to bypass\
 | ... | REST API.*
-| Force Tags | honeycomb_sanity
+| Force Tags | HC_FUNC | HC_REST_ONLY
 | Suite Teardown
 | ... | Restart Honeycomb and VPP | ${node}
 
index ca1ff99..9fb858a 100644 (file)
@@ -20,7 +20,7 @@
 | Variables | resources/test_data/honeycomb/sub_interfaces.py
 | Suite Teardown
 | ... | Restart Honeycomb and VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Documentation | *Honeycomb sub-interface management test suite.*
 
 *** Variables ***
 | | [Documentation] | Check if Honeycomb creates a sub-interface.
 | | ...
 | | Given Honeycomb sets interface state | ${node} | ${super_if} | down
-| | And sub-interface configuration from Honeycomb should be empty
+| | And sub-interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${super_if} | ${sub_if_id}
-| | And interface configuration from VAT should be empty
+| | And interface Operational Data From VAT Should Be empty
 | | ... | ${node} | ${sub_if_name}
 | | When Honeycomb creates sub-interface | ${node} | ${super_if}
 | | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings}
-| | Then Sub-interface configuration from Honeycomb should be
+| | Then Sub-interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper}
-| | And Sub-interface configuration from VAT should be
+| | And Sub-interface Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
 | | And sub-interface indices from Honeycomb and VAT should correspond
 | | ... | ${node} | ${super_if} | ${sub_if_id}
 | | [Setup] | Set super and sub interfaces down
 | | ... | ${node} | ${super_if} | ${sub_if_id}
 | | ...
-| | Given sub-interface configuration from Honeycomb should be
+| | Given sub-interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper}
-| | And sub-interface configuration from VAT should be
+| | And sub-interface Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
 | | When Honeycomb fails to remove all sub-interfaces
 | | ... | ${node} | ${super_if}
-| | Then sub-interface configuration from Honeycomb should be
+| | Then sub-interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper}
-| | And sub-interface configuration from VAT should be
+| | And sub-interface Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
 
 | TC07: Honeycomb adds sub-interface to new bridge domain
 | | [Setup] | Set super and sub interfaces down
 | | ... | ${node} | ${super_if} | ${sub_if_id}
 | | ...
-| | Given sub-interface configuration from Honeycomb should be
+| | Given sub-interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper}
-| | And sub-interface configuration from VAT should be
+| | And sub-interface Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
 | | When Honeycomb creates first L2 bridge domain
 | | ... | ${node} | ${bd_name} | ${bd_settings}
-| | Then bridge domain configuration from Honeycomb should be
+| | Then bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd_name} | ${bd_settings}
 | | When Honeycomb adds sub-interface to bridge domain
 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings}
-| | Then sub-interface bridge domain configuration from Honeycomb should be
+| | Then sub-interface bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings}
-| | And sub-interface bridge domain configuration from VAT should be
+| | And sub-interface bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if_name} | ${sub_bd_settings}
-| | And sub-interface configuration from VAT should be
+| | And sub-interface Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper}
 
 | TC08: Honeycomb enables tag-rewrite pop 1
 | | [Documentation] | Check if Honeycomb can modify a sub-interface with exact\
 | | ... | tag match.
 | | Given Honeycomb sets interface state | ${node} | ${super_if2} | down
-| | And sub-interface configuration from Honeycomb should be empty
+| | And sub-interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${super_if2} | ${sub_if_id}
-| | And interface configuration from VAT should be empty
+| | And interface Operational Data From VAT Should Be empty
 | | ... | ${node} | ${sub_if2_name}
 | | When Honeycomb creates sub-interface | ${node} | ${super_if2}
 | | ... | ${sub_if_2_match} | ${sub_if_2_tags} | ${sub_if_2_settings}
-| | Then Sub-interface configuration from Honeycomb should be
+| | Then Sub-interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${super_if2} | ${sub_if_id} | ${sub_if_2_oper}
-| | And Sub-interface configuration from VAT should be
+| | And Sub-interface Operational Data From VAT Should Be
 | | ... | ${node} | ${sub_if2_name} | ${sub_if_2_oper}
 | | And sub-interface indices from Honeycomb and VAT should correspond
 | | ... | ${node} | ${super_if2} | ${sub_if_id}
index 1a8d400..1d2b4ae 100644 (file)
 *** Variables ***
 # Interface to run tests on.
 | ${interface}= | ${node['interfaces']['port1']['name']}
-# Configuration which will be set and verified during tests.
-| @{ipv4_address}= | 192.168.0.2 | ${24}
-| @{ipv4_address2}= | 192.168.1.2 | ${24}
-| ${ipv4_mask}= | 255.255.255.0
-| ${ipv4_prefix}= | ${24}
-| @{ipv4_neighbor}= | 192.168.0.4 | 08:00:27:c0:5d:37
-| @{ipv4_neighbor2}= | 192.168.1.4 | 08:00:27:c0:5d:37
-| &{ipv4_settings}= | mtu=${9000}
-| @{ipv6_address}= | 10::10 | ${64}
-| @{ipv6_address2}= | 11::10 | ${64}
-| @{ipv6_neighbor}= | 10::11 | 08:00:27:c0:5d:37
-| @{ipv6_neighbor2}= | 11::11 | 08:00:27:c0:5d:37
-| &{ipv6_settings}= | enabled=${True} | forwarding=${True} | mtu=${9000}
-| ... | dup-addr-detect-transmits=${5}
-| &{ethernet}= | mtu=${9000}
-| &{routing}= | vrf-id=${27}
-| &{vxlan_settings}= | src=10.0.1.20 | dst=10.0.3.20 | vni=${1000}
-| ... | encap-vrf-id=${1000}
 
 *** Settings ***
 | Resource | resources/libraries/robot/default.robot
@@ -39,7 +21,8 @@
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/testing_path.robot
 | Resource | resources/libraries/robot/ipv6.robot
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Variables | resources/test_data/honeycomb/interface_ip.py
+| Force Tags | HC_FUNC
 | Suite Teardown
 | | ... | Restart Honeycomb and VPP | ${node}
 | Documentation | *Honeycomb interface management test suite.*
 | | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface}
 | | And ipv4 address from VAT should be empty | ${node} | ${interface}
 | | When Honeycomb sets interface ipv4 address | ${node} | ${interface}
-| | ... | ${ipv4_address[0]} | ${ipv4_mask}
+| | ... | ${ipv4_address} | ${ipv4_mask}
 | | Then IPv4 address from Honeycomb should be
-| | ... | ${node} | ${interface} | ${ipv4_address[0]} | ${ipv4_prefix}
+| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
 | | And IPv4 address from VAT should be
-| | ... | ${node} | ${interface} | @{ipv4_address} | ${ipv4_mask}
+| | ... | ${node} | ${interface} | ${ipv4_address}
+| | ... | ${ipv4_prefix} | ${ipv4_mask}
 
 | TC03: Honeycomb removes IPv4 address from interface
 | | [Documentation] | Check if Honeycomb API can remove configured ipv4\
 | | ... | addresses from interface.
 | | Given IPv4 address from Honeycomb should be
-| | ... | ${node} | ${interface} | @{ipv4_address}
+| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
 | | And IPv4 address from VAT should be
-| | ... | ${node} | ${interface} | @{ipv4_address} | ${ipv4_mask}
+| | ... | ${node} | ${interface} | ${ipv4_address}
+| | ... | ${ipv4_prefix} | ${ipv4_mask}
 | | 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}
 | | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface}
 | | And ipv4 address from VAT should be empty | ${node} | ${interface}
 | | When Honeycomb sets interface ipv4 address with prefix
-| | ... | ${node} | ${interface} | @{ipv4_address2}
+| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix}
 | | Then IPv4 address from Honeycomb should be
-| | ... | ${node} | ${interface} | @{ipv4_address2}
+| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix}
 | | And IPv4 address from VAT should be
-| | ... | ${node} | ${interface} | @{ipv4_address2} | ${ipv4_mask}
+| | ... | ${node} | ${interface} | ${ipv4_address2}
+| | ... | ${ipv4_prefix} | ${ipv4_mask}
 
 | TC05: Honeycomb modifies IPv4 neighbor table
 | | [Documentation] | Check if Honeycomb API can add and remove ARP entries.
 | | Given IPv4 neighbor from Honeycomb should be empty
 | | ... | ${node} | ${interface}
 | | When Honeycomb adds interface ipv4 neighbor
-| | ... | ${node} | ${interface} | @{ipv4_neighbor}
+| | ... | ${node} | ${interface} | ${ipv4_neighbor} | ${neighbor_mac}
 | | Then IPv4 neighbor from Honeycomb should be
-| | ... | ${node} | ${interface} | @{ipv4_neighbor}
+| | ... | ${node} | ${interface} | ${ipv4_neighbor} | ${neighbor_mac}
 
 | TC06: Honeycomb modifies interface configuration - IPv6
 | | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6.
 | | And IPv6 address from VAT should be empty
 | | ... | ${node} | ${interface}
 | | When Honeycomb sets interface ipv6 address
-| | ... | ${node} | ${interface} | @{ipv6_address}
+| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix}
 | | Then IPv6 address from Honeycomb should contain
-| | ... | ${node} | ${interface} | @{ipv6_address}
+| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix}
 | | And IPv6 address from VAT should contain
-| | ... | ${node} | ${interface} | @{ipv6_address}
+| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix}
 
 | TC07: Honeycomb modifies IPv6 neighbor table
 | | [Documentation] | Check if Honeycomb API can add and remove ARP entries.
 | | Given IPv6 neighbor from Honeycomb should be empty
 | | ... | ${node} | ${interface}
 | | When Honeycomb adds interface ipv6 neighbor
-| | ... | ${node} | ${interface} | @{ipv6_neighbor}
+| | ... | ${node} | ${interface} | ${ipv6_neighbor} | ${neighbor_mac}
 | | Then IPv6 neighbor from Honeycomb should be
-| | ... | ${node} | ${interface} | @{ipv6_neighbor}
+| | ... | ${node} | ${interface} | ${ipv6_neighbor} | ${neighbor_mac}
 
 | TC08: Honeycomb modifies interface configuration - MTU
 | | [Documentation] | Check if Honeycomb API can configure interface\
 | | ... | MTU value.
 | | When Honeycomb sets interface ethernet configuration
 | | ... | ${node} | ${interface} | ${ethernet}
-| | Then Interface ethernet configuration from Honeycomb should be
+| | Then Interface ethernet Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface} | ${ethernet}
-| | And Interface ethernet configuration from VAT should be
+| | And Interface ethernet Operational Data From VAT Should Be
 | | ... | ${node} | ${interface} | ${ethernet['mtu']}
 
 | TC09: Honeycomb modifies interface configuration - vrf
 | | Given Path for 2-node testing is set
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | When Honeycomb sets interface ipv4 address with prefix
-| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv4_address}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address} | ${ipv4_prefix}
 | | And Honeycomb adds interface ipv4 address
-| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv4_address2}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address2} | ${ipv4_prefix}
 | | And Honeycomb sets interface ipv6 address
-| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv6_address}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix}
 | | And Honeycomb adds interface ipv6 address
-| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv6_address2}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address2} | ${ipv6_prefix}
 | | Then IPv4 address from Honeycomb should be
-| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv4_address}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address} | ${ipv4_prefix}
 | | And IPv4 address from VAT should be
-| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv4_address} | ${ipv4_mask}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address}
+| | ... | ${ipv4_prefix} | ${ipv4_mask}
 | | And IPv6 address from Honeycomb should contain
-| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv6_address}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix}
 | | And IPv6 address from VAT should contain
-| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv6_address}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix}
 | | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up
 | | And Honeycomb adds interface ipv4 neighbor | ${dut_node} | ${dut_to_tg_if1}
-| | ... | @{ipv4_neighbor}
+| | ... | ${ipv4_neighbor} | ${neighbor_mac}
 | | And Honeycomb adds interface ipv4 neighbor | ${dut_node} | ${dut_to_tg_if1}
-| | ... | @{ipv4_neighbor2}
+| | ... | ${ipv4_neighbor2} | ${neighbor_mac2}
 | | And Honeycomb adds interface ipv6 neighbor | ${dut_node} | ${dut_to_tg_if1}
-| | ... | @{ipv6_neighbor}
+| | ... | ${ipv6_neighbor} | ${neighbor_mac}
 | | And Honeycomb adds interface ipv6 neighbor | ${dut_node} | ${dut_to_tg_if1}
-| | ... | @{ipv6_neighbor2}
+| | ... | ${ipv6_neighbor2} | ${neighbor_mac2}
 | | And Vpp nodes ra suppress link layer | ${nodes}
 | | Then Ping and Verify IP address | ${nodes['TG']}
-| | ... | ${ipv4_neighbor[0]} | ${ipv4_address[0]}
+| | ... | ${ipv4_neighbor} | ${ipv4_address}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac}
 | | And Ping and Verify IP address | ${nodes['TG']}
-| | ... | ${ipv4_neighbor2[0]} | ${ipv4_address2[0]}
+| | ... | ${ipv4_neighbor2} | ${ipv4_address2}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac}
 | | And Ping and Verify IP address | ${nodes['TG']}
-| | ... | ${ipv6_neighbor[0]} | ${ipv6_address[0]}
+| | ... | ${ipv6_neighbor} | ${ipv6_address}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac}
 | | And Ping and Verify IP address | ${nodes['TG']}
-| | ... | ${ipv6_neighbor2[0]} | ${ipv6_address2[0]}
+| | ... | ${ipv6_neighbor2} | ${ipv6_address2}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac}
 
index 29eb0af..2efdaf2 100644 (file)
@@ -26,7 +26,7 @@
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/interfaces.robot
 | Resource | resources/libraries/robot/honeycomb/tap.robot
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 | Documentation | *Honeycomb TAP management test suite.*
 *** Test Cases ***
 | TC01: Honeycomb configures TAP interface
 | | [Documentation] | Check if Honeycomb API can configure a TAP interface.
-| | Given TAP configuration from Honeycomb should be empty
+| | Given TAP Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${tap_interface}
-| | And TAP configuration from VAT should be empty
+| | And TAP Operational Data From VAT Should Be empty
 | | ... | ${node} | ${tap_interface}
 | | When Honeycomb creates TAP interface
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
-| | Then TAP configuration from Honeycomb should be
+| | Then TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
-| | And TAP configuration from VAT should be
+| | And TAP Operational Data From VAT Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
 
 | TC02: Honeycomb modifies existing TAP interface configuration
 | | [Documentation] | Check if Honeycomb API can re-configure and existing TAP\
 | | ... | interface with new settings.
-| | Given TAP configuration from Honeycomb should be
+| | Given TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
-| | And TAP configuration from VAT should be
+| | And TAP Operational Data From VAT Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
 | | When Honeycomb configures TAP interface
 | | ... | ${node} | ${tap_interface} | ${tap_settings2}
-| | Then TAP configuration from Honeycomb should be
+| | Then TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings2}
-| | And TAP configuration from VAT should be
+| | And TAP Operational Data From VAT Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings2}
 
 | TC03: Honeycomb removes TAP interface
 | | [Documentation] | Check if Honeycomb API can remove TAP interface.
-| | Given TAP configuration from Honeycomb should be
+| | Given TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings2}
-| | And TAP configuration from VAT should be
+| | And TAP Operational Data From VAT Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings2}
 | | When Honeycomb removes TAP interface | ${node} | ${tap_interface}
-| | Then TAP configuration from Honeycomb should be empty
+| | Then TAP Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${tap_interface}
-| | And TAP configuration from VAT should be empty
+| | And TAP Operational Data From VAT Should Be empty
 | | ... | ${node} | ${tap_interface}
index 1e37918..24e79fa 100644 (file)
@@ -26,7 +26,7 @@
 | Resource | resources/libraries/robot/default.robot
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/vhost_user.robot
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 | Documentation | *Honeycomb vhost-user interface management test suite.*
 | | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\
 | | ... | server.
 | | ...
-| | Given vhost-user configuration from Honeycomb should be empty
+| | Given vhost-user Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vhost_interface}
 | | When Honeycomb creates vhost-user interface
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
-| | Then vhost-user configuration from Honeycomb should be
+| | Then vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
-| | And vhost-user configuration from VAT should be
+| | And vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_server}
 
 | TC02: Honeycomb modifies vhost-user interface - server
 | | [Documentation] | Check if Honeycomb can modify properties of existing\
 | | ... | vhost-user interface, role: server.
 | | ...
-| | Given vhost-user configuration from Honeycomb should be
+| | Given vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
 | | When Honeycomb configures vhost-user interface
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1}
-| | Then vhost-user configuration from Honeycomb should be
+| | Then vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1}
-| | And vhost-user configuration from VAT should be
+| | And vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_server_edit_1}
 | | When Honeycomb configures vhost-user interface
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2}
-| | Then vhost-user configuration from Honeycomb should be
+| | Then vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2}
-| | And vhost-user configuration from VAT should be
+| | And vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_server_edit_2}
 | | When Honeycomb configures vhost-user interface
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
-| | Then vhost-user configuration from Honeycomb should be
+| | Then vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
-| | And vhost-user configuration from VAT should be
+| | And vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_server}
 
 | TC03: Honeycomb deletes vhost-user interface - server
 | | [Documentation] | Check if Honeycomb can delete an existing vhost-user\
 | | ... | interface, role: server.
 | | ...
-| | Given vhost-user configuration from Honeycomb should be
+| | Given vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
 | | When Honeycomb removes vhost-user interface
 | | ... | ${node} | ${vhost_interface}
-| | Then vhost-user configuration from Honeycomb should be empty
+| | Then vhost-user Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vhost_interface}
-| | And vhost-user configuration from VAT should be empty
+| | And vhost-user Operational Data From VAT Should Be empty
 | | ... | ${node}
 
 | TC04: Honeycomb creates vhost-user interface - client
 | | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\
 | | ... | client.
 | | ...
-| | Given vhost-user configuration from Honeycomb should be empty
+| | Given vhost-user Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vhost_interface}
 | | When Honeycomb creates vhost-user interface
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
-| | Then vhost-user configuration from Honeycomb should be
+| | Then vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
-| | And vhost-user configuration from VAT should be
+| | And vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_client}
 
 | TC05: Honeycomb modifies vhost-user interface - client
 | | [Documentation] | Check if Honeycomb can modify properties of existing\
 | | ... | vhost-user interface, role: client.
 | | ...
-| | Given vhost-user configuration from Honeycomb should be
+| | Given vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
 | | When Honeycomb configures vhost-user interface
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1}
-| | Then vhost-user configuration from Honeycomb should be
+| | Then vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1}
-| | And vhost-user configuration from VAT should be
+| | And vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_client_edit_1}
 | | When Honeycomb configures vhost-user interface
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2}
-| | Then vhost-user configuration from Honeycomb should be
+| | Then vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2}
-| | And vhost-user configuration from VAT should be
+| | And vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_client_edit_2}
 | | When Honeycomb configures vhost-user interface
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
-| | Then vhost-user configuration from Honeycomb should be
+| | Then vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
-| | And vhost-user configuration from VAT should be
+| | And vhost-user Operational Data From VAT Should Be
 | | ... | ${node} | ${vhost_user_client}
 
 | TC06: Honeycomb deletes vhost-user interface - client
 | | [Documentation] | Check if Honeycomb can delete an existing vhost-user\
 | | ... | interface, role: client.
 | | ...
-| | Given vhost-user configuration from Honeycomb should be
+| | Given vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
 | | When Honeycomb removes vhost-user interface
 | | ... | ${node} | ${vhost_interface}
-| | Then vhost-user configuration from Honeycomb should be empty
+| | Then vhost-user Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vhost_interface}
-| | And vhost-user configuration from VAT should be empty
+| | And vhost-user Operational Data From VAT Should Be empty
 | | ... | ${node}
 
 | TC07: Honeycomb does not set vhost-user configuration on another interface type
 | | ...
 | | When Honeycomb fails setting vhost-user on different interface type
 | | ... | ${node} | ${interface} | ${vhost_user_server}
-| | Then vhost-user configuration from Honeycomb should be empty
+| | Then vhost-user Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface}
-| | And vhost-user configuration from VAT should be empty
+| | And vhost-user Operational Data From VAT Should Be empty
 | | ... | ${node}
 
 | TC08: Honeycomb does not set invalid vhost-user configuration
 | | [Documentation] | Check if Honeycomb refuses to set invalid parameters to\
 | | ... | vhost-user interface.
 | | ...
-| | Given vhost-user configuration from Honeycomb should be empty
+| | Given vhost-user Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vhost_interface}
 | | When Honeycomb fails setting invalid vhost-user configuration
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_wrong}
-| | Then vhost-user configuration from Honeycomb should be empty
+| | Then vhost-user Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vhost_interface}
-| | And vhost-user configuration from VAT should be empty
+| | And vhost-user Operational Data From VAT Should Be empty
 | | ... | ${node}
index dca6a60..e8649bd 100644 (file)
@@ -32,7 +32,7 @@
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 | ... | AND | Honeycomb removes all bridge domains | ${node} | @{interfaces}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Documentation | *Honeycomb bridge domain management test suite.*
 
 *** Test Cases ***
 | | [Documentation] | Check if Honeycomb can create bridge domains on VPP node.
 | | When Honeycomb creates first l2 bridge domain
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
-| | Then Bridge domain configuration from Honeycomb should be
+| | Then Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
-| | And Bridge domain configuration from VAT should be
+| | And Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${0} | ${bd_settings}
 
 | TC02: Honeycomb manages multiple bridge domains on node
 | | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\
 | | ... | a single node.
-| | Given Bridge domain configuration from Honeycomb should be
+| | Given Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
 | | When Honeycomb creates l2 bridge domain
 | | ... | ${node} | ${bd2_name} | ${bd_settings}
-| | Then Bridge domain configuration from Honeycomb should be
+| | Then Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
-| | And Bridge domain configuration from Honeycomb should be
+| | And Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd2_name} | ${bd_settings}
-| | And Bridge domain configuration from VAT should be
+| | And Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${0} | ${bd_settings}
-| | And Bridge domain configuration from VAT should be
+| | And Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${1} | ${bd_settings}
 
 | TC03: Honeycomb removes bridge domains
 | | [Documentation] | Check if Honeycomb can remove bridge domains from a VPP\
 | | ... | node.
-| | Given Bridge domain configuration from Honeycomb should be
+| | Given Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
 | | When Honeycomb removes all bridge domains | ${node}
 | | Then Honeycomb should show no bridge domains | ${node}
@@ -77,9 +77,9 @@
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
 | | When Honeycomb adds interfaces to bridge domain
 | | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings}
-| | Then Bridge domain configuration from Honeycomb should be
+| | Then Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
-| | And Bridge domain configuration from VAT should be
+| | And Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${0} | ${bd_settings}
 | | And Honeycomb should show interfaces assigned to bridge domain
 | | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings}
@@ -89,9 +89,9 @@
 | TC05: Honeycomb cannot remove bridge domain with an interface assigned
 | | [Documentation] | Check if Honeycomb can remove a bridge domain that has an\
 | | ... | interface assigned to it. Expect to fail with code 500.
-| | Given Bridge domain configuration from Honeycomb should be
+| | Given Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
-| | And Bridge domain configuration from VAT should be
+| | And Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${0} | ${bd_settings}
 | | And Honeycomb should show interfaces assigned to bridge domain
 | | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings}
@@ -99,9 +99,9 @@
 | | ... | ${node} | ${0} | @{interfaces} | ${if_settings}
 | | When Run keyword and expect error | HoneycombError* Status code: 500.
 | | ... | Honeycomb removes all bridge domains | ${node}
-| | Then Bridge domain configuration from Honeycomb should be
+| | Then Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
-| | And Bridge domain configuration from VAT should be
+| | And Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${0} | ${bd_settings}
 | | And Honeycomb should show interfaces assigned to bridge domain
 | | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings}
index ef6a50c..76683a7 100644 (file)
@@ -28,7 +28,7 @@
 | ... | AND
 | ... | Honeycomb removes all bridge domains
 | ... | ${node} | ${interface} | ${interface2}
-| Force tags | honeycomb_sanity | honeycomb_odl
+| Force tags | HC_FUNC
 
 *** Variables ***
 # Interface to run tests on.
 | | ... | ${node} | ${interface} | up
 | | When Honeycomb creates first l2 bridge domain
 | | ... | ${node} | ${bd_name} | ${bd_settings}
-| | Then Bridge domain configuration from Honeycomb should be
+| | Then Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd_name} | ${bd_settings}
-| | Given Bridge domain configuration in interface operational data should be empty
+| | Given Bridge domain Operational Interface Assignment should be empty
 | | ... | ${node} | ${interface}
 | | When Honeycomb adds interface to bridge domain
 | | ... | ${node} | ${interface} | ${bd_name} | ${if_bd_settings}
-| | Then Bridge domain configuration in interface operational data should be
+| | Then Bridge domain Operational Interface Assignment should be
 | | ... | ${node} | ${interface} | ${if_bd_settings}
 | | Given L2 FIB Table from Honeycomb should be empty
 | | ... | ${node} | ${bd_name}
@@ -78,7 +78,7 @@
 | | [Teardown] | Honeycomb removes L2 FIB entry
 | | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper['phys-address']}
 | | ...
-| | Given Bridge domain configuration in interface operational data should be
+| | Given Bridge domain Operational Interface Assignment should be
 | | ... | ${node} | ${interface} | ${if_bd_settings}
 | | And L2 FIB Table from Honeycomb should be empty
 | | ... | ${node} | ${bd_name}
@@ -98,7 +98,7 @@
 | | [Teardown] | Honeycomb removes L2 FIB entry
 | | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper['phys-address']}
 | | ...
-| | Given Bridge domain configuration in interface operational data should be
+| | Given Bridge domain Operational Interface Assignment should be
 | | ... | ${node} | ${interface} | ${if_bd_settings}
 | | And L2 FIB Table from Honeycomb should be empty
 | | ... | ${node} | ${bd_name}
 | | [Teardown] | Honeycomb removes L2 FIB entry
 | | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']}
 | | ...
-| | Given Bridge domain configuration in interface operational data should be
+| | Given Bridge domain Operational Interface Assignment should be
 | | ... | ${node} | ${interface} | ${if_bd_settings}
 | | And L2 FIB Table from Honeycomb should be empty
 | | ... | ${node} | ${bd_name}
 | | [Teardown] | Honeycomb removes all L2 FIB entries
 | | ... | ${node} | ${bd_name}
 | | ...
-| | Given Bridge domain configuration in interface operational data should be
+| | Given Bridge domain Operational Interface Assignment should be
 | | ... | ${node} | ${interface} | ${if_bd_settings}
 | | And L2 FIB Table from Honeycomb should be empty
 | | ... | ${node} | ${bd_name}
 | | [Teardown] | Honeycomb removes all L2 FIB entries
 | | ... | ${node} | ${bd_name}
 | | ...
-| | Given Bridge domain configuration in interface operational data should be
+| | Given Bridge domain Operational Interface Assignment should be
 | | ... | ${node} | ${interface} | ${if_bd_settings}
 | | And L2 FIB Table from Honeycomb should be empty
 | | ... | ${node} | ${bd_name}
 | | [Teardown] | Honeycomb removes all L2 FIB entries
 | | ... | ${node} | ${bd_name}
 | | ...
-| | Given Bridge domain configuration in interface operational data should be
+| | Given Bridge domain Operational Interface Assignment should be
 | | ... | ${node} | ${interface} | ${if_bd_settings}
 | | And L2 FIB Table from Honeycomb should be empty
 | | ... | ${node} | ${bd_name}
index 087720b..174a145 100644 (file)
@@ -30,7 +30,7 @@
 | Documentation | *Honeycomb Lisp test suite.*
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Honeycomb enables Lisp feature
index 3f4b087..068fbcf 100644 (file)
@@ -30,7 +30,7 @@
 *** Test Cases ***
 | TC01: Honeycomb can configure NSH entry
 | | [Documentation] | Check if Honeycomb can configure an NSH entry.
-| | Given NSH configuration from Honeycomb should be empty | ${node}
+| | Given NSH Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1}
 | | Then NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
 | | Given NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
 | | When Honeycomb removes NSH entry | ${node} | entry1
-| | Then NSH configuration from Honeycomb should be empty | ${node}
+| | Then NSH Operational Data From Honeycomb Should Be empty | ${node}
 
 | TC03: Honeycomb can configure new NSH entry
 | | [Documentation] | Check if Honeycomb can configure an NSH antry after one\
 | | ... | has been deleted.
 | | [Teardown] | Honeycomb removes NSH entry | ${node} | entry2
-| | Given NSH configuration from Honeycomb should be empty | ${node}
+| | Given NSH Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2}
 | | Then NSH entry from Honeycomb should be
 | | ... | ${node} | entry2 | ${nsh_entry2_oper}
@@ -55,7 +55,7 @@
 | | [Documentation] | Check if Honeycomb can configure an NSH entry when one\
 | | ... | already exists.
 | | [Teardown] | Honeycomb clears NSH configuration | ${node}
-| | Given NSH configuration from Honeycomb should be empty | ${node}
+| | Given NSH Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1}
 | | And Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2}
 | | Then NSH entry from Honeycomb should be
@@ -65,7 +65,7 @@
 
 | TC05: Honeycomb can configure NSH map
 | | [Documentation] | Check if Honeycomb can configure an NSH map.
-| | Given NSH configuration from Honeycomb should be empty | ${node}
+| | Given NSH Operational Data From Honeycomb Should Be empty | ${node}
 | | And Honeycomb creates VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if1}
 | | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1}
@@ -77,7 +77,7 @@
 | | [Documentation] | Check if Honeycomb can remove an existing NSH map.
 | | Given NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
-| | And VxLAN GPE configuration from Honeycomb should be
+| | And VxLAN GPE Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vxlan_gpe_if1}
 | | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1}
 | | And NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper}
@@ -93,7 +93,7 @@
 | | Given NSH map from Honeycomb should not exist | ${node} | map1_edit
 | | And NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
-| | And VxLAN GPE configuration from Honeycomb should be
+| | And VxLAN GPE Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vxlan_gpe_if1}
 | | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1}
 | | When Honeycomb adds NSH map | ${node} | map1_edit | ${nsh_map1_edit}
 | | Given NSH map from Honeycomb should not exist | ${node} | map2
 | | And NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
-| | And VxLAN GPE configuration from Honeycomb should be
+| | And VxLAN GPE Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vxlan_gpe_if1}
 | | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1}
 | | And Honeycomb creates VxLAN GPE interface
index e4353e8..4d7c8a2 100644 (file)
@@ -22,7 +22,7 @@
 | Documentation | *Honeycomb provider backbone bridge test suite.*
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 
 *** Test Cases ***
 # TODO: add verifications once operational data or VPP dump is available.
index cecd1c2..abdd94c 100644 (file)
@@ -46,7 +46,7 @@
 | Suite Teardown
 | ... | Restart Honeycomb and VPP | ${node}
 | Documentation | *Honeycomb access control lists test suite for ACL plugin.*
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: ACL MAC filtering through plugin-acl node - bridged
index f7d8e99..2884f7c 100644 (file)
 | Suite Teardown
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Documentation | *Honeycomb Policer management test suite.*
 
 *** Test Cases ***
 | TC01: Honeycomb can configure Policer
 | | [Documentation] | Checks if Honeycomb can configure Policer.
-| | Given Policer configuration from Honeycomb should be empty | ${node}
+| | Given Policer Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures Policer | ${node} | ${policer_data}
-| | Then Policer configuration from Honeycomb should be | ${node}
+| | Then Policer Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${policer_data_oper}
 
 | TC02: Honeycomb can disable Policer
 | | [Documentation] | Checks if Honeycomb can disable Policer.
-| | Given Policer configuration from Honeycomb should be | ${node}
+| | Given Policer Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${policer_data_oper}
 | | When Honeycomb removes Policer configuration | ${node}
-| | Then Policer configuration from Honeycomb should be empty | ${node}
+| | Then Policer Operational Data From Honeycomb Should Be empty | ${node}
 
 | TC03: Honeycomb can configure Policer with increased values of CIR (900kbps)
 | | [Documentation] | Checks if Honeycomb can configure Policer\
 | | ... | with increased values of CIR.
 | | [Teardown] | Policer test teardown | ${node}
-| | Given Policer configuration from Honeycomb should be empty | ${node}
+| | Given Policer Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures Policer | ${node} | ${policer_data_2}
-| | Then Policer configuration from Honeycomb should be | ${node}
+| | Then Policer Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${policer_data_oper_2}
 
 | TC04: Honeycomb can configure Packets-Per-Second Based Policer
 | | [Documentation] | Checks if Honeycomb can configure Policer\
 | | ... | based on rate-type measured in pps.
 | | [Teardown] | Policer test teardown | ${node}
-| | Given Policer configuration from Honeycomb should be empty | ${node}
+| | Given Policer Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures Policer | ${node} | ${policer_data_3}
-| | Then Policer configuration from Honeycomb should be | ${node}
+| | Then Policer Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${policer_data_oper_3}
 
 | TC05: Configure Policer on Interface
index 9263ebb..c6ad942 100644 (file)
@@ -33,7 +33,7 @@
 | Suite Teardown
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb And VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Documentation | *Honeycomb proxyARP management test suite.*
 
 *** Test Cases ***
index 423c788..c934b06 100644 (file)
@@ -36,7 +36,7 @@
 | Library | resources.libraries.python.Trace
 | Test Setup | Clear Packet Trace on All DUTs | ${nodes}
 | Suite Teardown | Restart Honeycomb And VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Documentation | *Honeycomb IPv6 neighbor discovery proxy test suite.*
 
 *** Test Cases ***
index 93c8420..a722ada 100644 (file)
@@ -26,7 +26,7 @@
 | Test Teardown | Honeycomb routing test teardown
 | ... | ${node} | ${table}
 | Documentation | *Honeycomb routing test suite.*
-| Force Tags | Honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Single hop IPv4 route
index 8d85eb2..3325a0f 100644 (file)
 | Suite Teardown
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Documentation | *Honeycomb SLAAC management test suite.*
 | Variables | resources/test_data/honeycomb/slaac_variables.py
 
 *** Test Cases ***
 | TC01: Honeycomb can configure SLAAC
 | | [Documentation] | Checks if Honeycomb can congigure SLAAC.
-| | Given SLAAC configuration from Honeycomb should be empty | ${node}
+| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | | And Honeycomb sets interface ipv6 address | ${node} | ${interface}
 | | ... | ${address} | ${prefix}
 | | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data}
-| | Then SLAAC configuration from Honeycomb should be | ${node}
+| | Then SLAAC Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${interface} | ${slaac_data}
 
 | TC02: Honeycomb can disable SLAAC
 | | [Documentation] | Checks if Honeycomb can disable SLAAC.
-| | Given SLAAC configuration from Honeycomb should be | ${node}
+| | Given SLAAC Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${interface} | ${slaac_data}
 | | When Honeycomb removes SLAAC configuration | ${node} | ${interface}
-| | Then SLAAC configuration from Honeycomb should be empty | ${node}
+| | Then SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 
 | TC03: Honeycomb can configure SLAAC with suppress link layer disabled
 | | [Documentation] | Checks if Honeycomb can congigure SLAAC.
 | | [Teardown] | SLAAC test teardown | ${node} | ${interface}
-| | Given SLAAC configuration from Honeycomb should be empty | ${node}
+| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | | And Honeycomb sets interface ipv6 address | ${node} | ${interface}
 | | ... | ${address} | ${prefix}
 | | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data}
-| | Then SLAAC configuration from Honeycomb should be | ${node}
+| | Then SLAAC Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${interface} | ${slaac_data}
 
 | TC04: Honeycomb can configure SLAAC with sending RA packets disabled
 | | [Documentation] | Checks if Honeycomb can configure SLAAC\
 | | ... | with given settings.
 | | [Teardown] | SLAAC test teardown | ${node} | ${interface}
-| | Given SLAAC configuration from Honeycomb should be empty | ${node}
+| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | | And Honeycomb sets interface ipv6 address | ${node} | ${interface}
 | | ... | ${address} | ${prefix}
 | | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_01}
-| | Then SLAAC configuration from Honeycomb should be | ${node} | ${interface}
+| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} | ${interface}
 | | ... | ${slaac_data_01}
 
 | TC05: Honeycomb can configure SLAAC with min interval values
 | | [Documentation] | Checks if Honeycomb can configure SLAAC\
 | | ... | with given settings.
 | | [Teardown] | SLAAC test teardown | ${node} | ${interface}
-| | Given SLAAC configuration from Honeycomb should be empty | ${node}
+| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | | And Honeycomb sets interface ipv6 address | ${node} | ${interface}
 | | ... | ${address} | ${prefix}
 | | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_02}
-| | Then SLAAC configuration from Honeycomb should be | ${node} | ${interface}
+| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} | ${interface}
 | | ... | ${slaac_data_02}
 
 | TC06: Honeycomb can configure SLAAC with max interval values
 | | [Documentation] | Checks if Honeycomb can configure SLAAC\
 | | ... | with given settings.
 | | [Teardown] | SLAAC test teardown | ${node} | ${interface}
-| | Given SLAAC configuration from Honeycomb should be empty | ${node}
+| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | | And Honeycomb sets interface ipv6 address | ${node} | ${interface}
 | | ... | ${address} | ${prefix}
 | | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_03}
-| | Then SLAAC configuration from Honeycomb should be | ${node} | ${interface}
+| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} | ${interface}
 | | ... | ${slaac_data_03}
 
 | TC07: DUT retransmits RA on IPv6 enabled interface after a set interval
index c4e9295..d765f1e 100644 (file)
 | Documentation | *Honeycomb NAT test suite.*
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Honeycomb configures NAT entry
 | | [Documentation] | Honeycomb configures a static NAT entry.
-| | Given NAT configuration from Honeycomb should be empty
+| | Given NAT Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${nat_empty}
 | | When Honeycomb Configures NAT Entry | ${node} | ${entry1}
 | | Then NAT Entries From Honeycomb Should Be | ${node} | ${entry1}
 | | [Documentation] | Honeycomb removes a configured static NAT entry.
 | | Given NAT Entries From Honeycomb Should Be | ${node} | ${entry1}
 | | When Honeycomb Configures NAT Entry | ${node} | ${NONE}
-| | Then NAT configuration from Honeycomb should be empty
+| | Then NAT Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${nat_empty}
 
 | TC03: Honeycomb configures multiple NAT entries
 | | [Documentation] | Honeycomb configures two static NAT entries.
 | | [Teardown] | Honeycomb Configures NAT Entry | ${node} | ${NONE}
-| | Given NAT configuration from Honeycomb should be empty
+| | Given NAT Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${nat_empty}
 | | When Honeycomb Configures NAT Entry | ${node} | ${entry1} | ${0} | ${1}
 | | And Honeycomb Configures NAT Entry | ${node} | ${entry2} | ${0} | ${2}
 | TC04: Honeycomb enables NAT on interface - inbound
 | | [Documentation] | Honeycomb configures NAT on an interface\
 | | ... | in inbound direction.
-| | Given NAT Interface Configuration From Honeycomb Should Be Empty
+| | Given NAT Interface Operational Data From Honeycomb Should Be Empty
 | | ... | ${node} | ${interface} | inbound
-| | And NAT Interface Configuration From Honeycomb Should Be Empty
+| | And NAT Interface Operational Data From Honeycomb Should Be Empty
 | | ... | ${node} | ${interface} | outbound
 | | When Honeycomb Configures NAT On Interface
 | | ... | ${node} | ${interface} | inbound
-| | Then NAT Interface Configuration From Honeycomb Should Be
+| | Then NAT Interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface} | inbound
-| | And NAT Interface Configuration From Honeycomb Should be empty
+| | And NAT Interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface} | outbound
 
 | TC05: Honeycomb removes NAT interface configuration
 | | [Documentation] | Honeycomb removes NAT configuration from an interface.
-| | Given NAT Interface Configuration From Honeycomb Should Be
+| | Given NAT Interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface} | inbound
-| | And NAT Interface Configuration From Honeycomb Should Be empty
+| | And NAT Interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface} | outbound
 | | When Honeycomb removes NAT interface configuration
 | | ... | ${node} | ${interface} | inbound
-| | Then NAT Interface Configuration From Honeycomb Should Be empty
+| | Then NAT Interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface} | inbound
-| | And NAT Interface Configuration From Honeycomb Should Be empty
+| | And NAT Interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface} | outbound
 
 | TC06: Honeycomb enables NAT on interface - outbound
 | | ... | in outbound direction.
 | | [Teardown] | Honeycomb removes NAT interface configuration
 | | ... | ${node} | ${interface} | outbound
-| | Given NAT Interface Configuration From Honeycomb Should Be empty
+| | Given NAT Interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface} | inbound
-| | And NAT Interface Configuration From Honeycomb Should Be empty
+| | And NAT Interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface} | outbound
 | | When Honeycomb Configures NAT on Interface
 | | ... | ${node} | ${interface} | outbound
-| | Then NAT Interface Configuration From Honeycomb Should Be empty
+| | Then NAT Interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface} | inbound
-| | And NAT Interface Configuration From Honeycomb Should Be
+| | And NAT Interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface} | outbound
index cf1f4b8..74c56eb 100644 (file)
@@ -21,7 +21,7 @@
 | Variables | resources/test_data/honeycomb/spanrx-apihc-apivat.py
 | ... | ${node} | ${node['interfaces']['port1']['name']}
 | ... | ${node['interfaces']['port3']['name']} | local0
-| Force Tags | honeycomb_sanity
+| Force Tags | HC_FUNC
 | Suite Setup | Add Interface local0 To Topology | ${node}
 | Suite Teardown | Restart Honeycomb and VPP | ${node}
 | Documentation | *Honeycomb port mirroring test suite.*
@@ -33,7 +33,7 @@
 | | ...
 | | When Honeycomb Configures SPAN on interface
 | | ... | ${node} | ${interface1} | ${settings_1}
-| | Then Interface SPAN configuration from Honeycomb should be
+| | Then Interface SPAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface1} | ${settings_1}
 
 | TC02: Honeycomb can configure SPAN on an interface transmit
@@ -42,7 +42,7 @@
 | | ...
 | | When Honeycomb Configures SPAN on interface
 | | ... | ${node} | ${interface1} | ${settings_2}
-| | Then Interface SPAN configuration from Honeycomb should be
+| | Then Interface SPAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface1} | ${settings_2}
 
 | TC03: Honeycomb can configure SPAN on an interface both
@@ -51,7 +51,7 @@
 | | ...
 | | When Honeycomb Configures SPAN on interface
 | | ... | ${node} | ${interface1} | ${settings_3}
-| | Then Interface SPAN configuration from Honeycomb should be
+| | Then Interface SPAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface1} | ${settings_3}
 
 | TC04: Honeycomb can configure SPAN on two interfaces
 | | ...
 | | When Honeycomb Configures SPAN on interface
 | | ... | ${node} | ${interface1} | ${settings_2} | ${settings_4}
-| | Then Interface SPAN configuration from Honeycomb should be
+| | Then Interface SPAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface1} | ${settings_2} | ${settings_4}
 
 | TC05: Honeycomb can disable SPAN on interface
 | | [Documentation] | Honeycomb removes existing SPAN configuration
 | | ... | on interface.
 | | ...
-| | Given Interface SPAN configuration from Honeycomb should be
+| | Given Interface SPAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface1} | ${settings_2} | ${settings_4}
 | | When Honeycomb removes interface SPAN configuration
 | | ... | ${node} | ${interface1}
-| | Then Interface SPAN configuration from Honeycomb should be empty
+| | Then Interface SPAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface1}
 
 | TC06: DUT mirrors IPv4 packets from one interface to another
index f4cec27..339fdb8 100644 (file)
@@ -32,7 +32,7 @@
 | Resource | resources/libraries/robot/honeycomb/vxlan.robot
 # import additional VxLAN settings from resource file
 | Variables | resources/test_data/honeycomb/vxlan.py
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 | Documentation | *Honeycomb VxLAN management test suite.*
 *** Test Cases ***
 | TC01: Honeycomb configures VxLAN tunnel
 | | [Documentation] | Check if Honeycomb API can configure VxLAN settings.
-| | Given VxLAN configuration from Honeycomb should be empty
+| | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
-| | And VxLAN configuration from VAT should be empty | ${node}
+| | And VxLAN Operational Data From VAT Should Be empty | ${node}
 | | When Honeycomb sets interface VxLAN configuration
 | | ... | ${node} | ${vx_interface} | ${vxlan_settings}
-| | Then VxLAN configuration from Honeycomb should be
+| | Then VxLAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vx_interface} | ${vxlan_settings}
-| | And VxLAN configuration from VAT should be
+| | And VxLAN Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_settings}
 | | ${vxlan_index}= | Get Interface index from oper data
 | | ... | ${node} | ${vx_interface}
 
 | TC02: Honeycomb disables VxLAN tunnel
 | | [Documentation] | Check if Honeycomb API can reset VxLAN configuration.
-| | Given VxLAN configuration from Honeycomb should be
+| | Given VxLAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vx_interface} | ${vxlan_settings}
 | | And Honeycomb should not show disabled interface in oper data
 | | ... | ${node} | ${vxlan_index}
-| | And VxLAN configuration from VAT should be
+| | And VxLAN Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_settings}
 | | When Honeycomb removes VxLAN tunnel settings | ${node} | ${vx_interface}
-| | Then VxLAN configuration from Honeycomb should be empty
+| | Then VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
 | | And Honeycomb should show disabled interface in oper data
 | | ... | ${node} | ${vxlan_index}
-| | And VxLAN configuration from VAT should be empty | ${node}
+| | And VxLAN Operational Data From VAT Should Be empty | ${node}
 
 | TC03: 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.
 | | [Teardown] | Honeycomb removes VxLAN tunnel settings
 | | ... | ${node} | ${vx_interface}
-| | Given VxLAN configuration from Honeycomb should be empty
+| | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
 | | And Honeycomb should show disabled interface in oper data
 | | ... | ${node} | ${vxlan_index}
-| | And VxLAN configuration from VAT should be empty | ${node}
+| | And VxLAN Operational Data From VAT Should Be empty | ${node}
 | | When Honeycomb sets interface VxLAN configuration
 | | ... | ${node} | ${vx_interface} | ${vxlan_settings2}
-| | Then VxLAN configuration from Honeycomb should be
+| | Then VxLAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vx_interface} | ${vxlan_settings2}
 | | And Honeycomb should not show disabled interface in oper data
 | | ... | ${node} | ${vxlan_index}
-| | And VxLAN configuration from VAT should be
+| | And VxLAN Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_settings2}
 
 | TC04: Honeycomb does not set VxLAN configuration on another interface type
 | | [Documentation] | Check if Honeycomb API prevents setting VxLAN\
 | | ... | on incorrect interface.
-| | Given VxLAN configuration from Honeycomb should be empty
+| | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface}
-| | And VxLAN configuration from VAT should be empty | ${node}
+| | And VxLAN Operational Data From VAT Should Be empty | ${node}
 | | When Honeycomb fails setting VxLan on different interface type
 | | ... | ${node} | ${interface} | ${vxlan_settings2}
-| | Then VxLAN configuration from Honeycomb should be empty
+| | Then VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface}
-| | And VxLAN configuration from VAT should be empty
+| | And VxLAN Operational Data From VAT Should Be empty
 | | ... | ${node}
 
 | TC05: Honeycomb does not set invalid VxLAN configuration
 | | [Documentation] | Check if Honeycomb API prevents setting incorrect VxLAN\
 | | ... | settings.
-| | Given VxLAN configuration from Honeycomb should be empty
+| | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
-| | And VxLAN configuration from VAT should be empty | ${node}
+| | And VxLAN Operational Data From VAT Should Be empty | ${node}
 | | When Honeycomb fails setting invalid VxLAN configuration
 | | ... | ${node} | ${vx_interface} | ${vxlan_invalid}
-| | Then VxLAN configuration from Honeycomb should be empty
+| | Then VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
 
 | TC06: Honeycomb configures VxLAN tunnel with ipv6
 | | ... | ipv6 settings.
 | | [Teardown] | Honeycomb removes VxLAN tunnel settings
 | | ... | ${node} | ${vx_interface}
-| | Given VxLAN configuration from Honeycomb should be empty
+| | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
-| | And VxLAN configuration from VAT should be empty | ${node}
+| | And VxLAN Operational Data 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
+| | Then VxLAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6_long}
-| | And VxLAN configuration from VAT should be
+| | And VxLAN Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_settings_ipv6}
index 7902396..253cd6a 100644 (file)
@@ -39,7 +39,7 @@
 # Import additional VxLAN GPE settings from resource file
 | Variables | resources/test_data/honeycomb/vxlan_gpe.py
 | Documentation | *Honeycomb VxLAN-GPE management test suite.*
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Suite Setup
 | ... | Restart Honeycomb and VPP | ${node}
 
 | TC01: Honeycomb creates VxLAN GPE tunnel
 | | [Documentation] | Check if Honeycomb API can configure a VxLAN GPE tunnel.
 | | ...
-| | Given interface configuration from Honeycomb should be empty
+| | Given interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if1}
-| | And interface configuration from VAT should be empty
+| | And interface Operational Data From VAT Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if1}
 | | When Honeycomb creates VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if1}
 | | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings}
-| | Then VxLAN GPE configuration from Honeycomb should be
+| | Then VxLAN GPE Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vxlan_gpe_if1}
 | | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings}
-| | And VxLAN GPE configuration from VAT should be
+| | And VxLAN GPE Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings}
 | | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond
 | | ... | ${node} | ${vxlan_gpe_if1}
 | TC02: Honeycomb removes VxLAN GPE tunnel
 | | [Documentation] | Check if Honeycomb API can remove VxLAN GPE tunnel.
 | | ...
-| | Given VxLAN GPE configuration from Honeycomb should be
+| | Given VxLAN GPE Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vxlan_gpe_if1}
 | | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings}
-| | VxLAN GPE configuration from VAT should be
+| | VxLAN GPE Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings}
 | | When Honeycomb removes VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if1}
-| | Then VxLAN GPE configuration from Honeycomb should be empty
+| | Then VxLAN GPE Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if1}
-| | And VxLAN GPE configuration from VAT should be empty
+| | And VxLAN GPE Operational Data From VAT Should Be empty
 | | ... | ${node}
 
 | TC03: Honeycomb sets wrong interface type while creating VxLAN GPE tunnel
 | | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\
 | | ... | with a wrong interface type set.
 | | ...
-| | Given interface configuration from Honeycomb should be empty
+| | Given interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if2}
-| | And interface configuration from VAT should be empty
+| | And interface Operational Data From VAT Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if2}
 | | When Honeycomb fails to create VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if2}
 | | ... | ${vxlan_gpe_wrong_type_base_settings} | ${vxlan_gpe_settings}
-| | Then interface configuration from Honeycomb should be empty
+| | Then interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if2}
-| | And interface configuration from VAT should be empty
+| | And interface Operational Data From VAT Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if2}
 
 | TC04: Honeycomb sets wrong protocol while creating VxLAN GPE tunnel
 | | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\
 | | ... | with a wrong next-protocol set.
 | | ...
-| | Given interface configuration from Honeycomb should be empty
+| | Given interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if3}
-| | And interface configuration from VAT should be empty
+| | And interface Operational Data From VAT Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if3}
 | | When Honeycomb fails to create VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if3}
 | | ... | ${vxlan_gpe_wrong_protocol_base_settings}
 | | ... | ${vxlan_gpe_wrong_protocol_settings}
-| | Then interface configuration from Honeycomb should be empty
+| | Then interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if3}
-| | And interface configuration from VAT should be empty
+| | And interface Operational Data From VAT Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if3}
 
 | TC05: Honeycomb sets VxLAN GPE tunnel on existing interface with wrong type
 | | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\
 | | ... | on existing interface with wrong type.
 | | ...
-| | Given VxLAN GPE configuration from VAT should be empty
+| | Given VxLAN GPE Operational Data From VAT Should Be empty
 | | ... | ${node}
 | | When Honeycomb fails to create VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_existing_if}
 | | ... | ${vxlan_gpe_base_wrong_interface_settings}
 | | ... | ${vxlan_gpe_wrong_interface_settings}
-| | Then VxLAN GPE configuration from VAT should be empty
+| | Then VxLAN GPE Operational Data From VAT Should Be empty
 | | ... | ${node}
 
 | TC06: Honeycomb creates VxLAN GPE tunnel with ipv6
 | | [Documentation] | Check if Honeycomb API can configure a VxLAN GPE tunnel\
 | | ... | with IPv6 addresses.
 | | ...
-| | Given VxLAN GPE configuration from VAT should be empty
+| | Given VxLAN GPE Operational Data From VAT Should Be empty
 | | ... | ${node}
-| | And VxLAN GPE configuration from Honeycomb should be empty
+| | And VxLAN GPE Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if5}
 | | When Honeycomb creates VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if5}
 | | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings}
-| | Then VxLAN GPE configuration from Honeycomb should be
+| | Then VxLAN GPE Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vxlan_gpe_if5}
 | | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings}
 | | And Run Keyword And Continue On Failure
-| | ... | VxLAN GPE configuration from VAT should be
+| | ... | VxLAN GPE Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_gpe_if5} | ${vxlan_gpe_ipv6_settings}
 | | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond
 | | ... | ${node} | ${vxlan_gpe_if5}
 | | [Documentation] | Check if Honeycomb API can configure another VxLAN\
 | | ... | GPE tunnel with IPv6 addresses.
 | | ...
-| | Given interface configuration from Honeycomb should be empty
+| | Given interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if6}
-| | And interface configuration from VAT should be empty
+| | And interface Operational Data From VAT Should Be empty
 | | ... | ${node} | ${vxlan_gpe_if6}
 | | When Honeycomb creates VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if6}
 | | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2}
-| | Then VxLAN GPE configuration from Honeycomb should be
+| | Then VxLAN GPE Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vxlan_gpe_if6}
 | | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2}
-| | And VxLAN GPE configuration from VAT should be
+| | And VxLAN GPE Operational Data From VAT Should Be
 | | ... | ${node} | ${vxlan_gpe_if6} | ${vxlan_gpe_ipv6_settings2}
 | | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond
 | | ... | ${node} | ${vxlan_gpe_if6}
index a1bd916..3386e1f 100644 (file)
@@ -30,7 +30,7 @@
 | ... | Honeycomb creates TAP interface
 | ... | ${node} | ${tap_interface} | ${tap_settings}
 | Documentation | *Honeycomb notifications test suite.*
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| Force Tags | HC_FUNC
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 
@@ -50,9 +50,9 @@
 | TC02: Honeycomb sends notification on interface deletion
 | | [Documentation] | Check if Honeycomb sends an interface-deleted notification
 | | ... | when an interface is deleted.
-| | Given TAP configuration from Honeycomb should be
+| | Given TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
-| | And TAP configuration from VAT should be
+| | And TAP Operational Data From VAT Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
 | | And Notification listener is established | ${node}
 | | When Honeycomb removes TAP interface | ${node} | ${tap_interface}
index 28746e6..5dfa4b5 100644 (file)
 *** Settings ***
 | Resource | resources/libraries/robot/default.robot
 | Resource | resources/libraries/robot/honeycomb/persistence.robot
+| Resource | resources/libraries/robot/honeycomb/interfaces.robot
+| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
+| Resource | resources/libraries/robot/honeycomb/l2_fib.robot
 | Suite Setup | Run Keywords
 | ... | Configure Persistence | ${node} | enable | AND
 | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
 | Suite Teardown | Configure Persistence | ${node} | disable
-| Force Tags | honeycomb_sanity
+| Force Tags | HC_PERSIST | HC_REST_ONLY
 | Documentation | *Honeycomb configuration persistence test suite.*
 
 *** Test Cases ***
+# multi-feature cases
+# ===================
 | TC01: Honeycomb persists configuration through restart of both Honeycomb and VPP
 | | [Documentation] | Checks if Honeycomb maintains configuration after both\
 | | ... | Honeycomb and VPP are restarted.
-# Vxlan tunnel name is sometimes not properly restored (HC2VPP-47)
-| | [Tags] | EXPECTED_FAILING
-| | Given Honeycomb configures every setting | ${node} | ${interface}
-| | And Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | [Tags] | HC_FUNC
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Multi-Feature Persistence test configuration | ${node} | ${interface}
+| | And Multi-Feature persistence Test Verification | ${node} | ${interface}
 | | And Log persisted configuration on node | ${node}
 | | When Honeycomb and VPP are restarted | ${node}
-| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface}
-| | And Honeycomb should show no rogue interfaces | ${node}
+| | Then Multi-Feature persistence Test Verification | ${node} | ${interface}
+
+| TC02: Honeycomb reverts to defaults if persistence files are invalid
+| | [Documentation] | Checks if Honeycomb reverts to default configuration when\
+| | ... | persistence files are damaged or invalid.
+| | [Tags] | HC_FUNC
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Multi-Feature Persistence test configuration | ${node} | ${interface}
+| | And Multi-Feature persistence Test Verification | ${node} | ${interface}
+| | When Persistence file is damaged during restart | ${node}
+| | Then Honeycomb and VPP should have default configuration | ${node}
 
-| TC02: Honeycomb persists configuration through restart of Honeycomb
+| TC03: Honeycomb persists configuration through restart of Honeycomb
 | | [Documentation] | Checks if Honeycomb maintains configuration after it\
 | | ... | is restarted.
-# Vxlan tunnel name is sometimes not properly restored (HC2VPP-47)
-| | [Tags] | EXPECTED_FAILING
-| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Multi-Feature Persistence test configuration | ${node} | ${interface}
+| | And Multi-Feature persistence Test Verification | ${node} | ${interface}
 | | And Log persisted configuration on node | ${node}
 | | When Honeycomb is restarted | ${node}
-| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface}
-| | And Honeycomb should show no rogue interfaces | ${node}
+| | Then Multi-Feature persistence Test Verification | ${node} | ${interface}
 
-| TC03: Honeycomb persists configuration through restart of VPP
+| TC04: Honeycomb persists configuration through restart of VPP
 | | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\
 | | ... | restarted.
-# Vxlan tunnel name is sometimes not properly restored (HC2VPP-47)
-| | [Tags] | EXPECTED_FAILING
-| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Multi-Feature Persistence test configuration | ${node} | ${interface}
+| | And Multi-Feature persistence Test Verification | ${node} | ${interface}
 | | And Log persisted configuration on node | ${node}
 | | When VPP is restarted | ${node}
-| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface}
-| | And Honeycomb should show no rogue interfaces | ${node}
+| | Then Multi-Feature persistence Test Verification | ${node} | ${interface}
 
-| TC04: Honeycomb reverts to defaults if persistence files are invalid
-| | [Documentation] | Checks if Honeycomb reverts to default configuration when\
-| | ... | persistence files are damaged or invalid.
-| | [Teardown] | Run keyword if test failed
+# single-feature cases
+# ====================
+
+| TC05: Persist configuration of IP addresses and neighbors - HC and VPP restart
+| | [Documentation] | Verify persistence of interface state, IPv4 address
+| | ... | and neighbor entries through restart of both Honeycomb and VPP.
+| | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
-| | When Persistence file is damaged during restart | ${node}
-| | Then Honeycomb and VPP should have default configuration | ${node}
+| | Given Interface Persistence Setup | ${node}
+| | And Interface Persistence Check | ${node}
+| | When Honeycomb and VPP are restarted | ${node}
+| | Then Interface Persistence Check | ${node}
+
+| TC06: Persist configuration of IP addresses and neighbors - HC restart
+| | [Documentation] | Verify persistence of interface state, IPv4 address
+| | ... | and neighbor entries through restart of Honeycomb.
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Interface Persistence Setup | ${node}
+| | And Interface Persistence Check | ${node}
+| | When Honeycomb is restarted | ${node}
+| | Then Interface Persistence Check | ${node}
+
+| TC07: Persist configuration of IP addresses and neighbors - VPP restart
+| | [Documentation] | Verify persistence of interface state, IPv4 address
+| | ... | and neighbor entries through restart of VPP.
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Interface Persistence Setup | ${node}
+| | And Interface Persistence Check | ${node}
+| | When VPP is restarted | ${node}
+| | Then Interface Persistence Check | ${node}
+
+| TC08: Honeycomb persists configuration of bridge domains - HC and VPP restart
+| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry
+| | ... | and Bridge domain Operational Interface Assignment through restart
+| | ... | of both Honeycomb and VPP.
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Bridge Domain Persistence Setup | ${node}
+| | When Honeycomb and VPP are restarted | ${node}
+| | Then Bridge Domain Persistence Check | ${node}
+
+| TC09: Honeycomb persists configuration of bridge domains - HC restart
+| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry
+| | ... | and Bridge domain Operational Interface Assignment through restart
+| | ... | of Honeycomb.
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Bridge Domain Persistence Setup | ${node}
+| | When Honeycomb is restarted | ${node}
+| | Then Bridge Domain Persistence Check | ${node}
+
+| TC10: Honeycomb persists configuration of bridge domains - VPP restart
+| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry
+| | ... | and Bridge domain Operational Interface Assignment through restart
+| | ... | of VPP.
+| | [Teardown]
+| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | Given Bridge Domain Persistence Setup | ${node}
+| | When VPP is restarted | ${node}
+| | Then Bridge Domain Persistence Check | ${node}
+
+#TODO: All other features

©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.