Fix Tap failing tests 34/18534/5
authorMichal Cmarada <mcmarada@cisco.com>
Thu, 28 Mar 2019 07:38:32 +0000 (08:38 +0100)
committerMichal Cmarada <mcmarada@cisco.com>
Thu, 28 Mar 2019 07:39:33 +0000 (08:39 +0100)
Due to migration to Tap-v2 the old Tap API was removed.
This fixes failing tests where Tap interface was used.

Change-Id: I2f90177d2d8ee914e3ddcd3e10f212f9d72b9ac2
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
resources/libraries/robot/honeycomb/persistence.robot
resources/libraries/robot/honeycomb/tap.robot
resources/templates/vat/tap.vat
resources/templates/vat/tap_dump.vat
resources/test_data/honeycomb/netconf/triggers.py
resources/test_data/honeycomb/persistence.py
tests/honeycomb/func/mgmt-cfg-inttap-apihc-apivat-func.robot
tests/honeycomb/func/mgmt-notif-apihcnc-func.robot

index a7aebbb..e9ef133 100644 (file)
@@ -18,13 +18,13 @@ operational data.
 """
 from robot.api import logger
 
 """
 from robot.api import logger
 
-from resources.libraries.python.topology import Topology
 from resources.libraries.python.HTTPRequest import HTTPCodes
 from resources.libraries.python.honeycomb.HoneycombSetup import HoneycombError
 from resources.libraries.python.honeycomb.HoneycombUtil \
     import DataRepresentation
 from resources.libraries.python.honeycomb.HoneycombUtil \
     import HoneycombUtil as HcUtil
 from resources.libraries.python.HTTPRequest import HTTPCodes
 from resources.libraries.python.honeycomb.HoneycombSetup import HoneycombError
 from resources.libraries.python.honeycomb.HoneycombUtil \
     import DataRepresentation
 from resources.libraries.python.honeycomb.HoneycombUtil \
     import HoneycombUtil as HcUtil
+from resources.libraries.python.topology import Topology
 
 
 class InterfaceKeywords(object):
 
 
 class InterfaceKeywords(object):
@@ -48,7 +48,10 @@ class InterfaceKeywords(object):
     VXLAN_PARAMS = ("src", "dst", "vni", "encap-vrf-id")
     L2_PARAMS = ("bridge-domain", "split-horizon-group",
                  "bridged-virtual-interface")
     VXLAN_PARAMS = ("src", "dst", "vni", "encap-vrf-id")
     L2_PARAMS = ("bridge-domain", "split-horizon-group",
                  "bridged-virtual-interface")
-    TAP_PARAMS = ("tap-name", "mac", "device-instance")
+    TAP_PARAMS = ("id", "tx-ring-size", "rx-ring-size", "host-mac",
+                  "host-interface-name", "host-namespace", "host-bridge",
+                  "host-ipv4-address", "host-ipv6-address", "tag",
+                  "host-ipv4-gateway", "host-ipv6-gateway", "mac")
     VHOST_USER_PARAMS = ("socket", "role")
     SUB_IF_PARAMS = ("identifier",
                      "vlan-type",
     VHOST_USER_PARAMS = ("socket", "role")
     SUB_IF_PARAMS = ("identifier",
                      "vlan-type",
@@ -949,14 +952,14 @@ class InterfaceKeywords(object):
 
         new_tap = {
             "name": interface,
 
         new_tap = {
             "name": interface,
-            "type": "v3po:tap",
-            "v3po:tap": {}
+            "type": "v3po:tap-v2",
+            "v3po:tap-v2": {}
         }
         for param, value in kwargs.items():
             if param not in InterfaceKeywords.TAP_PARAMS:
         }
         for param, value in kwargs.items():
             if param not in InterfaceKeywords.TAP_PARAMS:
-                raise HoneycombError("The parameter {0} is invalid.".
-                                     format(param))
-            new_tap["v3po:tap"][param] = value
+                raise HoneycombError(
+                    "The parameter {0} is invalid.".format(param))
+            new_tap["v3po:tap-v2"][param] = value
 
         path = ("interfaces", "interface")
         new_tap_structure = [new_tap, ]
 
         path = ("interfaces", "interface")
         new_tap_structure = [new_tap, ]
@@ -968,7 +971,7 @@ class InterfaceKeywords(object):
         """Configure TAP on the interface.
 
         The keyword configures TAP parameters on the given interface. The type
         """Configure TAP on the interface.
 
         The keyword configures TAP parameters on the given interface. The type
-        of interface must be set to "v3po:tap".
+        of interface must be set to "v3po:tap-v2".
         The new TAP parameters overwrite the current configuration. If a
         parameter in new configuration is missing, it is removed from TAP
         configuration.
         The new TAP parameters overwrite the current configuration. If a
         parameter in new configuration is missing, it is removed from TAP
         configuration.
@@ -993,7 +996,7 @@ class InterfaceKeywords(object):
                                      format(param))
             tap_structure[param] = value
 
                                      format(param))
             tap_structure[param] = value
 
