tests: improve idempotency and isolation
Use sort_keys when serializing in json format for idempotency under Python 3; Mock out calls to get_osds in broker test to ensure that a local install of ceph-common does not cause unit test failures. Change-Id: I6ce4075fd38e8431372a359cc88332d2da7a3974
This commit is contained in:
parent
d94dc3e7b9
commit
1ccf7c2b25
|
@ -338,7 +338,7 @@ def save_service(service_name, service):
|
||||||
service['groups'] = {}
|
service['groups'] = {}
|
||||||
return monitor_key_set(service='admin',
|
return monitor_key_set(service='admin',
|
||||||
key="cephx.services.{}".format(service_name),
|
key="cephx.services.{}".format(service_name),
|
||||||
value=json.dumps(service))
|
value=json.dumps(service, sort_keys=True))
|
||||||
|
|
||||||
|
|
||||||
def save_group(group, group_name):
|
def save_group(group, group_name):
|
||||||
|
@ -346,7 +346,7 @@ def save_group(group, group_name):
|
||||||
group_key = get_group_key(group_name=group_name)
|
group_key = get_group_key(group_name=group_name)
|
||||||
return monitor_key_set(service='admin',
|
return monitor_key_set(service='admin',
|
||||||
key=group_key,
|
key=group_key,
|
||||||
value=json.dumps(group))
|
value=json.dumps(group, sort_keys=True))
|
||||||
|
|
||||||
|
|
||||||
def get_group_key(group_name):
|
def get_group_key(group_name):
|
||||||
|
|
|
@ -2148,11 +2148,11 @@ def dirs_need_ownership_update(service):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# A dict of valid ceph upgrade paths. Mapping is old -> new
|
# A dict of valid ceph upgrade paths. Mapping is old -> new
|
||||||
UPGRADE_PATHS = {
|
UPGRADE_PATHS = collections.OrderedDict([
|
||||||
'firefly': 'hammer',
|
('firefly', 'hammer'),
|
||||||
'hammer': 'jewel',
|
('hammer', 'jewel'),
|
||||||
'jewel': 'luminous',
|
('jewel', 'luminous'),
|
||||||
}
|
])
|
||||||
|
|
||||||
# Map UCA codenames to ceph codenames
|
# Map UCA codenames to ceph codenames
|
||||||
UCA_CODENAME_MAP = {
|
UCA_CODENAME_MAP = {
|
||||||
|
|
|
@ -64,7 +64,7 @@ class CephBrokerTestCase(unittest.TestCase):
|
||||||
key='cephx.groups.images',
|
key='cephx.groups.images',
|
||||||
service='admin',
|
service='admin',
|
||||||
value=json.dumps({"pools": ["glance", "cinder"],
|
value=json.dumps({"pools": ["glance", "cinder"],
|
||||||
"services": ["nova"]}))
|
"services": ["nova"]}, sort_keys=True))
|
||||||
_check_call.assert_called_with([
|
_check_call.assert_called_with([
|
||||||
'ceph', 'auth', 'caps',
|
'ceph', 'auth', 'caps',
|
||||||
'client.nova', 'mon', 'allow r', 'osd',
|
'client.nova', 'mon', 'allow r', 'osd',
|
||||||
|
@ -83,7 +83,8 @@ class CephBrokerTestCase(unittest.TestCase):
|
||||||
_monitor_key_set.assert_called_with(
|
_monitor_key_set.assert_called_with(
|
||||||
key='cephx.groups.images',
|
key='cephx.groups.images',
|
||||||
service='admin',
|
service='admin',
|
||||||
value=json.dumps({"pools": ["glance", "cinder"], "services": []}))
|
value=json.dumps({"pools": ["glance", "cinder"], "services": []},
|
||||||
|
sort_keys=True))
|
||||||
|
|
||||||
@patch.object(ceph.broker, 'monitor_key_set')
|
@patch.object(ceph.broker, 'monitor_key_set')
|
||||||
@patch.object(ceph.broker, 'monitor_key_get')
|
@patch.object(ceph.broker, 'monitor_key_get')
|
||||||
|
@ -98,7 +99,8 @@ class CephBrokerTestCase(unittest.TestCase):
|
||||||
_monitor_key_set.assert_called_with(
|
_monitor_key_set.assert_called_with(
|
||||||
key='cephx.groups.images',
|
key='cephx.groups.images',
|
||||||
service='admin',
|
service='admin',
|
||||||
value=json.dumps({"pools": ["glance"], "services": []}))
|
value=json.dumps({"pools": ["glance"], "services": []},
|
||||||
|
sort_keys=True))
|
||||||
|
|
||||||
def test_pool_permission_list_for_service(self):
|
def test_pool_permission_list_for_service(self):
|
||||||
service = {
|
service = {
|
||||||
|
@ -142,7 +144,7 @@ class CephBrokerTestCase(unittest.TestCase):
|
||||||
}
|
}
|
||||||
ceph.broker.save_service(service=service, service_name='nova')
|
ceph.broker.save_service(service=service, service_name='nova')
|
||||||
_monitor_key_set.assert_called_with(
|
_monitor_key_set.assert_called_with(
|
||||||
value='{"groups": {}, "group_names": {"rwx": "images"}}',
|
value=json.dumps(service, sort_keys=True),
|
||||||
key='cephx.services.nova',
|
key='cephx.services.nova',
|
||||||
service='admin')
|
service='admin')
|
||||||
|
|
||||||
|
@ -195,7 +197,7 @@ class CephBrokerTestCase(unittest.TestCase):
|
||||||
_monitor_key_set.assert_called_with(
|
_monitor_key_set.assert_called_with(
|
||||||
key='cephx.groups.images',
|
key='cephx.groups.images',
|
||||||
service='admin',
|
service='admin',
|
||||||
value=json.dumps(group))
|
value=json.dumps(group, sort_keys=True))
|
||||||
|
|
||||||
@patch.object(ceph.broker, 'monitor_key_get')
|
@patch.object(ceph.broker, 'monitor_key_get')
|
||||||
def test_get_group_empty_str(self, _monitor_key_get):
|
def test_get_group_empty_str(self, _monitor_key_get):
|
||||||
|
@ -254,13 +256,16 @@ class CephBrokerTestCase(unittest.TestCase):
|
||||||
{'exit-code': 1,
|
{'exit-code': 1,
|
||||||
'stderr': "Unknown operation 'invalid_op'"})
|
'stderr': "Unknown operation 'invalid_op'"})
|
||||||
|
|
||||||
|
@patch.object(ceph.broker, 'get_osds')
|
||||||
@patch.object(ceph.broker, 'ReplicatedPool')
|
@patch.object(ceph.broker, 'ReplicatedPool')
|
||||||
@patch.object(ceph.broker, 'pool_exists')
|
@patch.object(ceph.broker, 'pool_exists')
|
||||||
@patch.object(ceph.broker, 'log')
|
@patch.object(ceph.broker, 'log')
|
||||||
def test_process_requests_create_pool_w_pg_num(self, mock_log,
|
def test_process_requests_create_pool_w_pg_num(self, mock_log,
|
||||||
mock_pool_exists,
|
mock_pool_exists,
|
||||||
mock_replicated_pool):
|
mock_replicated_pool,
|
||||||
|
mock_get_osds):
|
||||||
mock_pool_exists.return_value = False
|
mock_pool_exists.return_value = False
|
||||||
|
mock_get_osds.return_value = [0, 1, 2]
|
||||||
reqs = json.dumps({'api-version': 1,
|
reqs = json.dumps({'api-version': 1,
|
||||||
'ops': [{
|
'ops': [{
|
||||||
'op': 'create-pool',
|
'op': 'create-pool',
|
||||||
|
|
|
@ -507,8 +507,11 @@ class CephTestCase(unittest.TestCase):
|
||||||
utils.osd_noout(True)
|
utils.osd_noout(True)
|
||||||
|
|
||||||
def test_pretty_print_upgrade_paths(self):
|
def test_pretty_print_upgrade_paths(self):
|
||||||
expected = (['firefly -> hammer', 'jewel -> luminous',
|
expected = ([
|
||||||
'hammer -> jewel'])
|
'firefly -> hammer',
|
||||||
|
'hammer -> jewel',
|
||||||
|
'jewel -> luminous',
|
||||||
|
])
|
||||||
self.assertEqual(utils.pretty_print_upgrade_paths(), expected)
|
self.assertEqual(utils.pretty_print_upgrade_paths(), expected)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue