Merge "Add unit tests for utils.validate_hash_path"
This commit is contained in:
@@ -53,6 +53,7 @@ from functools import partial
|
|||||||
from tempfile import TemporaryFile, NamedTemporaryFile, mkdtemp
|
from tempfile import TemporaryFile, NamedTemporaryFile, mkdtemp
|
||||||
from netifaces import AF_INET6
|
from netifaces import AF_INET6
|
||||||
from mock import MagicMock, patch
|
from mock import MagicMock, patch
|
||||||
|
from six.moves.configparser import NoSectionError, NoOptionError
|
||||||
|
|
||||||
from swift.common.exceptions import (Timeout, MessageTimeout,
|
from swift.common.exceptions import (Timeout, MessageTimeout,
|
||||||
ConnectionTimeout, LockTimeout,
|
ConnectionTimeout, LockTimeout,
|
||||||
@@ -1567,11 +1568,9 @@ class TestUtils(unittest.TestCase):
|
|||||||
self.assertEqual(myips[0], test_ipv6_address)
|
self.assertEqual(myips[0], test_ipv6_address)
|
||||||
|
|
||||||
def test_hash_path(self):
|
def test_hash_path(self):
|
||||||
_prefix = utils.HASH_PATH_PREFIX
|
|
||||||
utils.HASH_PATH_PREFIX = ''
|
|
||||||
# Yes, these tests are deliberately very fragile. We want to make sure
|
# Yes, these tests are deliberately very fragile. We want to make sure
|
||||||
# that if someones changes the results hash_path produces, they know it
|
# that if someones changes the results hash_path produces, they know it
|
||||||
try:
|
with mock.patch('swift.common.utils.HASH_PATH_PREFIX', ''):
|
||||||
self.assertEqual(utils.hash_path('a'),
|
self.assertEqual(utils.hash_path('a'),
|
||||||
'1c84525acb02107ea475dcd3d09c2c58')
|
'1c84525acb02107ea475dcd3d09c2c58')
|
||||||
self.assertEqual(utils.hash_path('a', 'c'),
|
self.assertEqual(utils.hash_path('a', 'c'),
|
||||||
@@ -1587,8 +1586,60 @@ class TestUtils(unittest.TestCase):
|
|||||||
utils.HASH_PATH_PREFIX = 'abcdef'
|
utils.HASH_PATH_PREFIX = 'abcdef'
|
||||||
self.assertEqual(utils.hash_path('a', 'c', 'o', raw_digest=False),
|
self.assertEqual(utils.hash_path('a', 'c', 'o', raw_digest=False),
|
||||||
'363f9b535bfb7d17a43a46a358afca0e')
|
'363f9b535bfb7d17a43a46a358afca0e')
|
||||||
finally:
|
|
||||||
utils.HASH_PATH_PREFIX = _prefix
|
def test_validate_hash_conf(self):
|
||||||
|
# no section causes InvalidHashPathConfigError
|
||||||
|
self._test_validate_hash_conf([], [], True)
|
||||||
|
|
||||||
|
# 'swift-hash' section is there but no options causes
|
||||||
|
# InvalidHashPathConfigError
|
||||||
|
self._test_validate_hash_conf(['swift-hash'], [], True)
|
||||||
|
|
||||||
|
# if we have the section and either of prefix or suffix,
|
||||||
|
# InvalidHashPathConfigError doesn't occur
|
||||||
|
self._test_validate_hash_conf(
|
||||||
|
['swift-hash'], ['swift_hash_path_prefix'], False)
|
||||||
|
self._test_validate_hash_conf(
|
||||||
|
['swift-hash'], ['swift_hash_path_suffix'], False)
|
||||||
|
|
||||||
|
# definitely, we have the section and both of them,
|
||||||
|
# InvalidHashPathConfigError doesn't occur
|
||||||
|
self._test_validate_hash_conf(
|
||||||
|
['swift-hash'],
|
||||||
|
['swift_hash_path_suffix', 'swift_hash_path_prefix'], False)
|
||||||
|
|
||||||
|
# But invalid section name should make an error even if valid
|
||||||
|
# options are there
|
||||||
|
self._test_validate_hash_conf(
|
||||||
|
['swift-hash-xxx'],
|
||||||
|
['swift_hash_path_suffix', 'swift_hash_path_prefix'], True)
|
||||||
|
|
||||||
|
def _test_validate_hash_conf(self, sections, options, should_raise_error):
|
||||||
|
|
||||||
|
class FakeConfigParser(object):
|
||||||
|
def read(self, conf_path):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def get(self, section, option):
|
||||||
|
if section not in sections:
|
||||||
|
raise NoSectionError('section error')
|
||||||
|
elif option not in options:
|
||||||
|
raise NoOptionError('option error', 'this option')
|
||||||
|
else:
|
||||||
|
return 'some_option_value'
|
||||||
|
|
||||||
|
with mock.patch('swift.common.utils.HASH_PATH_PREFIX', ''), \
|
||||||
|
mock.patch('swift.common.utils.HASH_PATH_SUFFIX', ''), \
|
||||||
|
mock.patch('swift.common.utils.ConfigParser',
|
||||||
|
FakeConfigParser):
|
||||||
|
try:
|
||||||
|
utils.validate_hash_conf()
|
||||||
|
except utils.InvalidHashPathConfigError:
|
||||||
|
if not should_raise_error:
|
||||||
|
self.fail('validate_hash_conf should not raise an error')
|
||||||
|
else:
|
||||||
|
if should_raise_error:
|
||||||
|
self.fail('validate_hash_conf should raise an error')
|
||||||
|
|
||||||
def test_load_libc_function(self):
|
def test_load_libc_function(self):
|
||||||
self.assertTrue(callable(
|
self.assertTrue(callable(
|
||||||
|
Reference in New Issue
Block a user