-        path = ("interfaces", ("interface", "name", interface), "v3po:tap")
+        path = ("interfaces", ("interface", "name", interface), "v3po:tap-v2")
         return InterfaceKeywords._set_interface_properties(
             node, interface, path, tap_structure)
 
         return InterfaceKeywords._set_interface_properties(
             node, interface, path, tap_structure)
 
index 17bacd1..257f227 100644 (file)
 | | Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${0} | ${bd_settings}
 | | TAP Operational Data From Honeycomb Should Be
 | | Bridge domain Operational Data From VAT Should Be
 | | ... | ${node} | ${0} | ${bd_settings}
 | | TAP Operational Data From Honeycomb Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings}
+| | ... | ${node} | ${tap_interface} | ${tap_settings_oper}
 | | TAP Operational Data From VAT Should Be
 | | TAP Operational Data From VAT Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings}
+| | ... | ${node} | ${tap_interface_vat} | ${tap_settings_vat}
 | | Vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
 | | Vhost-user Operational Data From VAT Should Be
 | | Vhost-user Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
 | | Vhost-user Operational Data From VAT Should Be
index 0d5585b..8a80c4d 100644 (file)
@@ -27,8 +27,8 @@
 | | ...
 | | ... | *Example:*
 | | ... | \| Honeycomb creates TAP interface \
 | | ...
 | | ... | *Example:*
 | | ... | \| Honeycomb creates TAP interface \
