Merge "Allow Tempest to skip snapshot tests"
This commit is contained in:
commit
4f7a95c403
@ -13,9 +13,14 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools # noqa
|
||||
|
||||
from tempest.api.share import base
|
||||
from tempest import config_share as config
|
||||
from tempest import test
|
||||
|
||||
CONF = config.CONF
|
||||
|
||||
|
||||
class AdminActionsTest(base.BaseSharesAdminTest):
|
||||
|
||||
@ -25,7 +30,8 @@ class AdminActionsTest(base.BaseSharesAdminTest):
|
||||
cls.states = ["error", "available"]
|
||||
cls.bad_status = "error_deleting"
|
||||
cls.sh = cls.create_share()
|
||||
cls.sn = cls.create_snapshot_wait_for_active(cls.sh["id"])
|
||||
if CONF.share.run_snapshot_tests:
|
||||
cls.sn = cls.create_snapshot_wait_for_active(cls.sh["id"])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_reset_share_state(self):
|
||||
@ -34,6 +40,8 @@ class AdminActionsTest(base.BaseSharesAdminTest):
|
||||
self.shares_client.wait_for_share_status(self.sh["id"], status)
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_reset_snapshot_state_to_error(self):
|
||||
for status in self.states:
|
||||
self.shares_client.reset_state(
|
||||
@ -56,6 +64,8 @@ class AdminActionsTest(base.BaseSharesAdminTest):
|
||||
self.shares_client.wait_for_resource_deletion(share_id=share["id"])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_force_delete_snapshot(self):
|
||||
sn = self.create_snapshot_wait_for_active(self.sh["id"])
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
|
||||
from tempest_lib import exceptions as lib_exc # noqa
|
||||
import testtools # noqa
|
||||
|
||||
from tempest.api.share import base
|
||||
from tempest import clients_share as clients
|
||||
@ -29,7 +30,8 @@ class AdminActionsNegativeTest(base.BaseSharesAdminTest):
|
||||
def resource_setup(cls):
|
||||
super(AdminActionsNegativeTest, cls).resource_setup()
|
||||
cls.sh = cls.create_share()
|
||||
cls.sn = cls.create_snapshot_wait_for_active(cls.sh["id"])
|
||||
if CONF.share.run_snapshot_tests:
|
||||
cls.sn = cls.create_snapshot_wait_for_active(cls.sh["id"])
|
||||
cls.member_shares_client = clients.Manager().shares_client
|
||||
|
||||
@test.attr(type=["gate", "negative", ])
|
||||
@ -38,6 +40,8 @@ class AdminActionsNegativeTest(base.BaseSharesAdminTest):
|
||||
self.shares_client.reset_state, "fake")
|
||||
|
||||
@test.attr(type=["gate", "negative", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_reset_nonexistent_snapshot_state(self):
|
||||
self.assertRaises(lib_exc.NotFound, self.shares_client.reset_state,
|
||||
"fake", s_type="snapshots")
|
||||
@ -49,6 +53,8 @@ class AdminActionsNegativeTest(base.BaseSharesAdminTest):
|
||||
self.sh["id"], status="fake")
|
||||
|
||||
@test.attr(type=["gate", "negative", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_reset_snapshot_state_to_unacceptable_state(self):
|
||||
self.assertRaises(lib_exc.BadRequest,
|
||||
self.shares_client.reset_state,
|
||||
@ -62,6 +68,8 @@ class AdminActionsNegativeTest(base.BaseSharesAdminTest):
|
||||
self.sh["id"])
|
||||
|
||||
@test.attr(type=["gate", "negative", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_try_reset_snapshot_state_with_member(self):
|
||||
# Even if member from another tenant, it should be unauthorized
|
||||
self.assertRaises(lib_exc.Forbidden,
|
||||
@ -74,6 +82,8 @@ class AdminActionsNegativeTest(base.BaseSharesAdminTest):
|
||||
self.shares_client.force_delete, "fake")
|
||||
|
||||
@test.attr(type=["gate", "negative", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_force_delete_nonexistent_snapshot(self):
|
||||
self.assertRaises(lib_exc.NotFound,
|
||||
self.shares_client.force_delete,
|
||||
@ -88,6 +98,8 @@ class AdminActionsNegativeTest(base.BaseSharesAdminTest):
|
||||
self.sh["id"])
|
||||
|
||||
@test.attr(type=["gate", "negative", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_try_force_delete_snapshot_with_member(self):
|
||||
# If a non-admin tries to do force_delete, it should be unauthorized
|
||||
self.assertRaises(lib_exc.Forbidden,
|
||||
|
@ -30,6 +30,8 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
def resource_setup(cls):
|
||||
super(SharesActionsAdminTest, cls).resource_setup()
|
||||
|
||||
cls.shares = []
|
||||
|
||||
# create share type for share filtering purposes
|
||||
cls.st_name = data_utils.rand_name("tempest-st-name")
|
||||
cls.extra_specs = cls.add_required_extra_specs_to_dict(
|
||||
@ -48,41 +50,43 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
'bar_key_share_1': 'foo_value_share_1',
|
||||
}
|
||||
cls.share_size = 1
|
||||
cls.share = cls.create_share(
|
||||
cls.shares.append(cls.create_share(
|
||||
name=cls.share_name,
|
||||
description=cls.share_desc,
|
||||
size=cls.share_size,
|
||||
metadata=cls.metadata,
|
||||
share_type_id=cls.st['share_type']['id'],
|
||||
)
|
||||
))
|
||||
|
||||
# create snapshot
|
||||
cls.snap_name = data_utils.rand_name("tempest-snapshot-name")
|
||||
cls.snap_desc = data_utils.rand_name("tempest-snapshot-description")
|
||||
cls.snap = cls.create_snapshot_wait_for_active(
|
||||
cls.share["id"], cls.snap_name, cls.snap_desc)
|
||||
if CONF.share.run_snapshot_tests:
|
||||
# create snapshot
|
||||
cls.snap_name = data_utils.rand_name("tempest-snapshot-name")
|
||||
cls.snap_desc = data_utils.rand_name(
|
||||
"tempest-snapshot-description")
|
||||
cls.snap = cls.create_snapshot_wait_for_active(
|
||||
cls.shares[0]["id"], cls.snap_name, cls.snap_desc)
|
||||
|
||||
# create second share from snapshot for purposes of sorting and
|
||||
# snapshot filtering
|
||||
cls.share_name2 = data_utils.rand_name("tempest-share-name")
|
||||
cls.share_desc2 = data_utils.rand_name("tempest-share-description")
|
||||
cls.metadata2 = {
|
||||
'foo_key_share_2': 'foo_value_share_2',
|
||||
'bar_key_share_2': 'foo_value_share_2',
|
||||
}
|
||||
cls.share2 = cls.create_share(
|
||||
name=cls.share_name2,
|
||||
description=cls.share_desc2,
|
||||
size=cls.share_size,
|
||||
metadata=cls.metadata2,
|
||||
snapshot_id=cls.snap['id'],
|
||||
)
|
||||
# create second share from snapshot for purposes of sorting and
|
||||
# snapshot filtering
|
||||
cls.share_name2 = data_utils.rand_name("tempest-share-name")
|
||||
cls.share_desc2 = data_utils.rand_name("tempest-share-description")
|
||||
cls.metadata2 = {
|
||||
'foo_key_share_2': 'foo_value_share_2',
|
||||
'bar_key_share_2': 'foo_value_share_2',
|
||||
}
|
||||
cls.shares.append(cls.create_share(
|
||||
name=cls.share_name2,
|
||||
description=cls.share_desc2,
|
||||
size=cls.share_size,
|
||||
metadata=cls.metadata2,
|
||||
snapshot_id=cls.snap['id'],
|
||||
))
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_get_share(self):
|
||||
|
||||
# get share
|
||||
share = self.shares_client.get_share(self.share['id'])
|
||||
share = self.shares_client.get_share(self.shares[0]['id'])
|
||||
|
||||
# verify keys
|
||||
expected_keys = ["status", "description", "links", "availability_zone",
|
||||
@ -116,8 +120,8 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
[self.assertIn(key, sh.keys()) for sh in shares for key in keys]
|
||||
|
||||
# our share id in list and have no duplicates
|
||||
for share_id in [self.share["id"], self.share2["id"]]:
|
||||
gen = [sid["id"] for sid in shares if sid["id"] in share_id]
|
||||
for share in self.shares:
|
||||
gen = [sid["id"] for sid in shares if sid["id"] in share["id"]]
|
||||
msg = "expected id lists %s times in share list" % (len(gen))
|
||||
self.assertEqual(1, len(gen), msg)
|
||||
|
||||
@ -136,8 +140,8 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
[self.assertIn(key, sh.keys()) for sh in shares for key in keys]
|
||||
|
||||
# our shares in list and have no duplicates
|
||||
for share_id in [self.share["id"], self.share2["id"]]:
|
||||
gen = [sid["id"] for sid in shares if sid["id"] in share_id]
|
||||
for share in self.shares:
|
||||
gen = [sid["id"] for sid in shares if sid["id"] in share["id"]]
|
||||
msg = "expected id lists %s times in share list" % (len(gen))
|
||||
self.assertEqual(1, len(gen), msg)
|
||||
|
||||
@ -153,7 +157,8 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
for share in shares:
|
||||
self.assertDictContainsSubset(
|
||||
filters['metadata'], share['metadata'])
|
||||
self.assertFalse(self.share2['id'] in [s['id'] for s in shares])
|
||||
if CONF.share.run_snapshot_tests:
|
||||
self.assertFalse(self.shares[1]['id'] in [s['id'] for s in shares])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_list_shares_with_detail_filter_by_extra_specs(self):
|
||||
@ -167,8 +172,8 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
# verify response
|
||||
self.assertTrue(len(shares) > 0)
|
||||
shares_ids = [s["id"] for s in shares]
|
||||
self.assertTrue(self.share["id"] in shares_ids)
|
||||
self.assertTrue(self.share2["id"] in shares_ids)
|
||||
for share in self.shares:
|
||||
self.assertTrue(share["id"] in shares_ids)
|
||||
for share in shares:
|
||||
st_list = self.shares_client.list_share_types()
|
||||
# find its name or id, get id
|
||||
@ -214,12 +219,12 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
self.assertEqual(
|
||||
filters['share_type_id'], st_id)
|
||||
share_ids = [share['id'] for share in shares]
|
||||
self.assertTrue(self.share['id'] in share_ids)
|
||||
self.assertTrue(self.share2['id'] in share_ids)
|
||||
for share in self.shares:
|
||||
self.assertTrue(share['id'] in share_ids)
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_list_shares_with_detail_filter_by_host(self):
|
||||
base_share = self.shares_client.get_share(self.share['id'])
|
||||
base_share = self.shares_client.get_share(self.shares[0]['id'])
|
||||
filters = {'host': base_share['host']}
|
||||
|
||||
# list shares
|
||||
@ -234,7 +239,7 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
@testtools.skipIf(
|
||||
not CONF.share.multitenancy_enabled, "Only for multitenancy.")
|
||||
def test_list_shares_with_detail_filter_by_share_network_id(self):
|
||||
base_share = self.shares_client.get_share(self.share['id'])
|
||||
base_share = self.shares_client.get_share(self.shares[0]['id'])
|
||||
filters = {'share_network_id': base_share['share_network_id']}
|
||||
|
||||
# list shares
|
||||
@ -247,6 +252,8 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
filters['share_network_id'], share['share_network_id'])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_shares_with_detail_filter_by_snapshot_id(self):
|
||||
filters = {'snapshot_id': self.snap['id']}
|
||||
|
||||
@ -257,7 +264,7 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
self.assertTrue(len(shares) > 0)
|
||||
for share in shares:
|
||||
self.assertEqual(filters['snapshot_id'], share['snapshot_id'])
|
||||
self.assertFalse(self.share['id'] in [s['id'] for s in shares])
|
||||
self.assertFalse(self.shares[0]['id'] in [s['id'] for s in shares])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_list_shares_with_detail_with_asc_sorting(self):
|
||||
@ -302,6 +309,8 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
self.assertEqual(0, len(shares))
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_get_snapshot(self):
|
||||
|
||||
# get snapshot
|
||||
@ -324,10 +333,12 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
self.assertEqual(self.snap_desc, get["description"], msg)
|
||||
|
||||
msg = "Expected share_id: '%s', "\
|
||||
"actual share_id: '%s'" % (self.share["id"], get["share_id"])
|
||||
self.assertEqual(self.share["id"], get["share_id"], msg)
|
||||
"actual share_id: '%s'" % (self.shares[0]["id"], get["share_id"])
|
||||
self.assertEqual(self.shares[0]["id"], get["share_id"], msg)
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_snapshots(self):
|
||||
|
||||
# list share snapshots
|
||||
@ -343,6 +354,8 @@ class SharesActionsAdminTest(base.BaseSharesAdminTest):
|
||||
self.assertEqual(1, len(gen), msg)
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_snapshots_with_detail(self):
|
||||
|
||||
# list share snapshots
|
||||
|
@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
|
||||
from tempest_lib import exceptions as lib_exc # noqa
|
||||
import testtools # noqa
|
||||
|
||||
from tempest.api.share import base
|
||||
from tempest import config_share as config
|
||||
@ -34,8 +35,9 @@ class ShareIpRulesForNFSNegativeTest(base.BaseSharesTest):
|
||||
raise cls.skipException(msg)
|
||||
# create share
|
||||
cls.share = cls.create_share(cls.protocol)
|
||||
# create snapshot
|
||||
cls.snap = cls.create_snapshot_wait_for_active(cls.share["id"])
|
||||
if CONF.share.run_snapshot_tests:
|
||||
# create snapshot
|
||||
cls.snap = cls.create_snapshot_wait_for_active(cls.share["id"])
|
||||
|
||||
@test.attr(type=["negative", "gate", ])
|
||||
def test_create_access_rule_ip_with_wrong_target_1(self):
|
||||
@ -128,8 +130,9 @@ class ShareUserRulesForNFSNegativeTest(base.BaseSharesTest):
|
||||
raise cls.skipException(msg)
|
||||
# create share
|
||||
cls.share = cls.create_share(cls.protocol)
|
||||
# create snapshot
|
||||
cls.snap = cls.create_snapshot_wait_for_active(cls.share["id"])
|
||||
if CONF.share.run_snapshot_tests:
|
||||
# create snapshot
|
||||
cls.snap = cls.create_snapshot_wait_for_active(cls.share["id"])
|
||||
|
||||
@test.attr(type=["negative", "gate", ])
|
||||
def test_create_access_rule_user_with_wrong_input_2(self):
|
||||
@ -164,6 +167,8 @@ class ShareUserRulesForNFSNegativeTest(base.BaseSharesTest):
|
||||
"try+")
|
||||
|
||||
@test.attr(type=["negative", "gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_create_access_rule_user_to_snapshot(self):
|
||||
self.assertRaises(lib_exc.NotFound,
|
||||
self.shares_client.create_access_rule,
|
||||
@ -207,8 +212,9 @@ class ShareRulesNegativeTest(base.BaseSharesTest):
|
||||
raise cls.skipException(cls.message)
|
||||
# create share
|
||||
cls.share = cls.create_share()
|
||||
# create snapshot
|
||||
cls.snap = cls.create_snapshot_wait_for_active(cls.share["id"])
|
||||
if CONF.share.run_snapshot_tests:
|
||||
# create snapshot
|
||||
cls.snap = cls.create_snapshot_wait_for_active(cls.share["id"])
|
||||
|
||||
@test.attr(type=["negative", "gate", ])
|
||||
def test_delete_access_rule_with_wrong_id(self):
|
||||
@ -229,6 +235,8 @@ class ShareRulesNegativeTest(base.BaseSharesTest):
|
||||
"wrong_share_id")
|
||||
|
||||
@test.attr(type=["negative", "gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_create_access_rule_ip_to_snapshot(self):
|
||||
self.assertRaises(lib_exc.NotFound,
|
||||
self.shares_client.create_access_rule,
|
||||
|
@ -61,6 +61,8 @@ class SharesNFSTest(base.BaseSharesTest):
|
||||
share['id'])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_create_delete_snapshot(self):
|
||||
|
||||
# create snapshot
|
||||
@ -81,6 +83,8 @@ class SharesNFSTest(base.BaseSharesTest):
|
||||
self.shares_client.get_snapshot, snap['id'])
|
||||
|
||||
@test.attr(type=["gate", "smoke", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_create_share_from_snapshot(self):
|
||||
# If multitenant driver used, share_network will be provided by default
|
||||
|
||||
@ -101,6 +105,8 @@ class SharesNFSTest(base.BaseSharesTest):
|
||||
@test.attr(type=["gate", "smoke", ])
|
||||
@testtools.skipIf(not CONF.share.multitenancy_enabled,
|
||||
"Only for multitenancy.")
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_create_share_from_snapshot_share_network_not_provided(self):
|
||||
# We expect usage of share network from parent's share
|
||||
# when creating share from snapshot using multitenant driver.
|
||||
|
@ -30,6 +30,8 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
def resource_setup(cls):
|
||||
super(SharesActionsTest, cls).resource_setup()
|
||||
|
||||
cls.shares = []
|
||||
|
||||
# create share
|
||||
cls.share_name = data_utils.rand_name("tempest-share-name")
|
||||
cls.share_desc = data_utils.rand_name("tempest-share-description")
|
||||
@ -38,40 +40,42 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
'bar_key_share_1': 'foo_value_share_1',
|
||||
}
|
||||
cls.share_size = 1
|
||||
cls.share = cls.create_share(
|
||||
cls.shares.append(cls.create_share(
|
||||
name=cls.share_name,
|
||||
description=cls.share_desc,
|
||||
size=cls.share_size,
|
||||
metadata=cls.metadata,
|
||||
)
|
||||
))
|
||||
|
||||
# create snapshot
|
||||
cls.snap_name = data_utils.rand_name("tempest-snapshot-name")
|
||||
cls.snap_desc = data_utils.rand_name("tempest-snapshot-description")
|
||||
cls.snap = cls.create_snapshot_wait_for_active(
|
||||
cls.share["id"], cls.snap_name, cls.snap_desc)
|
||||
if CONF.share.run_snapshot_tests:
|
||||
# create snapshot
|
||||
cls.snap_name = data_utils.rand_name("tempest-snapshot-name")
|
||||
cls.snap_desc = data_utils.rand_name(
|
||||
"tempest-snapshot-description")
|
||||
cls.snap = cls.create_snapshot_wait_for_active(
|
||||
cls.shares[0]["id"], cls.snap_name, cls.snap_desc)
|
||||
|
||||
# create second share from snapshot for purposes of sorting and
|
||||
# snapshot filtering
|
||||
cls.share_name2 = data_utils.rand_name("tempest-share-name")
|
||||
cls.share_desc2 = data_utils.rand_name("tempest-share-description")
|
||||
cls.metadata2 = {
|
||||
'foo_key_share_2': 'foo_value_share_2',
|
||||
'bar_key_share_2': 'foo_value_share_2',
|
||||
}
|
||||
cls.share2 = cls.create_share(
|
||||
name=cls.share_name2,
|
||||
description=cls.share_desc2,
|
||||
size=cls.share_size,
|
||||
metadata=cls.metadata2,
|
||||
snapshot_id=cls.snap['id'],
|
||||
)
|
||||
# create second share from snapshot for purposes of sorting and
|
||||
# snapshot filtering
|
||||
cls.share_name2 = data_utils.rand_name("tempest-share-name")
|
||||
cls.share_desc2 = data_utils.rand_name("tempest-share-description")
|
||||
cls.metadata2 = {
|
||||
'foo_key_share_2': 'foo_value_share_2',
|
||||
'bar_key_share_2': 'foo_value_share_2',
|
||||
}
|
||||
cls.shares.append(cls.create_share(
|
||||
name=cls.share_name2,
|
||||
description=cls.share_desc2,
|
||||
size=cls.share_size,
|
||||
metadata=cls.metadata2,
|
||||
snapshot_id=cls.snap['id'],
|
||||
))
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_get_share(self):
|
||||
|
||||
# get share
|
||||
share = self.shares_client.get_share(self.share['id'])
|
||||
share = self.shares_client.get_share(self.shares[0]['id'])
|
||||
|
||||
# verify keys
|
||||
expected_keys = ["status", "description", "links", "availability_zone",
|
||||
@ -105,8 +109,8 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
[self.assertIn(key, sh.keys()) for sh in shares for key in keys]
|
||||
|
||||
# our share id in list and have no duplicates
|
||||
for share_id in [self.share["id"], self.share2["id"]]:
|
||||
gen = [sid["id"] for sid in shares if sid["id"] in share_id]
|
||||
for share in self.shares:
|
||||
gen = [sid["id"] for sid in shares if sid["id"] in share["id"]]
|
||||
msg = "expected id lists %s times in share list" % (len(gen))
|
||||
self.assertEqual(1, len(gen), msg)
|
||||
|
||||
@ -125,8 +129,8 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
[self.assertIn(key, sh.keys()) for sh in shares for key in keys]
|
||||
|
||||
# our shares in list and have no duplicates
|
||||
for share_id in [self.share["id"], self.share2["id"]]:
|
||||
gen = [sid["id"] for sid in shares if sid["id"] in share_id]
|
||||
for share in self.shares:
|
||||
gen = [sid["id"] for sid in shares if sid["id"] in share["id"]]
|
||||
msg = "expected id lists %s times in share list" % (len(gen))
|
||||
self.assertEqual(1, len(gen), msg)
|
||||
|
||||
@ -142,11 +146,12 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
for share in shares:
|
||||
self.assertDictContainsSubset(
|
||||
filters['metadata'], share['metadata'])
|
||||
self.assertFalse(self.share2['id'] in [s['id'] for s in shares])
|
||||
if CONF.share.run_snapshot_tests:
|
||||
self.assertFalse(self.shares[1]['id'] in [s['id'] for s in shares])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_list_shares_with_detail_filter_by_host(self):
|
||||
base_share = self.shares_client.get_share(self.share['id'])
|
||||
base_share = self.shares_client.get_share(self.shares[0]['id'])
|
||||
filters = {'host': base_share['host']}
|
||||
|
||||
# list shares
|
||||
@ -161,7 +166,7 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
@testtools.skipIf(
|
||||
not CONF.share.multitenancy_enabled, "Only for multitenancy.")
|
||||
def test_list_shares_with_detail_filter_by_share_network_id(self):
|
||||
base_share = self.shares_client.get_share(self.share['id'])
|
||||
base_share = self.shares_client.get_share(self.shares[0]['id'])
|
||||
filters = {'share_network_id': base_share['share_network_id']}
|
||||
|
||||
# list shares
|
||||
@ -174,6 +179,8 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
filters['share_network_id'], share['share_network_id'])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_shares_with_detail_filter_by_snapshot_id(self):
|
||||
filters = {'snapshot_id': self.snap['id']}
|
||||
|
||||
@ -184,7 +191,7 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
self.assertTrue(len(shares) > 0)
|
||||
for share in shares:
|
||||
self.assertEqual(filters['snapshot_id'], share['snapshot_id'])
|
||||
self.assertFalse(self.share['id'] in [s['id'] for s in shares])
|
||||
self.assertFalse(self.shares[0]['id'] in [s['id'] for s in shares])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_list_shares_with_detail_with_asc_sorting(self):
|
||||
@ -236,7 +243,7 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
self.assertTrue(len(shares) > 0)
|
||||
|
||||
# get share with detailed info, we need its 'project_id'
|
||||
share = self.shares_client.get_share(self.share["id"])
|
||||
share = self.shares_client.get_share(self.shares[0]["id"])
|
||||
project_id = share["project_id"]
|
||||
for share in shares:
|
||||
self.assertEqual(share["project_id"], project_id)
|
||||
@ -277,6 +284,8 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
self.assertFalse(any([s["id"] == private_share["id"] for s in shares]))
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_get_snapshot(self):
|
||||
|
||||
# get snapshot
|
||||
@ -299,10 +308,12 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
self.assertEqual(self.snap_desc, get["description"], msg)
|
||||
|
||||
msg = "Expected share_id: '%s', "\
|
||||
"actual share_id: '%s'" % (self.share["id"], get["share_id"])
|
||||
self.assertEqual(self.share["id"], get["share_id"], msg)
|
||||
"actual share_id: '%s'" % (self.shares[0]["id"], get["share_id"])
|
||||
self.assertEqual(self.shares[0]["id"], get["share_id"], msg)
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_snapshots(self):
|
||||
|
||||
# list share snapshots
|
||||
@ -318,6 +329,8 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
self.assertEqual(1, len(gen), msg)
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_snapshots_with_detail(self):
|
||||
|
||||
# list share snapshots
|
||||
@ -335,9 +348,15 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
self.assertEqual(len(gen), 1, msg)
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_snapshots_with_detail_use_limit(self):
|
||||
for l, o in [('1', '1'), ('0', '1')]:
|
||||
filters = {'limit': l, 'offset': o, 'share_id': self.share['id']}
|
||||
filters = {
|
||||
'limit': l,
|
||||
'offset': o,
|
||||
'share_id': self.shares[0]['id'],
|
||||
}
|
||||
|
||||
# list snapshots
|
||||
snaps = self.shares_client.list_snapshots_with_detail(
|
||||
@ -348,12 +367,15 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
|
||||
# Only our one snapshot should be listed
|
||||
snaps = self.shares_client.list_snapshots_with_detail(
|
||||
params={'limit': '1', 'offset': '0', 'share_id': self.share['id']})
|
||||
params={'limit': '1', 'offset': '0',
|
||||
'share_id': self.shares[0]['id']})
|
||||
|
||||
self.assertEqual(1, len(snaps['snapshots']))
|
||||
self.assertEqual(self.snap['id'], snaps['snapshots'][0]['id'])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_snapshots_with_detail_filter_by_status_and_name(self):
|
||||
filters = {'status': 'available', 'name': self.snap_name}
|
||||
|
||||
@ -368,6 +390,8 @@ class SharesActionsTest(base.BaseSharesTest):
|
||||
self.assertEqual(filters['name'], snap['name'])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_list_snapshots_with_detail_and_asc_sorting(self):
|
||||
filters = {'sort_key': 'share_id', 'sort_dir': 'asc'}
|
||||
|
||||
@ -427,11 +451,13 @@ class SharesRenameTest(base.BaseSharesTest):
|
||||
name=cls.share_name, description=cls.share_desc,
|
||||
size=cls.share_size)
|
||||
|
||||
# create snapshot
|
||||
cls.snap_name = data_utils.rand_name("tempest-snapshot-name")
|
||||
cls.snap_desc = data_utils.rand_name("tempest-snapshot-description")
|
||||
cls.snap = cls.create_snapshot_wait_for_active(
|
||||
cls.share["id"], cls.snap_name, cls.snap_desc)
|
||||
if CONF.share.run_snapshot_tests:
|
||||
# create snapshot
|
||||
cls.snap_name = data_utils.rand_name("tempest-snapshot-name")
|
||||
cls.snap_desc = data_utils.rand_name(
|
||||
"tempest-snapshot-description")
|
||||
cls.snap = cls.create_snapshot_wait_for_active(
|
||||
cls.share["id"], cls.snap_name, cls.snap_desc)
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
def test_update_share(self):
|
||||
@ -458,6 +484,8 @@ class SharesRenameTest(base.BaseSharesTest):
|
||||
self.assertTrue(share["is_public"])
|
||||
|
||||
@test.attr(type=["gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_rename_snapshot(self):
|
||||
|
||||
# get snapshot
|
||||
|
@ -83,12 +83,16 @@ class SharesNegativeTest(base.BaseSharesTest):
|
||||
self.shares_client.delete_share, '')
|
||||
|
||||
@test.attr(type=["negative", "smoke", "gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_create_snapshot_with_wrong_id(self):
|
||||
self.assertRaises(lib_exc.NotFound,
|
||||
self.shares_client.create_snapshot,
|
||||
"wrong_share_id")
|
||||
|
||||
@test.attr(type=["negative", "smoke", "gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_delete_snapshot_with_wrong_id(self):
|
||||
self.assertRaises(lib_exc.NotFound,
|
||||
self.shares_client.delete_snapshot,
|
||||
@ -110,6 +114,8 @@ class SharesNegativeTest(base.BaseSharesTest):
|
||||
self.shares_client.create_share, size=0)
|
||||
|
||||
@test.attr(type=["negative", "gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_try_delete_share_with_existing_snapshot(self):
|
||||
# share can not be deleted while snapshot exists
|
||||
|
||||
@ -124,6 +130,8 @@ class SharesNegativeTest(base.BaseSharesTest):
|
||||
self.shares_client.delete_share, share["id"])
|
||||
|
||||
@test.attr(type=["negative", "gate", ])
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_create_share_from_snap_with_less_size(self):
|
||||
# requires minimum 5Gb available space
|
||||
|
||||
@ -157,6 +165,8 @@ class SharesNegativeTest(base.BaseSharesTest):
|
||||
@test.attr(type=["negative", "smoke", "gate", ])
|
||||
@testtools.skipIf(not CONF.share.multitenancy_enabled,
|
||||
"Only for multitenancy.")
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
"Snapshot tests are disabled.")
|
||||
def test_create_share_from_snap_with_different_share_network(self):
|
||||
# create share
|
||||
share = self.create_share(cleanup_in_class=False)
|
||||
|
@ -123,6 +123,11 @@ ShareGroup = [
|
||||
help="Defines whether to run share shrink tests or not. "
|
||||
"Disable this feature if used driver doesn't "
|
||||
"support it."),
|
||||
cfg.BoolOpt("run_snapshot_tests",
|
||||
default=True,
|
||||
help="Defines whether to run tests that use share snapshots "
|
||||
"or not. Disable this feature if used driver doesn't "
|
||||
"support it."),
|
||||
cfg.StrOpt("image_with_share_tools",
|
||||
default="manila-service-image",
|
||||
help="Image name for vm booting with nfs/smb clients tool."),
|
||||
|
Loading…
Reference in New Issue
Block a user