Merge "Implements test_flavors.test_is_public_string_variations"
diff --git a/tempest/tests/compute/admin/test_flavors_extra_specs.py b/tempest/tests/compute/admin/test_flavors_extra_specs.py
index 5dd38d4..ef4c20e 100644
--- a/tempest/tests/compute/admin/test_flavors_extra_specs.py
+++ b/tempest/tests/compute/admin/test_flavors_extra_specs.py
@@ -15,9 +15,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import nose
-from nose.plugins.attrib import attr
-
 from tempest import exceptions
 from tempest.tests import compute
 from tempest.tests.compute import base
@@ -36,7 +33,7 @@
     def setUpClass(self, cls):
         if not compute.FLAVOR_EXTRA_DATA_ENABLED:
             msg = "FlavorExtraData extension not enabled."
-            raise nose.SkipTest(msg)
+            raise cls.skipException(msg)
 
         cls.client = cls.os.flavors_client
         flavor_name = 'test_flavor2'
diff --git a/tempest/tests/compute/images/test_images_oneserver.py b/tempest/tests/compute/images/test_images_oneserver.py
index f3b1e01..232d5d3 100644
--- a/tempest/tests/compute/images/test_images_oneserver.py
+++ b/tempest/tests/compute/images/test_images_oneserver.py
@@ -28,13 +28,6 @@
 
 
 class ImagesOneServerTestBase(object):
-    def tearDownClass(cls):
-        """Terminate test instances created after a test is executed."""
-        resp, body = self.servers_client.delete_server(cls.server['id'])
-        if resp['status'] == '204':
-            self.servers.remove(server)
-            self.servers_client.wait_for_server_termination(cls.server['id'])
-
     def tearDown(self):
         """Terminate test instances created after a test is executed."""
         for image_id in self.image_ids:
diff --git a/tempest/tests/compute/servers/test_server_personality.py b/tempest/tests/compute/servers/test_server_personality.py
index 6ea0959..e98e559 100644
--- a/tempest/tests/compute/servers/test_server_personality.py
+++ b/tempest/tests/compute/servers/test_server_personality.py
@@ -70,9 +70,6 @@
                                                           personality=person)
             self.assertEqual('202', resp['status'])
 
-        except Exception:
-            raise Error(resp['message'])
-
         #Teardown
         finally:
             self.client.delete_server(server['id'])
diff --git a/tempest/tests/compute/test_authorization.py b/tempest/tests/compute/test_authorization.py
index fdc97ea..8f4ad50 100644
--- a/tempest/tests/compute/test_authorization.py
+++ b/tempest/tests/compute/test_authorization.py
@@ -15,8 +15,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from nose.plugins.attrib import attr
-from nose.tools import raises
 import testtools
 
 from tempest import clients
@@ -99,36 +97,32 @@
             cls.security_client.delete_security_group(cls.security_group['id'])
         super(AuthorizationTest, cls).tearDownClass()
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_server_for_alt_account_fails(self):
         # A GET request for a server on another user's account should fail
-        self.alt_client.get_server(self.server['id'])
+        self.assertRaises(exceptions.NotFound, self.alt_client.get_server,
+                          self.server['id'])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_server_for_alt_account_fails(self):
         # A DELETE request for another user's server should fail
-        self.alt_client.delete_server(self.server['id'])
+        self.assertRaises(exceptions.NotFound, self.alt_client.delete_server,
+                          self.server['id'])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_update_server_for_alt_account_fails(self):
         # An update server request for another user's server should fail
-        self.alt_client.update_server(self.server['id'], name='test')
+        self.assertRaises(exceptions.NotFound, self.alt_client.update_server,
+                          self.server['id'], name='test')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_list_server_addresses_for_alt_account_fails(self):
         # A list addresses request for another user's server should fail
-        self.alt_client.list_addresses(self.server['id'])
+        self.assertRaises(exceptions.NotFound, self.alt_client.list_addresses,
+                          self.server['id'])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_list_server_addresses_by_network_for_alt_account_fails(self):
         # A list address/network request for another user's server should fail
         server_id = self.server['id']
-        self.alt_client.list_addresses_by_network(server_id, 'public')
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_client.list_addresses_by_network, server_id,
+                          'public')
 
     def test_list_servers_with_alternate_tenant(self):
         # A list on servers from one tenant should not