-| | ... | \| ${nodes['DUT1']} \| tap_int1 \| ${{'tap-name':'tap1',\
-| | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \|
+| | ... | \| ${nodes['DUT1']} \| tap_int1 \| ${{'host-interface-name':'tap1',\
+| | ... | 'mac':'08:00:27:60:26:ab', 'id':3}} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | Create TAP interface | ${node} | ${interface}
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | Create TAP interface | ${node} | ${interface}
@@ -44,8 +44,8 @@
 | | ...
 | | ... | *Example:*
 | | ... | \| Honeycomb configures TAP interface \
 | | ...
 | | ... | *Example:*
 | | ... | \| Honeycomb configures TAP interface \
-| | ... | \| ${nodes['DUT1']} \| tap_int1 \| ${{'tap-name':'tap1',\
-| | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \|
+| | ... | \| ${nodes['DUT1']} \| tap_int1 \| ${{'host-interface-name':'tap1',\
+| | ... | 'mac':'08:00:27:60:26:ab', 'id':3}} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | Configure interface TAP | ${node} | ${interface}
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | Configure interface TAP | ${node} | ${interface}
 | | ... | *Example:*
 | | ...
 | | ... | \| TAP Operational Data From Honeycomb Should Be \
 | | ... | *Example:*
 | | ...
 | | ... | \| TAP Operational Data From Honeycomb Should Be \
-| | ... | \| ${nodes['DUT1']} \| tap_int1 \| ${{'tap-name':'tap1',\
-| | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \|
+| | ... | \| ${nodes['DUT1']} \| tap_int1 \| ${{'host-interface-name':'tap1',\
+| | ... | 'mac':'08:00:27:60:26:ab', 'id':3}} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | ${api_data}= | Get interface oper data | ${node} | ${interface}
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | ${api_data}= | Get interface oper data | ${node} | ${interface}
-| | ${api_tap}= | Set Variable | ${api_data['v3po:tap']}
-| | Should be equal | ${api_tap['tap-name']} | ${settings['tap-name']}
+| | ${api_tap}= | Set Variable | ${api_data['v3po:tap-v2']}
+| | Should be equal | ${api_tap['device-name']} | ${settings['device-name']}
 | | ${api_mac}= | Set Variable | ${api_data['phys-address']}
 | | Should be equal | ${api_mac} | ${settings['mac']}
 
 | | ${api_mac}= | Set Variable | ${api_data['phys-address']}
 | | Should be equal | ${api_mac} | ${settings['mac']}
 
 | | ... | *Example:*
 | | ...
 | | ... | \| TAP Operational Data From Honeycomb Should Be \
 | | ... | *Example:*
 | | ...
 | | ... | \| TAP Operational Data From Honeycomb Should Be \
-| | ... | \| ${nodes['DUT1']} \| ${{'tap-name':'tap1',\
-| | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \|
+| | ... | \| ${nodes['DUT1']} \| ${{'host-interface-name':'tap1',\
+| | ... | 'mac':'08:00:27:60:26:ab', 'id':3}} \|
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | ${vat_data}= | TAP Dump | ${node} | ${interface}
 | | ...
 | | [Arguments] | ${node} | ${interface} | ${settings}
 | | ${vat_data}= | TAP Dump | ${node} | ${interface}
-| | Should be equal | ${vat_data['dev_name']} | ${settings['tap-name']}
+| | Should be equal | ${vat_data['dev_name']} | ${settings['dev_name']}
+| | Should be equal | ${vat_data['rx_ring_sz']} | ${settings['rx_ring_sz']}
+| | Should be equal | ${vat_data['tx_ring_sz']} | ${settings['tx_ring_sz']}
 # other settings not accessible through VAT commands
 
 | TAP Operational Data From Honeycomb Should Be empty
 # other settings not accessible through VAT commands
 
 | TAP Operational Data From Honeycomb Should Be empty
 | | ...
 | | [Arguments] | ${node} | ${interface}
 | | ${api_data}= | Get interface oper data | ${node} | ${interface}
 | | ...
 | | [Arguments] | ${node} | ${interface}
 | | ${api_data}= | Get interface oper data | ${node} | ${interface}
-| | Run keyword and expect error | *KeyError: 'v3po:tap' | Set Variable
-| | ... | ${api_data['v3po:tap']}
+| | Run keyword and expect error | *KeyError: 'v3po:tap-v2' | Set Variable
+| | ... | ${api_data['v3po:tap-v2']}
 
 | TAP Operational Data From VAT Should Be empty
 | | [Documentation] | Attempts to retrieve interface TAP configuration\
 
 | TAP Operational Data From VAT Should Be empty
 | | [Documentation] | Attempts to retrieve interface TAP configuration\
index 30cde83..bac63e8 100644 (file)
@@ -1 +1 @@
-tap_{tap_command} {tap_arguments}
\ No newline at end of file
+tap_{tap_command}_v2 {tap_arguments}
\ No newline at end of file
index 8f51f6e..de8412b 100644 (file)
@@ -1 +1 @@
-sw_interface_tap_dump
\ No newline at end of file
+sw_interface_tap_v2_dump
\ No newline at end of file
index 8cdfcd9..0db68dd 100644 (file)
@@ -404,10 +404,10 @@ trigger_revert2 = u"""
 <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
 <interface>
 <name>tap</name>
 <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
 <interface>
 <name>tap</name>
-<type xmlns:v3po="http://fd.io/hc2vpp/yang/v3po">v3po:tap</type>
+<type xmlns:v3po="http://fd.io/hc2vpp/yang/v3po">v3po:tap-v2</type>
 <enabled>true</enabled>
 <tap xmlns="http://fd.io/hc2vpp/yang/v3po">
 <enabled>true</enabled>
 <tap xmlns="http://fd.io/hc2vpp/yang/v3po">
-<tap-name>tap</tap-name>
+<dev-name>tap</dev-name>
 </tap>
 </interface>
 </interfaces>
 </tap>
 </interface>
 </interfaces>
@@ -425,10 +425,10 @@ trigger_revert2 = u"""
 <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
 <interface>
 <name>tap2</name>
 <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
 <interface>
 <name>tap2</name>
-<type xmlns:v3po="http://fd.io/hc2vpp/yang/v3po">v3po:tap</type>
+<type xmlns:v3po="http://fd.io/hc2vpp/yang/v3po">v3po:tap-v2</type>
 <enabled>true</enabled>
 <tap xmlns="http://fd.io/hc2vpp/yang/v3po">
 <enabled>true</enabled>
 <tap xmlns="http://fd.io/hc2vpp/yang/v3po">
-<tap-name>tap</tap-name>
+<dev-name>tap</dev-name>
 </tap>
 </interface>
 </interfaces>
 </tap>
 </interface>
 </interfaces>
index 88d2137..f4ebdd5 100644 (file)
@@ -44,10 +44,24 @@ def get_variables(interface):
                         },
         # tap interface settings
         'tap_interface': 'tap_test',
                         },
         # tap interface settings
         'tap_interface': 'tap_test',
-        'tap_settings': {'tap-name': 'tap_test',
+        'tap_interface_vat': 'tap0',
+        'tap_settings': {'host-interface-name': 'tap_test',
                          'mac': '08:00:27:c0:5d:37',
                          'mac': '08:00:27:c0:5d:37',
-                         'device-instance': 1
+                         'id': 1
                          },
                          },
+        'tap_settings_oper': {'host-interface-name': 'tap_test',
+                              'device-name': 'tap0',
+                              'tx-ring-size': 256,
+                              'rx-ring-size': 256,
+                              'mac': '08:00:27:c0:5d:37',
+                              'id': 1
+                              },
+        'tap_settings_vat': {'dev_name': 'tap0',
+                             'tx_ring_sz': 256,
+                             'rx_ring_sz': 256,
+                             'mac': '08:00:27:c0:5d:37',
+                             'id': 1
+                             },
         # vhost-user interface settings
         'vhost_interface': 'test_vhost',
         'vhost_user_client': {'socket': 'soc1',
         # vhost-user interface settings
         'vhost_interface': 'test_vhost',
         'vhost_user_client': {'socket': 'soc1',
index cffec5b..4b0b1d3 100644 (file)
 # Interfaces to run tests on.
 | ${interface}= | ${node['interfaces']['port1']['name']}
 | ${tap_interface}= | tap_test
 # Interfaces to run tests on.
 | ${interface}= | ${node['interfaces']['port1']['name']}
 | ${tap_interface}= | tap_test
+| ${tap_device_name}= | tap0
 # Configuration which will be set and verified during tests.
 # Configuration which will be set and verified during tests.
-| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37
-| ... | device-instance=${1}
-| &{tap_settings2}= | tap-name=tap_test | mac=08:00:27:60:26:ab
-| ... | device-instance=${2}
+| &{tap_settings}= | host-interface-name=tap_test | mac=08:00:27:c0:5d:37
+| ... | id=${1}
+| &{tap_settings_oper}= | device-name=tap0 | tx-ring-size=${256}
+| ... | rx-ring-size=${256} | host-interface-name=tap_test
+| ... | mac=08:00:27:c0:5d:37 | id=${1}
+| &{tap_settings_vat}= | dev_name=tap0 | mac=08:00:27:c0:5d:37
+| ... | rx_ring_sz=${256} | tx_ring_sz=${256} | id=${1}
+| &{tap_settings2}= | host-interface-name=tap_test | mac=08:00:27:60:26:ab
+| ... | id=${2}
+| &{tap_settings2_oper}= | device-name=tap0 | tx-ring-size=${256}
+| ... | rx-ring-size=${256} | host-interface-name=tap_test
+| ... | mac=08:00:27:60:26:ab | id=${1}
+| &{tap_settings2_vat}= | dev_name=tap0 | mac=08:00:27:60:26:ab
+| ... | rx_ring_sz=${256} | tx_ring_sz=${256} | id=${1}
 
 *** Settings ***
 | Resource | resources/libraries/robot/shared/default.robot
 
 *** Settings ***
 | Resource | resources/libraries/robot/shared/default.robot
 | | When Honeycomb creates TAP interface
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
 | | Then TAP Operational Data From Honeycomb Should Be
 | | When Honeycomb creates TAP interface
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
 | | Then TAP Operational Data From Honeycomb Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings}
+| | ... | ${node} | ${tap_interface} | ${tap_settings_oper}
 | | And TAP Operational Data From VAT Should Be
 | | And TAP Operational Data From VAT Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings}
+| | ... | ${node} | ${tap_device_name} | ${tap_settings_vat}
 
 | TC02: Honeycomb modifies existing TAP interface configuration
 
 | TC02: Honeycomb modifies existing TAP interface configuration
-| | [Documentation] | Check if Honeycomb API can re-configure and existing TAP\
+| | [Documentation] | Check if Honeycomb API can re-configure an existing TAP\
 | | ... | interface with new settings.
 | | ...
 | | Given TAP Operational Data From Honeycomb Should Be
 | | ... | interface with new settings.
 | | ...
 | | Given TAP Operational Data From Honeycomb Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings}
+| | ... | ${node} | ${tap_interface} | ${tap_settings_oper}
 | | And TAP Operational Data From VAT Should Be
 | | And TAP Operational Data From VAT Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings}
+| | ... | ${node} | ${tap_device_name} | ${tap_settings_vat}
 | | When Honeycomb configures TAP interface
 | | ... | ${node} | ${tap_interface} | ${tap_settings2}
 | | Then TAP Operational Data From Honeycomb Should Be
 | | When Honeycomb configures TAP interface
 | | ... | ${node} | ${tap_interface} | ${tap_settings2}
 | | Then TAP Operational Data From Honeycomb Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings2}
+| | ... | ${node} | ${tap_interface} | ${tap_settings2_oper}
 | | And TAP Operational Data From VAT Should Be
 | | And TAP Operational Data From VAT Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings2}
+| | ... | ${node} | ${tap_device_name} | ${tap_settings2_vat}
 
 | TC03: Honeycomb removes TAP interface
 | | [Documentation] | Check if Honeycomb API can remove TAP interface.
 | | ...
 | | Given TAP Operational Data From Honeycomb Should Be
 
 | TC03: Honeycomb removes TAP interface
 | | [Documentation] | Check if Honeycomb API can remove TAP interface.
 | | ...
 | | Given TAP Operational Data From Honeycomb Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings2}
+| | ... | ${node} | ${tap_interface} | ${tap_settings2_oper}
 | | And TAP Operational Data From VAT Should Be
 | | And TAP Operational Data From VAT Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings2}
