CSIT-460: HC Test: Rework existing PBB tests 22/3922/3
authorselias <samelias@cisco.com>
Tue, 22 Nov 2016 14:05:19 +0000 (15:05 +0100)
committerPeter Mikus <pmikus@cisco.com>
Mon, 28 Nov 2016 08:27:18 +0000 (08:27 +0000)
Rework PBB tests to account for changes in:
https://gerrit.fd.io/r/2520
https://gerrit.fd.io/r/1833

Change-Id: Id18027c23e57180b76c8478b010a4e3a69a75e43
Signed-off-by: selias <samelias@cisco.com>
resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
resources/libraries/robot/honeycomb/provider_backbone_bridge.robot
resources/test_data/honeycomb/pbb/pbb.py
tests/func/honeycomb/090_provider_backbone_bridge.robot

index 035016c..3271413 100644 (file)
@@ -85,7 +85,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type data: dict
         :type data_representation: DataRepresentation
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the status code in response on PUT is not
         200 = OK.
@@ -106,7 +106,7 @@ class InterfaceKeywords(object):
 
         :param node: Honeycomb node.
         :type node: dict
-        :return: Configuration data about all interfaces from Honeycomb.
+        :returns: Configuration data about all interfaces from Honeycomb.
         :rtype: list
         :raises HoneycombError: If it is not possible to get configuration data.
         """
@@ -131,7 +131,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Configuration data about the given interface from Honeycomb.
+        :returns: Configuration data about the given interface from Honeycomb.
         :rtype: dict
         """
 
@@ -147,7 +147,7 @@ class InterfaceKeywords(object):
 
         :param node: Honeycomb node.
         :type node: dict
-        :return: Operational data about all interfaces from Honeycomb.
+        :returns: Operational data about all interfaces from Honeycomb.
         :rtype: list
         :raises HoneycombError: If it is not possible to get operational data.
         """
@@ -170,7 +170,7 @@ class InterfaceKeywords(object):
 
         :param node: Honeycomb node.
         :type node: dict
-        :return: Operational data about disabled interfaces.
+        :returns: Operational data about disabled interfaces.
         :rtype: list
         :raises HoneycombError: If it is not possible to get operational data.
         """
@@ -199,7 +199,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Operational data about the given interface from Honeycomb.
+        :returns: Operational data about the given interface from Honeycomb.
         :rtype: dict
         """
 
@@ -225,7 +225,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type path: tuple
         :type new_value: str, dict or list
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If it is not possible to get or set the data.
         """
@@ -257,7 +257,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type state: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises KeyError: If the argument "state" is nor "up" or "down".
         :raises HoneycombError: If the interface is not present on the node.
@@ -298,7 +298,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Content of response
+        :returns: Content of response
         :rtype: bytearray
         """
 
@@ -312,7 +312,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -333,7 +333,7 @@ class InterfaceKeywords(object):
         :type bd_name: str
         :type split_horizon_group: str
         :type bvi: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the interface is not present on the node.
         """
@@ -391,7 +391,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Operational data about bridge domain settings in the
+        :returns: Operational data about bridge domain settings in the
         interface.
         :rtype: dict
         """
@@ -418,7 +418,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type param: str
         :type value: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -443,7 +443,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type param: str
         :type value: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -473,7 +473,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type ip_addr: str
         :type network: str or int
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the provided netmask or prefix is not valid.
         """
@@ -504,7 +504,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type ip_addr: str
         :type network: str or int
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the provided netmask or prefix is not valid.
         """
@@ -532,7 +532,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -553,7 +553,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type ip_addr: str
         :type link_layer_address: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -571,7 +571,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -593,7 +593,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type param: str
         :type value: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -624,7 +624,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type ip_addr: str
         :type prefix_len: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -645,7 +645,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type ip_addr: str
         :type prefix_len: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -663,7 +663,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -684,7 +684,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type ip_addr: str
         :type link_layer_address: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -702,7 +702,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -724,7 +724,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type param: str
         :type value: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -749,7 +749,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type param: str
         :type value: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -773,7 +773,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type kwargs: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -802,7 +802,7 @@ class InterfaceKeywords(object):
         :param interface: The name of interface.
         :type node: dict
         :type interface: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If it is not possible to get information about
         interfaces or it is not possible to delete the interface.
@@ -844,7 +844,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type kwargs: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -873,7 +873,7 @@ class InterfaceKeywords(object):
         :type interface: str
         :type param: str
         :type value: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -896,7 +896,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type kwargs: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -935,7 +935,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type kwargs: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -969,7 +969,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type kwargs: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -997,7 +997,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type kwargs: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         """
