Merge "Use the embedded scenario manager instead of tempest one"
diff --git a/.gitignore b/.gitignore
index 963e589..3c71a79 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,7 +27,7 @@
!.coveragerc
.tox
nosetests.xml
-.testrepository
+.stestr
.venv
# Translations
diff --git a/.stestr.conf b/.stestr.conf
new file mode 100644
index 0000000..4dedb28
--- /dev/null
+++ b/.stestr.conf
@@ -0,0 +1,3 @@
+[DEFAULT]
+test_path=${OS_TEST_PATH:-./cinder_tempest_plugin}
+top_dir=./
diff --git a/.testr.conf b/.testr.conf
deleted file mode 100644
index 6d83b3c..0000000
--- a/.testr.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-[DEFAULT]
-test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
- OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
- OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \
- ${PYTHON:-python} -m subunit.run discover -t ./ . $LISTOPT $IDOPTION
-test_id_option=--load-list $IDFILE
-test_list_option=--list
diff --git a/.zuul.yaml b/.zuul.yaml
index 58e1095..27001af 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -49,6 +49,10 @@
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
+ auth:
+ # FIXME: 'creator' should be re-added by the barbican devstack plugin
+ # but the value below override everything.
+ tempest_roles: member,creator
volume-feature-enabled:
volume_revert: True
devstack_services:
diff --git a/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py b/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
index 15d19dc..7dff494 100644
--- a/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
+++ b/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
@@ -78,20 +78,20 @@
self.consistencygroups_adm_client.create_consistencygroup)
cg = create_consistencygroup(volume_type['id'],
name=cg_name)['consistencygroup']
+ self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+ cg['id'], 'available')
+ self.assertEqual(cg_name, cg['name'])
+
+ # Create volume
vol_name = data_utils.rand_name("volume")
params = {'name': vol_name,
'volume_type': volume_type['id'],
'consistencygroup_id': cg['id'],
'size': CONF.volume.volume_size}
- # Create volume
volume = self.admin_volume_client.create_volume(**params)['volume']
-
waiters.wait_for_volume_resource_status(self.admin_volume_client,
volume['id'], 'available')
- self.consistencygroups_adm_client.wait_for_consistencygroup_status(
- cg['id'], 'available')
- self.assertEqual(cg_name, cg['name'])
# Get a given CG
cg = self.consistencygroups_adm_client.show_consistencygroup(
@@ -122,19 +122,19 @@
self.consistencygroups_adm_client.create_consistencygroup)
cg = create_consistencygroup(volume_type['id'],
name=cg_name)['consistencygroup']
+ self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+ cg['id'], 'available')
+ self.assertEqual(cg_name, cg['name'])
+
+ # Create volume
vol_name = data_utils.rand_name("volume")
params = {'name': vol_name,
'volume_type': volume_type['id'],
'consistencygroup_id': cg['id'],
'size': CONF.volume.volume_size}
-
- # Create volume
volume = self.admin_volume_client.create_volume(**params)['volume']
waiters.wait_for_volume_resource_status(self.admin_volume_client,
volume['id'], 'available')
- self.consistencygroups_adm_client.wait_for_consistencygroup_status(
- cg['id'], 'available')
- self.assertEqual(cg_name, cg['name'])
# Create cgsnapshot
cgsnapshot_name = data_utils.rand_name('cgsnapshot')
@@ -142,6 +142,9 @@
self.consistencygroups_adm_client.create_cgsnapshot)
cgsnapshot = create_cgsnapshot(cg['id'],
name=cgsnapshot_name)['cgsnapshot']
+ self.consistencygroups_adm_client.wait_for_cgsnapshot_status(
+ cgsnapshot['id'], 'available')
+ self.assertEqual(cgsnapshot_name, cgsnapshot['name'])
snapshots = self.os_admin.snapshots_v2_client.list_snapshots(
detail=True)['snapshots']
for snap in snapshots:
@@ -149,9 +152,6 @@
waiters.wait_for_volume_resource_status(
self.os_admin.snapshots_v2_client,
snap['id'], 'available')
- self.consistencygroups_adm_client.wait_for_cgsnapshot_status(
- cgsnapshot['id'], 'available')
- self.assertEqual(cgsnapshot_name, cgsnapshot['name'])
# Get a given CG snapshot
cgsnapshot = self.consistencygroups_adm_client.show_cgsnapshot(
@@ -182,19 +182,19 @@
self.consistencygroups_adm_client.create_consistencygroup)
cg = create_consistencygroup(volume_type['id'],
name=cg_name)['consistencygroup']
+ self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+ cg['id'], 'available')
+ self.assertEqual(cg_name, cg['name'])
+
+ # Create volume
vol_name = data_utils.rand_name("volume")
params = {'name': vol_name,
'volume_type': volume_type['id'],
'consistencygroup_id': cg['id'],
'size': CONF.volume.volume_size}
-
- # Create volume
volume = self.admin_volume_client.create_volume(**params)['volume']
waiters.wait_for_volume_resource_status(self.admin_volume_client,
volume['id'], 'available')
- self.consistencygroups_adm_client.wait_for_consistencygroup_status(
- cg['id'], 'available')
- self.assertEqual(cg_name, cg['name'])
# Create cgsnapshot
cgsnapshot_name = data_utils.rand_name('cgsnapshot')
@@ -202,15 +202,15 @@
self.consistencygroups_adm_client.create_cgsnapshot)
cgsnapshot = create_cgsnapshot(cg['id'],
name=cgsnapshot_name)['cgsnapshot']
+ self.consistencygroups_adm_client.wait_for_cgsnapshot_status(
+ cgsnapshot['id'], 'available')
+ self.assertEqual(cgsnapshot_name, cgsnapshot['name'])
snapshots = self.snapshots_client.list_snapshots(
detail=True)['snapshots']
for snap in snapshots:
if volume['id'] == snap['volume_id']:
waiters.wait_for_volume_resource_status(
self.os_admin.snapshots_v2_client, snap['id'], 'available')
- self.consistencygroups_adm_client.wait_for_cgsnapshot_status(
- cgsnapshot['id'], 'available')
- self.assertEqual(cgsnapshot_name, cgsnapshot['name'])
# Create CG from CG snapshot
cg_name2 = data_utils.rand_name('CG_from_snap')
@@ -218,15 +218,15 @@
self.consistencygroups_adm_client.create_consistencygroup_from_src)
cg2 = create_consistencygroup2(cgsnapshot_id=cgsnapshot['id'],
name=cg_name2)['consistencygroup']
+ self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+ cg2['id'], 'available')
+ self.assertEqual(cg_name2, cg2['name'])
vols = self.admin_volume_client.list_volumes(
detail=True)['volumes']
for vol in vols:
if vol['consistencygroup_id'] == cg2['id']:
waiters.wait_for_volume_resource_status(
self.admin_volume_client, vol['id'], 'available')
- self.consistencygroups_adm_client.wait_for_consistencygroup_status(
- cg2['id'], 'available')
- self.assertEqual(cg_name2, cg2['name'])
# Clean up
self._delete_consistencygroup(cg2['id'])
@@ -247,19 +247,19 @@
self.consistencygroups_adm_client.create_consistencygroup)
cg = create_consistencygroup(volume_type['id'],
name=cg_name)['consistencygroup']
+ self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+ cg['id'], 'available')
+ self.assertEqual(cg_name, cg['name'])
+
+ # Create volume
vol_name = data_utils.rand_name("volume")
params = {'name': vol_name,
'volume_type': volume_type['id'],
'consistencygroup_id': cg['id'],
'size': CONF.volume.volume_size}
-
- # Create volume
volume = self.admin_volume_client.create_volume(**params)['volume']
waiters.wait_for_volume_resource_status(self.admin_volume_client,
volume['id'], 'available')
- self.consistencygroups_adm_client.wait_for_consistencygroup_status(
- cg['id'], 'available')
- self.assertEqual(cg_name, cg['name'])
# Create CG from CG
cg_name2 = data_utils.rand_name('CG_from_cg')
@@ -267,15 +267,15 @@
self.consistencygroups_adm_client.create_consistencygroup_from_src)
cg2 = create_consistencygroup2(source_cgid=cg['id'],
name=cg_name2)['consistencygroup']
+ self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+ cg2['id'], 'available')
+ self.assertEqual(cg_name2, cg2['name'])
vols = self.admin_volume_client.list_volumes(
detail=True)['volumes']
for vol in vols:
if vol['consistencygroup_id'] == cg2['id']:
waiters.wait_for_volume_resource_status(
self.admin_volume_client, vol['id'], 'available')
- self.consistencygroups_adm_client.wait_for_consistencygroup_status(
- cg2['id'], 'available')
- self.assertEqual(cg_name2, cg2['name'])
# Clean up
self._delete_consistencygroup(cg2['id'])
diff --git a/cinder_tempest_plugin/api/volume/test_volume_unicode.py b/cinder_tempest_plugin/api/volume/test_volume_unicode.py
index 35d0a54..ff6473a 100644
--- a/cinder_tempest_plugin/api/volume/test_volume_unicode.py
+++ b/cinder_tempest_plugin/api/volume/test_volume_unicode.py
@@ -57,6 +57,7 @@
return volume
+ @decorators.idempotent_id('2d7e2e49-150e-4849-a18e-79f9777c9a96')
def test_create_delete_unicode_volume_name(self):
"""Create a volume with a unicode name and view it."""
@@ -68,6 +69,7 @@
@testtools.skipUnless(CONF.volume_feature_enabled.snapshot,
"Cinder volume snapshots are disabled")
@decorators.related_bug('1393871')
+ @decorators.idempotent_id('332be44d-5418-4fb3-a8f0-a3587de6929f')
def test_snapshot_create_volume_description_non_ascii_code(self):
# Create a volume with non-ascii description
description = u'\u05e7\u05d9\u05d9\u05e4\u05e9'
diff --git a/doc/requirements.txt b/doc/requirements.txt
new file mode 100644
index 0000000..d3348d6
--- /dev/null
+++ b/doc/requirements.txt
@@ -0,0 +1,2 @@
+sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
+openstackdocstheme>=1.18.1 # Apache-2.0
diff --git a/setup.cfg b/setup.cfg
index 9b05085..7866a06 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -16,6 +16,7 @@
Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
[files]
packages =
diff --git a/test-requirements.txt b/test-requirements.txt
index e0bd682..905ad51 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -6,8 +6,6 @@
coverage!=4.4,>=4.0 # Apache-2.0
python-subunit>=1.0.0 # Apache-2.0/BSD
-sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
oslotest>=3.2.0 # Apache-2.0
-testrepository>=0.0.18 # Apache-2.0/BSD
+stestr>=1.0.0 # Apache-2.0
testtools>=2.2.0 # MIT
-openstackdocstheme>=1.18.1 # Apache-2.0
diff --git a/tox.ini b/tox.ini
index 473a6c6..e1eb31f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -12,9 +12,12 @@
setenv =
VIRTUAL_ENV={envdir}
PYTHONWARNINGS=default::DeprecationWarning
+ OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
+ OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
+ OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/test-requirements.txt
-commands = python setup.py test --slowest --testr-args='{posargs}'
+commands = stestr run --slowest {posargs}
[testenv:pep8]
commands = flake8 {posargs}