diff options
author | selias <samelias@cisco.com> | 2017-03-07 15:42:02 +0100 |
---|---|---|
committer | Tibor Frank <tifrank@cisco.com> | 2017-03-21 12:00:46 +0000 |
commit | 4f4eaa1d52f3bdbe3caecdc1d6a024c369a2834a (patch) | |
tree | 44d1d559b187dbdf10eae12acc4da19affa1a5f4 /resources/libraries/python/HTTPRequest.py | |
parent | 8003aa2c3d1a0d4c1dbf3b6286d841a47b5fbb4c (diff) |
CSIT-536 HC Test: support testing with ODL client
Reuses existing restconf test cases to test Honeycomb's netconf interface.
When seding the requests to ODL's Honeycomb mountpoint, ODL translates these
requests to netconf RPCs.
Add new tag "honeycomb_odl" that excludes incompatible test cases.
Change-Id: Ie293449da0129b02db85e30aa4f3266928d7d9f6
Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources/libraries/python/HTTPRequest.py')
-rw-r--r-- | resources/libraries/python/HTTPRequest.py | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/resources/libraries/python/HTTPRequest.py b/resources/libraries/python/HTTPRequest.py index 1f5df52c01..adf3d168eb 100644 --- a/resources/libraries/python/HTTPRequest.py +++ b/resources/libraries/python/HTTPRequest.py @@ -22,6 +22,7 @@ from enum import IntEnum, unique from robot.api.deco import keyword from robot.api import logger +from robot.libraries.BuiltIn import BuiltIn from requests import request, RequestException, Timeout, TooManyRedirects, \ HTTPError, ConnectionError @@ -36,6 +37,7 @@ class HTTPCodes(IntEnum): UNAUTHORIZED = 401 FORBIDDEN = 403 NOT_FOUND = 404 + CONFLICT = 409 INTERNAL_SERVER_ERROR = 500 SERVICE_UNAVAILABLE = 503 @@ -167,8 +169,23 @@ class HTTPRequest(object): 5. there is any other unexpected HTTP request exception. """ timeout = kwargs["timeout"] + + if BuiltIn().get_variable_value("${use_odl_client}"): + # TODO: node["honeycomb"]["odl_port"] + port = 8181 + odl_url_part = "/network-topology:network-topology/topology/" \ + "topology-netconf/node/vpp/yang-ext:mount" + else: + port = node["honeycomb"]["port"] + odl_url_part = "" + + try: + path = path.format(odl_url_part=odl_url_part) + except KeyError: + pass + url = HTTPRequest.create_full_url(node['host'], - node['honeycomb']['port'], + port, path) try: auth = HTTPBasicAuth(node['honeycomb']['user'], @@ -254,7 +271,8 @@ class HTTPRequest(object): @staticmethod @keyword(name="HTTP Post") - def post(node, path, headers=None, payload=None, json=None, timeout=10): + def post(node, path, headers=None, payload=None, json=None, timeout=10, + enable_logging=True): """Sends a POST request and returns the response and status code. :param node: Honeycomb node. @@ -265,18 +283,23 @@ class HTTPRequest(object): :param json: JSON formatted string to send in the body of the Request. :param timeout: How long to wait for the server to send data before giving up, as a float, or a (connect timeout, read timeout) tuple. + :param enable_logging: Used to suppress errors when checking ODL + state during suite setup and teardown. When True, logging is enabled, + otherwise logging is disabled. :type node: dict :type path: str :type headers: dict :type payload: dict, bytes, or file-like object :type json: str :type timeout: float or tuple + :type enable_logging: bool :return: Status code and content of response. :rtype: tuple """ - return HTTPRequest._http_request('POST', node, path, headers=headers, - data=payload, json=json, - timeout=timeout) + return HTTPRequest._http_request('POST', node, path, + enable_logging=enable_logging, + headers=headers, data=payload, + json=json, timeout=timeout) @staticmethod @keyword(name="HTTP Delete") |