Merge "Improvements in snapshot data integrity tests"
diff --git a/.zuul.yaml b/.zuul.yaml
index 528ca0b..251e92c 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -5,17 +5,17 @@
check:
jobs:
- cinder-tempest-plugin-lvm-lio-barbican
- - cinder-tempest-plugin-lvm-lio-barbican-centos-8-stream:
+ - cinder-tempest-plugin-lvm-lio-barbican-centos-9-stream:
voting: false
- cinder-tempest-plugin-lvm-tgt-barbican
- nova-ceph-multistore:
voting: false
- cinder-tempest-plugin-cbak-ceph
- cinder-tempest-plugin-cbak-s3
+ - cinder-tempest-plugin-basic-yoga
+ - cinder-tempest-plugin-basic-xena
- cinder-tempest-plugin-basic-wallaby
- cinder-tempest-plugin-basic-victoria
- - cinder-tempest-plugin-basic-ussuri
- - cinder-tempest-plugin-basic-train
# Set this job to voting once we have some actual tests to run
- cinder-tempest-plugin-protection-functional:
voting: false
@@ -26,10 +26,10 @@
- cinder-tempest-plugin-cbak-ceph
experimental:
jobs:
+ - cinder-tempest-plugin-cbak-ceph-yoga
+ - cinder-tempest-plugin-cbak-ceph-xena
- cinder-tempest-plugin-cbak-ceph-wallaby
- cinder-tempest-plugin-cbak-ceph-victoria
- - cinder-tempest-plugin-cbak-ceph-ussuri
- - cinder-tempest-plugin-cbak-ceph-train
- job:
name: cinder-tempest-plugin-protection-functional
@@ -96,7 +96,7 @@
description: |
This is a base job for lvm with lio & tgt targets
with cinderlib tests.
- branches: ^(?!stable/(ocata|pike|queens|rocky|stein)).*$
+ branches: ^(?!stable/(ocata|pike|queens|rocky|stein|train)).*$
parent: cinder-tempest-plugin-lvm-barbican-base-abstract
roles:
- zuul: opendev.org/openstack/cinderlib
@@ -114,6 +114,27 @@
name: cinder-tempest-plugin-lvm-barbican-base
description: |
This is a base job for lvm with lio & tgt targets
+ with cinderlib tests to run on stable/train testing.
+ branches: stable/train
+ parent: cinder-tempest-plugin-lvm-barbican-base-abstract
+ roles:
+ - zuul: opendev.org/openstack/cinderlib
+ required-projects:
+ - opendev.org/openstack/cinderlib
+ - name: opendev.org/openstack/cinder-tempest-plugin
+ override-checkout: 1.3.0
+ run: playbooks/tempest-and-cinderlib-run.yaml
+ # Required to collect the tox-based logs of the cinderlib functional tests
+ post-run: playbooks/post-cinderlib.yaml
+ vars:
+ fetch_subunit_output_additional_dirs:
+ - "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/cinderlib'].src_dir }}"
+ tempest_test_exclude_list: '{{ ansible_user_dir }}/{{ zuul.projects["opendev.org/openstack/tempest"].src_dir }}/tools/tempest-integrated-gate-storage-exclude-list.txt'
+
+- job:
+ name: cinder-tempest-plugin-lvm-barbican-base
+ description: |
+ This is a base job for lvm with lio & tgt targets
branches: ^(?=stable/(ocata|pike|queens|rocky|stein)).*$
parent: cinder-tempest-plugin-lvm-barbican-base-abstract
required-projects:
@@ -138,6 +159,18 @@
c-bak: true
- job:
+ name: cinder-tempest-plugin-cbak-ceph-yoga
+ parent: cinder-tempest-plugin-cbak-ceph
+ nodeset: openstack-single-node-focal
+ override-checkout: stable/yoga
+
+- job:
+ name: cinder-tempest-plugin-cbak-ceph-xena
+ parent: cinder-tempest-plugin-cbak-ceph
+ nodeset: openstack-single-node-focal
+ override-checkout: stable/xena
+
+- job:
name: cinder-tempest-plugin-cbak-ceph-wallaby
parent: cinder-tempest-plugin-cbak-ceph
nodeset: openstack-single-node-focal
@@ -149,18 +182,6 @@
nodeset: openstack-single-node-focal
override-checkout: stable/victoria
-- job:
- name: cinder-tempest-plugin-cbak-ceph-ussuri
- parent: cinder-tempest-plugin-cbak-ceph
- nodeset: openstack-single-node-bionic
- override-checkout: stable/ussuri
-
-- job:
- name: cinder-tempest-plugin-cbak-ceph-train
- parent: cinder-tempest-plugin-cbak-ceph
- nodeset: openstack-single-node-bionic
- override-checkout: stable/train
-
# variant for pre-Ussuri branches (no volume revert for Ceph),
# should this job be used on those branches
- job:
@@ -189,7 +210,15 @@
nodeset: devstack-single-node-centos-8-stream
description: |
This jobs configures Cinder with LVM, LIO, barbican and
- runs tempest tests and cinderlib tests on CentOS 8.
+ runs tempest tests and cinderlib tests on CentOS Stream 8.
+
+- job:
+ name: cinder-tempest-plugin-lvm-lio-barbican-centos-9-stream
+ parent: cinder-tempest-plugin-lvm-lio-barbican
+ nodeset: devstack-single-node-centos-9-stream
+ description: |
+ This jobs configures Cinder with LVM, LIO, barbican and
+ runs tempest tests and cinderlib tests on CentOS Stream 9.
- job:
name: cinder-tempest-plugin-lvm-tgt-barbican
@@ -237,6 +266,18 @@
- ^releasenotes/.*$
- job:
+ name: cinder-tempest-plugin-basic-yoga
+ parent: cinder-tempest-plugin-basic
+ nodeset: openstack-single-node-focal
+ override-checkout: stable/yoga
+
+- job:
+ name: cinder-tempest-plugin-basic-xena
+ parent: cinder-tempest-plugin-basic
+ nodeset: openstack-single-node-focal
+ override-checkout: stable/xena
+
+- job:
name: cinder-tempest-plugin-basic-wallaby
parent: cinder-tempest-plugin-basic
nodeset: openstack-single-node-focal
@@ -247,18 +288,3 @@
parent: cinder-tempest-plugin-basic
nodeset: openstack-single-node-focal
override-checkout: stable/victoria
-
-- job:
- name: cinder-tempest-plugin-basic-ussuri
- parent: cinder-tempest-plugin-basic
- nodeset: openstack-single-node-bionic
- override-checkout: stable/ussuri
-
-- job:
- name: cinder-tempest-plugin-basic-train
- parent: cinder-tempest-plugin-basic
- nodeset: openstack-single-node-bionic
- override-checkout: stable/train
- vars:
- devstack_localrc:
- USE_PYTHON3: True
diff --git a/README.rst b/README.rst
index 0254938..3fd608a 100644
--- a/README.rst
+++ b/README.rst
@@ -35,7 +35,7 @@
LOG_COLOR=False
RECLONE=yes
ENABLED_SERVICES=c-api,c-bak,c-sch,c-vol,cinder,dstat,g-api,g-reg,key
- ENABLED_SERVICES+=,mysql,n-api,n-cond,n-cpu,n-crt,n-sch,rabbit,tempest
+ ENABLED_SERVICES+=,mysql,n-api,n-cond,n-cpu,n-crt,n-sch,rabbit,tempest,placement-api
CINDER_ENABLED_BACKENDS=lvmdriver-1
CINDER_DEFAULT_VOLUME_TYPE=lvmdriver-1
CINDER_VOLUME_CLEAR=none
diff --git a/cinder_tempest_plugin/api/volume/admin/test_volume_backup.py b/cinder_tempest_plugin/api/volume/admin/test_volume_backup.py
index d1fa730..e5ded52 100644
--- a/cinder_tempest_plugin/api/volume/admin/test_volume_backup.py
+++ b/cinder_tempest_plugin/api/volume/admin/test_volume_backup.py
@@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from tempest.common import waiters
from tempest import config
from tempest.lib import decorators
from tempest.lib import exceptions
@@ -41,19 +40,10 @@
def test_backup_crossproject_admin_negative(self):
# create vol as user
- volume = self.volumes_client.create_volume(
- size=CONF.volume.volume_size)['volume']
- waiters.wait_for_volume_resource_status(
- self.volumes_client,
- volume['id'], 'available')
+ volume = self.create_volume(size=CONF.volume.volume_size)
# create backup as user
- backup = self.backups_client.create_backup(
- volume_id=volume['id'])['backup']
- waiters.wait_for_volume_resource_status(
- self.backups_client,
- backup['id'], 'available')
-
+ self.create_backup(volume_id=volume['id'])
# try to create incremental backup as admin
self.assertRaises(
exceptions.BadRequest, self.admin_backups_client.create_backup,
@@ -63,18 +53,12 @@
def test_backup_crossproject_user_negative(self):
# create vol as user
- volume = self.volumes_client.create_volume(
- size=CONF.volume.volume_size)['volume']
- waiters.wait_for_volume_resource_status(
- self.volumes_client,
- volume['id'], 'available')
+ volume = self.create_volume(size=CONF.volume.volume_size)
# create backup as admin
- backup = self.admin_backups_client.create_backup(
- volume_id=volume['id'])['backup']
- waiters.wait_for_volume_resource_status(
- self.admin_backups_client,
- backup['id'], 'available')
+
+ self.create_backup(volume_id=volume['id'],
+ backup_client=self.admin_backups_client)
# try to create incremental backup as user
self.assertRaises(
@@ -85,25 +69,14 @@
def test_incremental_backup_respective_parents(self):
# create vol as user
- volume = self.volumes_client.create_volume(
- size=CONF.volume.volume_size)['volume']
- waiters.wait_for_volume_resource_status(
- self.volumes_client,
- volume['id'], 'available')
+ volume = self.create_volume(size=CONF.volume.volume_size)
# create backup as admin
- backup_adm = self.admin_backups_client.create_backup(
- volume_id=volume['id'])['backup']
- waiters.wait_for_volume_resource_status(
- self.admin_backups_client,
- backup_adm['id'], 'available')
+ backup_adm = self.create_backup(
+ volume_id=volume['id'], backup_client=self.admin_backups_client)
# create backup as user
- backup_usr = self.backups_client.create_backup(
- volume_id=volume['id'])['backup']
- waiters.wait_for_volume_resource_status(
- self.backups_client,
- backup_usr['id'], 'available')
+ backup_usr = self.create_backup(volume_id=volume['id'])
# refresh admin backup and assert no child backups
backup_adm = self.admin_backups_client.show_backup(
@@ -111,11 +84,8 @@
self.assertFalse(backup_adm['has_dependent_backups'])
# create incremental backup as admin
- backup_adm_inc = self.admin_backups_client.create_backup(
- volume_id=volume['id'], incremental=True)['backup']
- waiters.wait_for_volume_resource_status(
- self.admin_backups_client,
- backup_adm_inc['id'], 'available')
+ self.create_backup(volume_id=volume['id'], incremental=True,
+ backup_client=self.admin_backups_client)
# refresh user backup and assert no child backups
backup_usr = self.backups_client.show_backup(
@@ -128,11 +98,8 @@
self.assertTrue(backup_adm['has_dependent_backups'])
# create incremental backup as user
- backup_usr_inc = self.backups_client.create_backup(
- volume_id=volume['id'], incremental=True)['backup']
- waiters.wait_for_volume_resource_status(
- self.backups_client,
- backup_usr_inc['id'], 'available')
+ self.create_backup(volume_id=volume['id'],
+ incremental=True)
# refresh user backup and assert it has childs
backup_usr = self.backups_client.show_backup(
diff --git a/cinder_tempest_plugin/api/volume/base.py b/cinder_tempest_plugin/api/volume/base.py
index 418fd33..40bfb33 100644
--- a/cinder_tempest_plugin/api/volume/base.py
+++ b/cinder_tempest_plugin/api/volume/base.py
@@ -13,10 +13,10 @@
# License for the specific language governing permissions and limitations
# under the License.
-from tempest.api.volume import api_microversion_fixture
from tempest.common import compute
from tempest.common import waiters
from tempest import config
+from tempest.lib.common import api_microversion_fixture
from tempest.lib.common import api_version_utils
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
@@ -58,7 +58,7 @@
def setUp(self):
super(BaseVolumeTest, self).setUp()
self.useFixture(api_microversion_fixture.APIMicroversionFixture(
- self.request_microversion))
+ volume_microversion=self.request_microversion))
@classmethod
def resource_setup(cls):
diff --git a/cinder_tempest_plugin/api/volume/test_volume_unicode.py b/cinder_tempest_plugin/api/volume/test_volume_unicode.py
index ff6473a..026271b 100644
--- a/cinder_tempest_plugin/api/volume/test_volume_unicode.py
+++ b/cinder_tempest_plugin/api/volume/test_volume_unicode.py
@@ -72,13 +72,13 @@
@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'
+ description = '\u05e7\u05d9\u05d9\u05e4\u05e9'
volume = self.create_volume(description=description)
vol_info = self.volumes_client.show_volume(volume['id'])['volume']
self.assertEqual(description, vol_info['description'])
# Create a snapshot with different non-ascii description
- description = u'\u4e2d\u56fd\u793e\u533a'
+ description = '\u4e2d\u56fd\u793e\u533a'
snapshot = self.create_snapshot(volume['id'], description=description)
snapshot_info = self.snapshots_client.show_snapshot(
snapshot['id'])['snapshot']
diff --git a/cinder_tempest_plugin/services/consistencygroups_client.py b/cinder_tempest_plugin/services/consistencygroups_client.py
index a29a90a..cea99ed 100644
--- a/cinder_tempest_plugin/services/consistencygroups_client.py
+++ b/cinder_tempest_plugin/services/consistencygroups_client.py
@@ -14,10 +14,10 @@
# License for the specific language governing permissions and limitations
# under the License.
+import http.client as http_client
import time
from oslo_serialization import jsonutils as json
-from six.moves import http_client
from tempest.lib.common import rest_client
from tempest.lib import exceptions as lib_exc
diff --git a/requirements.txt b/requirements.txt
index 40ef3a4..4d75108 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,6 +4,5 @@
pbr!=2.1.0,>=2.0.0 # Apache-2.0
oslo.config>=5.1.0 # Apache-2.0
-six>=1.10.0 # MIT
oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
tempest>=27.0.0 # Apache-2.0
diff --git a/setup.cfg b/setup.cfg
index 7866a06..3b246b5 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,11 +1,12 @@
[metadata]
name = cinder-tempest-plugin
summary = Tempest plugin tests for Cinder.
-description-file =
+description_file =
README.rst
author = OpenStack
-author-email = openstack-discuss@lists.openstack.org
-home-page = http://www.openstack.org/
+author_email = openstack-discuss@lists.openstack.org
+home_page = http://www.openstack.org/
+python_requires = >=3.6
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
@@ -13,10 +14,12 @@
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
Programming Language :: Python
+ Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
[files]
packages =