@@ -139,45 +133,37 @@
         alt_server_ids = [s['id'] for s in body['servers']]
         self.assertNotIn(self.server['id'], alt_server_ids)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_change_password_for_alt_account_fails(self):
         # A change password request for another user's server should fail
-        self.alt_client.change_password(self.server['id'], 'newpass')
+        self.assertRaises(exceptions.NotFound, self.alt_client.change_password,
+                          self.server['id'], 'newpass')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_reboot_server_for_alt_account_fails(self):
         # A reboot request for another user's server should fail
-        self.alt_client.reboot(self.server['id'], 'HARD')
+        self.assertRaises(exceptions.NotFound, self.alt_client.reboot,
+                          self.server['id'], 'HARD')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_rebuild_server_for_alt_account_fails(self):
         # A rebuild request for another user's server should fail
-        self.alt_client.rebuild(self.server['id'], self.image_ref_alt)
+        self.assertRaises(exceptions.NotFound, self.alt_client.rebuild,
+                          self.server['id'], self.image_ref_alt)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_resize_server_for_alt_account_fails(self):
         # A resize request for another user's server should fail
-        self.alt_client.resize(self.server['id'], self.flavor_ref_alt)
+        self.assertRaises(exceptions.NotFound, self.alt_client.resize,
+                          self.server['id'], self.flavor_ref_alt)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_create_image_for_alt_account_fails(self):
         # A create image request for another user's server should fail
-        self.alt_images_client.create_image(self.server['id'], 'testImage')
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_images_client.create_image,
+                          self.server['id'], 'testImage')
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_server_with_unauthorized_image(self):
         # Server creation with another user's image should fail
-        self.alt_client.create_server('test', self.image['id'],
-                                      self.flavor_ref)
+        self.assertRaises(exceptions.BadRequest, self.alt_client.create_server,
+                          'test', self.image['id'], self.flavor_ref)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_server_fails_when_tenant_incorrect(self):
         # A create server request should fail if the tenant id does not match
         # the current user
@@ -185,14 +171,13 @@
         try:
             # Change the base URL to impersonate another user
             self.alt_client.base_url = self.client.base_url
-            self.alt_client.create_server('test', self.image['id'],
-                                          self.flavor_ref)
+            self.assertRaises(exceptions.BadRequest,
+                              self.alt_client.create_server, 'test',
+                              self.image['id'], self.flavor_ref)
         finally:
             # Reset the base_url...
             self.alt_client.base_url = saved_base_url
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_keypair_in_analt_user_tenant(self):
         # A create keypair request should fail if the tenant id does not match
         # the current user
@@ -205,7 +190,8 @@
             self.alt_keypairs_client.base_url = self.keypairs_client.base_url
             resp = {}
             resp['status'] = None
-            resp, _ = self.alt_keypairs_client.create_keypair(k_name)
+            self.assertRaises(exceptions.BadRequest,
+                              self.alt_keypairs_client.create_keypair, k_name)
         finally:
             # Reset the base_url...
             self.alt_keypairs_client.base_url = self.saved_base_url
@@ -214,33 +200,30 @@
                 self.fail("Create keypair request should not happen "
                           "if the tenant id does not match the current user")
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_keypair_of_alt_account_fails(self):
         # A GET request for another user's keypair should fail
-        self.alt_keypairs_client.get_keypair(self.keypairname)
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_keypairs_client.get_keypair,
+                          self.keypairname)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     @testtools.skip("Skipped until the Bug #1086980 is resolved")
     def test_delete_keypair_of_alt_account_fails(self):
         # A DELETE request for another user's keypair should fail
-        self.alt_keypairs_client.delete_keypair(self.keypairname)
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_keypairs_client.delete_keypair,
+                          self.keypairname)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_image_for_alt_account_fails(self):
         # A GET request for an image on another user's account should fail
-        self.alt_images_client.get_image(self.image['id'])
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_images_client.get_image, self.image['id'])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_image_for_alt_account_fails(self):
         # A DELETE request for another user's image should fail
-        self.alt_images_client.delete_image(self.image['id'])
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_images_client.delete_image,
+                          self.image['id'])
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_security_group_in_analt_user_tenant(self):
         # A create security group request should fail if the tenant id does not
         # match the current user