@@ -1034,7 +1034,7 @@ class InterfaceKeywords(object):
         :type match: str
         :type tags: list
         :type kwargs: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the parameter is not valid.
         :raises KeyError: If the parameter 'match' is invalid.
@@ -1090,7 +1090,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type super_interface: str
         :type identifier: int
-        :return: Sub-interface operational data.
+        :returns: Sub-interface operational data.
         :rtype: dict
         :raises HoneycombError: If there is no sub-interface with the given ID.
         """
@@ -1112,7 +1112,7 @@ class InterfaceKeywords(object):
         :param super_interface: Super interface.
         :type node: dict
         :type super_interface: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -1135,7 +1135,7 @@ class InterfaceKeywords(object):
         :type super_interface: str
         :type identifier: int
         :type state: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -1164,7 +1164,7 @@ class InterfaceKeywords(object):
         :type super_interface: str
         :type identifier: int
         :type config: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -1187,7 +1187,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type super_interface: str
         :type identifier: int
-        :return: Operational data about the bridge domain.
+        :returns: Operational data about the bridge domain.
         :rtype: dict
         :raises HoneycombError: If there is no sub-interface with the given ID.
         """
@@ -1212,7 +1212,7 @@ class InterfaceKeywords(object):
         :type super_interface: str
         :type identifier: int
         :type config: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -1236,7 +1236,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type super_interface: str
         :type identifier: int
-        :return: Operational data about tag rewrite.
+        :returns: Operational data about tag rewrite.
         :rtype: dict
         :raises HoneycombError: If there is no sub-interface with the given ID.
         """
@@ -1266,7 +1266,7 @@ class InterfaceKeywords(object):
         :type identifier: int
         :type ip_addr: str
         :type network: str or int
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the provided netmask or prefix is not valid.
         """
@@ -1301,7 +1301,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type super_interface: str
         :type identifier: int
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         """
 
@@ -1390,7 +1390,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type kwargs: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If a parameter in kwargs is not valid.
         """
@@ -1423,7 +1423,7 @@ class InterfaceKeywords(object):
         :type node: dict
         :type interface: str
         :type table_name: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the configuration of interface is not
         successful.
@@ -1462,7 +1462,7 @@ class InterfaceKeywords(object):
         :param interface: The interface where the ACL will be disabled.
         :type node: dict
         :type interface: str
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the configuration of interface is not
         successful.
@@ -1482,28 +1482,25 @@ class InterfaceKeywords(object):
         return resp
 
     @staticmethod
-    def create_pbb_sub_interface(node, intf, sub_if_id, params):
+    def create_pbb_sub_interface(node, intf, params):
         """Creates a PBB sub-interface on the given interface and sets its
         parameters.
 
         :param node: Honeycomb node.
         :param intf: The interface where PBB sub-interface will be configured.
-        :param sub_if_id: Sub-interface ID.
         :param params: Configuration parameters of the sub-interface to be
         created.
         :type node: dict
         :type intf: str
-        :type sub_if_id: str or int
         :type params: dict
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the configuration of sub-interface is not
         successful.
         """
 
         interface = intf.replace("/", "%2F")
-        path = "/interface/{0}/sub-interfaces:sub-interfaces/sub-interface/" \
-               "{1}".format(interface, sub_if_id)
+        path = "/interface/{0}/pbb-rewrite/".format(interface)
         status_code, resp = HcUtil. \
             put_honeycomb_data(node, "config_vpp_interfaces", params, path,
                                data_representation=DataRepresentation.JSON)
@@ -1514,24 +1511,21 @@ class InterfaceKeywords(object):
         return resp
 
     @staticmethod
-    def delete_pbb_sub_interface(node, intf, sub_if_id):
+    def delete_pbb_sub_interface(node, intf):
         """Deletes the given PBB sub-interface.
 
         :param node: Honeycomb node.
         :param intf: The interface where PBB sub-interface will be deleted.
-        :param sub_if_id: ID of the PBB sub-interface to be deleted.
         :type node: dict
         :type intf: str
-        :type sub_if_id: str or int
-        :return: Content of response.
+        :returns: Content of response.
         :rtype: bytearray
         :raises HoneycombError: If the removal of sub-interface is not
         successful.
         """
 
         interface = intf.replace("/", "%2F")
