aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
authorselias <samelias@cisco.com>2017-01-17 16:59:03 +0100
committerPeter Mikus <pmikus@cisco.com>2017-01-27 14:54:19 +0000
commitfc42ade3d5c7ed279e867cb55ca42a44db5e706d (patch)
treeefe592ce21ea62d3c6723a994a10eb707966fa11 /resources
parentc53c0cbad736e937a4a41bf13eff4c5d8b5dcb55 (diff)
CSIT-506: HC Test- Update and cleanup all suites
- remove EXPECTED_FAILING tag from IPv4 neighbor, IPv6 address, MTU - fix bridge domain removal with interfaces assigned, it should fail - fix teardown of L2 FIB suite (bridge domain removal, see above) - disable vhost-user "server" test cases (VPP bug) - fix keyword verifying sub-interface state - update ACL test data (yang model changes) - remove EXPECTED_FAILING tag from ACL table removal test - update Jira IDs and comments in failing Lisp test case - remove EXPECTED_FAILING tag from Lisp removal test case - use vhost-user "client" instead of "server" in persistence tests Change-Id: I32eafb6013b4512090c0d9365e10c61029179d49 Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/python/NAT.py9
-rw-r--r--resources/libraries/python/honeycomb/HcAPIKwInterfaces.py9
-rw-r--r--resources/libraries/robot/honeycomb/interfaces.robot27
-rw-r--r--resources/libraries/robot/honeycomb/nat.robot2
-rw-r--r--resources/libraries/robot/honeycomb/persistence.robot6
-rw-r--r--resources/test_data/honeycomb/acl.py21
-rw-r--r--resources/test_data/honeycomb/l2_fib.py3
-rw-r--r--resources/test_data/honeycomb/lisp.py53
-rw-r--r--resources/test_data/honeycomb/nat.py4
-rw-r--r--resources/test_data/honeycomb/persistence.py4
10 files changed, 96 insertions, 42 deletions
diff --git a/resources/libraries/python/NAT.py b/resources/libraries/python/NAT.py
index d0e01c7f84..e30381682c 100644
--- a/resources/libraries/python/NAT.py
+++ b/resources/libraries/python/NAT.py
@@ -64,7 +64,7 @@ class NATUtil(object):
"vrf": items[4]
})
else:
- raise RuntimeError("Unexpected output from span_mapping_dump.")
+ raise RuntimeError("Unexpected output from snat_mapping_dump.")
return data
@@ -90,8 +90,9 @@ class NATUtil(object):
data = []
for line in lines:
items = line.split(" ")
- while "" in items:
- items.remove("")
+ for trash in ("", "vat#"):
+ while trash in items:
+ items.remove(trash)
if len(items) == 0:
continue
elif len(items) == 3:
@@ -102,6 +103,6 @@ class NATUtil(object):
})
else:
raise RuntimeError(
- "Unexpected output from span_interface_dump.")
+ "Unexpected output from snat_interface_dump.")
return data
diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
index 1e0883db27..a62cee85c7 100644
--- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
+++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
@@ -1143,7 +1143,7 @@ class InterfaceKeywords(object):
path = ("interfaces",
("interface", "name", super_interface),
"vpp-vlan:sub-interfaces",
- ("sub-interface", "identifier", identifier),
+ ("sub-interface", "identifier", int(identifier)),
"enabled")
return InterfaceKeywords._set_interface_properties(
@@ -1375,10 +1375,11 @@ class InterfaceKeywords(object):
else:
raise HoneycombError(
- "Unexpected data type {data_type}, reference type is"
- " {ref_type}. Must be list or dictionary.".format(
+ "Unexpected data type {data_type} in path {path}, reference"
+ " type is {ref_type}. Must be list or dictionary.".format(
data_type=type(data),
- ref_type=type(ref)))
+ ref_type=type(ref),
+ path=_path))
@staticmethod
def compare_interface_lists(list1, list2):
diff --git a/resources/libraries/robot/honeycomb/interfaces.robot b/resources/libraries/robot/honeycomb/interfaces.robot
index 765aaef7c0..3c91c77eb7 100644
--- a/resources/libraries/robot/honeycomb/interfaces.robot
+++ b/resources/libraries/robot/honeycomb/interfaces.robot
@@ -220,25 +220,23 @@
| IPv4 neighbor from Honeycomb should be
| | [Documentation] | Retrieves ipv4 neighbor list through Honeycomb\
-| | ... | and compares with neighbor list supplied in argument.
+| | ... | and compares the first entry with addresses supplied in arguments.
| | ...
| | ... | *Arguments:*
| | ... | - node - information about a DUT node. Type: dictionary
| | ... | - interface - name of an interface on the specified node. Type: string
-| | ... | - neighbors - list of ipv4 neighbor dictionaries. Type: list
+| | ... | - ip_address - ipv4 address of expected neighbor entry. Type: string
+| | ... | - mac_address - MAC address of expected neighbor entry. Type: string
| | ...
| | ... | *Example:*
| | ...
| | ... | \| IPv4 neighbor from Honeycomb should be \| ${nodes['DUT1']} \
| | ... | \| GigabitEthernet0/8/0 \| 192.168.0.4 \| 08:00:27:60:26:ab \|
-| | [Arguments] | ${node} | ${interface} | @{neighbors}
+| | [Arguments] | ${node} | ${interface} | ${ip_address} | ${mac_address}
| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
-| | ${data_neighbors}= | Set Variable | ${api_data['ietf-ip:ipv4']['neighbor']}
-| | Compare data structures
-| | ... | ${data_neighbors} | ${neighbors}
-| | Should be equal | ${neighbor['fib_address']}
+| | Should be equal | ${ip_address}
| | ... | ${api_data['ietf-ip:ipv4']['neighbor'][0]['ip']}
-| | Should be equal | ${neighbor['fib_mac']}
+| | Should be equal | ${mac_address}
| | ... | ${api_data['ietf-ip:ipv4']['neighbor'][0]['link-layer-address']}
| Honeycomb clears all interface ipv4 neighbors
@@ -290,11 +288,9 @@
| | ... | \| GigabitEthernet0/8/0 \| 10::10 \| 64 \|
| | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface}
-| | Should be equal | ${address}
-| | ... | ${api_data['ietf-ip:ipv6']['address'][0]['ip']}
-| | Should be equal | ${prefix}
-| | ... | ${api_data['ietf-ip:ipv6']['address'][0]['prefix-length']}
-| | Should be equal | ${fib_address}
+| | ${settings}= | Create Dictionary
+| | ... | ip=${address} | prefix-length=${prefix}
+| | Should contain | ${api_data['ietf-ip:ipv6']['address']} | ${settings}
| IPv6 address from VAT should be
| | [Documentation] | Retrieves interface ipv6 address through VAT and\
@@ -313,8 +309,9 @@
| | [Arguments] | ${node} | ${interface} | ${address} | ${prefix}
| | ${vpp_data}= | interfaceCLI.VPP get interface ip addresses
| | ... | ${node} | ${interface} | ipv6
-| | Should be equal | ${vpp_data[0]['ip']} | ${address}
-| | Should be equal | ${vpp_data[0]['prefix-length']} | ${prefix}
+| | ${settings}= | Create Dictionary
+| | ... | ip=${address} | prefix_length=${prefix}
+| | Should contain | ${vpp_data} | ${settings}
| Honeycomb sets interface ethernet configuration
| | [Documentation] | Uses Honeycomb API to change interface ethernet\
diff --git a/resources/libraries/robot/honeycomb/nat.robot b/resources/libraries/robot/honeycomb/nat.robot
index af24d56e37..17cda4763e 100644
--- a/resources/libraries/robot/honeycomb/nat.robot
+++ b/resources/libraries/robot/honeycomb/nat.robot
@@ -171,4 +171,4 @@
| | ... | \| ${nodes['DUT1']} \| ${settings} \|
| | [Arguments] | ${node} | ${settings}
| | ${data}= | VPP get NAT interfaces | ${node}
-| | Compare data structures | ${data[0]} | ${settings}
+| | Compare data structures | ${data} | ${settings}
diff --git a/resources/libraries/robot/honeycomb/persistence.robot b/resources/libraries/robot/honeycomb/persistence.robot
index 84607a8991..aac920914c 100644
--- a/resources/libraries/robot/honeycomb/persistence.robot
+++ b/resources/libraries/robot/honeycomb/persistence.robot
@@ -103,7 +103,7 @@
| | Honeycomb creates TAP interface
| | ... | ${node} | ${tap_interface} | ${tap_settings}
| | Honeycomb creates vhost-user interface
-| | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
+| | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
| | Honeycomb creates sub-interface | ${node} | ${interface}
| | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings}
| | Honeycomb sets interface state | ${node} | ${interface} | up
@@ -140,9 +140,9 @@
| | TAP configuration from VAT should be
| | ... | ${node} | ${tap_interface} | ${tap_settings}
| | Vhost-user configuration from Honeycomb should be
-| | ... | ${node} | ${vhost_interface} | ${vhost_user_server}
+| | ... | ${node} | ${vhost_interface} | ${vhost_user_client}
| | Vhost-user configuration from VAT should be
-| | ... | ${node} | ${vhost_user_server}
+| | ... | ${node} | ${vhost_user_client}
| | Sub-interface configuration from Honeycomb should be
| | ... | ${node} | ${interface} | ${sub_if_id} | ${sub_if_1_oper}
| | Sub-interface configuration from VAT should be
diff --git a/resources/test_data/honeycomb/acl.py b/resources/test_data/honeycomb/acl.py
index ee7f9525b8..46b88dad83 100644
--- a/resources/test_data/honeycomb/acl.py
+++ b/resources/test_data/honeycomb/acl.py
@@ -17,6 +17,7 @@
hc_acl_table = {
"name": "acl_table_test",
"nbuckets": 1,
+ "memory_size": 1048576,
"skip_n_vectors": 0,
"miss_next": "permit",
"mask": "00:00:00:00:00:00:ff:ff:ff:ff:ff:ff:00:00:00:00"
@@ -25,11 +26,31 @@ hc_acl_table = {
hc_acl_table2 = {
"name": "acl_table_test2",
"nbuckets": 2,
+ "memory_size": 1048576,
"skip_n_vectors": 1,
"next_table": "acl_table_test",
"miss_next": "deny",
"mask": "ff:ff:ff:00:00:00:ff:ff:ff:ff:ff:ff:00:00:00:00"
}
+
+#TODO: remove once memory_size is visible in oper data(HC2VPP-10)
+hc_acl_table_oper = {
+ "name": "acl_table_test",
+ "nbuckets": 1,
+ "skip_n_vectors": 0,
+ "miss_next": "permit",
+ "mask": "00:00:00:00:00:00:ff:ff:ff:ff:ff:ff:00:00:00:00"
+}
+
+hc_acl_table2_oper = {
+ "name": "acl_table_test2",
+ "nbuckets": 2,
+ "skip_n_vectors": 1,
+ "next_table": "acl_table_test",
+ "miss_next": "deny",
+ "mask": "ff:ff:ff:00:00:00:ff:ff:ff:ff:ff:ff:00:00:00:00"
+}
+
# representation of table settings in VAT
table_index = 0
vat_acl_table = {
diff --git a/resources/test_data/honeycomb/l2_fib.py b/resources/test_data/honeycomb/l2_fib.py
index d1600fc46d..c8fabdc943 100644
--- a/resources/test_data/honeycomb/l2_fib.py
+++ b/resources/test_data/honeycomb/l2_fib.py
@@ -119,7 +119,6 @@ def get_variables(node, interface, interface2):
# Configuration data:
'l2_fib_filter_cfg': {
"phys-address": filtered,
- "outgoing-interface": interface,
"static-config": True,
"action": "l2-fib-filter"
},
@@ -127,7 +126,6 @@ def get_variables(node, interface, interface2):
# Expected operational data:
'l2_fib_filter_oper': {
"phys-address": filtered,
- "outgoing-interface": interface,
"bridged-virtual-interface": False,
"action": "v3po:l2-fib-filter",
"static-config": True
@@ -136,7 +134,6 @@ def get_variables(node, interface, interface2):
# Expected VAT data:
'l2_fib_filter_vat': {
"mac": int("".join(filtered.split(':')), 16),
- "sw_if_index": sw_if_index,
"static_mac": 1,
"filter_mac": 1,
"bvi_mac": 0
diff --git a/resources/test_data/honeycomb/lisp.py b/resources/test_data/honeycomb/lisp.py
index 049d222b7b..12a614698c 100644
--- a/resources/test_data/honeycomb/lisp.py
+++ b/resources/test_data/honeycomb/lisp.py
@@ -108,25 +108,61 @@ lisp_settings_enable = {
}
}
-remote_vrf_adjacency = {
- "adjacency": {
+prepare_vrf_adjacency = {
+ "virtual-network-identifier": 7,
+ "vrf-subtable": {
+ "table-id": 3,
+ "local-mappings": {
+ "local-mapping": [{
+ "id": "local_map_vrf",
+ "eid": {
+ "virtual-network-id": 7,
+ "address-type": "ietf-lisp-address-types:ipv4-afi",
+ "ipv4": "192.168.1.1"
+ },
+ "locator-set": locator_set
+ }]
+ },
+ "remote-mappings": {
+ "remote-mapping": [{
+ "id": "remote_map_vrf",
+ "eid": {
+ "virtual-network-id": 7,
+ "address-type": "ietf-lisp-address-types:ipv4-afi",
+ "ipv4": "192.168.0.2"
+ },
+ "rlocs": {
+ "locator": [{
+ "address": "192.168.0.3",
+ "priority": 1,
+ "weight": 1
+ }]
+ },
+
+ }]
+ },
+ }
+}
+
+vrf_adjacency = {
+ "adjacency": [{
"id": "adj01",
"local-eid": {
- "virtual-network-id": 4,
+ "virtual-network-id": 7,
"address-type": "ietf-lisp-address-types:ipv4-afi",
"ipv4": "192.168.1.1"
},
"remote-eid": {
- "virtual-network-id": 4,
+ "virtual-network-id": 7,
"address-type": "ietf-lisp-address-types:ipv4-afi",
"ipv4": "192.168.0.2"
},
- }
+ }]
}
-remote_adj_subtable = deepcopy(remote_vrf_subtable)
-remote_adj_subtable["vrf-subtable"]["remote-mappings"]\
- ["remote-mapping"][0]["adjacencies"] = {}.update(remote_vrf_adjacency)
+adj_subtable = deepcopy(prepare_vrf_adjacency)
+adj_subtable["vrf-subtable"]["remote-mappings"]\
+ ["remote-mapping"][0]["adjacencies"] = deepcopy(vrf_adjacency)
def create_settings_dict(subtable):
@@ -142,6 +178,7 @@ lisp_settings_remote_bd = create_settings_dict(remote_bd_subtable)
lisp_settings_remote_vrf = create_settings_dict(remote_vrf_subtable)
lisp_settings_local_bd = create_settings_dict(local_bd_subtable)
lisp_settings_local_vrf = create_settings_dict(local_vrf_subtable)
+lisp_settings_both_vrf = create_settings_dict(prepare_vrf_adjacency)
vat_remote_bd = {
"is_local": 0,
diff --git a/resources/test_data/honeycomb/nat.py b/resources/test_data/honeycomb/nat.py
index d56fcfff56..fe2894b469 100644
--- a/resources/test_data/honeycomb/nat.py
+++ b/resources/test_data/honeycomb/nat.py
@@ -87,11 +87,11 @@ def get_variables(node, interface):
}
],
"nat_interface_vat_in": [
- {"sw_if_index": sw_if_index,
+ {"sw_if_index": str(sw_if_index),
"direction": "in"}
],
"nat_interface_vat_out": [
- {"sw_if_index": sw_if_index,
+ {"sw_if_index": str(sw_if_index),
"direction": "out"}
]
}
diff --git a/resources/test_data/honeycomb/persistence.py b/resources/test_data/honeycomb/persistence.py
index f46cfba597..216d4facef 100644
--- a/resources/test_data/honeycomb/persistence.py
+++ b/resources/test_data/honeycomb/persistence.py
@@ -50,8 +50,8 @@ def get_variables(interface):
},
# vhost-user interface settings
'vhost_interface': 'test_vhost',
- 'vhost_user_server': {'socket': 'soc1',
- 'role': 'server'
+ 'vhost_user_client': {'socket': 'soc1',
+ 'role': 'client'
},
# Vlan subinterface settings
'sub_if_id': sub_if_id,