Merge "Create test images via Glance instead of Nova"
This commit is contained in:
commit
a43830306a
2 files changed
+76
-36
No files matched your search
@@ -13,6 +13,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import StringIO
|
||||
|
||||
from tempest.api.compute import base
|
||||
from tempest.common.utils import data_utils
|
||||
from tempest import config
|
||||
@@ -31,25 +33,21 @@ class ImagesMetadataTestJSON(base.BaseV2ComputeTest):
|
||||
skip_msg = ("%s skipped as glance is not available" % cls.__name__)
|
||||
raise cls.skipException(skip_msg)
|
||||
|
||||
cls.glance_client = cls.os.image_client
|
||||
cls.client = cls.images_client
|
||||
cls.image_id = None
|
||||
|
||||
resp, server = cls.create_test_server(wait_until='ACTIVE')
|
||||
cls.server_id = server['id']
|
||||
|
||||
# Snapshot the server once to save time
|
||||
name = data_utils.rand_name('image')
|
||||
resp, _ = cls.client.create_image(cls.server_id, name, {})
|
||||
cls.image_id = resp['location'].rsplit('/', 1)[1]
|
||||
|
||||
resp, body = cls.glance_client.create_image(name=name,
|
||||
container_format='bare',
|
||||
disk_format='raw',
|
||||
is_public=False)
|
||||
cls.image_id = body['id']
|
||||
cls.images.append(cls.image_id)
|
||||
image_file = StringIO.StringIO(('*' * 1024))
|
||||
cls.glance_client.update_image(cls.image_id, data=image_file)
|
||||
cls.client.wait_for_image_status(cls.image_id, 'ACTIVE')
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
if cls.image_id:
|
||||
cls.client.delete_image(cls.image_id)
|
||||
super(ImagesMetadataTestJSON, cls).tearDownClass()
|
||||
|
||||
def setUp(self):
|
||||
super(ImagesMetadataTestJSON, self).setUp()
|
||||
meta = {'key1': 'value1', 'key2': 'value2'}
|
||||
|
||||
@@ -13,7 +13,11 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import StringIO
|
||||
import time
|
||||
|
||||
from tempest.api.compute import base
|
||||
from tempest.common.utils import data_utils
|
||||
from tempest import config
|
||||
from tempest.openstack.common import log as logging
|
||||
from tempest import test
|
||||
@@ -32,7 +36,34 @@ class ListImageFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
skip_msg = ("%s skipped as glance is not available" % cls.__name__)
|
||||
raise cls.skipException(skip_msg)
|
||||
cls.client = cls.images_client
|
||||
cls.glance_client = cls.os.image_client
|
||||
|
||||
def _create_image():
|
||||
name = data_utils.rand_name('image')
|
||||
_, body = cls.glance_client.create_image(name=name,
|
||||
container_format='bare',
|
||||
disk_format='raw',
|
||||
is_public=False)
|
||||
image_id = body['id']
|
||||
cls.images.append(image_id)
|
||||
# Wait 1 second between creation and upload to ensure a delta
|
||||
# between created_at and updated_at.
|
||||
time.sleep(1)
|
||||
image_file = StringIO.StringIO(('*' * 1024))
|
||||
cls.glance_client.update_image(image_id, data=image_file)
|
||||
cls.client.wait_for_image_status(image_id, 'ACTIVE')
|
||||
_, body = cls.client.get_image(image_id)
|
||||
return body
|
||||
|
||||
# Create non-snapshot images via glance
|
||||
cls.image1 = _create_image()
|
||||
cls.image1_id = cls.image1['id']
|
||||
cls.image2 = _create_image()
|
||||
cls.image2_id = cls.image2['id']
|
||||
cls.image3 = _create_image()
|
||||
cls.image3_id = cls.image3['id']
|
||||
|
||||
# Create instances and snapshots via nova
|
||||
try:
|
||||
resp, cls.server1 = cls.create_test_server()
|
||||
resp, cls.server2 = cls.create_test_server(wait_until='ACTIVE')
|
||||
@@ -41,21 +72,21 @@ class ListImageFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
'ACTIVE')
|
||||
|
||||
# Create images to be used in the filter tests
|
||||
resp, cls.image1 = cls.create_image_from_server(
|
||||
resp, cls.snapshot1 = cls.create_image_from_server(
|
||||
cls.server1['id'], wait_until='ACTIVE')
|
||||
cls.image1_id = cls.image1['id']
|
||||
cls.snapshot1_id = cls.snapshot1['id']
|
||||
|
||||
# Servers have a hidden property for when they are being imaged
|
||||
# Performing back-to-back create image calls on a single
|
||||
# server will sometimes cause failures
|
||||
resp, cls.image3 = cls.create_image_from_server(
|
||||
resp, cls.snapshot3 = cls.create_image_from_server(
|
||||
cls.server2['id'], wait_until='ACTIVE')
|
||||
cls.image3_id = cls.image3['id']
|
||||
cls.snapshot3_id = cls.snapshot3['id']
|
||||
|
||||
# Wait for the server to be active after the image upload
|
||||
resp, cls.image2 = cls.create_image_from_server(
|
||||
resp, cls.snapshot2 = cls.create_image_from_server(
|
||||
cls.server1['id'], wait_until='ACTIVE')
|
||||
cls.image2_id = cls.image2['id']
|
||||
cls.snapshot2_id = cls.snapshot2['id']
|
||||
except Exception:
|
||||
LOG.exception('setUpClass failed')
|
||||
cls.tearDownClass()
|
||||
@@ -89,11 +120,14 @@ class ListImageFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
params = {'server': self.server1['id']}
|
||||
resp, images = self.client.list_images(params)
|
||||
|
||||
self.assertTrue(any([i for i in images if i['id'] == self.image1_id]),
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.snapshot1_id]),
|
||||
"Failed to find image %s in images. Got images %s" %
|
||||
(self.image1_id, images))
|
||||
self.assertTrue(any([i for i in images if i['id'] == self.image2_id]))
|
||||
self.assertFalse(any([i for i in images if i['id'] == self.image3_id]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.snapshot2_id]))
|
||||
self.assertFalse(any([i for i in images
|
||||
if i['id'] == self.snapshot3_id]))
|
||||
|
||||
@test.attr(type='gate')
|
||||
def test_list_images_filter_by_server_ref(self):
|
||||
@@ -106,11 +140,11 @@ class ListImageFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
resp, images = self.client.list_images(params)
|
||||
|
||||
self.assertFalse(any([i for i in images
|
||||
if i['id'] == self.image1_id]))
|
||||
if i['id'] == self.snapshot1_id]))
|
||||
self.assertFalse(any([i for i in images
|
||||
if i['id'] == self.image2_id]))
|
||||
if i['id'] == self.snapshot2_id]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.image3_id]))
|
||||
if i['id'] == self.snapshot3_id]))
|
||||
|
||||
@test.attr(type='gate')
|
||||
def test_list_images_filter_by_type(self):
|
||||
@@ -118,10 +152,14 @@ class ListImageFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
params = {'type': 'snapshot'}
|
||||
resp, images = self.client.list_images(params)
|
||||
|
||||
self.assertTrue(any([i for i in images if i['id'] == self.image1_id]))
|
||||
self.assertTrue(any([i for i in images if i['id'] == self.image2_id]))
|
||||
self.assertTrue(any([i for i in images if i['id'] == self.image3_id]))
|
||||
self.assertFalse(any([i for i in images if i['id'] == self.image_ref]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.snapshot1_id]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.snapshot2_id]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.snapshot3_id]))
|
||||
self.assertFalse(any([i for i in images
|
||||
if i['id'] == self.image_ref]))
|
||||
|
||||
@test.attr(type='gate')
|
||||
def test_list_images_limit_results(self):
|
||||
@@ -184,11 +222,11 @@ class ListImageFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
resp, images = self.client.list_images_with_detail(params)
|
||||
|
||||
self.assertFalse(any([i for i in images
|
||||
if i['id'] == self.image1_id]))
|
||||
if i['id'] == self.snapshot1_id]))
|
||||
self.assertFalse(any([i for i in images
|
||||
if i['id'] == self.image2_id]))
|
||||
if i['id'] == self.snapshot2_id]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.image3_id]))
|
||||
if i['id'] == self.snapshot3_id]))
|
||||
|
||||
@test.attr(type='gate')
|
||||
def test_list_images_with_detail_filter_by_type(self):
|
||||
@@ -197,10 +235,14 @@ class ListImageFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
resp, images = self.client.list_images_with_detail(params)
|
||||
resp, image4 = self.client.get_image(self.image_ref)
|
||||
|
||||
self.assertTrue(any([i for i in images if i['id'] == self.image1_id]))
|
||||
self.assertTrue(any([i for i in images if i['id'] == self.image2_id]))
|
||||
self.assertTrue(any([i for i in images if i['id'] == self.image3_id]))
|
||||
self.assertFalse(any([i for i in images if i['id'] == self.image_ref]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.snapshot1_id]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.snapshot2_id]))
|
||||
self.assertTrue(any([i for i in images
|
||||
if i['id'] == self.snapshot3_id]))
|
||||
self.assertFalse(any([i for i in images
|
||||
if i['id'] == self.image_ref]))
|
||||
|
||||
@test.attr(type='gate')
|
||||
def test_list_images_with_detail_filter_by_changes_since(self):
|
||||
|
||||
Reference in new issue
Block a user