@@ -253,9 +236,9 @@
             self.alt_security_client.base_url = self.security_client.base_url
             resp = {}
             resp['status'] = None
-            resp, body = self.alt_security_client.create_security_group(
-                                        s_name,
-                                        s_description)
+            self.assertRaises(exceptions.BadRequest,
+                              self.alt_security_client.create_security_group,
+                              s_name, s_description)
         finally:
             # Reset the base_url...
             self.alt_security_client.base_url = self.saved_base_url
@@ -265,21 +248,18 @@
                 self.fail("Create Security Group request should not happen if"
                           "the tenant id does not match the current user")
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_security_group_of_alt_account_fails(self):
         # A GET request for another user's security group should fail
-        self.alt_security_client.get_security_group(self.security_group['id'])
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_security_client.get_security_group,
+                          self.security_group['id'])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_security_group_of_alt_account_fails(self):
         # A DELETE request for another user's security group should fail
-        self.alt_security_client.delete_security_group(
-            self.security_group['id'])
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_security_client.delete_security_group,
+                          self.security_group['id'])
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_security_group_rule_in_analt_user_tenant(self):
         # A create security group rule request should fail if the tenant id
         # does not match the current user
@@ -294,11 +274,11 @@
             self.alt_security_client.base_url = self.security_client.base_url
             resp = {}
             resp['status'] = None
-            resp, body = \
-            self.alt_security_client.create_security_group_rule(
-                                                parent_group_id,
-                                                ip_protocol, from_port,
-                                                to_port)
+            self.assertRaises(exceptions.BadRequest,
+                              self.alt_security_client.
+                              create_security_group_rule,
+                              parent_group_id, ip_protocol, from_port,
+                              to_port)
         finally:
             # Reset the base_url...
             self.alt_security_client.base_url = self.saved_base_url
@@ -310,29 +290,28 @@
                           "happen if the tenant id does not match the"
                           " current user")
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_security_group_rule_of_alt_account_fails(self):
         # A DELETE request for another user's security group rule
         # should fail
-        self.alt_security_client.delete_security_group_rule(self.rule['id'])
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_security_client.delete_security_group_rule,
+                          self.rule['id'])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_set_metadata_of_alt_account_server_fails(self):
         # A set metadata for another user's server should fail
         req_metadata = {'meta1': 'data1', 'meta2': 'data2'}
-        self.alt_client.set_server_metadata(self.server['id'], req_metadata)
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_client.set_server_metadata,
+                          self.server['id'],
+                          req_metadata)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_set_metadata_of_alt_account_image_fails(self):
         # A set metadata for another user's image should fail
         req_metadata = {'meta1': 'value1', 'meta2': 'value2'}
-        self.alt_images_client.set_image_metadata(self.image['id'],
-                                                  req_metadata)
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_images_client.set_image_metadata,
+                          self.image['id'], req_metadata)
 
-    @attr(type='negative')
     def test_get_metadata_of_alt_account_server_fails(self):
         # A get metadata for another user's server should fail
         req_metadata = {'meta1': 'data1'}
@@ -347,7 +326,6 @@
             resp, body = \
             self.client.delete_server_metadata_item(self.server['id'], 'meta1')
 
-    @attr(type='negative')
     def test_get_metadata_of_alt_account_image_fails(self):
         # A get metadata for another user's image should fail
         req_metadata = {'meta1': 'value1'}
@@ -363,7 +341,6 @@
             resp, body = self.images_client.delete_image_metadata_item(
                                 self.image['id'], 'meta1')
 
-    @attr(type='negative')
     def test_delete_metadata_of_alt_account_server_fails(self):
         # A delete metadata for another user's server should fail
         req_metadata = {'meta1': 'data1'}
@@ -378,7 +355,6 @@
             resp, body = \
             self.client.delete_server_metadata_item(self.server['id'], 'meta1')
 
-    @attr(type='negative')
     def test_delete_metadata_of_alt_account_image_fails(self):
         # A delete metadata for another user's image should fail
         req_metadata = {'meta1': 'data1'}