+| | ... | ${node} | ${tap_device_name} | ${tap_settings2_vat}
 | | When Honeycomb removes TAP interface | ${node} | ${tap_interface}
 | | Then TAP Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${tap_interface}
 | | And TAP Operational Data From VAT Should Be empty
 | | When Honeycomb removes TAP interface | ${node} | ${tap_interface}
 | | Then TAP Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${tap_interface}
 | | And TAP Operational Data From VAT Should Be empty
-| | ... | ${node} | ${tap_interface}
+| | ... | ${node} | ${tap_device_name}
index 5320a7f..ad47861 100644 (file)
 # Interfaces to run tests on.
 | ${interface}= | ${node['interfaces']['port1']['name']}
 | ${tap_interface}= | tap_test
 # Interfaces to run tests on.
 | ${interface}= | ${node['interfaces']['port1']['name']}
 | ${tap_interface}= | tap_test
-| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37
-| ... | device-instance=${1}
+| ${tap_interface_vpp}= | tap0
+| &{tap_settings}= | host-interface-name=tap_test | mac=08:00:27:c0:5d:37
+| ... | id=${1}
+| &{tap_settings_oper}= | host-interface-name=tap_test | device-name=tap0
+| ... | mac=08:00:27:c0:5d:37 | rx_ring_sz=${256} | tx_ring_sz=${256} | id=${1}
+| &{tap_settings_vat}= | dev_name=tap0 | mac=08:00:27:c0:5d:37
+| ... | rx_ring_sz=${256} | tx_ring_sz=${256} | id=${1}
 
 *** Settings ***
 | Resource | resources/libraries/robot/shared/default.robot
 
 *** Settings ***
 | Resource | resources/libraries/robot/shared/default.robot
@@ -52,9 +57,9 @@
 | | ... | when an interface is deleted.
 | | ...
 | | Given TAP Operational Data From Honeycomb Should Be
 | | ... | when an interface is deleted.
 | | ...
 | | Given TAP Operational Data From Honeycomb Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings}
+| | ... | ${node} | ${tap_interface} | ${tap_settings_oper}
 | | And TAP Operational Data From VAT Should Be
 | | And TAP Operational Data From VAT Should Be
-| | ... | ${node} | ${tap_interface} | ${tap_settings}
+| | ... | ${node} | ${tap_interface_vpp} | ${tap_settings_vat}
 | | And Notification listener should be established | ${node}
 | | When Honeycomb removes TAP interface | ${node} | ${tap_interface}
 | | Then Honeycomb should send interface deleted notification | ${tap_interface}
 | | And Notification listener should be established | ${node}
 | | When Honeycomb removes TAP interface | ${node} | ${tap_interface}
 | | Then Honeycomb should send interface deleted notification | ${tap_interface}