Merge "Merge similar code in test_verify_created_server_ephemeral_disk"
diff --git a/HACKING.rst b/HACKING.rst
index 7ab420b..a209b3f 100644
--- a/HACKING.rst
+++ b/HACKING.rst
@@ -240,29 +240,6 @@
   can be used to perform this. See AggregatesAdminTest in
   tempest.api.compute.admin for an example of using locking.
 
-Stress Tests in Tempest
------------------------
-Any tempest test case can be flagged as a stress test. With this flag it will
-be automatically discovery and used in the stress test runs. The stress test
-framework itself is a facility to spawn and control worker processes in order
-to find race conditions (see ``tempest/stress/`` for more information). Please
-note that these stress tests can't be used for benchmarking purposes since they
-don't measure any performance characteristics.
-
-Example::
-
-  @stresstest(class_setup_per='process')
-  def test_this_and_that(self):
-    ...
-
-This will flag the test ``test_this_and_that`` as a stress test. The parameter
-``class_setup_per`` gives control when the setUpClass function should be called.
-
-Good candidates for stress tests are:
-
-- Scenario tests
-- API tests that have a wide focus
-
 Sample Configuration File
 -------------------------
 The sample config file is autogenerated using a script. If any changes are made
diff --git a/doc/source/field_guide/stress.rst b/doc/source/field_guide/stress.rst
deleted file mode 120000
index d39d0f8..0000000
--- a/doc/source/field_guide/stress.rst
+++ /dev/null
@@ -1 +0,0 @@
-../../../tempest/stress/README.rst
\ No newline at end of file
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 6abe9dc..896cd98 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -24,7 +24,6 @@
    field_guide/index
    field_guide/api
    field_guide/scenario
-   field_guide/stress
    field_guide/unit_tests
 
 =========
diff --git a/etc/logging.conf.sample b/etc/logging.conf.sample
index 36cd324..c131b07 100644
--- a/etc/logging.conf.sample
+++ b/etc/logging.conf.sample
@@ -1,5 +1,5 @@
 [loggers]
-keys=root,tempest_stress
+keys=root
 
 [handlers]
 keys=file,devel,syslog
@@ -11,11 +11,6 @@
 level=DEBUG
 handlers=file
 
-[logger_tempest_stress]
-level=DEBUG
-handlers=file,devel
-qualname=tempest.stress
-
 [handler_file]
 class=FileHandler
 level=DEBUG
diff --git a/releasenotes/notes/remo-stress-tests-81052b211ad95d2e.yaml b/releasenotes/notes/remo-stress-tests-81052b211ad95d2e.yaml
new file mode 100644
index 0000000..aa3a78e
--- /dev/null
+++ b/releasenotes/notes/remo-stress-tests-81052b211ad95d2e.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - The Stress tests framework and all the stress tests have been removed.
+
diff --git a/setup.cfg b/setup.cfg
index 28e17ef..96313fd 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -28,7 +28,6 @@
 [entry_points]
 console_scripts =
     verify-tempest-config = tempest.cmd.verify_tempest_config:main
-    run-tempest-stress = tempest.cmd.run_stress:main
     tempest-account-generator = tempest.cmd.account_generator:main
     tempest = tempest.cmd.main:main
     skip-tracker = tempest.lib.cmd.skip_tracker:main
@@ -38,7 +37,6 @@
     account-generator = tempest.cmd.account_generator:TempestAccountGenerator
     init = tempest.cmd.init:TempestInit
     cleanup = tempest.cmd.cleanup:TempestCleanup
-    run-stress = tempest.cmd.run_stress:TempestRunStress
     list-plugins = tempest.cmd.list_plugins:TempestListPlugins
     verify-config = tempest.cmd.verify_tempest_config:TempestVerifyConfig
     workspace = tempest.cmd.workspace:TempestWorkspace
diff --git a/tempest/README.rst b/tempest/README.rst
index c9a0491..0feec41 100644
--- a/tempest/README.rst
+++ b/tempest/README.rst
@@ -15,7 +15,6 @@
 | tempest/
 |    api/ - API tests
 |    scenario/ - complex scenario tests
-|    stress/ - stress tests
 
 Each of these directories contains different types of tests. What
 belongs in each directory, the rules and examples for good tests, are
@@ -46,14 +45,6 @@
 but should instead use the tempest implementations of clients.
 
 
-:ref:`stress_field_guide`
--------------------------
-
-Stress tests are designed to stress an OpenStack environment by running a high
-workload against it and seeing what breaks. The stress test framework runs
-several test jobs in parallel and can run any existing test in Tempest as a
-stress job.
-
 :ref:`unit_tests_field_guide`
 -----------------------------
 
diff --git a/tempest/api/compute/admin/test_availability_zone.py b/tempest/api/compute/admin/test_availability_zone.py
index 5befa53..ee003b0 100644
--- a/tempest/api/compute/admin/test_availability_zone.py
+++ b/tempest/api/compute/admin/test_availability_zone.py
@@ -35,4 +35,4 @@
     def test_get_availability_zone_list_detail(self):
         # List of availability zones and available services
         availability_zone = self.client.list_availability_zones(detail=True)
-        self.assertTrue(len(availability_zone['availabilityZoneInfo']) > 0)
+        self.assertGreater(len(availability_zone['availabilityZoneInfo']), 0)
diff --git a/tempest/api/compute/admin/test_hosts.py b/tempest/api/compute/admin/test_hosts.py
index a9e9644..29e1eb8 100644
--- a/tempest/api/compute/admin/test_hosts.py
+++ b/tempest/api/compute/admin/test_hosts.py
@@ -36,7 +36,7 @@
         hosts = self.client.list_hosts()['hosts']
         host = hosts[0]
         hosts = self.client.list_hosts(zone=host['zone'])['hosts']
-        self.assertTrue(len(hosts) >= 1)
+        self.assertGreaterEqual(len(hosts), 1)
         self.assertIn(host, hosts)
 
     @test.idempotent_id('9af3c171-fbf4-4150-a624-22109733c2a6')
@@ -58,12 +58,12 @@
         hosts = self.client.list_hosts()['hosts']
 
         hosts = [host for host in hosts if host['service'] == 'compute']
-        self.assertTrue(len(hosts) >= 1)
+        self.assertGreaterEqual(len(hosts), 1)
 
         for host in hosts:
             hostname = host['host_name']
             resources = self.client.show_host(hostname)['host']
-            self.assertTrue(len(resources) >= 1)
+            self.assertGreaterEqual(len(resources), 1)
             host_resource = resources[0]['resource']
             self.assertIsNotNone(host_resource)
             self.assertIsNotNone(host_resource['cpu'])
diff --git a/tempest/api/compute/admin/test_hosts_negative.py b/tempest/api/compute/admin/test_hosts_negative.py
index 8366945..c270829 100644
--- a/tempest/api/compute/admin/test_hosts_negative.py
+++ b/tempest/api/compute/admin/test_hosts_negative.py
@@ -29,7 +29,7 @@
 
     def _get_host_name(self):
         hosts = self.client.list_hosts()['hosts']
-        self.assertTrue(len(hosts) >= 1)
+        self.assertGreaterEqual(len(hosts), 1)
         hostname = hosts[0]['host_name']
         return hostname
 
diff --git a/tempest/api/compute/admin/test_hypervisor.py b/tempest/api/compute/admin/test_hypervisor.py
index 113ec40..92a9135 100644
--- a/tempest/api/compute/admin/test_hypervisor.py
+++ b/tempest/api/compute/admin/test_hypervisor.py
@@ -52,7 +52,7 @@
         self.assertHypervisors(hypers)
 
         details = self.client.show_hypervisor(hypers[0]['id'])['hypervisor']
-        self.assertTrue(len(details) > 0)
+        self.assertGreater(len(details), 0)
         self.assertEqual(details['hypervisor_hostname'],
                          hypers[0]['hypervisor_hostname'])
 
@@ -65,14 +65,14 @@
         hostname = hypers[0]['hypervisor_hostname']
         hypervisors = (self.client.list_servers_on_hypervisor(hostname)
                        ['hypervisors'])
-        self.assertTrue(len(hypervisors) > 0)
+        self.assertGreater(len(hypervisors), 0)
 
     @test.idempotent_id('797e4f28-b6e0-454d-a548-80cc77c00816')
     def test_get_hypervisor_stats(self):
         # Verify the stats of the all hypervisor
         stats = (self.client.show_hypervisor_statistics()
                  ['hypervisor_statistics'])
-        self.assertTrue(len(stats) > 0)
+        self.assertGreater(len(stats), 0)
 
     @test.idempotent_id('91a50d7d-1c2b-4f24-b55a-a1fe20efca70')
     def test_get_hypervisor_uptime(self):
diff --git a/tempest/api/compute/admin/test_hypervisor_negative.py b/tempest/api/compute/admin/test_hypervisor_negative.py
index 9c6df7f..220ea39 100644
--- a/tempest/api/compute/admin/test_hypervisor_negative.py
+++ b/tempest/api/compute/admin/test_hypervisor_negative.py
@@ -47,7 +47,7 @@
     @test.idempotent_id('51e663d0-6b89-4817-a465-20aca0667d03')
     def test_show_hypervisor_with_non_admin_user(self):
         hypers = self._list_hypervisors()
