diff options
author | selias <samelias@cisco.com> | 2016-10-19 17:40:37 +0200 |
---|---|---|
committer | selias <samelias@cisco.com> | 2016-10-20 10:56:20 +0200 |
commit | 4a16abbba4ffac705b3ac389421dd21e78457cc0 (patch) | |
tree | b19926bc6a46372e2d4ecc8b6374240f14d5936f /resources/libraries | |
parent | 811b8dc97ccf12952d5ec460bb0a421ce8933326 (diff) |
CSIT-427: Honeycomb ietf-ACL tests - L4 and misc.
- add test cases for:
L4 port range ACLs
multiple classify rules
L2 ACL on egress interface
- add L4 configuration to mixed ACL test
- add test variables for new test cases
- update HTTPRequests to treat code 201 as a positive response
Change-Id: If43007545fec174af12dab594f8a1b15b2e4a536
Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources/libraries')
5 files changed, 27 insertions, 31 deletions
diff --git a/resources/libraries/python/HTTPRequest.py b/resources/libraries/python/HTTPRequest.py index 567ac791b7..1f5df52c01 100644 --- a/resources/libraries/python/HTTPRequest.py +++ b/resources/libraries/python/HTTPRequest.py @@ -32,6 +32,7 @@ from requests.auth import HTTPBasicAuth class HTTPCodes(IntEnum): """HTTP status codes""" OK = 200 + ACCEPTED = 201 UNAUTHORIZED = 401 FORBIDDEN = 403 NOT_FOUND = 404 diff --git a/resources/libraries/python/honeycomb/HcAPIKwACL.py b/resources/libraries/python/honeycomb/HcAPIKwACL.py index a69ab460f6..375820283b 100644 --- a/resources/libraries/python/honeycomb/HcAPIKwACL.py +++ b/resources/libraries/python/honeycomb/HcAPIKwACL.py @@ -60,7 +60,7 @@ class ACLKeywords(object): status_code, resp = HcUtil.\ delete_honeycomb_data(node, "config_classify_table", path) - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "The configuration of classify table was not successful. " "Status code: {0}.".format(status_code)) @@ -287,8 +287,6 @@ class ACLKeywords(object): "l3_ip6": "ipv6", "mixed": "mixed" } - if layer == "l4": - raise NotImplementedError try: suffix = suffix_dict[layer] except KeyError: @@ -306,7 +304,7 @@ class ACLKeywords(object): status_code, resp = HcUtil.put_honeycomb_data( node, "config_ietf_classify_chain", data, path) - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "Could not create classify chain." "Status code: {0}.".format(status_code)) @@ -368,31 +366,28 @@ class ACLKeywords(object): "mixed": {"mode": mode, "acl_type": types['vpp'].format("mixed")} } - if layer == "L4": - raise NotImplementedError - else: - try: - data = { - "access-lists": { - "acl": [ - { - "type": layers[layer]['acl_type'], - "name": list_name - } - ], - "default-action": default_action, - "mode": layers[layer]['mode'] - } + try: + data = { + "access-lists": { + "acl": [ + { + "type": layers[layer]['acl_type'], + "name": list_name + } + ], + "default-action": default_action, + "mode": layers[layer]['mode'] } - except KeyError: - raise ValueError("Unknown network layer {0}. " - "Valid options are: {1}".format( - layer, layers.keys())) + } + except KeyError: + raise ValueError("Unknown network layer {0}. " + "Valid options are: {1}".format( + layer, layers.keys())) status_code, resp = HcUtil.put_honeycomb_data( node, "config_vpp_interfaces", data, path) - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "Could not configure ACL on interface. " "Status code: {0}.".format(status_code)) diff --git a/resources/libraries/python/honeycomb/HcAPIKwBridgeDomain.py b/resources/libraries/python/honeycomb/HcAPIKwBridgeDomain.py index f156f096e3..38d5324da7 100644 --- a/resources/libraries/python/honeycomb/HcAPIKwBridgeDomain.py +++ b/resources/libraries/python/honeycomb/HcAPIKwBridgeDomain.py @@ -61,7 +61,7 @@ class BridgeDomainKeywords(object): status_code, resp = HcUtil.\ put_honeycomb_data(node, "config_bridge_domain", data, data_representation=data_representation) - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "The configuration of bridge domain '{0}' was not successful. " "Status code: {1}.".format(bd_name, status_code)) @@ -90,7 +90,7 @@ class BridgeDomainKeywords(object): status_code, resp = HcUtil.\ get_honeycomb_data(node, "config_bridge_domain") - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "Not possible to get configuration information about the " "bridge domains. Status code: {0}.".format(status_code)) diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py index 83267b5e55..506db69720 100644 --- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py +++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py @@ -92,7 +92,7 @@ class InterfaceKeywords(object): status_code, resp = HcUtil.\ put_honeycomb_data(node, "config_vpp_interfaces", data, data_representation=data_representation) - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "The configuration of interface '{0}' was not successful. " "Status code: {1}.".format(interface, status_code)) @@ -255,7 +255,7 @@ class InterfaceKeywords(object): status_code, resp = HcUtil. \ put_honeycomb_data(node, "config_vpp_interfaces", resp, path, data_representation=DataRepresentation.JSON) - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "The configuration of interface '{0}' was not successful. " "Status code: {1}.".format(interface, status_code)) @@ -1407,7 +1407,7 @@ class InterfaceKeywords(object): status_code, resp = HcUtil.\ put_honeycomb_data(node, "config_vpp_interfaces", data, path, data_representation=DataRepresentation.JSON) - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "The configuration of interface '{0}' was not successful. " "Status code: {1}.".format(interface, status_code)) @@ -1466,7 +1466,7 @@ class InterfaceKeywords(object): status_code, resp = HcUtil. \ put_honeycomb_data(node, "config_vpp_interfaces", params, path, data_representation=DataRepresentation.JSON) - if status_code != HTTPCodes.OK: + if status_code not in (HTTPCodes.OK, HTTPCodes.ACCEPTED): raise HoneycombError( "The configuration of PBB sub-interface '{0}' was not " "successful. Status code: {1}.".format(intf, status_code)) diff --git a/resources/libraries/robot/honeycomb/access_control_lists.robot b/resources/libraries/robot/honeycomb/access_control_lists.robot index 5c60af30ab..7072f597c4 100644 --- a/resources/libraries/robot/honeycomb/access_control_lists.robot +++ b/resources/libraries/robot/honeycomb/access_control_lists.robot @@ -172,7 +172,7 @@ | | ... | \| ACL table from VAT should not exist \| ${nodes['DUT1']} \ | | ... | \| ${0} \| | | [Arguments] | ${node} | ${table_index} -| | Run keyword and expect error | No JSON data. +| | Run keyword and expect error | VAT: no JSON data. | | ... | Get classify table data | ${node} | ${table_index} | ACL session from Honeycomb should be |