diff options
author | Ross Brattain <ross.b.brattain@intel.com> | 2016-12-05 16:11:54 -0500 |
---|---|---|
committer | Ross Brattain <ross.b.brattain@intel.com> | 2017-01-12 18:25:04 -0800 |
commit | f036e9898a69f5041f9cde02e3652c29e2de1643 (patch) | |
tree | 36e5eea75811bb640bb30f442f5a3c617e945909 /yardstick/dispatcher | |
parent | 5f0b3d417244397b2d5e61c7a6ddd145f1d25046 (diff) |
Add support for Python 3
Porting to Python3 using Openstack guidelines:
https://wiki.openstack.org/wiki/Python3
This passes unittests on Python 3.5 and passes opnfv_smoke suite
Updates:
use six for urlparse and urlopen
fix exception.message attribute removal
run unittests on python3
use unitest.mock on python 3
fix open mock for vsperf
fix float division by using delta/eplison comparison
use unicode in StringIO
use plugin/sample_config.yaml relative path from test case
fixed apexlake unittests
upgraded to mock 2.0.0 to match python3 unittest.mock features
fixed flake8 issues
implement safe JSON decode with oslo_serialization.jsonutils.dump_as_bytes()
implement safe unicode encode/decode with oslo_utils.encodeutils
heat: convert pub key file from bytes to unicode
pkg_resources returns raw bytes, in python3
we have to decode this to utf-8 unicode
so JSON can encode it for heat template
JIRA: YARDSTICK-452
Change-Id: Ib80dd1d0c0eb0592acd832b82f6a7f8f7c20bfda
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
Diffstat (limited to 'yardstick/dispatcher')
-rw-r--r-- | yardstick/dispatcher/__init__.py | 1 | ||||
-rw-r--r-- | yardstick/dispatcher/base.py | 1 | ||||
-rw-r--r-- | yardstick/dispatcher/file.py | 6 | ||||
-rw-r--r-- | yardstick/dispatcher/http.py | 16 | ||||
-rw-r--r-- | yardstick/dispatcher/influxdb.py | 22 |
5 files changed, 29 insertions, 17 deletions
diff --git a/yardstick/dispatcher/__init__.py b/yardstick/dispatcher/__init__.py index b519efc7a..dfb130760 100644 --- a/yardstick/dispatcher/__init__.py +++ b/yardstick/dispatcher/__init__.py @@ -7,6 +7,7 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from __future__ import absolute_import from oslo_config import cfg import yardstick.common.utils as utils diff --git a/yardstick/dispatcher/base.py b/yardstick/dispatcher/base.py index ffdddb0ff..6e863cadc 100644 --- a/yardstick/dispatcher/base.py +++ b/yardstick/dispatcher/base.py @@ -16,6 +16,7 @@ # yardstick comment: this is a modified copy of # ceilometer/ceilometer/dispatcher/__init__.py +from __future__ import absolute_import import abc import six diff --git a/yardstick/dispatcher/file.py b/yardstick/dispatcher/file.py index c2cc265ba..9c728e983 100644 --- a/yardstick/dispatcher/file.py +++ b/yardstick/dispatcher/file.py @@ -16,10 +16,12 @@ # yardstick comment: this is a modified copy of # ceilometer/ceilometer/dispatcher/file.py +from __future__ import absolute_import + import logging import logging.handlers -import json +from oslo_serialization import jsonutils from oslo_config import cfg from yardstick.dispatcher.base import Base as DispatchBase @@ -70,7 +72,7 @@ class FileDispatcher(DispatchBase): def record_result_data(self, data): if self.log: - self.log.info(json.dumps(data)) + self.log.info(jsonutils.dump_as_bytes(data)) def flush_result_data(self): pass diff --git a/yardstick/dispatcher/http.py b/yardstick/dispatcher/http.py index 98e772dd8..790086155 100644 --- a/yardstick/dispatcher/http.py +++ b/yardstick/dispatcher/http.py @@ -16,11 +16,13 @@ # yardstick comment: this is a modified copy of # ceilometer/ceilometer/dispatcher/http.py -import os -import json +from __future__ import absolute_import + import logging -import requests +import os +from oslo_serialization import jsonutils +import requests from oslo_config import cfg from yardstick.dispatcher.base import Base as DispatchBase @@ -81,16 +83,18 @@ class HttpDispatcher(DispatchBase): case_name = v["scenario_cfg"]["tc"] break if case_name == "": - LOG.error('Test result : %s', json.dumps(self.result)) + LOG.error('Test result : %s', + jsonutils.dump_as_bytes(self.result)) LOG.error('The case_name cannot be found, no data will be posted.') return self.result["case_name"] = case_name try: - LOG.debug('Test result : %s', json.dumps(self.result)) + LOG.debug('Test result : %s', + jsonutils.dump_as_bytes(self.result)) res = requests.post(self.target, - data=json.dumps(self.result), + data=jsonutils.dump_as_bytes(self.result), headers=self.headers, timeout=self.timeout) LOG.debug('Test result posting finished with status code' diff --git a/yardstick/dispatcher/influxdb.py b/yardstick/dispatcher/influxdb.py index fc9f3e932..427e669a2 100644 --- a/yardstick/dispatcher/influxdb.py +++ b/yardstick/dispatcher/influxdb.py @@ -7,16 +7,19 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -import os -import json +from __future__ import absolute_import + import logging -import requests +import os import time +import requests +import six from oslo_config import cfg +from oslo_serialization import jsonutils -from yardstick.dispatcher.base import Base as DispatchBase from third_party.influxdb.influxdb_line_protocol import make_lines +from yardstick.dispatcher.base import Base as DispatchBase LOG = logging.getLogger(__name__) @@ -80,9 +83,9 @@ class InfluxdbDispatcher(DispatchBase): if type(v) == dict or type(v) == list]: return data - for k, v in data.iteritems(): + for k, v in six.iteritems(data): if type(v) == dict: - for n_k, n_v in v.iteritems(): + for n_k, n_v in six.iteritems(v): next_data["%s.%s" % (k, n_k)] = n_v elif type(v) == list: for index, item in enumerate(v): @@ -127,7 +130,7 @@ class InfluxdbDispatcher(DispatchBase): return make_lines(msg).encode('utf-8') def record_result_data(self, data): - LOG.debug('Test result : %s', json.dumps(data)) + LOG.debug('Test result : %s', jsonutils.dump_as_bytes(data)) self.raw_result.append(data) if self.target == '': # if the target was not set, do not do anything @@ -148,7 +151,7 @@ class InfluxdbDispatcher(DispatchBase): return 0 if self.tc == "": - LOG.error('Test result : %s', json.dumps(data)) + LOG.error('Test result : %s', jsonutils.dump_as_bytes(data)) LOG.error('The case_name cannot be found, no data will be posted.') return -1 @@ -171,5 +174,6 @@ class InfluxdbDispatcher(DispatchBase): return 0 def flush_result_data(self): - LOG.debug('Test result all : %s', json.dumps(self.raw_result)) + LOG.debug('Test result all : %s', + jsonutils.dump_as_bytes(self.raw_result)) return 0 |