@@ -395,8 +371,8 @@
             self.images_client.delete_image_metadata_item(self.image['id'],
                                                           'meta1')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_console_output_of_alt_account_server_fails(self):
         # A Get Console Output for another user's server should fail
-        self.alt_client.get_console_output(self.server['id'], 10)
+        self.assertRaises(exceptions.NotFound,
+                          self.alt_client.get_console_output,
+                          self.server['id'], 10)
diff --git a/tempest/tests/compute/volumes/test_volumes_negative.py b/tempest/tests/compute/volumes/test_volumes_negative.py
index d2ad30e..b24c240 100644
--- a/tempest/tests/compute/volumes/test_volumes_negative.py
+++ b/tempest/tests/compute/volumes/test_volumes_negative.py
@@ -15,9 +15,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from nose.plugins.attrib import attr
-from nose.tools import raises
-
 from tempest.common.utils.data_utils import rand_name
 from tempest import exceptions
 from tempest.tests.compute import base
@@ -25,7 +22,6 @@
 
 class VolumesNegativeTestBase(object):
 
-    @attr(type='negative')
     def test_volume_get_nonexistant_volume_id(self):
         # Negative: Should not be able to get details of nonexistant volume
         #Creating a nonexistant volume id
@@ -46,7 +42,6 @@
             self.fail('Should not be able to GET the details from a '
                       'nonexistant volume')
 
-    @attr(type='negative')
     def test_volume_delete_nonexistant_volume_id(self):
         # Negative: Should not be able to delete nonexistant Volume
         #Creating nonexistant volume id
@@ -66,62 +61,47 @@
         else:
             self.fail('Should not be able to DELETE a nonexistant volume')
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_volume_with_invalid_size(self):
         # Negative: Should not be able to create volume with invalid size
         # in request
         v_name = rand_name('Volume-')
         metadata = {'Type': 'work'}
-        resp, volume = self.client.create_volume(size='#$%',
-                                                 display_name=v_name,
-                                                 metadata=metadata)
+        self.assertRaises(exceptions.BadRequest, self.client.create_volume,
+                          size='#$%', display_name=v_name, metadata=metadata)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_volume_with_out_passing_size(self):
         # Negative: Should not be able to create volume without passing size
         # in request
         v_name = rand_name('Volume-')
         metadata = {'Type': 'work'}
-        resp, volume = self.client.create_volume(size='',
-                                                 display_name=v_name,
-                                                 metadata=metadata)
+        self.assertRaises(exceptions.BadRequest, self.client.create_volume,
+                          size='', display_name=v_name, metadata=metadata)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_volume_with_size_zero(self):
         # Negative: Should not be able to create volume with size zero
         v_name = rand_name('Volume-')
         metadata = {'Type': 'work'}
-        resp, volume = self.client.create_volume(size='0',
-                                                 display_name=v_name,
-                                                 metadata=metadata)
+        self.assertRaises(exceptions.BadRequest, self.client.create_volume,
+                          size='0', display_name=v_name, metadata=metadata)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_invalid_volume_id(self):
         # Negative: Should not be able to get volume with invalid id
-        resp, volume = self.client.get_volume('#$%%&^&^')
+        self.assertRaises(exceptions.NotFound,
+                          self.client.get_volume, '#$%%&^&^')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_volume_without_passing_volume_id(self):
         # Negative: Should not be able to get volume when empty ID is passed
-        resp, volume = self.client.get_volume('')
+        self.assertRaises(exceptions.NotFound, self.client.get_volume, '')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_invalid_volume_id(self):
         # Negative: Should not be able to delete volume when invalid ID is
         # passed
-        resp, volume = self.client.delete_volume('!@#$%^&*()')
+        self.assertRaises(exceptions.NotFound,
+                          self.client.delete_volume, '!@#$%^&*()')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_volume_without_passing_volume_id(self):
         # Negative: Should not be able to delete volume when empty ID is passed
