Merge "Remove duplicate appends to image list."
diff --git a/tempest/api/compute/images/test_images_oneserver.py b/tempest/api/compute/images/test_images_oneserver.py
index c7f0b23..4163245 100644
--- a/tempest/api/compute/images/test_images_oneserver.py
+++ b/tempest/api/compute/images/test_images_oneserver.py
@@ -131,7 +131,7 @@
# Verify the image was deleted correctly
resp, body = self.client.delete_image(image_id)
self.assertEqual('204', resp['status'])
- self.assertRaises(exceptions.NotFound, self.client.get_image, image_id)
+ self.client.wait_for_resource_deletion(image_id)
@testtools.skipUnless(compute.MULTI_USER,
'Need multiple users for this test.')
diff --git a/tempest/api/compute/servers/test_list_servers_negative.py b/tempest/api/compute/servers/test_list_servers_negative.py
index 0f35ee5..db9bdc1 100644
--- a/tempest/api/compute/servers/test_list_servers_negative.py
+++ b/tempest/api/compute/servers/test_list_servers_negative.py
@@ -15,6 +15,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import datetime
from tempest.api import compute
from tempest.api.compute import base
@@ -170,7 +171,8 @@
@attr(type='gate')
def test_list_servers_by_changes_since(self):
# Servers are listed by specifying changes-since date
- changes_since = {'changes-since': '2011-01-01T12:34:00Z'}
+ since = datetime.datetime.utcnow() - datetime.timedelta(minutes=2)
+ changes_since = {'changes-since': since.isoformat()}
resp, body = self.client.list_servers(changes_since)
self.assertEqual('200', resp['status'])
# changes-since returns all instances, including deleted.
diff --git a/tempest/cli/simple_read_only/test_keystone.py b/tempest/cli/simple_read_only/test_keystone.py
index 067f58c..45d519b 100644
--- a/tempest/cli/simple_read_only/test_keystone.py
+++ b/tempest/cli/simple_read_only/test_keystone.py
@@ -107,3 +107,14 @@
def test_admin_bashcompletion(self):
self.keystone('bash-completion')
+
+ # Optional arguments:
+
+ def test_admin_version(self):
+ self.keystone('', flags='--version')
+
+ def test_admin_debug_list(self):
+ self.keystone('catalog', flags='--debug')
+
+ def test_admin_timeout(self):
+ self.keystone('catalog', flags='--timeout 15')
diff --git a/tempest/scenario/test_server_advanced_ops.py b/tempest/scenario/test_server_advanced_ops.py
index 9ac0cc0..109aaa5 100644
--- a/tempest/scenario/test_server_advanced_ops.py
+++ b/tempest/scenario/test_server_advanced_ops.py
@@ -28,6 +28,7 @@
This test case stresses some advanced server instance operations:
* Resizing an instance
+ * Sequence suspend resume
"""
@classmethod
@@ -56,12 +57,8 @@
base_image_id = self.config.compute.image_ref
self.instance = self.compute_client.servers.create(
i_name, base_image_id, flavor_id)
- try:
- self.assertEqual(self.instance.name, i_name)
- self.set_resource('instance', self.instance)
- except AttributeError:
- self.fail("Instance not successfully created.")
-
+ self.assertEqual(self.instance.name, i_name)
+ self.set_resource('instance', self.instance)
self.assertEqual(self.instance.status, 'BUILD')
instance_id = self.get_resource('instance').id
self.status_timeout(
@@ -77,5 +74,42 @@
LOG.debug("Confirming resize of instance %s", instance_id)
instance.confirm_resize()
+
self.status_timeout(
self.compute_client.servers, instance_id, 'ACTIVE')
+
+ def test_server_sequence_suspend_resume(self):
+ # We create an instance for use in this test
+ i_name = rand_name('instance')
+ flavor_id = self.config.compute.flavor_ref
+ base_image_id = self.config.compute.image_ref
+ self.instance = self.compute_client.servers.create(
+ i_name, base_image_id, flavor_id)
+ self.assertEqual(self.instance.name, i_name)
+ self.set_resource('instance', self.instance)
+ self.assertEqual(self.instance.status, 'BUILD')
+ instance_id = self.get_resource('instance').id
+ self.status_timeout(
+ self.compute_client.servers, instance_id, 'ACTIVE')
+ instance = self.get_resource('instance')
+ instance_id = instance.id
+ LOG.debug("Suspending instance %s. Current status: %s",
+ instance_id, instance.status)
+ instance.suspend()
+ self.status_timeout(self.compute_client.servers, instance_id,
+ 'SUSPENDED')
+ LOG.debug("Resuming instance %s. Current status: %s",
+ instance_id, instance.status)
+ instance.resume()
+ self.status_timeout(self.compute_client.servers, instance_id,
+ 'ACTIVE')
+ LOG.debug("Suspending instance %s. Current status: %s",
+ instance_id, instance.status)
+ instance.suspend()
+ self.status_timeout(self.compute_client.servers, instance_id,
+ 'SUSPENDED')
+ LOG.debug("Resuming instance %s. Current status: %s",
+ instance_id, instance.status)
+ instance.resume()
+ self.status_timeout(self.compute_client.servers, instance_id,
+ 'ACTIVE')
diff --git a/tempest/services/compute/json/images_client.py b/tempest/services/compute/json/images_client.py
index 376dafc..b13d0f1 100644
--- a/tempest/services/compute/json/images_client.py
+++ b/tempest/services/compute/json/images_client.py
@@ -150,3 +150,10 @@
resp, body = self.delete("images/%s/metadata/%s" %
(str(image_id), key))
return resp, body
+
+ def is_resource_deleted(self, id):
+ try:
+ self.get_image(id)
+ except exceptions.NotFound:
+ return True
+ return False
diff --git a/tempest/services/compute/xml/images_client.py b/tempest/services/compute/xml/images_client.py
index c7e337b..cc13aa1 100644
--- a/tempest/services/compute/xml/images_client.py
+++ b/tempest/services/compute/xml/images_client.py
@@ -226,3 +226,10 @@
"""Deletes a single image metadata key/value pair."""
return self.delete("images/%s/metadata/%s" % (str(image_id), key),
self.headers)
+
+ def is_resource_deleted(self, id):
+ try:
+ self.get_image(id)
+ except exceptions.NotFound:
+ return True
+ return False
diff --git a/tempest/services/identity/v3/json/endpoints_client.py b/tempest/services/identity/v3/json/endpoints_client.py
old mode 100755
new mode 100644
diff --git a/tempest/services/identity/v3/xml/endpoints_client.py b/tempest/services/identity/v3/xml/endpoints_client.py
old mode 100755
new mode 100644