-        path = "/interface/{0}/sub-interfaces:sub-interfaces/sub-interface/" \
-               "{1}".format(interface, sub_if_id)
+        path = "/interface/{0}/pbb-rewrite".format(interface)
 
         status_code, resp = HcUtil. \
             delete_honeycomb_data(node, "config_vpp_interfaces", path)
@@ -1551,14 +1545,13 @@ class InterfaceKeywords(object):
         :type node: dict
         :type intf: str
         :type sub_if_id: str or int
-        :return: PBB sub-interface operational data.
+        :returns: PBB sub-interface operational data.
         :rtype: dict
         :raises HoneycombError: If the removal of sub-interface is not
         successful.
         """
 
-        interface = "{0}.{1}".format(intf, sub_if_id)
-        return InterfaceKeywords.get_interface_oper_data(node, interface)
+        raise NotImplementedError
 
     @staticmethod
     def check_disabled_interface(node, interface):
@@ -1569,7 +1562,7 @@ class InterfaceKeywords(object):
         :param interface: Index number of an interface on the node.
         :type node: dict
         :type interface: int
-        :return: True if the interface exists in disabled interfaces.
+        :returns: True if the interface exists in disabled interfaces.
         :rtype: bool
         :raises HoneycombError: If the interface is not present
          in retrieved list of disabled interfaces.
index e088e69..dc15742 100644 (file)
 | | ...
 | | ... | *Example:*
 | | ... | \| Honeycomb creates PBB sub interface \| ${node} \| ${super_if}\
-| | ... | \| ${cfg_pbb_sub_if_1_ID} \| ${cfg_pbb_sub_if_1} \|
+| | ... | \| ${cfg_pbb_sub_if_1} \|
 | | ...
-| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} | ${params}
+| | [Arguments] | ${node} | ${super_if} | ${params}
 | | ...
 | | IfAPI.Set Interface Up | ${node} | ${super_if}
 | | IfAPI.Create PBB Sub Interface
-| | ... | ${node} | ${super_if} | ${sub_if_id} | ${params}
+| | ... | ${node} | ${super_if} | ${params}
 
 | Honeycomb Removes PBB Sub Interface
 | | [Documentation] | Uses Honeycomb API to remove PBB sub-interface from its\
 | | ...
 | | ... | *Example:*
 | | ... | \| Honeycomb Removes PBB sub interface\
-| | ... | \| ${node} \| ${super_if} \| ${cfg_pbb_sub_if_1_ID} \|
+| | ... | \| ${node} \| ${super_if} \|
 | | ...
-| | [Arguments] | ${node} | ${super_if} | ${sub_if_id}
+| | [Arguments] | ${node} | ${super_if}
 | | ...
-| | Delete PBB Sub Interface | ${node} | ${super_if} | ${sub_if_id}
+| | Delete PBB Sub Interface | ${node} | ${super_if}
 
 | PBB Sub Interface Operational Data From Honeycomb Should Be
 | | [Documentation] | Retrieves PBB sub-interface operational data from
 | | ...
 | | ... | *Example:*
 | | ... | \| Honeycomb fails to create PBB sub interface\
-| | ... | \| ${node} \| ${super_if} \| ${cfg_pbb_sub_if_ID}\
-| | ... | \| ${cfg_pbb_sub_if_no_vlan_tag} \|
+| | ... | \| ${node} \| ${super_if} \| ${cfg_pbb_sub_if_no_vlan_tag} \|
 | | ...
-| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} | ${params}
+| | [Arguments] | ${node} | ${super_if} | ${params}
 | | ...
 | | IfAPI.Set Interface Up | ${node} | ${super_if}
-| | Run keyword and expect error | *HoneycombError*not successful*code: *00.
+| | Run keyword and expect error | *HoneycombError*not successful*.
 | | ... | IfAPI.Create PBB Sub Interface
-| | ... | ${node} | ${super_if} | ${sub_if_id} | ${params}
+| | ... | ${node} | ${super_if} | ${params}
index 93ef2e2..f71c70e 100644 (file)
 
 # Add pbb sub interface
 # Configuration data
-cfg_pbb_sub_if_1_ID = '1'
 cfg_pbb_sub_if_1 = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_1_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "aa:aa:aa:aa:aa:ab",
-                "destination-address": "bb:bb:bb:bb:bb:bc",
-                "b-vlan-tag-vlan-id": "2223",
-                "i-tag-isid": "12"
-            },
-        }
-    ]
-}
-
-# Expected operational data:
-oper_pbb_sub_if_1 = {
-    'admin-status': 'up',
-    'ietf-ip:ipv4': {},
-    'oper-status': 'up',
-    'sub-interfaces:sub-interfaces': {},
-    'type': 'iana-if-type:ethernetCsmacd',
-    'v3po:ethernet': {
-        'duplex': 'full',
-        'mtu': 9216
+    "pbb-rewrite": {
+        "source-address": "aa:aa:aa:aa:aa:ab",
+        "destination-address": "bb:bb:bb:bb:bb:bc",
+        "b-vlan-tag-vlan-id": "2223",
+        "outer-tag": "16",
+        "i-tag-isid": "12",
+        "interface-operation": "translate-2-1"
     }
 }
 
 # Modify pbb sub interface
 # Configuration data
-cfg_pbb_sub_if_1_ID = '2'
 cfg_pbb_sub_if_1_mod = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_1_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "aa:aa:aa:aa:aa:de",
-                "destination-address": "bb:bb:bb:bb:bb:ed",
-                "b-vlan-tag-vlan-id": "2223",
-                "i-tag-isid": "12"
-            },
-        }
-    ]
-}
-
-# Expected operational data:
-oper_pbb_sub_if_1_mod = {
-    'admin-status': 'up',
-    'ietf-ip:ipv4': {},
-    'oper-status': 'up',
-    'sub-interfaces:sub-interfaces': {},
-    'type': 'iana-if-type:ethernetCsmacd',
-    'v3po:ethernet': {
-        'duplex': 'full',
-        'mtu': 9216
-    }
-}
-
-# Configuration data
-cfg_pbb_sub_if_2_ID = '3'
-cfg_pbb_sub_if_2 = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_2_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "aa:aa:aa:aa:aa:cc",
-                "destination-address": "bb:bb:bb:bb:bb:dd",
-                "b-vlan-tag-vlan-id": "10",
-                "i-tag-isid": "20"
-            },
-        }
-    ]
-}
-
-# Expected operational data:
-oper_pbb_sub_if_2 = {
-    'admin-status': 'up',
-    'ietf-ip:ipv4': {},
-    'oper-status': 'up',
-    'sub-interfaces:sub-interfaces': {},
-    'type': 'iana-if-type:ethernetCsmacd',
-    'v3po:ethernet': {
-        'duplex': 'full',
-        'mtu': 9216
-    }
-}
-
-# Configuration data
-cfg_pbb_sub_if_3_ID = '4'
-cfg_pbb_sub_if_3 = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_3_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "aa:aa:aa:aa:cc:aa",
-                "destination-address": "bb:bb:bb:bb:dd:bb",
-                "b-vlan-tag-vlan-id": "30",
-                "i-tag-isid": "40"
-            },
-        }
-    ]
-}
-
-# Expected operational data:
-oper_pbb_sub_if_3 = {
-    'admin-status': 'up',
-    'ietf-ip:ipv4': {},
-    'oper-status': 'up',
-    'sub-interfaces:sub-interfaces': {},
-    'type': 'iana-if-type:ethernetCsmacd',
-    'v3po:ethernet': {
-        'duplex': 'full',
-        'mtu': 9216
+    "pbb-rewrite": {
+        "source-address": "aa:aa:aa:aa:aa:ac",
+        "destination-address": "bb:bb:bb:bb:bb:bd",
+        "b-vlan-tag-vlan-id": "2224",
+        "outer-tag": "17",
+        "i-tag-isid": "13",
+        "interface-operation": "push-2"
     }
 }
 
@@ -153,94 +45,59 @@ oper_pbb_sub_if_3 = {
 # Wrong source-address
 cfg_pbb_sub_if_ID = '5'
 cfg_pbb_sub_if_wrong_src_addr = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "ab:cd:ef:gh:ij",
-                "destination-address": "bb:bb:bb:bb:bb:bc",
-                "b-vlan-tag-vlan-id": "2223",
-                "i-tag-isid": "12"
-            },
-        }
-    ]
+    "pbb-rewrite": {
+        "source-address": "aa:aa:aa:aa:aa:ag",
+        "destination-address": "bb:bb:bb:bb:bb:ce",
+        "b-vlan-tag-vlan-id": "2226",
+        "outer-tag": "19",
+        "i-tag-isid": "15",
+        "interface-operation": "pop-2"
+    }
 }
 
 # Wrong destination-address
 cfg_pbb_sub_if_wrong_dst_addr = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "aa:aa:aa:aa:aa:ab",
-                "destination-address": "ab:cd:ef:gh:ij",
-                "b-vlan-tag-vlan-id": "2223",
-                "i-tag-isid": "12"
-            },
-        }
-    ]
+    "pbb-rewrite": {
+        "source-address": "aa:aa:aa:aa:aa:ae",
+        "destination-address": "bb:bb:bb:bb:bb:cg",
+        "b-vlan-tag-vlan-id": "2226",
+        "outer-tag": "19",
+        "i-tag-isid": "15",
+        "interface-operation": "pop-2"
+    }
 }
 
 # Wrong b-vlan-tag-vlan-id
 cfg_pbb_sub_if_wrong_vlan_tag = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "aa:aa:aa:aa:aa:ab",
-                "destination-address": "bb:bb:bb:bb:bb:bc",
-                "b-vlan-tag-vlan-id": "123456789",
-                "i-tag-isid": "12"
-            },
-        }
-    ]
+    "pbb-rewrite": {
+        "source-address": "aa:aa:aa:aa:aa:ae",
+        "destination-address": "bb:bb:bb:bb:bb:ce",
+        "b-vlan-tag-vlan-id": "123456789",
+        "outer-tag": "19",
+        "i-tag-isid": "15",
+        "interface-operation": "pop-2"
+    }
 }
 
 # Wrong i-tag-isid
 cfg_pbb_sub_if_wrong_i_tag = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "aa:aa:aa:aa:aa:ab",
-                "destination-address": "bb:bb:bb:bb:bb:bc",
-                "b-vlan-tag-vlan-id": "2223",
-                "i-tag-isid": "167772152345"
-            },
-        }
-    ]
+    "pbb-rewrite": {
+        "source-address": "aa:aa:aa:aa:aa:ae",
+        "destination-address": "bb:bb:bb:bb:bb:ce",
+        "b-vlan-tag-vlan-id": "2226",
+        "outer-tag": "19",
+        "i-tag-isid": "167772152345",
+        "interface-operation": "pop-2"
+    }
 }
 
 # b-vlan-tag-vlan-id is missing
 cfg_pbb_sub_if_no_vlan_tag = {
-    "sub-interface": [
-        {
-            "identifier": cfg_pbb_sub_if_ID,
-            "vlan-type": "dot1ah-types:802dot1ah",
-            "enabled": "true",
-            "admin-status": "up",
-            "oper-status": "up",
-            "pbb": {
-                "source-address": "aa:aa:aa:aa:aa:ab",
-                "destination-address": "bb:bb:bb:bb:bb:bc",
-                "i-tag-isid": "12"
-            },
-        }
-    ]
+    "pbb-rewrite": {
+        "source-address": "aa:aa:aa:aa:aa:ae",
+        "destination-address": "bb:bb:bb:bb:bb:ce",
+        "outer-tag": "19",
+        "i-tag-isid": "15",
+        "interface-operation": "pop-2"
+    }
 }
index 65d5217..16791e2 100644 (file)
@@ -15,6 +15,8 @@
 | ${super_if}= | ${node['interfaces']['port1']['name']}
 
 *** Settings ***
+| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/provider_backbone_bridge.robot
 | Variables | resources/test_data/honeycomb/pbb/pbb.py
 | Documentation | *Honeycomb provider backbone bridge test suite.*
 | Force Tags | honeycomb_sanity
 
 *** Test Cases ***
+# TODO: add verifications once operational data or VPP dump is available.
 | TC01: Honeycomb sets PBB sub-interface
-| | [Documentation] | Honeycomb creates a new PBB sub-interface and checks its\
-| | ... | operational data.
+| | [Documentation] | Honeycomb creates a new PBB sub-interface.
 | | ...
-| | Given PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID}
-| | When Honeycomb creates PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_1_ID} | ${cfg_pbb_sub_if_1}
-| | Then PBB sub interface operational data from Honeycomb should be
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} | ${oper_pbb_sub_if_1}
+| | Honeycomb creates PBB sub interface | ${node} | ${super_if}
+| | ... | ${cfg_pbb_sub_if_1}
 
 | TC02: Honeycomb modifies existing PBB sub-interface
-| | [Documentation] | Honeycomb modifies an existing PBB sub-interface and\
-| | ... | checks its operational data.
+| | [Documentation] | Honeycomb modifies an existing PBB sub-interface.
 | | ...
-| | Given PBB sub interface operational data from Honeycomb should be
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID} | ${oper_pbb_sub_if_1}
-| | When Honeycomb creates PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_1_ID} | ${cfg_pbb_sub_if_1_mod}
-| | Then PBB sub interface operational data from Honeycomb should be
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID}
-| | ... | ${oper_pbb_sub_if_1_mod}
+| | Honeycomb creates PBB sub interface | ${node} | ${super_if}
+| | ... | ${cfg_pbb_sub_if_1_mod}
 
 | TC03: Honeycomb deletes existing PBB sub-interface
-| | [Documentation] | Honeycomb deletes an existing PBB sub-interface and\
-| | ... | checks operational data.
+| | [Documentation] | Honeycomb deletes an existing PBB sub-interface.
 | | ...
-| | Given PBB sub interface operational data from Honeycomb should be
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID}
-| | ... | ${oper_pbb_sub_if_1_mod}
-| | When Honeycomb Removes PBB sub interface
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID}
-| | Given PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_1_ID}
-
-| TC04: Honeycomb creates two PBB sub-interface
-| | [Documentation] | Honeycomb creates two PBB sub-interfaces on the same\
-| | ... | super interface and checks their operational data.
-| | ...
-| | Given PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_2_ID}
-| | And PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_3_ID}
-| | When Honeycomb creates PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_2_ID} | ${cfg_pbb_sub_if_2}
-| | And Honeycomb creates PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_3_ID} | ${cfg_pbb_sub_if_3}
-| | Then PBB sub interface operational data from Honeycomb should be
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_2_ID} | ${oper_pbb_sub_if_2}
-| | And PBB sub interface operational data from Honeycomb should be
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_3_ID} | ${oper_pbb_sub_if_3}
+| | Honeycomb Removes PBB sub interface
+| | ... | ${node} | ${super_if}
 
 | TC05: Honeycomb fails to set wrong destination-address for new PBB sub-interface
 | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\
 | | ... | wrong value of parameter destination-address, type yang:mac-address.
 | | ...
-| | Given PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
-| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_wrong_dst_addr}
-| | Then PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
+| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | ... | ${cfg_pbb_sub_if_wrong_dst_addr}
 
 | TC06: Honeycomb fails to set wrong source-address for new PBB sub-interface
 | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\
 | | ... | wrong value of parameter source-address, type yang:mac-address.
 | | ...
-| | Given PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
-| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_wrong_src_addr}
-| | Then PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
+| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | ... | ${cfg_pbb_sub_if_wrong_src_addr}
 
 | TC07: Honeycomb fails to set wrong b-vlan-tag-vlan-id for new PBB sub-interface
 | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\
 | | ... | wrong value of parameter b-vlan-tag-vlan-id, type uint16, 12 bit\
 | | ... | range, range "1..4095".
 | | ...
-| | Given PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
-| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_wrong_vlan_tag}
-| | Then PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
+| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | ... | ${cfg_pbb_sub_if_wrong_vlan_tag}
 
 | TC08: Honeycomb fails to set wrong i-tag-isid for new PBB sub-interface
 | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\
 | | ... | wrong value of parameter i-tag-isid, type uint32, 24 bit range,\
 | | ... | range "1..16777215".
 | | ...
-| | Given PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
-| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_wrong_i_tag}
-| | Then PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
+| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | ... | ${cfg_pbb_sub_if_wrong_i_tag}
 
 | TC07: Honeycomb fails to create new PBB sub-interface without vlan tag
 | | [Documentation] | Honeycomb fails to create a new PBB sub-interface without\
 | | ... | parameter b-vlan-tag-vlan-id.
 | | ...
-| | Given PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
-| | When Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
-| | ... | ${cfg_pbb_sub_if_ID} | ${cfg_pbb_sub_if_no_vlan_tag}
-| | Then PBB sub interface operational data from Honeycomb should be empty
-| | ... | ${node} | ${super_if} | ${cfg_pbb_sub_if_ID}
+| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | ... | ${cfg_pbb_sub_if_no_vlan_tag}