-        resp, volume = self.client.delete_volume('')
+        self.assertRaises(exceptions.NotFound, self.client.delete_volume, '')
 
 
 class VolumesNegativeTestXML(base.BaseComputeTestXML,
diff --git a/tempest/tests/object_storage/test_container_sync.py b/tempest/tests/object_storage/test_container_sync.py
index d612880..f156f45 100644
--- a/tempest/tests/object_storage/test_container_sync.py
+++ b/tempest/tests/object_storage/test_container_sync.py
@@ -20,6 +20,7 @@
 from tempest.common.utils.data_utils import rand_name
 from tempest.tests.object_storage import base
 import testtools
+import time
 
 
 class ContainerSyncTest(base.BaseObjectTest):
diff --git a/tempest/tests/volume/admin/test_volume_types_extra_specs_negative.py b/tempest/tests/volume/admin/test_volume_types_extra_specs_negative.py
index e7fe701..9aa8409 100644
--- a/tempest/tests/volume/admin/test_volume_types_extra_specs_negative.py
+++ b/tempest/tests/volume/admin/test_volume_types_extra_specs_negative.py
@@ -18,9 +18,6 @@
 import testtools
 import uuid
 
-from nose.plugins.attrib import attr
-from nose.tools import raises
-
 from tempest.common.utils.data_utils import rand_name
 from tempest import exceptions
 from tempest.tests.volume.admin.base import BaseVolumeAdminTestJSON
@@ -43,97 +40,86 @@
         cls.client.delete_volume_type(cls.volume_type['id'])
 
     @testtools.skip('Until bug 1090320 is fixed')
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_update_no_body(self):
         # Should not update volume type extra specs with no body
         extra_spec = {"spec1": "val2"}
-        self.client.update_volume_type_extra_specs(self.volume_type['id'],
-                                                   extra_spec.keys()[0],
-                                                   None)
+        self.assertRaises(exceptions.BadRequest,
+                          self.client.update_volume_type_extra_specs,
+                          self.volume_type['id'], extra_spec.keys()[0], None)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_update_nonexistent_extra_spec_id(self):
         # Should not update volume type extra specs with nonexistent id.
         extra_spec = {"spec1": "val2"}
-        self.client.update_volume_type_extra_specs(self.volume_type['id'],
-                                                   str(uuid.uuid4()),
-                                                   extra_spec)
+        self.assertRaises(exceptions.BadRequest,
+                          self.client.update_volume_type_extra_specs,
+                          self.volume_type['id'], str(uuid.uuid4()),
+                          extra_spec)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_update_none_extra_spec_id(self):
         # Should not update volume type extra specs with none id.
         extra_spec = {"spec1": "val2"}
-        self.client.update_volume_type_extra_specs(self.volume_type['id'],
-                                                   None, extra_spec)
+        self.assertRaises(exceptions.BadRequest,
+                          self.client.update_volume_type_extra_specs,
+                          self.volume_type['id'], None, extra_spec)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_update_multiple_extra_spec(self):
         # Should not update volume type extra specs with multiple specs as
             # body.
         extra_spec = {"spec1": "val2", 'spec2': 'val1'}
-        self.client.update_volume_type_extra_specs(self.volume_type['id'],
-                                                   extra_spec.keys()[0],
-                                                   extra_spec)
+        self.assertRaises(exceptions.BadRequest,
+                          self.client.update_volume_type_extra_specs,
+                          self.volume_type['id'], extra_spec.keys()[0],
+                          extra_spec)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_create_nonexistent_type_id(self):
         # Should not create volume type extra spec for nonexistent volume
             # type id.
         extra_specs = {"spec2": "val1"}
-        self.client.create_volume_type_extra_specs(str(uuid.uuid4()),
-                                                   extra_specs)
+        self.assertRaises(exceptions.NotFound,
+                          self.client.create_volume_type_extra_specs,
+                          str(uuid.uuid4()), extra_specs)
 
     @testtools.skip('Until bug 1090322 is fixed')
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_none_body(self):
         # Should not create volume type extra spec for none POST body.
-        self.client.create_volume_type_extra_specs(self.volume_type['id'],
-                                                   None)
+        self.assertRaises(exceptions.BadRequest,
+                          self.client.create_volume_type_extra_specs,
+                          self.volume_type['id'], None)
 
     @testtools.skip('Until bug 1090322 is fixed')
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_invalid_body(self):
         # Should not create volume type extra spec for invalid POST body.
-        self.client.create_volume_type_extra_specs(self.volume_type['id'],
-                                                   ['invalid'])
+        self.assertRaises(exceptions.BadRequest,
+                          self.client.create_volume_type_extra_specs,
+                          self.volume_type['id'], ['invalid'])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_nonexistent_volume_type_id(self):
         # Should not delete volume type extra spec for nonexistent
             # type id.
         extra_specs = {"spec1": "val1"}
-        self.client.delete_volume_type_extra_specs(str(uuid.uuid4()),
-                                                   extra_specs.keys()[0])
+        self.assertRaises(exceptions.NotFound,
+                          self.client.delete_volume_type_extra_specs,
+                          str(uuid.uuid4()), extra_specs.keys()[0])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_list_nonexistent_volume_type_id(self):
         # Should not list volume type extra spec for nonexistent type id.
-        self.client.list_volume_types_extra_specs(str(uuid.uuid4()))
+        self.assertRaises(exceptions.NotFound,
+                          self.client.list_volume_types_extra_specs,
+                          str(uuid.uuid4()))
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_nonexistent_volume_type_id(self):
         # Should not get volume type extra spec for nonexistent type id.
         extra_specs = {"spec1": "val1"}
-        self.client.get_volume_type_extra_specs(str(uuid.uuid4()),
-                                                extra_specs.keys()[0])
+        self.assertRaises(exceptions.NotFound,
+                          self.client.get_volume_type_extra_specs,
+                          str(uuid.uuid4()), extra_specs.keys()[0])
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_nonexistent_extra_spec_id(self):
         # Should not get volume type extra spec for nonexistent extra spec
             # id.
-        self.client.get_volume_type_extra_specs(self.volume_type['id'],
-                                                str(uuid.uuid4()))
+        self.assertRaises(exceptions.NotFound,
+                          self.client.get_volume_type_extra_specs,
+                          self.volume_type['id'], str(uuid.uuid4()))
 
 
 class ExtraSpecsNegativeTestXML(BaseVolumeAdminTestXML,
diff --git a/tempest/tests/volume/admin/test_volume_types_negative.py b/tempest/tests/volume/admin/test_volume_types_negative.py
index f53e33c..8e7fa23 100644
--- a/tempest/tests/volume/admin/test_volume_types_negative.py
+++ b/tempest/tests/volume/admin/test_volume_types_negative.py
@@ -18,9 +18,6 @@
 import testtools
 import uuid
 
-from nose.plugins.attrib import attr
-from nose.tools import raises
-
 from tempest import exceptions
 from tempest.tests.volume.admin.base import BaseVolumeAdminTestJSON
 from tempest.tests.volume.admin.base import BaseVolumeAdminTestXML
@@ -32,32 +29,28 @@
     def setUpClass(cls):
         cls.client = cls.client
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_create_with_nonexistent_volume_type(self):
         # Should not be able to create volume with nonexistent volume_type.
-        self.volumes_client.create_volume(size=1,
-                                          display_name=str(uuid.uuid4()),
-                                          volume_type=str(uuid.uuid4()))
+        self.assertRaises(exceptions.NotFound,
+                          self.volumes_client.create_volume, size=1,
+                          display_name=str(uuid.uuid4()),
+                          volume_type=str(uuid.uuid4()))
 
     @testtools.skip('Until bug 1090356 is fixed')
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_with_empty_name(self):
         # Should not be able to create volume type with an empty name.
-        self.client.create_volume_type('')
+        self.assertRaises(exceptions.BadRequest,
+                          self.client.create_volume_type, '')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_nonexistent_type_id(self):
         # Should not be able to get volume type with nonexistent type id.
-        self.client.get_volume_type(str(uuid.uuid4()))
+        self.assertRaises(exceptions.NotFound, self.client.get_volume_type,
+                          str(uuid.uuid4()))
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_nonexistent_type_id(self):
         # Should not be able to delete volume type with nonexistent type id.
-        self.client.delete_volume_type(str(uuid.uuid4()))
+        self.assertRaises(exceptions.NotFound, self.client.delete_volume_type,
+                          str(uuid.uuid4()))
 
 
 class VolumesTypesNegativeTestXML(BaseVolumeAdminTestXML,
diff --git a/tempest/tests/volume/base.py b/tempest/tests/volume/base.py
index 37664ec..efa74b5 100644
--- a/tempest/tests/volume/base.py
+++ b/tempest/tests/volume/base.py
@@ -18,7 +18,6 @@
 import logging
 import time
 
-import nose
 import testtools
 
 from tempest import clients
diff --git a/tempest/tests/volume/test_volumes_negative.py b/tempest/tests/volume/test_volumes_negative.py
index 6bd7002..dc1fad0 100644
--- a/tempest/tests/volume/test_volumes_negative.py
+++ b/tempest/tests/volume/test_volumes_negative.py
@@ -15,9 +15,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from nose.plugins.attrib import attr
-from nose.tools import raises
-
 from tempest.common.utils.data_utils import rand_name
 from tempest import exceptions
 from tempest.tests.volume import base
@@ -25,8 +22,6 @@
 
 class VolumesNegativeTestBase(object):
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_volume_get_nonexistant_volume_id(self):
         # Should not be able to get a nonexistant volume
         #Creating a nonexistant volume id
@@ -39,10 +34,9 @@
             if non_exist_id not in volume_id_list:
                 break
         #Trying to Get a non existant volume
-        resp, volume = self.client.get_volume(non_exist_id)
+        self.assertRaises(exceptions.NotFound, self.client.get_volume,
+                          non_exist_id)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_volume_delete_nonexistant_volume_id(self):
         # Should not be able to delete a nonexistant Volume
         # Creating nonexistant volume id
@@ -55,63 +49,49 @@
             if non_exist_id not in volume_id_list:
                 break
         # Try to Delete a non existant volume
-        resp, body = self.client.delete_volume(non_exist_id)
+        self.assertRaises(exceptions.NotFound, self.client.delete_volume,
+                          non_exist_id)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_volume_with_invalid_size(self):
         # Should not be able to create volume with invalid size
         # in request
         v_name = rand_name('Volume-')
         metadata = {'Type': 'work'}
-        resp, volume = self.client.create_volume(size='#$%',
-                                                 display_name=v_name,
-                                                 metadata=metadata)
+        self.assertRaises(exceptions.BadRequest, self.client.create_volume,
+                          size='#$%', display_name=v_name, metadata=metadata)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_volume_with_out_passing_size(self):
         # Should not be able to create volume without passing size
         # in request
         v_name = rand_name('Volume-')
         metadata = {'Type': 'work'}
-        resp, volume = self.client.create_volume(size='',
-                                                 display_name=v_name,
-                                                 metadata=metadata)
+        self.assertRaises(exceptions.BadRequest, self.client.create_volume,
+                          size='', display_name=v_name, metadata=metadata)
 
-    @raises(exceptions.BadRequest)
-    @attr(type='negative')
     def test_create_volume_with_size_zero(self):
         # Should not be able to create volume with size zero
         v_name = rand_name('Volume-')
         metadata = {'Type': 'work'}
-        resp, volume = self.client.create_volume(size='0',
-                                                 display_name=v_name,
-                                                 metadata=metadata)
+        self.assertRaises(exceptions.BadRequest, self.client.create_volume,
+                          size='0', display_name=v_name, metadata=metadata)
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_invalid_volume_id(self):
         # Should not be able to get volume with invalid id
-        resp, volume = self.client.get_volume('#$%%&^&^')
+        self.assertRaises(exceptions.NotFound, self.client.get_volume,
+                          '#$%%&^&^')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_get_volume_without_passing_volume_id(self):
         # Should not be able to get volume when empty ID is passed
-        resp, volume = self.client.get_volume('')
+        self.assertRaises(exceptions.NotFound, self.client.get_volume, '')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_invalid_volume_id(self):
         # Should not be able to delete volume when invalid ID is passed
-        resp, volume = self.client.delete_volume('!@#$%^&*()')
+        self.assertRaises(exceptions.NotFound, self.client.delete_volume,
+                          '!@#$%^&*()')
 
-    @raises(exceptions.NotFound)
-    @attr(type='negative')
     def test_delete_volume_without_passing_volume_id(self):
         # Should not be able to delete volume when empty ID is passed
-        resp, volume = self.client.delete_volume('')
+        self.assertRaises(exceptions.NotFound, self.client.delete_volume, '')
 
 
 class VolumesNegativeTestXML(base.BaseVolumeTestXML, VolumesNegativeTestBase):