-        self.assertTrue(len(hypers) > 0)
+        self.assertGreater(len(hypers), 0)
 
         self.assertRaises(
             lib_exc.Forbidden,
@@ -58,7 +58,7 @@
     @test.idempotent_id('2a0a3938-832e-4859-95bf-1c57c236b924')
     def test_show_servers_with_non_admin_user(self):
         hypers = self._list_hypervisors()
-        self.assertTrue(len(hypers) > 0)
+        self.assertGreater(len(hypers), 0)
 
         self.assertRaises(
             lib_exc.Forbidden,
@@ -96,7 +96,7 @@
     @test.idempotent_id('6c3461f9-c04c-4e2a-bebb-71dc9cb47df2')
     def test_get_hypervisor_uptime_with_non_admin_user(self):
         hypers = self._list_hypervisors()
-        self.assertTrue(len(hypers) > 0)
+        self.assertGreater(len(hypers), 0)
 
         self.assertRaises(
             lib_exc.Forbidden,
@@ -133,7 +133,7 @@
     @test.idempotent_id('5b6a6c79-5dc1-4fa5-9c58-9c8085948e74')
     def test_search_hypervisor_with_non_admin_user(self):
         hypers = self._list_hypervisors()
-        self.assertTrue(len(hypers) > 0)
+        self.assertGreater(len(hypers), 0)
 
         self.assertRaises(
             lib_exc.Forbidden,
diff --git a/tempest/api/compute/images/test_images.py b/tempest/api/compute/images/test_images.py
index 3754637..154d717 100644
--- a/tempest/api/compute/images/test_images.py
+++ b/tempest/api/compute/images/test_images.py
@@ -42,11 +42,9 @@
 
     @test.idempotent_id('aa06b52b-2db5-4807-b218-9441f75d74e3')
     def test_delete_saving_image(self):
-        snapshot_name = data_utils.rand_name('test-snap')
         server = self.create_test_server(wait_until='ACTIVE')
         self.addCleanup(self.servers_client.delete_server, server['id'])
         image = self.create_image_from_server(server['id'],
-                                              name=snapshot_name,
                                               wait_until='SAVING')
         self.client.delete_image(image['id'])
         msg = ('The image with ID {image_id} failed to be deleted'
diff --git a/tempest/api/compute/servers/test_attach_interfaces.py b/tempest/api/compute/servers/test_attach_interfaces.py
index b936b23..a8c59ca 100644
--- a/tempest/api/compute/servers/test_attach_interfaces.py
+++ b/tempest/api/compute/servers/test_attach_interfaces.py
@@ -215,7 +215,7 @@
     def test_create_list_show_delete_interfaces(self):
         server, ifs = self._create_server_get_interfaces()
         interface_count = len(ifs)
-        self.assertTrue(interface_count > 0)
+        self.assertGreater(interface_count, 0)
         self._check_interface(ifs[0])
 
         try:
@@ -253,7 +253,7 @@
         # Add and Remove the fixed IP to server.
         server, ifs = self._create_server_get_interfaces()
         interface_count = len(ifs)
-        self.assertTrue(interface_count > 0)
+        self.assertGreater(interface_count, 0)
         self._check_interface(ifs[0])
         network_id = ifs[0]['net_id']
         self.servers_client.add_fixed_ip(server['id'], networkId=network_id)
diff --git a/tempest/api/compute/servers/test_create_server.py b/tempest/api/compute/servers/test_create_server.py
index aa476e3..a48c17b 100644
--- a/tempest/api/compute/servers/test_create_server.py
+++ b/tempest/api/compute/servers/test_create_server.py
@@ -142,16 +142,12 @@
         self.assertEqual(self.name.lower(), hostname, msg)
 
     @test.idempotent_id('ed20d3fb-9d1f-4329-b160-543fbd5d9811')
+    @testtools.skipUnless(
+        test.is_scheduler_filter_enabled("ServerGroupAffinityFilter"),
+        'ServerGroupAffinityFilter is not available.')
     def test_create_server_with_scheduler_hint_group(self):
         # Create a server with the scheduler hint "group".
-        name = data_utils.rand_name('server_group')
-        policies = ['affinity']
-        body = self.server_groups_client.create_server_group(
-            name=name, policies=policies)['server_group']
-        group_id = body['id']
-        self.addCleanup(self.server_groups_client.delete_server_group,
-                        group_id)
-
+        group_id = self.create_test_server_group()['id']
         hints = {'group': group_id}
         server = self.create_test_server(scheduler_hints=hints,
                                          wait_until='ACTIVE')
diff --git a/tempest/api/compute/servers/test_server_addresses.py b/tempest/api/compute/servers/test_server_addresses.py
index 864f38f..d31b6f8 100644
--- a/tempest/api/compute/servers/test_server_addresses.py
+++ b/tempest/api/compute/servers/test_server_addresses.py
@@ -49,9 +49,9 @@
 
         # We do not know the exact network configuration, but an instance
         # should at least have a single public or private address
-        self.assertTrue(len(addresses) >= 1)
+        self.assertGreaterEqual(len(addresses), 1)
         for network_name, network_addresses in six.iteritems(addresses):
-            self.assertTrue(len(network_addresses) >= 1)
+            self.assertGreaterEqual(len(network_addresses), 1)
             for address in network_addresses:
                 self.assertTrue(address['addr'])
                 self.assertTrue(address['version'])
diff --git a/tempest/api/image/v1/test_images.py b/tempest/api/image/v1/test_images.py
index 269e297..7d52695 100644
--- a/tempest/api/image/v1/test_images.py
+++ b/tempest/api/image/v1/test_images.py
@@ -247,7 +247,7 @@
     def test_index_min_size(self):
         images_list = self.client.list_images(size_min=142)['images']
         for image in images_list:
-            self.assertTrue(image['size'] >= 142)
+            self.assertGreaterEqual(image['size'], 142)
         result_set = set(map(lambda x: x['id'], images_list))
         self.assertTrue(self.size142_set <= result_set)
         self.assertFalse(self.size42_set <= result_set)
diff --git a/tempest/api/network/test_dhcp_ipv6.py b/tempest/api/network/test_dhcp_ipv6.py
index 4bc4262..84c48ec 100644
--- a/tempest/api/network/test_dhcp_ipv6.py
+++ b/tempest/api/network/test_dhcp_ipv6.py
@@ -348,9 +348,7 @@
 
     def _create_subnet_router(self, kwargs):
         subnet = self.create_subnet(self.network, **kwargs)
-        router = self.create_router(
-            router_name=data_utils.rand_name("routerv6-"),
-            admin_state_up=True)
+        router = self.create_router(admin_state_up=True)
         port = self.create_router_interface(router['id'],
                                             subnet['id'])
         body = self.ports_client.show_port(port['port_id'])
diff --git a/tempest/api/network/test_floating_ips_negative.py b/tempest/api/network/test_floating_ips_negative.py
index 963d99d..7ffc30f 100644
--- a/tempest/api/network/test_floating_ips_negative.py
+++ b/tempest/api/network/test_floating_ips_negative.py
@@ -15,7 +15,6 @@
 #    under the License.
 
 from tempest.api.network import base
-from tempest.common.utils import data_utils
 from tempest import config
 from tempest.lib import exceptions as lib_exc
 from tempest import test
@@ -45,7 +44,7 @@
         # Create a network with a subnet connected to a router.
         cls.network = cls.create_network()
         cls.subnet = cls.create_subnet(cls.network)
-        cls.router = cls.create_router(data_utils.rand_name('router'))
+        cls.router = cls.create_router()
         cls.create_router_interface(cls.router['id'], cls.subnet['id'])
         cls.port = cls.create_port(cls.network)
 
diff --git a/tempest/api/network/test_ports.py b/tempest/api/network/test_ports.py
index 2979f7d..15d289d 100644
--- a/tempest/api/network/test_ports.py
+++ b/tempest/api/network/test_ports.py
@@ -199,7 +199,7 @@
         self.addCleanup(self.networks_client.delete_network, network['id'])
         subnet = self.create_subnet(network)
         self.addCleanup(self.subnets_client.delete_subnet, subnet['id'])
-        router = self.create_router(data_utils.rand_name('router-'))
+        router = self.create_router()
         self.addCleanup(self.routers_client.delete_router, router['id'])
         port = self.ports_client.create_port(network_id=network['id'])
         # Add router interface to port created above
diff --git a/tempest/api/network/test_routers_negative.py b/tempest/api/network/test_routers_negative.py
index 354e6d1..b3983de 100644
--- a/tempest/api/network/test_routers_negative.py
+++ b/tempest/api/network/test_routers_negative.py
@@ -134,7 +134,5 @@
     @test.attr(type=['negative'])
     @test.idempotent_id('4990b055-8fc7-48ab-bba7-aa28beaad0b9')
     def test_router_create_tenant_distributed_returns_forbidden(self):
-        self.assertRaises(lib_exc.Forbidden,
-                          self.create_router,
-                          data_utils.rand_name('router'),
+        self.assertRaises(lib_exc.Forbidden, self.create_router,
                           distributed=True)
diff --git a/tempest/api/object_storage/base.py b/tempest/api/object_storage/base.py
index fd973c6..1b1ffd1 100644
--- a/tempest/api/object_storage/base.py
+++ b/tempest/api/object_storage/base.py
@@ -114,7 +114,9 @@
             object_client = cls.object_client
         for cont in cls.containers:
             try:
-                objlist = container_client.list_all_container_objects(cont)
+                params = {'limit': 9999, 'format': 'json'}
+                resp, objlist = container_client.list_container_contents(
+                    cont, params)
                 # delete every object in the container
                 for obj in objlist:
                     test_utils.call_and_ignore_notfound_exc(
diff --git a/tempest/api/object_storage/test_container_services_negative.py b/tempest/api/object_storage/test_container_services_negative.py
index ed99eb2..7049db0 100644
--- a/tempest/api/object_storage/test_container_services_negative.py
+++ b/tempest/api/object_storage/test_container_services_negative.py
@@ -129,10 +129,10 @@
         # that doesn't exist.
         nonexistent_name = data_utils.rand_name(
             name="TestNonexistentContainer")
-
+        params = {'limit': 9999, 'format': 'json'}
         self.assertRaises(exceptions.NotFound,
-                          self.container_client.list_all_container_objects,
-                          nonexistent_name)
+                          self.container_client.list_container_contents,
+                          nonexistent_name, params)
 
     @test.attr(type=["negative"])
     @test.idempotent_id('86b2ab08-92d5-493d-acd2-85f0c848819e')
@@ -143,10 +143,10 @@
         # delete container
         resp, _ = self.container_client.delete_container(container_name)
         self.assertHeaders(resp, 'Container', 'DELETE')
-
+        params = {'limit': 9999, 'format': 'json'}
         self.assertRaises(exceptions.NotFound,
-                          self.container_client.list_all_container_objects,
-                          container_name)
+                          self.container_client.list_container_contents,
+                          container_name, params)
 
     @test.attr(type=["negative"])
     @test.idempotent_id('42da116e-1e8c-4c96-9e06-2f13884ed2b1')
diff --git a/tempest/api/orchestration/stacks/test_nova_keypair_resources.py b/tempest/api/orchestration/stacks/test_nova_keypair_resources.py
index 8d12e75..160bf6f 100644
--- a/tempest/api/orchestration/stacks/test_nova_keypair_resources.py
+++ b/tempest/api/orchestration/stacks/test_nova_keypair_resources.py
@@ -78,10 +78,10 @@
         self.assertIn('-----BEGIN', output_map['KeyPair_PrivateKey'])
         # Test that second key generated public key, and private key is not
         # in the output due to save_private_key = false
-        self.assertTrue('KeyPairDontSavePrivate_PublicKey' in output_map)
-        self.assertTrue('Generated' in
-                        output_map['KeyPairDontSavePrivate_PublicKey'])
-        self.assertTrue(u'KeyPairDontSavePrivate_PrivateKey' in output_map)
+        self.assertIn('KeyPairDontSavePrivate_PublicKey', output_map)
+        self.assertIn('Generated',
+                      output_map['KeyPairDontSavePrivate_PublicKey'])
+        self.assertIn(u'KeyPairDontSavePrivate_PrivateKey', output_map)
         private_key = output_map['KeyPairDontSavePrivate_PrivateKey']
         self.assertTrue(len(private_key) == 0)
 
diff --git a/tempest/api/volume/test_availability_zone.py b/tempest/api/volume/test_availability_zone.py
index fe51375..ae4b8f9 100644
--- a/tempest/api/volume/test_availability_zone.py
+++ b/tempest/api/volume/test_availability_zone.py
@@ -30,7 +30,7 @@
         # List of availability zone
         availability_zone = (self.client.list_availability_zones()
                              ['availabilityZoneInfo'])
-        self.assertTrue(len(availability_zone) > 0)
+        self.assertGreater(len(availability_zone), 0)
 
 
 class AvailabilityZoneV1TestJSON(AvailabilityZoneV2TestJSON):
diff --git a/tempest/api/volume/test_volumes_actions.py b/tempest/api/volume/test_volumes_actions.py
index 7fd8b60..737ce5e 100644
--- a/tempest/api/volume/test_volumes_actions.py
+++ b/tempest/api/volume/test_volumes_actions.py
@@ -50,7 +50,6 @@
         cls.volume = cls.create_volume()
 
     @test.idempotent_id('fff42874-7db5-4487-a8e1-ddda5fb5288d')
-    @test.stresstest(class_setup_per='process')
     @test.attr(type='smoke')
     @test.services('compute')
     def test_attach_detach_volume_to_instance(self):
@@ -82,7 +81,6 @@
             self.assertEqual(bool_bootable, bool_flag)
 
     @test.idempotent_id('9516a2c8-9135-488c-8dd6-5677a7e5f371')
-    @test.stresstest(class_setup_per='process')
     @test.services('compute')
     def test_get_volume_attachment(self):
         # Create a server
diff --git a/tempest/cmd/run_stress.py b/tempest/cmd/run_stress.py
deleted file mode 100755
index 7502c23..0000000
--- a/tempest/cmd/run_stress.py
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2013 Quanta Research Cambridge, Inc.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-import argparse
-import inspect
-import sys
-try:
-    from unittest import loader
-except ImportError:
-    # unittest in python 2.6 does not contain loader, so uses unittest2
-    from unittest2 import loader
-import traceback
-import warnings
-
-from cliff import command
-from oslo_log import log as logging
-from oslo_serialization import jsonutils as json
-from testtools import testsuite
-
-from tempest.stress import driver
-
-LOG = logging.getLogger(__name__)
-
-
-def discover_stress_tests(path="./", filter_attr=None, call_inherited=False):
-    """Discovers all tempest tests and create action out of them"""
-    LOG.info("Start test discovery")
-    tests = []
-    testloader = loader.TestLoader()
-    list = testloader.discover(path)
-    for func in (testsuite.iterate_tests(list)):
-        attrs = []
-        try:
-            method_name = getattr(func, '_testMethodName')
-            full_name = "%s.%s.%s" % (func.__module__,
-                                      func.__class__.__name__,
-                                      method_name)
-            test_func = getattr(func, method_name)
-            # NOTE(mkoderer): this contains a list of all type attributes
-            attrs = getattr(test_func, "__testtools_attrs")
-        except Exception:
-            next
-        if 'stress' in attrs:
-            if filter_attr is not None and filter_attr not in attrs:
-                continue
-            class_setup_per = getattr(test_func, "st_class_setup_per")
-
-            action = {'action':
-                      "tempest.stress.actions.unit_test.UnitTest",
-                      'kwargs': {"test_method": full_name,
-                                 "class_setup_per": class_setup_per
-                                 }
-                      }
-            if (not call_inherited and
-                getattr(test_func, "st_allow_inheritance") is not True):
-                class_structure = inspect.getmro(test_func.im_class)
-                if test_func.__name__ not in class_structure[0].__dict__:
-                    continue
-            tests.append(action)
-    return tests
-
-
-class TempestRunStress(command.Command):
-
-    @staticmethod
-    def display_deprecation_warning():
-        warnings.simplefilter('once', category=DeprecationWarning)
-        warnings.warn(
-            'Stress tests are deprecated and will be removed from Tempest '
-            'in the Newton release.',
-            DeprecationWarning)
-        warnings.resetwarnings()
-
-    def get_parser(self, prog_name):
-        self.display_deprecation_warning()
-        pa = super(TempestRunStress, self).get_parser(prog_name)
-        pa = add_arguments(pa)
-        return pa
-
-    def take_action(self, pa):
-        try:
-            action(pa)
-        except Exception:
-            LOG.exception("Failure in the stress test framework")
-            traceback.print_exc()
-            raise
-
-    def get_description(self):
-        return 'Run tempest stress tests'
-
-
-def add_arguments(parser):
-    parser.add_argument('-d', '--duration', default=300, type=int,
-                        help="Duration of test in secs")
-    parser.add_argument('-s', '--serial', action='store_true',
-                        help="Trigger running tests serially")
-    parser.add_argument('-S', '--stop', action='store_true',
-                        default=False, help="Stop on first error")
-    parser.add_argument('-n', '--number', type=int,
-                        help="How often an action is executed for each "
-                        "process")
-    group = parser.add_mutually_exclusive_group(required=True)
-    group.add_argument('-a', '--all', action='store_true',
-                       help="Execute all stress tests")
-    parser.add_argument('-T', '--type',
-                        help="Filters tests of a certain type (e.g. gate)")
-    parser.add_argument('-i', '--call-inherited', action='store_true',
-                        default=False,
-                        help="Call also inherited function with stress "
-                        "attribute")
-    group.add_argument('-t', "--tests", nargs='?',
-                       help="Name of the file with test description")
-    return parser
-
-
-def action(ns):
-    result = 0
-    if not ns.all:
-        tests = json.load(open(ns.tests, 'r'))
-    else:
-        tests = discover_stress_tests(filter_attr=ns.type,
-                                      call_inherited=ns.call_inherited)
-
-    if ns.serial:
-        # Duration is total time
-        duration = ns.duration / len(tests)
-        for test in tests:
-            step_result = driver.stress_openstack([test],
-                                                  duration,
-                                                  ns.number,
-                                                  ns.stop)
-            # NOTE(mkoderer): we just save the last result code
-            if (step_result != 0):
-                result = step_result
-                if ns.stop:
-                    return result
-    else:
-        result = driver.stress_openstack(tests,
-                                         ns.duration,
-                                         ns.number,
-                                         ns.stop)
-    return result
-
-
-def main():
-    TempestRunStress.display_deprecation_warning()
-    parser = argparse.ArgumentParser(description='Run stress tests')
-    pa = add_arguments(parser)
-    ns = pa.parse_args()
-    return action(ns)
-
-
-if __name__ == "__main__":
-    try:
-        sys.exit(main())
-    except Exception:
-        LOG.exception("Failure in the stress test framework")
-        traceback.print_exc()
-        sys.exit(1)
diff --git a/tempest/config.py b/tempest/config.py
index 8ce38f9..bc9215c 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -900,44 +900,6 @@
 ]
 
 
-stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
-
-StressGroup = [
-    cfg.StrOpt('nova_logdir',
-               help='Directory containing log files on the compute nodes'),
-    cfg.IntOpt('max_instances',
-               default=16,
-               help='Maximum number of instances to create during test.'),
-    cfg.StrOpt('controller',
-               help='Controller host.'),
-    # new stress options
-    cfg.StrOpt('target_controller',
-               help='Controller host.'),
-    cfg.StrOpt('target_ssh_user',
-               help='ssh user.'),
-    cfg.StrOpt('target_private_key_path',
-               help='Path to private key.'),
-    cfg.StrOpt('target_logfiles',
-               help='regexp for list of log files.'),
-    cfg.IntOpt('log_check_interval',
-               default=60,
-               help='time (in seconds) between log file error checks.'),
-    cfg.IntOpt('default_thread_number_per_action',
-               default=4,
-               help='The number of threads created while stress test.'),
-    cfg.BoolOpt('leave_dirty_stack',
-                default=False,
-                help='Prevent the cleaning (tearDownClass()) between'
-                     ' each stress test run if an exception occurs'
-                     ' during this run.'),
-    cfg.BoolOpt('full_clean_stack',
-                default=False,
-                help='Allows a full cleaning process after a stress test.'
-                     ' Caution : this cleanup will remove every objects of'
-                     ' every project.')
-]
-
-
 scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
 
 ScenarioGroup = [
@@ -1145,7 +1107,6 @@
     (object_storage_group, ObjectStoreGroup),
     (object_storage_feature_group, ObjectStoreFeaturesGroup),
     (orchestration_group, OrchestrationGroup),
-    (stress_group, StressGroup),
     (scenario_group, ScenarioGroup),
     (service_available_group, ServiceAvailableGroup),
     (debug_group, DebugGroup),
@@ -1210,7 +1171,6 @@
         self.object_storage_feature_enabled = _CONF[
             'object-storage-feature-enabled']
         self.orchestration = _CONF.orchestration
-        self.stress = _CONF.stress
         self.scenario = _CONF.scenario
         self.service_available = _CONF.service_available
         self.debug = _CONF.debug
diff --git a/tempest/scenario/test_network_advanced_server_ops.py b/tempest/scenario/test_network_advanced_server_ops.py
index 2ae067e..60b030d 100644
--- a/tempest/scenario/test_network_advanced_server_ops.py
+++ b/tempest/scenario/test_network_advanced_server_ops.py
@@ -95,7 +95,6 @@
         self._check_network_connectivity(server, keypair, floating_ip)
 
     @test.idempotent_id('61f1aa9a-1573-410e-9054-afa557cab021')
-    @test.stresstest(class_setup_per='process')
     @test.services('compute', 'network')
     def test_server_connectivity_stop_start(self):
         keypair = self.create_keypair()
diff --git a/tempest/services/object_storage/container_client.py b/tempest/services/object_storage/container_client.py
index 5a26bfc..2509156 100644
--- a/tempest/services/object_storage/container_client.py
+++ b/tempest/services/object_storage/container_client.py
@@ -96,28 +96,6 @@
         self.expected_success(204, resp.status)
         return resp, body
 
-    def list_all_container_objects(self, container, params=None):
-        """Returns complete list of all objects in the container
-
-        even if item count is beyond 10,000 item listing limit.
-        Does not require any parameters aside from container name.
-        """
-        # TODO(dwalleck): Rewrite using json format to avoid newlines at end of
-        # obj names. Set limit to API limit - 1 (max returned items = 9999)
-        limit = 9999
-        if params is not None:
-            if 'limit' in params:
-                limit = params['limit']
-
-            if 'marker' in params:
-                limit = params['marker']
-
-        resp, objlist = self.list_container_contents(
-            container,
-            params={'limit': limit, 'format': 'json'})
-        self.expected_success(200, resp.status)
-        return objlist
-
     def list_container_contents(self, container, params=None):
         """List the objects in a container, given the container name
 
diff --git a/tempest/stress/README.rst b/tempest/stress/README.rst
deleted file mode 100644
index f22c9ce..0000000
--- a/tempest/stress/README.rst
+++ /dev/null
@@ -1,62 +0,0 @@
-.. _stress_field_guide:
-
-Tempest Field Guide to Stress Tests
-===================================
-
-OpenStack is a distributed, asynchronous system that is prone to race condition
-bugs. These bugs will not be easily found during
-functional testing but will be encountered by users in large deployments in a
-way that is hard to debug. The stress test tries to cause these bugs to happen
-in a more controlled environment.
-
-
-Environment
------------
-This particular framework assumes your working Nova cluster understands Nova
-API 2.0. The stress tests can read the logs from the cluster. To enable this
-you have to provide the hostname to call 'nova-manage' and
-the private key and user name for ssh to the cluster in the
-[stress] section of tempest.conf. You also need to provide the
-location of the log files:
-
-  .. code-block:: ini
-
-    target_logfiles = "regexp to all log files to be checked for errors"
-    target_private_key_path = "private ssh key for controller and log file nodes"
-    target_ssh_user = "username for controller and log file nodes"
-    target_controller = "hostname or ip of controller node (for nova-manage)
-    log_check_interval = "time between checking logs for errors (default 60s)"
-
-To activate logging on your console please make sure that you activate `use_stderr`
-in tempest.conf or use the default `logging.conf.sample` file.
-
-Running default stress test set
--------------------------------
-
-The stress test framework can automatically discover test inside the tempest
-test suite. All test flag with the `@stresstest` decorator will be executed.
-In order to use this discovery you have to install tempest CLI, be in the
-tempest root directory and execute the following:
-
-    tempest run-stress -a -d 30
-
-Running the sample test
------------------------
-
-To test installation, do the following:
-
-    tempest run-stress -t tempest/stress/etc/server-create-destroy-test.json -d 30
-
-This sample test tries to create a few VMs and kill a few VMs.
-
-
-Additional Tools
-----------------
-
-Sometimes the tests don't finish, or there are failures. In these
-cases, you may want to clean out the nova cluster. We have provided
-some scripts to do this in the ``tools`` subdirectory.
-You can use the following script to destroy any keypairs,
-floating ips, and servers:
-
-tempest/stress/tools/cleanup.py
diff --git a/tempest/stress/__init__.py b/tempest/stress/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/stress/__init__.py
+++ /dev/null
diff --git a/tempest/stress/actions/__init__.py b/tempest/stress/actions/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/stress/actions/__init__.py
+++ /dev/null
diff --git a/tempest/stress/actions/server_create_destroy.py b/tempest/stress/actions/server_create_destroy.py
deleted file mode 100644
index 183bc6c..0000000
--- a/tempest/stress/actions/server_create_destroy.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2013 Quanta Research Cambridge, Inc.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-from tempest.common.utils import data_utils
-from tempest.common import waiters
-from tempest import config
-import tempest.stress.stressaction as stressaction
-
-CONF = config.CONF
-
-
-class ServerCreateDestroyTest(stressaction.StressAction):
-
-    def setUp(self, **kwargs):
-        self.image = CONF.compute.image_ref
-        self.flavor = CONF.compute.flavor_ref
-
-    def run(self):
-        name = data_utils.rand_name(self.__class__.__name__ + "-instance")
-        self.logger.info("creating %s" % name)
-        server = self.manager.servers_client.create_server(
-            name=name, imageRef=self.image, flavorRef=self.flavor)['server']
-        server_id = server['id']
-        waiters.wait_for_server_status(self.manager.servers_client, server_id,
-                                       'ACTIVE')
-        self.logger.info("created %s" % server_id)
-        self.logger.info("deleting %s" % name)
-        self.manager.servers_client.delete_server(server_id)
-        waiters.wait_for_server_termination(self.manager.servers_client,
-                                            server_id)
-        self.logger.info("deleted %s" % server_id)
diff --git a/tempest/stress/actions/ssh_floating.py b/tempest/stress/actions/ssh_floating.py
deleted file mode 100644
index 845b4a7..0000000
--- a/tempest/stress/actions/ssh_floating.py
+++ /dev/null
@@ -1,200 +0,0 @@
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-import socket
-import subprocess
-
-from tempest.common.utils import data_utils
-from tempest.common import waiters
-from tempest import config
-from tempest.lib.common.utils import test_utils
-import tempest.stress.stressaction as stressaction
-
-CONF = config.CONF
-
-
-class FloatingStress(stressaction.StressAction):
-
-    # from the scenario manager
-    def ping_ip_address(self, ip_address):
-        cmd = ['ping', '-c1', '-w1', ip_address]
-
-        proc = subprocess.Popen(cmd,
-                                stdout=subprocess.PIPE,
-                                stderr=subprocess.PIPE)
-        proc.communicate()
-        success = proc.returncode == 0
-        return success
-
-    def tcp_connect_scan(self, addr, port):
-        # like tcp
-        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        try:
-            s.connect((addr, port))
-        except socket.error as exc:
-            self.logger.info("%s(%s): %s", self.server_id, self.floating['ip'],
-                             str(exc))
-            return False
-        self.logger.info("%s(%s): Connected :)", self.server_id,
-                         self.floating['ip'])
-        s.close()
-        return True
-
-    def check_port_ssh(self):
-        def func():
-            return self.tcp_connect_scan(self.floating['ip'], 22)
-        if not test_utils.call_until_true(func, self.check_timeout,
-                                          self.check_interval):
-            raise RuntimeError("Cannot connect to the ssh port.")
-
-    def check_icmp_echo(self):
-        self.logger.info("%s(%s): Pinging..",
-                         self.server_id, self.floating['ip'])
-
-        def func():
-            return self.ping_ip_address(self.floating['ip'])
-        if not test_utils.call_until_true(func, self.check_timeout,
-                                          self.check_interval):
-            raise RuntimeError("%s(%s): Cannot ping the machine.",
-                               self.server_id, self.floating['ip'])
-        self.logger.info("%s(%s): pong :)",
-                         self.server_id, self.floating['ip'])
-
-    def _create_vm(self):
-        self.name = name = data_utils.rand_name(
-            self.__class__.__name__ + "-instance")
-        servers_client = self.manager.servers_client
-        self.logger.info("creating %s" % name)
-        vm_args = self.vm_extra_args.copy()
-        vm_args['security_groups'] = [self.sec_grp]
-        server = servers_client.create_server(name=name, imageRef=self.image,
-                                              flavorRef=self.flavor,
-                                              **vm_args)['server']
-        self.server_id = server['id']
-        if self.wait_after_vm_create:
-            waiters.wait_for_server_status(self.manager.servers_client,
-                                           self.server_id, 'ACTIVE')
-
-    def _destroy_vm(self):
-        self.logger.info("deleting %s" % self.server_id)
-        self.manager.servers_client.delete_server(self.server_id)
-        waiters.wait_for_server_termination(self.manager.servers_client,
-                                            self.server_id)
-        self.logger.info("deleted %s" % self.server_id)
-
-    def _create_sec_group(self):
-        sec_grp_cli = self.manager.compute_security_groups_client
-        s_name = data_utils.rand_name(self.__class__.__name__ + '-sec_grp')
-        s_description = data_utils.rand_name('desc')
-        self.sec_grp = sec_grp_cli.create_security_group(
-            name=s_name, description=s_description)['security_group']
-        create_rule = sec_grp_cli.create_security_group_rule
-        create_rule(parent_group_id=self.sec_grp['id'], ip_protocol='tcp',
-                    from_port=22, to_port=22)
-        create_rule(parent_group_id=self.sec_grp['id'], ip_protocol='icmp',
-                    from_port=-1, to_port=-1)
-
-    def _destroy_sec_grp(self):
-        sec_grp_cli = self.manager.compute_security_groups_client
-        sec_grp_cli.delete_security_group(self.sec_grp['id'])
-
-    def _create_floating_ip(self):
-        floating_cli = self.manager.compute_floating_ips_client
-        self.floating = (floating_cli.create_floating_ip(self.floating_pool)
-                         ['floating_ip'])
-
-    def _destroy_floating_ip(self):
-        cli = self.manager.compute_floating_ips_client
-        cli.delete_floating_ip(self.floating['id'])
-        cli.wait_for_resource_deletion(self.floating['id'])
-        self.logger.info("Deleted Floating IP %s", str(self.floating['ip']))
-
-    def setUp(self, **kwargs):
-        self.image = CONF.compute.image_ref
-        self.flavor = CONF.compute.flavor_ref
-        self.vm_extra_args = kwargs.get('vm_extra_args', {})
-        self.wait_after_vm_create = kwargs.get('wait_after_vm_create',
-                                               True)
-        self.new_vm = kwargs.get('new_vm', False)
-        self.new_sec_grp = kwargs.get('new_sec_group', False)
-        self.new_floating = kwargs.get('new_floating', False)
-        self.reboot = kwargs.get('reboot', False)
-        self.floating_pool = kwargs.get('floating_pool', None)
-        self.verify = kwargs.get('verify', ('check_port_ssh',
-                                            'check_icmp_echo'))
-        self.check_timeout = kwargs.get('check_timeout', 120)
-        self.check_interval = kwargs.get('check_interval', 1)
-        self.wait_for_disassociate = kwargs.get('wait_for_disassociate',
-                                                True)
-
-        # allocate floating
-        if not self.new_floating:
-            self._create_floating_ip()
-        # add security group
-        if not self.new_sec_grp:
-            self._create_sec_group()
-        # create vm
-        if not self.new_vm:
-            self._create_vm()
-
-    def wait_disassociate(self):
-        cli = self.manager.compute_floating_ips_client
-
-        def func():
-            floating = (cli.show_floating_ip(self.floating['id'])
-                        ['floating_ip'])
-            return floating['instance_id'] is None
-
-        if not test_utils.call_until_true(func, self.check_timeout,
-                                          self.check_interval):
-            raise RuntimeError("IP disassociate timeout!")
-
-    def run_core(self):
-        cli = self.manager.compute_floating_ips_client
-        cli.associate_floating_ip_to_server(self.floating['ip'],
-                                            self.server_id)
-        for method in self.verify:
-            m = getattr(self, method)
-            m()
-        cli.disassociate_floating_ip_from_server(self.floating['ip'],
-                                                 self.server_id)
-        if self.wait_for_disassociate:
-            self.wait_disassociate()
-
-    def run(self):
-        if self.new_sec_grp:
-            self._create_sec_group()
-        if self.new_floating:
-            self._create_floating_ip()
-        if self.new_vm:
-            self._create_vm()
-        if self.reboot:
-            self.manager.servers_client.reboot(self.server_id, 'HARD')
-            waiters.wait_for_server_status(self.manager.servers_client,
-                                           self.server_id, 'ACTIVE')
-
-        self.run_core()
-
-        if self.new_vm:
-            self._destroy_vm()
-        if self.new_floating:
-            self._destroy_floating_ip()
-        if self.new_sec_grp:
-            self._destroy_sec_grp()
-
-    def tearDown(self):
-        if not self.new_vm:
-            self._destroy_vm()
-        if not self.new_floating:
-            self._destroy_floating_ip()
-        if not self.new_sec_grp:
-            self._destroy_sec_grp()
diff --git a/tempest/stress/actions/unit_test.py b/tempest/stress/actions/unit_test.py
deleted file mode 100644
index e016c61..0000000
--- a/tempest/stress/actions/unit_test.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-#    License for the specific language governing permissions and limitations
-#    under the License.
-
-from oslo_log import log as logging
-from oslo_utils import importutils
-
-from tempest import config
-import tempest.stress.stressaction as stressaction
-
-CONF = config.CONF
-
-
-class SetUpClassRunTime(object):
-
-    process = 'process'
-    action = 'action'
-    application = 'application'
-
-    allowed = set((process, action, application))
-
-    @classmethod
-    def validate(cls, name):
-        if name not in cls.allowed:
-            raise KeyError("\'%s\' not a valid option" % name)
-
-
-class UnitTest(stressaction.StressAction):
-    """This is a special action for running existing unittests as stress test.
-
-       You need to pass ``test_method`` and ``class_setup_per``
-       using ``kwargs`` in the JSON descriptor;
-       ``test_method`` should be the fully qualified name of a unittest,
-       ``class_setup_per`` should be one from:
-           ``application``: once in the stress job lifetime
-           ``process``: once in the worker process lifetime
-           ``action``: on each action
-       Not all combination working in every case.
-    """
-
-    def setUp(self, **kwargs):
-        method = kwargs['test_method'].split('.')
-        self.test_method = method.pop()
-        self.klass = importutils.import_class('.'.join(method))
-        self.logger = logging.getLogger('.'.join(method))
-        # valid options are 'process', 'application' , 'action'
-        self.class_setup_per = kwargs.get('class_setup_per',
-                                          SetUpClassRunTime.process)
-        SetUpClassRunTime.validate(self.class_setup_per)
-
-        if self.class_setup_per == SetUpClassRunTime.application:
-            self.klass.setUpClass()
-        self.setupclass_called = False
-
-    @property
-    def action(self):
-        if self.test_method:
-            return self.test_method
-        return super(UnitTest, self).action
-
-    def run_core(self):
-        res = self.klass(self.test_method).run()
-        if res.errors:
-            raise RuntimeError(res.errors)
-
-    def run(self):
-        if self.class_setup_per != SetUpClassRunTime.application:
-            if (self.class_setup_per == SetUpClassRunTime.action
-                or self.setupclass_called is False):
-                self.klass.setUpClass()
-                self.setupclass_called = True
-
-            try:
-                self.run_core()
-            finally:
-                if (CONF.stress.leave_dirty_stack is False
-                    and self.class_setup_per == SetUpClassRunTime.action):
-                    self.klass.tearDownClass()
-        else:
-            self.run_core()
-
-    def tearDown(self):
-        if self.class_setup_per != SetUpClassRunTime.action:
-            self.klass.tearDownClass()
diff --git a/tempest/stress/actions/volume_attach_delete.py b/tempest/stress/actions/volume_attach_delete.py
deleted file mode 100644
index 5fc006e..0000000
--- a/tempest/stress/actions/volume_attach_delete.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# (c) 2013 Deutsche Telekom AG
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-from tempest.common.utils import data_utils
-from tempest.common import waiters
-from tempest import config
-import tempest.stress.stressaction as stressaction
-
-CONF = config.CONF
-
-
-class VolumeAttachDeleteTest(stressaction.StressAction):
-
-    def setUp(self, **kwargs):
-        self.image = CONF.compute.image_ref
-        self.flavor = CONF.compute.flavor_ref
-
-    def run(self):
-        # Step 1: create volume
-        name = data_utils.rand_name(self.__class__.__name__ + "-volume")
-        self.logger.info("creating volume: %s" % name)
-        volume = self.manager.volumes_client.create_volume(
-            display_name=name, size=CONF.volume.volume_size)['volume']
-        self.manager.volumes_client.wait_for_volume_status(volume['id'],
-                                                           'available')
-        self.logger.info("created volume: %s" % volume['id'])
-
-        # Step 2: create vm instance
-        vm_name = data_utils.rand_name(self.__class__.__name__ + "-instance")
-        self.logger.info("creating vm: %s" % vm_name)
-        server = self.manager.servers_client.create_server(
-            name=vm_name, imageRef=self.image, flavorRef=self.flavor)['server']
-        server_id = server['id']
-        waiters.wait_for_server_status(self.manager.servers_client, server_id,
-                                       'ACTIVE')
-        self.logger.info("created vm %s" % server_id)
-
-        # Step 3: attach volume to vm
-        self.logger.info("attach volume (%s) to vm %s" %
-                         (volume['id'], server_id))
-        self.manager.servers_client.attach_volume(server_id,
-                                                  volumeId=volume['id'],
-                                                  device='/dev/vdc')
-        self.manager.volumes_client.wait_for_volume_status(volume['id'],
-                                                           'in-use')
-        self.logger.info("volume (%s) attached to vm %s" %
-                         (volume['id'], server_id))
-
-        # Step 4: delete vm
-        self.logger.info("deleting vm: %s" % vm_name)
-        self.manager.servers_client.delete_server(server_id)
-        waiters.wait_for_server_termination(self.manager.servers_client,
-                                            server_id)
-        self.logger.info("deleted vm: %s" % server_id)
-
-        # Step 5: delete volume
-        self.logger.info("deleting volume: %s" % volume['id'])
-        self.manager.volumes_client.delete_volume(volume['id'])
-        self.manager.volumes_client.wait_for_resource_deletion(volume['id'])
-        self.logger.info("deleted volume: %s" % volume['id'])
diff --git a/tempest/stress/actions/volume_attach_verify.py b/tempest/stress/actions/volume_attach_verify.py
deleted file mode 100644
index 4fbb851..0000000
--- a/tempest/stress/actions/volume_attach_verify.py
+++ /dev/null
@@ -1,233 +0,0 @@
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-import re
-
-from tempest.common.utils import data_utils
-from tempest.common.utils.linux import remote_client
-from tempest.common import waiters
-from tempest import config
-from tempest.lib.common.utils import test_utils
-import tempest.stress.stressaction as stressaction
-
-CONF = config.CONF
-
-
-class VolumeVerifyStress(stressaction.StressAction):
-
-    def _create_keypair(self):
-        keyname = data_utils.rand_name("key")
-        self.key = (self.manager.keypairs_client.create_keypair(name=keyname)
-                    ['keypair'])
-
-    def _delete_keypair(self):
-        self.manager.keypairs_client.delete_keypair(self.key['name'])
-
-    def _create_vm(self):
-        self.name = name = data_utils.rand_name(
-            self.__class__.__name__ + "-instance")
-        servers_client = self.manager.servers_client
-        self.logger.info("creating %s" % name)
-        vm_args = self.vm_extra_args.copy()
-        vm_args['security_groups'] = [self.sec_grp]
-        vm_args['key_name'] = self.key['name']
-        server = servers_client.create_server(name=name, imageRef=self.image,
-                                              flavorRef=self.flavor,
-                                              **vm_args)['server']
-        self.server_id = server['id']
-        waiters.wait_for_server_status(self.manager.servers_client,
-                                       self.server_id, 'ACTIVE')
-
-    def _destroy_vm(self):
-        self.logger.info("deleting server: %s" % self.server_id)
-        self.manager.servers_client.delete_server(self.server_id)
-        waiters.wait_for_server_termination(self.manager.servers_client,
-                                            self.server_id)
-        self.logger.info("deleted server: %s" % self.server_id)
-
-    def _create_sec_group(self):
-        sec_grp_cli = self.manager.compute_security_groups_client
-        s_name = data_utils.rand_name(self.__class__.__name__ + '-sec_grp')
-        s_description = data_utils.rand_name('desc')
-        self.sec_grp = sec_grp_cli.create_security_group(
-            name=s_name, description=s_description)['security_group']
-        create_rule = sec_grp_cli.create_security_group_rule
-        create_rule(parent_group_id=self.sec_grp['id'], ip_protocol='tcp',
-                    from_port=22, to_port=22)
-        create_rule(parent_group_id=self.sec_grp['id'], ip_protocol='icmp',
-                    from_port=-1, to_port=-1)
-
-    def _destroy_sec_grp(self):
-        sec_grp_cli = self.manager.compute_security_groups_client
-        sec_grp_cli.delete_security_group(self.sec_grp['id'])
-
-    def _create_floating_ip(self):
-        floating_cli = self.manager.compute_floating_ips_client
-        self.floating = (floating_cli.create_floating_ip(self.floating_pool)
-                         ['floating_ip'])
-
-    def _destroy_floating_ip(self):
-        cli = self.manager.compute_floating_ips_client
-        cli.delete_floating_ip(self.floating['id'])
-        cli.wait_for_resource_deletion(self.floating['id'])
-        self.logger.info("Deleted Floating IP %s", str(self.floating['ip']))
-
-    def _create_volume(self):
-        name = data_utils.rand_name(self.__class__.__name__ + "-volume")
-        self.logger.info("creating volume: %s" % name)
-        volumes_client = self.manager.volumes_client
-        self.volume = volumes_client.create_volume(
-            display_name=name, size=CONF.volume.volume_size)['volume']
-        volumes_client.wait_for_volume_status(self.volume['id'],
-                                              'available')
-        self.logger.info("created volume: %s" % self.volume['id'])
-
-    def _delete_volume(self):
-        self.logger.info("deleting volume: %s" % self.volume['id'])
-        volumes_client = self.manager.volumes_client
-        volumes_client.delete_volume(self.volume['id'])
-        volumes_client.wait_for_resource_deletion(self.volume['id'])
-        self.logger.info("deleted volume: %s" % self.volume['id'])
-
-    def _wait_disassociate(self):
-        cli = self.manager.compute_floating_ips_client
-
-        def func():
-            floating = (cli.show_floating_ip(self.floating['id'])
-                        ['floating_ip'])
-            return floating['instance_id'] is None
-
-        if not test_utils.call_until_true(func, CONF.compute.build_timeout,
-                                          CONF.compute.build_interval):
-            raise RuntimeError("IP disassociate timeout!")
-
-    def new_server_ops(self):
-        self._create_vm()
-        cli = self.manager.compute_floating_ips_client
-        cli.associate_floating_ip_to_server(self.floating['ip'],
-                                            self.server_id)
-        if self.ssh_test_before_attach and self.enable_ssh_verify:
-            self.logger.info("Scanning for block devices via ssh on %s"
-                             % self.server_id)
-            self.part_wait(self.detach_match_count)
-
-    def setUp(self, **kwargs):
-        """Note able configuration combinations:
-
-            Closest options to the test_stamp_pattern:
-                new_server = True
-                new_volume = True
-                enable_ssh_verify = True
-                ssh_test_before_attach = False
-            Just attaching:
-                new_server = False
-                new_volume = False
-                enable_ssh_verify = True
-                ssh_test_before_attach = True
-            Mostly API load by repeated attachment:
-                new_server = False
-                new_volume = False
-                enable_ssh_verify = False
-                ssh_test_before_attach = False
-            Minimal Nova load, but cinder load not decreased:
-                new_server = False
-                new_volume = True
-                enable_ssh_verify = True
-                ssh_test_before_attach = True
-        """
-        self.image = CONF.compute.image_ref
-        self.flavor = CONF.compute.flavor_ref
-        self.vm_extra_args = kwargs.get('vm_extra_args', {})
-        self.floating_pool = kwargs.get('floating_pool', None)
-        self.new_volume = kwargs.get('new_volume', True)
-        self.new_server = kwargs.get('new_server', False)
-        self.enable_ssh_verify = kwargs.get('enable_ssh_verify', True)
-        self.ssh_test_before_attach = kwargs.get('ssh_test_before_attach',
-                                                 False)
-        self.part_line_re = re.compile(kwargs.get('part_line_re', '.*vd.*'))
-        self.detach_match_count = kwargs.get('detach_match_count', 1)
-        self.attach_match_count = kwargs.get('attach_match_count', 2)
-        self.part_name = kwargs.get('part_name', '/dev/vdc')
-
-        self._create_floating_ip()
-        self._create_sec_group()
-        self._create_keypair()
-        private_key = self.key['private_key']
-        username = CONF.validation.image_ssh_user
-        self.remote_client = remote_client.RemoteClient(self.floating['ip'],
-                                                        username,
-                                                        pkey=private_key)
-        if not self.new_volume:
-            self._create_volume()
-        if not self.new_server:
-            self.new_server_ops()
-
-    # now we just test that the number of partitions has increased or decreased
-    def part_wait(self, num_match):
-        def _part_state():
-            self.partitions = self.remote_client.get_partitions().split('\n')
-            matching = 0
-            for part_line in self.partitions[1:]:
-                if self.part_line_re.match(part_line):
-                    matching += 1
-            return matching == num_match
-        if test_utils.call_until_true(_part_state,
-                                      CONF.compute.build_timeout,
-                                      CONF.compute.build_interval):
-            return
-        else:
-            raise RuntimeError("Unexpected partitions: %s",
-                               str(self.partitions))
-
-    def run(self):
-        if self.new_server:
-            self.new_server_ops()
-        if self.new_volume:
-            self._create_volume()
-        servers_client = self.manager.servers_client
-        self.logger.info("attach volume (%s) to vm %s" %
-                         (self.volume['id'], self.server_id))
-        servers_client.attach_volume(self.server_id,
-                                     volumeId=self.volume['id'],
-                                     device=self.part_name)
-        self.manager.volumes_client.wait_for_volume_status(self.volume['id'],
-                                                           'in-use')
-        if self.enable_ssh_verify:
-            self.logger.info("Scanning for new block device on %s"
-                             % self.server_id)
-            self.part_wait(self.attach_match_count)
-
-        servers_client.detach_volume(self.server_id,
-                                     self.volume['id'])
-        self.manager.volumes_client.wait_for_volume_status(self.volume['id'],
-                                                           'available')
-        if self.enable_ssh_verify:
-            self.logger.info("Scanning for block device disappearance on %s"
-                             % self.server_id)
-            self.part_wait(self.detach_match_count)
-        if self.new_volume:
-            self._delete_volume()
-        if self.new_server:
-            self._destroy_vm()
-
-    def tearDown(self):
-        cli = self.manager.compute_floating_ips_client
-        cli.disassociate_floating_ip_from_server(self.floating['ip'],
-                                                 self.server_id)
-        self._wait_disassociate()
-        if not self.new_server:
-            self._destroy_vm()
-        self._delete_keypair()
-        self._destroy_floating_ip()
-        self._destroy_sec_grp()
-        if not self.new_volume:
-            self._delete_volume()
diff --git a/tempest/stress/actions/volume_create_delete.py b/tempest/stress/actions/volume_create_delete.py
deleted file mode 100644
index 66971ea..0000000
--- a/tempest/stress/actions/volume_create_delete.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-from tempest.common.utils import data_utils
-from tempest import config
-import tempest.stress.stressaction as stressaction
-
-CONF = config.CONF
-
-
-class VolumeCreateDeleteTest(stressaction.StressAction):
-
-    def run(self):
-        name = data_utils.rand_name("volume")
-        self.logger.info("creating %s" % name)
-        volumes_client = self.manager.volumes_client
-        volume = volumes_client.create_volume(
-            display_name=name, size=CONF.volume.volume_size)['volume']
-        vol_id = volume['id']
-        volumes_client.wait_for_volume_status(vol_id, 'available')
-        self.logger.info("created %s" % volume['id'])
-        self.logger.info("deleting %s" % name)
-        volumes_client.delete_volume(vol_id)
-        volumes_client.wait_for_resource_deletion(vol_id)
-        self.logger.info("deleted %s" % vol_id)
diff --git a/tempest/stress/cleanup.py b/tempest/stress/cleanup.py
deleted file mode 100644
index 3b0a937..0000000
--- a/tempest/stress/cleanup.py
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2013 Quanta Research Cambridge, Inc.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-from oslo_log import log as logging
-
-from tempest.common import credentials_factory as credentials
-from tempest.common import waiters
-
-LOG = logging.getLogger(__name__)
-
-
-def cleanup():
-    admin_manager = credentials.AdminManager()
-
-    body = admin_manager.servers_client.list_servers(all_tenants=True)
-    LOG.info("Cleanup::remove %s servers" % len(body['servers']))
-    for s in body['servers']:
-        try:
-            admin_manager.servers_client.delete_server(s['id'])
-        except Exception:
-            pass
-
-    for s in body['servers']:
-        try:
-            waiters.wait_for_server_termination(admin_manager.servers_client,
-                                                s['id'])
-        except Exception:
-            pass
-
-    keypairs = admin_manager.keypairs_client.list_keypairs()['keypairs']
-    LOG.info("Cleanup::remove %s keypairs" % len(keypairs))
-    for k in keypairs:
-        try:
-            admin_manager.keypairs_client.delete_keypair(k['name'])
-        except Exception:
-            pass
-
-    secgrp_client = admin_manager.compute_security_groups_client
-    secgrp = (secgrp_client.list_security_groups(all_tenants=True)
-              ['security_groups'])
-    secgrp_del = [grp for grp in secgrp if grp['name'] != 'default']
-    LOG.info("Cleanup::remove %s Security Group" % len(secgrp_del))
-    for g in secgrp_del:
-        try:
-            secgrp_client.delete_security_group(g['id'])
-        except Exception:
-            pass
-
-    admin_floating_ips_client = admin_manager.compute_floating_ips_client
-    floating_ips = (admin_floating_ips_client.list_floating_ips()
-                    ['floating_ips'])
-    LOG.info("Cleanup::remove %s floating ips" % len(floating_ips))
-    for f in floating_ips:
-        try:
-            admin_floating_ips_client.delete_floating_ip(f['id'])
-        except Exception:
-            pass
-
-    users = admin_manager.users_client.list_users()['users']
-    LOG.info("Cleanup::remove %s users" % len(users))
-    for user in users:
-        if user['name'].startswith("stress_user"):
-            admin_manager.users_client.delete_user(user['id'])
-    tenants = admin_manager.tenants_client.list_tenants()['tenants']
-    LOG.info("Cleanup::remove %s tenants" % len(tenants))
-    for tenant in tenants:
-        if tenant['name'].startswith("stress_tenant"):
-            admin_manager.tenants_client.delete_tenant(tenant['id'])
-
-    # We have to delete snapshots first or
-    # volume deletion may block
-
-    _, snaps = admin_manager.snapshots_client.list_snapshots(
-        all_tenants=True)['snapshots']
-    LOG.info("Cleanup::remove %s snapshots" % len(snaps))
-    for v in snaps:
-        try:
-            waiters.wait_for_snapshot_status(
-                admin_manager.snapshots_client, v['id'], 'available')
-            admin_manager.snapshots_client.delete_snapshot(v['id'])
-        except Exception:
-            pass
-
-    for v in snaps:
-        try:
-            admin_manager.snapshots_client.wait_for_resource_deletion(v['id'])
-        except Exception:
-            pass
-
-    vols = admin_manager.volumes_client.list_volumes(
-        params={"all_tenants": True})
-    LOG.info("Cleanup::remove %s volumes" % len(vols))
-    for v in vols:
-        try:
-            waiters.wait_for_volume_status(
-                admin_manager.volumes_client, v['id'], 'available')
-            admin_manager.volumes_client.delete_volume(v['id'])
-        except Exception:
-            pass
-
-    for v in vols:
-        try:
-            admin_manager.volumes_client.wait_for_resource_deletion(v['id'])
-        except Exception:
-            pass
diff --git a/tempest/stress/driver.py b/tempest/stress/driver.py
deleted file mode 100644
index 1e33e88..0000000
--- a/tempest/stress/driver.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# Copyright 2013 Quanta Research Cambridge, Inc.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-import multiprocessing
-import os
-import signal
-import time
-
-from oslo_log import log as logging
-from oslo_utils import importutils
-import six
-
-from tempest import clients
-from tempest.common import cred_client
-from tempest.common import credentials_factory as credentials
-from tempest.common.utils import data_utils
-from tempest import config
-from tempest import exceptions
-from tempest.lib.common import ssh
-from tempest.stress import cleanup
-
-CONF = config.CONF
-
-LOG = logging.getLogger(__name__)
-processes = []
-
-
-def do_ssh(command, host, ssh_user, ssh_key=None):
-    ssh_client = ssh.Client(host, ssh_user, key_filename=ssh_key)
-    try:
-        return ssh_client.exec_command(command)
-    except exceptions.SSHExecCommandFailed:
-        LOG.error('do_ssh raise exception. command:%s, host:%s.'
-                  % (command, host))
-        return None
-
-
-def _get_compute_nodes(controller, ssh_user, ssh_key=None):
-    """Returns a list of active compute nodes.
-
-    List is generated by running nova-manage on the controller.
-    """
-    nodes = []
-    cmd = "nova-manage service list | grep ^nova-compute"
-    output = do_ssh(cmd, controller, ssh_user, ssh_key)
-    if not output:
-        return nodes
-    # For example: nova-compute xg11eth0 nova enabled :-) 2011-10-31 18:57:46
-    # This is fragile but there is, at present, no other way to get this info.
-    for line in output.split('\n'):
-        words = line.split()
-        if len(words) > 0 and words[4] == ":-)":
-            nodes.append(words[1])
-    return nodes
-
-
-def _has_error_in_logs(logfiles, nodes, ssh_user, ssh_key=None,
-                       stop_on_error=False):
-    """Detect errors in nova log files on the controller and compute nodes."""
-    grep = 'egrep "ERROR|TRACE" %s' % logfiles
-    ret = False
-    for node in nodes:
-        errors = do_ssh(grep, node, ssh_user, ssh_key)
-        if len(errors) > 0:
-            LOG.error('%s: %s' % (node, errors))
-            ret = True
-            if stop_on_error:
-                break
-    return ret
-
-
-def sigchld_handler(signalnum, frame):
-    """Signal handler (only active if stop_on_error is True)."""
-    for process in processes:
-        if (not process['process'].is_alive() and
-                process['process'].exitcode != 0):
-            signal.signal(signalnum, signal.SIG_DFL)
-            terminate_all_processes()
-            break
-
-
-def terminate_all_processes(check_interval=20):
-    """Goes through the process list and terminates all child processes."""
-    LOG.info("Stopping all processes.")
-    for process in processes:
-        if process['process'].is_alive():
-            try:
-                process['process'].terminate()
-            except Exception:
-                pass
-    time.sleep(check_interval)
-    for process in processes:
-        if process['process'].is_alive():
-            try:
-                pid = process['process'].pid
-                LOG.warning("Process %d hangs. Send SIGKILL." % pid)
-                os.kill(pid, signal.SIGKILL)
-            except Exception:
-                pass
-        process['process'].join()
-
-
-def stress_openstack(tests, duration, max_runs=None, stop_on_error=False):
-    """Workload driver. Executes an action function against a nova-cluster."""
-    admin_manager = credentials.AdminManager()
-
-    ssh_user = CONF.stress.target_ssh_user
-    ssh_key = CONF.stress.target_private_key_path
-    logfiles = CONF.stress.target_logfiles
-    log_check_interval = int(CONF.stress.log_check_interval)
-    default_thread_num = int(CONF.stress.default_thread_number_per_action)
-    if logfiles:
-        controller = CONF.stress.target_controller
-        computes = _get_compute_nodes(controller, ssh_user, ssh_key)
-        for node in computes:
-            do_ssh("rm -f %s" % logfiles, node, ssh_user, ssh_key)
-    skip = False
-    for test in tests:
-        for service in test.get('required_services', []):
-            if not CONF.service_available.get(service):
-                skip = True
-                break
-        if skip:
-            break
-        # TODO(andreaf) This has to be reworked to use the credential
-        # provider interface. For now only tests marked as 'use_admin' will
-        # work.
-        if test.get('use_admin', False):
-            manager = admin_manager
-        else:
-            raise NotImplemented('Non admin tests are not supported')
-        for p_number in range(test.get('threads', default_thread_num)):
-            if test.get('use_isolated_tenants', False):
-                username = data_utils.rand_name("stress_user")
-                tenant_name = data_utils.rand_name("stress_tenant")
-                password = "pass"
-                if CONF.identity.auth_version == 'v2':
-                    identity_client = admin_manager.identity_client
-                    projects_client = admin_manager.tenants_client
-                    roles_client = admin_manager.roles_client
-                    users_client = admin_manager.users_client
-                    domains_client = None
-                else:
-                    identity_client = admin_manager.identity_v3_client
-                    projects_client = admin_manager.projects_client
-                    roles_client = admin_manager.roles_v3_client
-                    users_client = admin_manager.users_v3_client
-                    domains_client = admin_manager.domains_client
-                domain = (identity_client.auth_provider.credentials.
-                          get('project_domain_name', 'Default'))
-                credentials_client = cred_client.get_creds_client(
-                    identity_client, projects_client, users_client,
-                    roles_client, domains_client, project_domain_name=domain)
-                project = credentials_client.create_project(
-                    name=tenant_name, description=tenant_name)
-                user = credentials_client.create_user(username, password,
-                                                      project, "email")
-                # Add roles specified in config file
-                for conf_role in CONF.auth.tempest_roles:
-                    credentials_client.assign_user_role(user, project,
-                                                        conf_role)
-                creds = credentials_client.get_credentials(user, project,
-                                                           password)
-                manager = clients.Manager(credentials=creds)
-
-            test_obj = importutils.import_class(test['action'])
-            test_run = test_obj(manager, max_runs, stop_on_error)
-
-            kwargs = test.get('kwargs', {})
-            test_run.setUp(**dict(six.iteritems(kwargs)))
-
-            LOG.debug("calling Target Object %s" %
-                      test_run.__class__.__name__)
-
-            mp_manager = multiprocessing.Manager()
-            shared_statistic = mp_manager.dict()
-            shared_statistic['runs'] = 0
-            shared_statistic['fails'] = 0
-
-            p = multiprocessing.Process(target=test_run.execute,
-                                        args=(shared_statistic,))
-
-            process = {'process': p,
-                       'p_number': p_number,
-                       'action': test_run.action,
-                       'statistic': shared_statistic}
-
-            processes.append(process)
-            p.start()
-    if stop_on_error:
-        # NOTE(mkoderer): only the parent should register the handler
-        signal.signal(signal.SIGCHLD, sigchld_handler)
-    end_time = time.time() + duration
-    had_errors = False
-    try:
-        while True:
-            if max_runs is None:
-                remaining = end_time - time.time()
-                if remaining <= 0:
-                    break
-            else:
-                remaining = log_check_interval
-                all_proc_term = True
-                for process in processes:
-                    if process['process'].is_alive():
-                        all_proc_term = False
-                        break
-                if all_proc_term:
-                    break
-
-            time.sleep(min(remaining, log_check_interval))
-            if stop_on_error:
-                if any([True for proc in processes
-                        if proc['statistic']['fails'] > 0]):
-                    break
-
-            if not logfiles:
-                continue
-            if _has_error_in_logs(logfiles, computes, ssh_user, ssh_key,
-                                  stop_on_error):
-                had_errors = True
-                break
-    except KeyboardInterrupt:
-        LOG.warning("Interrupted, going to print statistics and exit ...")
-
-    if stop_on_error:
-        signal.signal(signal.SIGCHLD, signal.SIG_DFL)
-    terminate_all_processes()
-
-    sum_fails = 0
-    sum_runs = 0
-
-    LOG.info("Statistics (per process):")
-    for process in processes:
-        if process['statistic']['fails'] > 0:
-            had_errors = True
-        sum_runs += process['statistic']['runs']
-        sum_fails += process['statistic']['fails']
-        print("Process %d (%s): Run %d actions (%d failed)" % (
-            process['p_number'],
-            process['action'],
-            process['statistic']['runs'],
-            process['statistic']['fails']))
-    print("Summary:")
-    print("Run %d actions (%d failed)" % (sum_runs, sum_fails))
-
-    if not had_errors and CONF.stress.full_clean_stack:
-        LOG.info("cleaning up")
-        cleanup.cleanup()
-    if had_errors:
-        return 1
-    else:
-        return 0
diff --git a/tempest/stress/etc/sample-unit-test.json b/tempest/stress/etc/sample-unit-test.json
deleted file mode 100644
index 54433d5..0000000
--- a/tempest/stress/etc/sample-unit-test.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[{"action": "tempest.stress.actions.unit_test.UnitTest",
-  "threads": 8,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {"test_method": "tempest.cli.simple_read_only.test_glance.SimpleReadOnlyGlanceClientTest.test_glance_fake_action",
-             "class_setup_per": "process"}
-  }
-]
diff --git a/tempest/stress/etc/server-create-destroy-test.json b/tempest/stress/etc/server-create-destroy-test.json
deleted file mode 100644
index bbb5352..0000000
--- a/tempest/stress/etc/server-create-destroy-test.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[{"action": "tempest.stress.actions.server_create_destroy.ServerCreateDestroyTest",
-  "threads": 8,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {}
-  }
-]
diff --git a/tempest/stress/etc/ssh_floating.json b/tempest/stress/etc/ssh_floating.json
deleted file mode 100644
index c502e96..0000000
--- a/tempest/stress/etc/ssh_floating.json
+++ /dev/null
@@ -1,16 +0,0 @@
-[{"action": "tempest.stress.actions.ssh_floating.FloatingStress",
-  "threads": 8,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {"vm_extra_args": {},
-             "new_vm": true,
-             "new_sec_group": true,
-             "new_floating": true,
-             "verify": ["check_icmp_echo", "check_port_ssh"],
-             "check_timeout": 120,
-             "check_interval": 1,
-             "wait_after_vm_create": true,
-             "wait_for_disassociate": true,
-             "reboot": false}
-}
-]
diff --git a/tempest/stress/etc/stress-tox-job.json b/tempest/stress/etc/stress-tox-job.json
deleted file mode 100644
index bfa448d..0000000
--- a/tempest/stress/etc/stress-tox-job.json
+++ /dev/null
@@ -1,28 +0,0 @@
-[{"action": "tempest.stress.actions.server_create_destroy.ServerCreateDestroyTest",
-  "threads": 8,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {}
-  },
-  {"action": "tempest.stress.actions.volume_create_delete.VolumeCreateDeleteTest",
-  "threads": 4,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {}
-  },
-  {"action": "tempest.stress.actions.volume_attach_delete.VolumeAttachDeleteTest",
-  "threads": 2,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {}
-  },
-  {"action": "tempest.stress.actions.unit_test.UnitTest",
-  "threads": 4,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "required_services": ["neutron"],
-  "kwargs": {"test_method": "tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_stop_start",
-             "class_setup_per": "process"}
-  }
-]
-
diff --git a/tempest/stress/etc/volume-attach-delete-test.json b/tempest/stress/etc/volume-attach-delete-test.json
deleted file mode 100644
index d468967..0000000
--- a/tempest/stress/etc/volume-attach-delete-test.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[{"action": "tempest.stress.actions.volume_attach_delete.VolumeAttachDeleteTest",
-  "threads": 4,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {}
-  }
-]
diff --git a/tempest/stress/etc/volume-attach-verify.json b/tempest/stress/etc/volume-attach-verify.json
deleted file mode 100644
index d8c96fd..0000000
--- a/tempest/stress/etc/volume-attach-verify.json
+++ /dev/null
@@ -1,11 +0,0 @@
-[{"action": "tempest.stress.actions.volume_attach_verify.VolumeVerifyStress",
-  "threads": 1,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {"vm_extra_args": {},
-             "new_volume": true,
-             "new_server": false,
-             "ssh_test_before_attach": false,
-             "enable_ssh_verify": true}
-}
-]
diff --git a/tempest/stress/etc/volume-create-delete-test.json b/tempest/stress/etc/volume-create-delete-test.json
deleted file mode 100644
index a60cde6..0000000
--- a/tempest/stress/etc/volume-create-delete-test.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[{"action": "tempest.stress.actions.volume_create_delete.VolumeCreateDeleteTest",
-  "threads": 4,
-  "use_admin": true,
-  "use_isolated_tenants": true,
-  "kwargs": {}
-  }
-]
diff --git a/tempest/stress/stressaction.py b/tempest/stress/stressaction.py
deleted file mode 100644
index cf0a08a..0000000
--- a/tempest/stress/stressaction.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# (c) Copyright 2013 Hewlett-Packard Development Company, L.P.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-#    License for the specific language governing permissions and limitations
-#    under the License.
-
-import abc
-import signal
-import sys
-
-import six
-
-from oslo_log import log as logging
-
-
-@six.add_metaclass(abc.ABCMeta)
-class StressAction(object):
-
-    def __init__(self, manager, max_runs=None, stop_on_error=False):
-        full_cname = self.__module__ + "." + self.__class__.__name__
-        self.logger = logging.getLogger(full_cname)
-        self.manager = manager
-        self.max_runs = max_runs
-        self.stop_on_error = stop_on_error
-
-    def _shutdown_handler(self, signal, frame):
-        try:
-            self.tearDown()
-        except Exception:
-            self.logger.exception("Error while tearDown")
-        sys.exit(0)
-
-    @property
-    def action(self):
-        """This methods returns the action.
-
-        Overload this if you create a stress test wrapper.
-        """
-        return self.__class__.__name__
-
-    def setUp(self, **kwargs):
-        """Initialize test structures/resources
-
-        This method is called before "run" method to help the test
-        initialize any structures. kwargs contains arguments passed
-        in from the configuration json file.
-
-        setUp doesn't count against the time duration.
-        """
-        self.logger.debug("setUp")
-
-    def tearDown(self):
-        """Cleanup test structures/resources
-
-        This method is called to do any cleanup after the test is complete.
-        """
-        self.logger.debug("tearDown")
-
-    def execute(self, shared_statistic):
-        """This is the main execution entry point called by the driver.
-
-        We register a signal handler to allow us to tearDown gracefully,
-        and then exit. We also keep track of how many runs we do.
-        """
-        signal.signal(signal.SIGHUP, self._shutdown_handler)
-        signal.signal(signal.SIGTERM, self._shutdown_handler)
-
-        while self.max_runs is None or (shared_statistic['runs'] <
-                                        self.max_runs):
-            self.logger.debug("Trigger new run (run %d)" %
-                              shared_statistic['runs'])
-            try:
-                self.run()
-            except Exception:
-                shared_statistic['fails'] += 1
-                self.logger.exception("Failure in run")
-            finally:
-                shared_statistic['runs'] += 1
-                if self.stop_on_error and (shared_statistic['fails'] > 1):
-                    self.logger.warning("Stop process due to"
-                                        "\"stop-on-error\" argument")
-                    self.tearDown()
-                    sys.exit(1)
-
-    @abc.abstractmethod
-    def run(self):
-        """This method is where the stress test code runs."""
-        return
diff --git a/tempest/stress/tools/cleanup.py b/tempest/stress/tools/cleanup.py
deleted file mode 100755
index 3885ba0..0000000
--- a/tempest/stress/tools/cleanup.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2013 Quanta Research Cambridge, Inc.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-
-from tempest.stress import cleanup
-
-cleanup.cleanup()
diff --git a/tempest/test.py b/tempest/test.py
index 6dc065c..cc9410f 100644
--- a/tempest/test.py
+++ b/tempest/test.py
@@ -102,32 +102,6 @@
     return decorator
 
 
-def stresstest(**kwargs):
-    """Add stress test decorator
-
-    For all functions with this decorator a attr stress will be
-    set automatically.
-
-    @param class_setup_per: allowed values are application, process, action
-           ``application``: once in the stress job lifetime
-           ``process``: once in the worker process lifetime
-           ``action``: on each action
-    @param allow_inheritance: allows inheritance of this attribute
-    """
-    def decorator(f):
-        if 'class_setup_per' in kwargs:
-            setattr(f, "st_class_setup_per", kwargs['class_setup_per'])
-        else:
-            setattr(f, "st_class_setup_per", 'process')
-        if 'allow_inheritance' in kwargs:
-            setattr(f, "st_allow_inheritance", kwargs['allow_inheritance'])
-        else:
-            setattr(f, "st_allow_inheritance", False)
-        attr(type='stress')(f)
-        return f
-    return decorator
-
-
 def requires_ext(**kwargs):
     """A decorator to skip tests if an extension is not enabled
 
diff --git a/tempest/tests/stress/__init__.py b/tempest/tests/stress/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/tests/stress/__init__.py
+++ /dev/null
diff --git a/tempest/tests/stress/test_stress.py b/tempest/tests/stress/test_stress.py
deleted file mode 100644
index dfe0291..0000000
--- a/tempest/tests/stress/test_stress.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2013 Deutsche Telekom AG
-# All Rights Reserved.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-#    License for the specific language governing permissions and limitations
-#    under the License.
-
-import shlex
-import subprocess
-
-from oslo_log import log as logging
-from tempest.lib import exceptions
-from tempest.tests import base
-
-LOG = logging.getLogger(__name__)
-
-
-class StressFrameworkTest(base.TestCase):
-    """Basic test for the stress test framework."""
-
-    def _cmd(self, cmd, param):
-        """Executes specified command."""
-        cmd = ' '.join([cmd, param])
-        LOG.info("running: '%s'" % cmd)
-        cmd_str = cmd
-        cmd = shlex.split(cmd)
-        result = ''
-        result_err = ''
-        try:
-            stdout = subprocess.PIPE
-            stderr = subprocess.PIPE
-            proc = subprocess.Popen(
-                cmd, stdout=stdout, stderr=stderr)
-            result, result_err = proc.communicate()
-            if proc.returncode != 0:
-                LOG.debug('error of %s:\n%s' % (cmd_str, result_err))
-                raise exceptions.CommandFailed(proc.returncode,
-                                               cmd,
-                                               result)
-        finally:
-            LOG.debug('output of %s:\n%s' % (cmd_str, result))
-        return proc.returncode
-
-    def test_help_function(self):
-        result = self._cmd("python", "-m tempest.cmd.run_stress -h")
-        self.assertEqual(0, result)
diff --git a/tempest/tests/stress/test_stressaction.py b/tempest/tests/stress/test_stressaction.py
deleted file mode 100644
index 1a1bb67..0000000
--- a/tempest/tests/stress/test_stressaction.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2013 Deutsche Telekom AG
-# All Rights Reserved.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-#    License for the specific language governing permissions and limitations
-#    under the License.
-
-import tempest.stress.stressaction as stressaction
-import tempest.test
-
-
-class FakeStressAction(stressaction.StressAction):
-    def __init__(self, manager, max_runs=None, stop_on_error=False):
-        super(self.__class__, self).__init__(manager, max_runs, stop_on_error)
-        self._run_called = False
-
-    def run(self):
-        self._run_called = True
-
-    @property
-    def run_called(self):
-        return self._run_called
-
-
-class FakeStressActionFailing(stressaction.StressAction):
-    def run(self):
-        raise Exception('FakeStressActionFailing raise exception')
-
-
-class TestStressAction(tempest.test.BaseTestCase):
-    def _bulid_stats_dict(self, runs=0, fails=0):
-        return {'runs': runs, 'fails': fails}
-
-    def testStressTestRun(self):
-        stressAction = FakeStressAction(manager=None, max_runs=1)
-        stats = self._bulid_stats_dict()
-        stressAction.execute(stats)
-        self.assertTrue(stressAction.run_called)
-        self.assertEqual(stats['runs'], 1)
-        self.assertEqual(stats['fails'], 0)
-
-    def testStressMaxTestRuns(self):
-        stressAction = FakeStressAction(manager=None, max_runs=500)
-        stats = self._bulid_stats_dict(runs=499)
-        stressAction.execute(stats)
-        self.assertTrue(stressAction.run_called)
-        self.assertEqual(stats['runs'], 500)
-        self.assertEqual(stats['fails'], 0)
-
-    def testStressTestRunWithException(self):
-        stressAction = FakeStressActionFailing(manager=None, max_runs=1)
-        stats = self._bulid_stats_dict()
-        stressAction.execute(stats)
-        self.assertEqual(stats['runs'], 1)
-        self.assertEqual(stats['fails'], 1)
diff --git a/tempest/tests/test_decorators.py b/tempest/tests/test_decorators.py
index 17dbea0..ae2f2a3 100644
--- a/tempest/tests/test_decorators.py
+++ b/tempest/tests/test_decorators.py
@@ -153,36 +153,6 @@
                 continue
 
 
-class TestStressDecorator(BaseDecoratorsTest):
-    def _test_stresstest_helper(self, expected_frequency='process',
-                                expected_inheritance=False,
-                                **decorator_args):
-        @test.stresstest(**decorator_args)
-        def foo():
-            pass
-        self.assertEqual(getattr(foo, 'st_class_setup_per'),
-                         expected_frequency)
-        self.assertEqual(getattr(foo, 'st_allow_inheritance'),
-                         expected_inheritance)
-        self.assertEqual(set(['stress']), getattr(foo, '__testtools_attrs'))
-
-    def test_stresstest_decorator_default(self):
-        self._test_stresstest_helper()
-
-    def test_stresstest_decorator_class_setup_frequency(self):
-        self._test_stresstest_helper('process', class_setup_per='process')
-
-    def test_stresstest_decorator_class_setup_frequency_non_default(self):
-        self._test_stresstest_helper(expected_frequency='application',
-                                     class_setup_per='application')
-
-    def test_stresstest_decorator_set_frequency_and_inheritance(self):
-        self._test_stresstest_helper(expected_frequency='application',
-                                     expected_inheritance=True,
-                                     class_setup_per='application',
-                                     allow_inheritance=True)
-
-
 class TestRequiresExtDecorator(BaseDecoratorsTest):
     def setUp(self):
         super(TestRequiresExtDecorator, self).setUp()
diff --git a/tox.ini b/tox.ini
index 02eef78..82dba92 100644
--- a/tox.ini
+++ b/tox.ini
@@ -112,14 +112,6 @@
     find . -type f -name "*.pyc" -delete
     tempest run --serial --regex '\[.*\bsmoke\b.*\]' {posargs}
 
-[testenv:stress]
-envdir = .tox/tempest
-sitepackages = {[tempestenv]sitepackages}
-setenv = {[tempestenv]setenv}
-deps = {[tempestenv]deps}
-commands =
-    run-tempest-stress {posargs}
-
 [testenv:venv]
 commands = {posargs}