aboutsummaryrefslogtreecommitdiffstats
path: root/xtesting/utils
diff options
context:
space:
mode:
Diffstat (limited to 'xtesting/utils')
-rw-r--r--xtesting/utils/__init__.py0
-rw-r--r--xtesting/utils/constants.py5
-rw-r--r--xtesting/utils/decorators.py57
-rw-r--r--xtesting/utils/env.py44
4 files changed, 106 insertions, 0 deletions
diff --git a/xtesting/utils/__init__.py b/xtesting/utils/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/xtesting/utils/__init__.py
diff --git a/xtesting/utils/constants.py b/xtesting/utils/constants.py
new file mode 100644
index 00000000..dae08ca6
--- /dev/null
+++ b/xtesting/utils/constants.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+
+# pylint: disable=missing-docstring
+
+ENV_FILE = '/home/opnfv/xtesting/conf/env_file'
diff --git a/xtesting/utils/decorators.py b/xtesting/utils/decorators.py
new file mode 100644
index 00000000..230a99e7
--- /dev/null
+++ b/xtesting/utils/decorators.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2017 Orange and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# pylint: disable=missing-docstring
+
+import errno
+import functools
+import os
+
+import mock
+import requests.sessions
+from six.moves import urllib
+
+
+def can_dump_request_to_file(method):
+
+ def dump_preparedrequest(request, **kwargs):
+ # pylint: disable=unused-argument
+ parseresult = urllib.parse.urlparse(request.url)
+ if parseresult.scheme == "file":
+ try:
+ dirname = os.path.dirname(parseresult.path)
+ os.makedirs(dirname)
+ except OSError as ex:
+ if ex.errno != errno.EEXIST:
+ raise
+ with open(parseresult.path, 'a') as dumpfile:
+ headers = ""
+ for key in request.headers:
+ headers += key + " " + request.headers[key] + "\n"
+ message = "{} {}\n{}\n{}\n\n\n".format(
+ request.method, request.url, headers, request.body)
+ dumpfile.write(message)
+ return mock.Mock()
+
+ def patch_request(method, url, **kwargs):
+ with requests.sessions.Session() as session:
+ parseresult = urllib.parse.urlparse(url)
+ if parseresult.scheme == "file":
+ with mock.patch.object(session, 'send',
+ side_effect=dump_preparedrequest):
+ return session.request(method=method, url=url, **kwargs)
+ else:
+ return session.request(method=method, url=url, **kwargs)
+
+ @functools.wraps(method)
+ def hook(*args, **kwargs):
+ with mock.patch('requests.api.request', side_effect=patch_request):
+ return method(*args, **kwargs)
+
+ return hook
diff --git a/xtesting/utils/env.py b/xtesting/utils/env.py
new file mode 100644
index 00000000..aa2da0b5
--- /dev/null
+++ b/xtesting/utils/env.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2018 Orange and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# pylint: disable=missing-docstring
+
+import os
+
+import prettytable
+
+INPUTS = {
+ 'EXTERNAL_NETWORK': None,
+ 'CI_LOOP': 'daily',
+ 'DEPLOY_SCENARIO': 'os-nosdn-nofeature-noha',
+ 'INSTALLER_TYPE': None,
+ 'SDN_CONTROLLER_IP': None,
+ 'BUILD_TAG': None,
+ 'NODE_NAME': None,
+ 'POD_ARCH': None,
+ 'TEST_DB_URL': 'http://testresults.opnfv.org/test/api/v1/results',
+ 'ENERGY_RECORDER_API_URL': 'http://energy.opnfv.fr/resources',
+ 'ENERGY_RECORDER_API_USER': None,
+ 'ENERGY_RECORDER_API_PASSWORD': None
+}
+
+
+def get(env_var):
+ if env_var not in INPUTS.keys():
+ return os.environ.get(env_var, None)
+ return os.environ.get(env_var, INPUTS[env_var])
+
+
+def string():
+ msg = prettytable.PrettyTable(
+ header_style='upper', padding_width=5,
+ field_names=['env var', 'value'])
+ for env_var in INPUTS:
+ msg.add_row([env_var, get(env_var) if get(env_var) else ''])
+ return msg