Merge "Improve Tempest tests for consistency groups"
This commit is contained in:
commit
bb5ea3a12c
|
@ -70,31 +70,16 @@ class ConsistencyGroupActionsTest(base.BaseSharesAdminTest):
|
||||||
def test_create_cg_from_multi_typed_populated_cgsnapshot_v2_4(self):
|
def test_create_cg_from_multi_typed_populated_cgsnapshot_v2_4(self):
|
||||||
share_name = data_utils.rand_name("tempest-share-name")
|
share_name = data_utils.rand_name("tempest-share-name")
|
||||||
share_desc = data_utils.rand_name("tempest-share-description")
|
share_desc = data_utils.rand_name("tempest-share-description")
|
||||||
share_size = 1
|
|
||||||
share = self.create_share(
|
|
||||||
cleanup_in_class=False,
|
|
||||||
name=share_name,
|
|
||||||
description=share_desc,
|
|
||||||
size=share_size,
|
|
||||||
consistency_group_id=self.consistency_group['id'],
|
|
||||||
share_type_id=self.share_type['id'],
|
|
||||||
client=self.shares_v2_client,
|
|
||||||
version='2.4',
|
|
||||||
)
|
|
||||||
|
|
||||||
share_name2 = data_utils.rand_name("tempest-share-name")
|
shares = self.create_shares([
|
||||||
share_desc2 = data_utils.rand_name("tempest-share-description")
|
{'kwargs': {
|
||||||
share_size2 = 1
|
'cleanup_in_class': False,
|
||||||
share2 = self.create_share(
|
'name': share_name,
|
||||||
cleanup_in_class=False,
|
'description': share_desc,
|
||||||
name=share_name2,
|
'consistency_group_id': self.consistency_group['id'],
|
||||||
description=share_desc2,
|
'share_type_id': st_id,
|
||||||
size=share_size2,
|
}} for st_id in (self.share_type['id'], self.share_type2['id'])
|
||||||
consistency_group_id=self.consistency_group['id'],
|
])
|
||||||
share_type_id=self.share_type2['id'],
|
|
||||||
client=self.shares_v2_client,
|
|
||||||
version='2.4',
|
|
||||||
)
|
|
||||||
|
|
||||||
cg_shares = self.shares_v2_client.list_shares(
|
cg_shares = self.shares_v2_client.list_shares(
|
||||||
detailed=True,
|
detailed=True,
|
||||||
|
@ -103,7 +88,7 @@ class ConsistencyGroupActionsTest(base.BaseSharesAdminTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
cg_share_ids = [s['id'] for s in cg_shares]
|
cg_share_ids = [s['id'] for s in cg_shares]
|
||||||
for share_id in [share['id'], share2['id']]:
|
for share_id in (shares[0]['id'], shares[1]['id']):
|
||||||
self.assertIn(share_id, cg_share_ids, 'Share %s not in '
|
self.assertIn(share_id, cg_share_ids, 'Share %s not in '
|
||||||
'consistency group %s.' %
|
'consistency group %s.' %
|
||||||
(share_id, self.consistency_group['id']))
|
(share_id, self.consistency_group['id']))
|
||||||
|
|
|
@ -39,78 +39,52 @@ class ConsistencyGroupActionsTest(base.BaseSharesTest):
|
||||||
@classmethod
|
@classmethod
|
||||||
def resource_setup(cls):
|
def resource_setup(cls):
|
||||||
super(ConsistencyGroupActionsTest, cls).resource_setup()
|
super(ConsistencyGroupActionsTest, cls).resource_setup()
|
||||||
# Create consistency group
|
|
||||||
|
# Create first consistency group
|
||||||
cls.cg_name = data_utils.rand_name("tempest-cg-name")
|
cls.cg_name = data_utils.rand_name("tempest-cg-name")
|
||||||
cls.cg_desc = data_utils.rand_name("tempest-cg-description")
|
cls.cg_desc = data_utils.rand_name("tempest-cg-description")
|
||||||
cls.consistency_group = cls.create_consistency_group(
|
cls.cg = cls.create_consistency_group(
|
||||||
name=cls.cg_name,
|
name=cls.cg_name, description=cls.cg_desc)
|
||||||
description=cls.cg_desc,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Create 2 shares inside consistency group
|
|
||||||
cls.share_name = data_utils.rand_name("tempest-share-name")
|
|
||||||
cls.share_desc = data_utils.rand_name("tempest-share-description")
|
|
||||||
cls.share_size = 1
|
|
||||||
cls.share = cls.create_share(
|
|
||||||
name=cls.share_name,
|
|
||||||
description=cls.share_desc,
|
|
||||||
size=cls.share_size,
|
|
||||||
consistency_group_id=cls.consistency_group['id'],
|
|
||||||
metadata={'key': 'value'},
|
|
||||||
client=cls.shares_v2_client,
|
|
||||||
)
|
|
||||||
|
|
||||||
cls.share_name2 = data_utils.rand_name("tempest-share-name")
|
|
||||||
cls.share_desc2 = data_utils.rand_name("tempest-share-description")
|
|
||||||
cls.share_size2 = 2
|
|
||||||
cls.share2 = cls.create_share(
|
|
||||||
name=cls.share_name2,
|
|
||||||
description=cls.share_desc2,
|
|
||||||
size=cls.share_size2,
|
|
||||||
consistency_group_id=cls.consistency_group['id'],
|
|
||||||
client=cls.shares_v2_client,
|
|
||||||
)
|
|
||||||
|
|
||||||
cls.cgsnap_name = data_utils.rand_name("tempest-cgsnap-name")
|
|
||||||
cls.cgsnap_desc = data_utils.rand_name("tempest-cgsnap-description")
|
|
||||||
cls.cgsnapshot = cls.create_cgsnapshot_wait_for_active(
|
|
||||||
cls.consistency_group["id"],
|
|
||||||
name=cls.cgsnap_name,
|
|
||||||
description=cls.cgsnap_desc)
|
|
||||||
|
|
||||||
# Create second consistency group for purposes of sorting and snapshot
|
# Create second consistency group for purposes of sorting and snapshot
|
||||||
# filtering
|
# filtering
|
||||||
cls.cg_name2 = data_utils.rand_name("tempest-cg-name")
|
cls.cg2 = cls.create_consistency_group(
|
||||||
cls.cg_desc2 = data_utils.rand_name("tempest-cg-description")
|
name=cls.cg_name, description=cls.cg_desc)
|
||||||
cls.consistency_group2 = cls.create_consistency_group(
|
|
||||||
name=cls.cg_name2,
|
|
||||||
description=cls.cg_desc2,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Create 1 share in second consistency group
|
# Create 2 shares inside first CG and 1 inside second CG
|
||||||
cls.share_name3 = data_utils.rand_name("tempest-share-name")
|
cls.share_name = data_utils.rand_name("tempest-share-name")
|
||||||
cls.share_desc3 = data_utils.rand_name("tempest-share-description")
|
cls.share_desc = data_utils.rand_name("tempest-share-description")
|
||||||
cls.share3 = cls.create_share(
|
cls.share_size = 1
|
||||||
name=cls.share_name3,
|
cls.share_size2 = 2
|
||||||
description=cls.share_desc3,
|
cls.shares = cls.create_shares([
|
||||||
size=cls.share_size,
|
{'kwargs': {
|
||||||
consistency_group_id=cls.consistency_group2['id'],
|
'name': cls.share_name,
|
||||||
client=cls.shares_v2_client,
|
'description': cls.share_desc,
|
||||||
)
|
'size': size,
|
||||||
|
'consistency_group_id': cg_id,
|
||||||
|
}} for size, cg_id in ((cls.share_size, cls.cg['id']),
|
||||||
|
(cls.share_size2, cls.cg['id']),
|
||||||
|
(cls.share_size, cls.cg2['id']))
|
||||||
|
])
|
||||||
|
|
||||||
|
# Create CG snapshots
|
||||||
|
cls.cgsnap_name = data_utils.rand_name("tempest-cgsnap-name")
|
||||||
|
cls.cgsnap_desc = data_utils.rand_name("tempest-cgsnap-description")
|
||||||
|
|
||||||
|
cls.cgsnapshot = cls.create_cgsnapshot_wait_for_active(
|
||||||
|
cls.cg["id"],
|
||||||
|
name=cls.cgsnap_name,
|
||||||
|
description=cls.cgsnap_desc)
|
||||||
|
|
||||||
cls.cgsnap_name2 = data_utils.rand_name("tempest-cgsnap-name")
|
|
||||||
cls.cgsnap_desc2 = data_utils.rand_name("tempest-cgsnap-description")
|
|
||||||
cls.cgsnapshot2 = cls.create_cgsnapshot_wait_for_active(
|
cls.cgsnapshot2 = cls.create_cgsnapshot_wait_for_active(
|
||||||
cls.consistency_group2['id'],
|
cls.cg2['id'], name=cls.cgsnap_name, description=cls.cgsnap_desc)
|
||||||
name=cls.cgsnap_name2,
|
|
||||||
description=cls.cgsnap_desc2)
|
|
||||||
|
|
||||||
@test.attr(type=["gate", ])
|
@test.attr(type=["gate", ])
|
||||||
def test_get_consistency_group_v2_4(self):
|
def test_get_consistency_group_v2_4(self):
|
||||||
|
|
||||||
# Get consistency group
|
# Get consistency group
|
||||||
consistency_group = self.shares_v2_client.get_consistency_group(
|
consistency_group = self.shares_v2_client.get_consistency_group(
|
||||||
self.consistency_group['id'], version='2.4')
|
self.cg['id'], version='2.4')
|
||||||
|
|
||||||
# Verify keys
|
# Verify keys
|
||||||
actual_keys = set(consistency_group.keys())
|
actual_keys = set(consistency_group.keys())
|
||||||
|
@ -135,7 +109,7 @@ class ConsistencyGroupActionsTest(base.BaseSharesTest):
|
||||||
def test_get_share_v2_4(self):
|
def test_get_share_v2_4(self):
|
||||||
|
|
||||||
# Get share
|
# Get share
|
||||||
share = self.shares_v2_client.get_share(self.share['id'],
|
share = self.shares_v2_client.get_share(self.shares[0]['id'],
|
||||||
version='2.4')
|
version='2.4')
|
||||||
|
|
||||||
# Verify keys
|
# Verify keys
|
||||||
|
@ -164,9 +138,8 @@ class ConsistencyGroupActionsTest(base.BaseSharesTest):
|
||||||
self.assertEqual(self.share_size, int(share["size"]), msg)
|
self.assertEqual(self.share_size, int(share["size"]), msg)
|
||||||
|
|
||||||
msg = "Expected consistency_group_id: '%s', actual value: '%s'" % (
|
msg = "Expected consistency_group_id: '%s', actual value: '%s'" % (
|
||||||
self.consistency_group["id"], share["consistency_group_id"])
|
self.cg["id"], share["consistency_group_id"])
|
||||||
self.assertEqual(
|
self.assertEqual(self.cg["id"], share["consistency_group_id"], msg)
|
||||||
self.consistency_group["id"], share["consistency_group_id"], msg)
|
|
||||||
|
|
||||||
@test.attr(type=["gate", ])
|
@test.attr(type=["gate", ])
|
||||||
def test_list_consistency_groups_v2_4(self):
|
def test_list_consistency_groups_v2_4(self):
|
||||||
|
@ -180,8 +153,7 @@ class ConsistencyGroupActionsTest(base.BaseSharesTest):
|
||||||
consistency_groups]
|
consistency_groups]
|
||||||
|
|
||||||
# Consistency group ids are in list exactly once
|
# Consistency group ids are in list exactly once
|
||||||
for cg_id in [self.consistency_group["id"],
|
for cg_id in (self.cg["id"], self.cg2["id"]):
|
||||||
self.consistency_group2["id"]]:
|
|
||||||
gen = [cgid["id"] for cgid in consistency_groups
|
gen = [cgid["id"] for cgid in consistency_groups
|
||||||
if cgid["id"] == cg_id]
|
if cgid["id"] == cg_id]
|
||||||
msg = ("Expected id %s exactly once in consistency group list" %
|
msg = ("Expected id %s exactly once in consistency group list" %
|
||||||
|
@ -200,8 +172,7 @@ class ConsistencyGroupActionsTest(base.BaseSharesTest):
|
||||||
for cg in consistency_groups]
|
for cg in consistency_groups]
|
||||||
|
|
||||||
# Consistency group ids are in list exactly once
|
# Consistency group ids are in list exactly once
|
||||||
for cg_id in [self.consistency_group["id"],
|
for cg_id in (self.cg["id"], self.cg2["id"]):
|
||||||
self.consistency_group2["id"]]:
|
|
||||||
gen = [cgid["id"] for cgid in consistency_groups
|
gen = [cgid["id"] for cgid in consistency_groups
|
||||||
if cgid["id"] == cg_id]
|
if cgid["id"] == cg_id]
|
||||||
msg = ("Expected id %s exactly once in consistency group list" %
|
msg = ("Expected id %s exactly once in consistency group list" %
|
||||||
|
@ -213,7 +184,7 @@ class ConsistencyGroupActionsTest(base.BaseSharesTest):
|
||||||
|
|
||||||
shares = self.shares_v2_client.list_shares(
|
shares = self.shares_v2_client.list_shares(
|
||||||
detailed=True,
|
detailed=True,
|
||||||
params={'consistency_group_id': self.consistency_group['id']},
|
params={'consistency_group_id': self.cg['id']},
|
||||||
version='2.4'
|
version='2.4'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -222,18 +193,19 @@ class ConsistencyGroupActionsTest(base.BaseSharesTest):
|
||||||
self.assertEqual(2, len(shares),
|
self.assertEqual(2, len(shares),
|
||||||
'Incorrect number of shares returned. Expected 2, '
|
'Incorrect number of shares returned. Expected 2, '
|
||||||
'got %s' % len(shares))
|
'got %s' % len(shares))
|
||||||
self.assertIn(self.share['id'], share_ids,
|
self.assertIn(self.shares[0]['id'], share_ids,
|
||||||
'Share %s expected in returned list, but got %s'
|
'Share %s expected in returned list, but got %s'
|
||||||
% (self.share['id'], share_ids))
|
% (self.shares[0]['id'], share_ids))
|
||||||
self.assertIn(self.share2['id'], share_ids,
|
self.assertIn(self.shares[1]['id'], share_ids,
|
||||||
'Share %s expected in returned list, but got %s'
|
'Share %s expected in returned list, but got %s'
|
||||||
% (self.share['id'], share_ids))
|
% (self.shares[0]['id'], share_ids))
|
||||||
|
|
||||||
@test.attr(type=["gate", ])
|
@test.attr(type=["gate", ])
|
||||||
def test_get_cgsnapshot_v2_4(self):
|
def test_get_cgsnapshot_v2_4(self):
|
||||||
|
|
||||||
# Get consistency group
|
# Get consistency group
|
||||||
consistency_group = self.shares_v2_client.get_consistency_group(
|
consistency_group = self.shares_v2_client.get_consistency_group(
|
||||||
self.consistency_group['id'], version='2.4')
|
self.cg['id'], version='2.4')
|
||||||
|
|
||||||
# Verify keys
|
# Verify keys
|
||||||
actual_keys = set(consistency_group.keys())
|
actual_keys = set(consistency_group.keys())
|
||||||
|
@ -265,11 +237,11 @@ class ConsistencyGroupActionsTest(base.BaseSharesTest):
|
||||||
'Unexpected number of cgsnapshot members. Expected '
|
'Unexpected number of cgsnapshot members. Expected '
|
||||||
'2, got %s.' % len(cgsnapshot_members))
|
'2, got %s.' % len(cgsnapshot_members))
|
||||||
# Verify each share is represented in the cgsnapshot appropriately
|
# Verify each share is represented in the cgsnapshot appropriately
|
||||||
for share_id in [self.share['id'], self.share2['id']]:
|
for share_id in (self.shares[0]['id'], self.shares[1]['id']):
|
||||||
self.assertIn(share_id, member_share_ids,
|
self.assertIn(share_id, member_share_ids,
|
||||||
'Share missing %s missing from cgsnapshot. Found %s.'
|
'Share missing %s missing from cgsnapshot. Found %s.'
|
||||||
% (share_id, member_share_ids))
|
% (share_id, member_share_ids))
|
||||||
for share in [self.share, self.share2]:
|
for share in (self.shares[0], self.shares[1]):
|
||||||
for member in cgsnapshot_members:
|
for member in cgsnapshot_members:
|
||||||
if share['id'] == member['share_id']:
|
if share['id'] == member['share_id']:
|
||||||
self.assertEqual(share['size'], member['size'])
|
self.assertEqual(share['size'], member['size'])
|
||||||
|
|
Loading…
Reference in New Issue