Fix json.load() compatility issue in different python version

1. The issue:
Traceback (most recent call last):
2020-01-15 06:49:03.578487 | controller |       File "/opt/stack/tempest/.tox/tempest/lib/python3.6/site-packages/freezer_tempest_plugin/
tests/freezer/agent/test_metadata_checksum.py", line 68, in test_freezer_fs_backup_bad_checksum
2020-01-15 06:49:03.578502 | controller |         metadata = base.load_metadata(metadata_path)
2020-01-15 06:49:03.578516 | controller |       File "/opt/stack/tempest/.tox/tempest/lib/python3.6/site-packages/freezer_tempest_plugin/
tests/freezer/agent/base.py", line 99, in load_metadata
2020-01-15 06:49:03.578543 | controller |         return json.load(f)
2020-01-15 06:49:03.578574 | controller |       File "/opt/stack/tempest/.tox/tempest/lib/python3.6/site-packages/oslo_serialization/
jsonutils.py", line 276, in load
2020-01-15 06:49:03.578590 | controller |         return json.load(codecs.getreader(encoding)(fp), **kwargs)
2020-01-15 06:49:03.578603 | controller |       File "/usr/lib/python3.6/json/__init__.py", line 296, in load
2020-01-15 06:49:03.578616 | controller |         return loads(fp.read(),
2020-01-15 06:49:03.578630 | controller |       File "/opt/stack/tempest/.tox/tempest/lib/python3.6/codecs.py", line 499, in read
2020-01-15 06:49:03.578643 | controller |         data = self.bytebuffer + newdata
2020-01-15 06:49:03.578656 | controller |     TypeError: can't concat str to bytes
2020-01-15 06:49:03.578669 | controller |

2. Solve:

2.1 Ref:https://docs.python.org/3/library/json.html

json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

Changed in version 3.6: fp can now be a binary file. The input encoding should be UTF-8, UTF-16 or UTF-32.

2.2 Use open(path,'rb') to  replace open(path,'r')

 'b' :  binary mode
 't' :  text mode (default)

Change-Id: I07d855a75b66bc5de987aed80d8722f653154924
This commit is contained in:
caihui 2020-01-15 01:11:32 -08:00
parent eceef09870
commit 9c55a840cb
2 changed files with 2 additions and 2 deletions

View File

@ -95,7 +95,7 @@ def load_metadata(path):
:param path: the path to load
:return: a metadata dict
"""
with open(path, 'r') as f:
with open(path, 'rb') as f:
return json.load(f)

View File

@ -85,7 +85,7 @@ class TestFreezerCompressGzip(base.BaseFreezerTest):
def _metadata(self):
path = os.path.join(self.storage_tree.path, 'metadata.json')
with open(path, 'r') as f:
with open(path, 'rb') as f:
return json.load(f)
def _file_get_mimetype(self, metadata):