summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--swift/cli/recon.py4
-rw-r--r--swift/common/utils.py4
-rw-r--r--test/unit/cli/test_recon.py38
-rw-r--r--tox.ini1
4 files changed, 28 insertions, 19 deletions
diff --git a/swift/cli/recon.py b/swift/cli/recon.py
index 910f36789..9dddb854f 100644
--- a/swift/cli/recon.py
+++ b/swift/cli/recon.py
@@ -87,6 +87,8 @@ class Scout(object):
url = base_url + recon_type
try:
body = urllib2.urlopen(url, timeout=self.timeout).read()
+ if six.PY3 and isinstance(body, six.binary_type):
+ body = body.decode('utf8')
content = json.loads(body)
if self.verbose:
print("-> %s: %s" % (url, content))
@@ -129,7 +131,7 @@ class Scout(object):
req = urllib2.Request(url)
req.get_method = lambda: 'OPTIONS'
conn = urllib2.urlopen(req)
- header = conn.info().getheader('Server')
+ header = conn.info().get('Server')
server_header = header.split('/')
content = server_header[0]
status = 200
diff --git a/swift/common/utils.py b/swift/common/utils.py
index a177d523c..197e189bf 100644
--- a/swift/common/utils.py
+++ b/swift/common/utils.py
@@ -205,8 +205,8 @@ def set_swift_dir(swift_dir):
swift_dir != os.path.dirname(SWIFT_CONF_FILE)):
SWIFT_CONF_FILE = os.path.join(
swift_dir, os.path.basename(SWIFT_CONF_FILE))
- HASH_PATH_PREFIX = ''
- HASH_PATH_SUFFIX = ''
+ HASH_PATH_PREFIX = b''
+ HASH_PATH_SUFFIX = b''
validate_configuration()
return True
return False
diff --git a/test/unit/cli/test_recon.py b/test/unit/cli/test_recon.py
index 36e69c496..d017fd8a7 100644
--- a/test/unit/cli/test_recon.py
+++ b/test/unit/cli/test_recon.py
@@ -39,8 +39,10 @@ from test.unit import patch_policies
if six.PY3:
from eventlet.green.urllib import request as urllib2
+ GREEN_URLLIB_URLOPEN = 'eventlet.green.urllib.request.urlopen'
else:
from eventlet.green import urllib2
+ GREEN_URLLIB_URLOPEN = 'eventlet.green.urllib2.urlopen'
class TestHelpers(unittest.TestCase):
@@ -68,7 +70,7 @@ class TestScout(unittest.TestCase):
self.url = 'http://127.0.0.1:8080/recon/type'
self.server_type_url = 'http://127.0.0.1:8080/'
- @mock.patch('eventlet.green.urllib2.urlopen')
+ @mock.patch(GREEN_URLLIB_URLOPEN)
def test_scout_ok(self, mock_urlopen):
mock_urlopen.return_value.read = lambda: json.dumps([])
url, content, status, ts_start, ts_end = self.scout_instance.scout(
@@ -77,7 +79,7 @@ class TestScout(unittest.TestCase):
self.assertEqual(content, [])
self.assertEqual(status, 200)
- @mock.patch('eventlet.green.urllib2.urlopen')
+ @mock.patch(GREEN_URLLIB_URLOPEN)
def test_scout_url_error(self, mock_urlopen):
mock_urlopen.side_effect = urllib2.URLError("")
url, content, status, ts_start, ts_end = self.scout_instance.scout(
@@ -86,7 +88,7 @@ class TestScout(unittest.TestCase):
self.assertEqual(url, self.url)
self.assertEqual(status, -1)
- @mock.patch('eventlet.green.urllib2.urlopen')
+ @mock.patch(GREEN_URLLIB_URLOPEN)
def test_scout_http_error(self, mock_urlopen):
mock_urlopen.side_effect = urllib2.HTTPError(
self.url, 404, "Internal error", None, None)
@@ -96,7 +98,7 @@ class TestScout(unittest.TestCase):
self.assertIsInstance(content, urllib2.HTTPError)
self.assertEqual(status, 404)
- @mock.patch('eventlet.green.urllib2.urlopen')
+ @mock.patch(GREEN_URLLIB_URLOPEN)
def test_scout_socket_timeout(self, mock_urlopen):
mock_urlopen.side_effect = socket.timeout("timeout")
url, content, status, ts_start, ts_end = self.scout_instance.scout(
@@ -105,19 +107,19 @@ class TestScout(unittest.TestCase):
self.assertEqual(url, self.url)
self.assertEqual(status, -1)
- @mock.patch('eventlet.green.urllib2.urlopen')
+ @mock.patch(GREEN_URLLIB_URLOPEN)
def test_scout_server_type_ok(self, mock_urlopen):
def getheader(name):
d = {'Server': 'server-type'}
return d.get(name)
- mock_urlopen.return_value.info.return_value.getheader = getheader
+ mock_urlopen.return_value.info.return_value.get = getheader
url, content, status = self.scout_instance.scout_server_type(
("127.0.0.1", "8080"))
self.assertEqual(url, self.server_type_url)
self.assertEqual(content, 'server-type')
self.assertEqual(status, 200)
- @mock.patch('eventlet.green.urllib2.urlopen')
+ @mock.patch(GREEN_URLLIB_URLOPEN)
def test_scout_server_type_url_error(self, mock_urlopen):
mock_urlopen.side_effect = urllib2.URLError("")
url, content, status = self.scout_instance.scout_server_type(
@@ -126,7 +128,7 @@ class TestScout(unittest.TestCase):
self.assertEqual(url, self.server_type_url)
self.assertEqual(status, -1)
- @mock.patch('eventlet.green.urllib2.urlopen')
+ @mock.patch(GREEN_URLLIB_URLOPEN)
def test_scout_server_type_http_error(self, mock_urlopen):
mock_urlopen.side_effect = urllib2.HTTPError(
self.server_type_url, 404, "Internal error", None, None)
@@ -136,7 +138,7 @@ class TestScout(unittest.TestCase):
self.assertIsInstance(content, urllib2.HTTPError)
self.assertEqual(status, 404)
- @mock.patch('eventlet.green.urllib2.urlopen')
+ @mock.patch(GREEN_URLLIB_URLOPEN)
def test_scout_server_type_socket_timeout(self, mock_urlopen):
mock_urlopen.side_effect = socket.timeout("timeout")
url, content, status = self.scout_instance.scout_server_type(
@@ -160,9 +162,8 @@ class TestRecon(unittest.TestCase):
self.swift_dir, self.ring_name2 + '.ring.gz')
swift_conf = os.path.join(self.swift_dir, 'swift.conf')
- self.policy_name = ''.join(random.sample(string.letters, 20))
- with open(swift_conf, "wb") as sc:
- sc.write('''
+ self.policy_name = ''.join(random.sample(string.ascii_letters, 20))
+ swift_conf_data = '''
[swift-hash]
swift_hash_path_suffix = changeme
@@ -173,7 +174,9 @@ default = yes
[storage-policy:1]
name = unu
aliases = %s
-''' % self.policy_name)
+''' % self.policy_name
+ with open(swift_conf, "wb") as sc:
+ sc.write(swift_conf_data.encode('utf8'))
def tearDown(self, *_args, **_kwargs):
utils.SWIFT_CONF_FILE = self.swift_conf_file
@@ -668,10 +671,11 @@ class TestReconCommands(unittest.TestCase):
response_body = resps[(host, port, path[7:])]
resp = mock.MagicMock()
- resp.read = mock.MagicMock(side_effect=[response_body])
+ resp.read = mock.MagicMock(side_effect=[
+ response_body if six.PY2 else response_body.encode('utf8')])
return resp
- return mock.patch('eventlet.green.urllib2.urlopen', fake_urlopen)
+ return mock.patch(GREEN_URLLIB_URLOPEN, fake_urlopen)
def test_server_type_check(self):
hosts = [('127.0.0.1', 6010), ('127.0.0.1', 6011),
@@ -870,7 +874,9 @@ class TestReconCommands(unittest.TestCase):
mock.call('Disk usage: space used: 260 of 300'),
mock.call('Disk usage: space free: 40 of 300'),
mock.call('Disk usage: lowest: 85.0%, ' +
- 'highest: 90.0%, avg: 86.6666666667%'),
+ 'highest: 90.0%%, avg: %s' %
+ ('86.6666666667%' if six.PY2 else
+ '86.66666666666667%')),
mock.call('=' * 79),
]
diff --git a/tox.ini b/tox.ini
index 6fc8815f3..64dbaed7d 100644
--- a/tox.ini
+++ b/tox.ini
@@ -32,6 +32,7 @@ commands =
test/unit/cli/test_dispersion_report.py \
test/unit/cli/test_form_signature.py \
test/unit/cli/test_info.py \
+ test/unit/cli/test_recon.py \
test/unit/cli/test_relinker.py \
test/unit/cli/test_ring_builder_analyzer.py \
test/unit/cli/test_ringbuilder.py \