Merge "Remove Whitebox tests"
diff --git a/doc/source/field_guide/whitebox.rst b/doc/source/field_guide/whitebox.rst
deleted file mode 120000
index 47f6069..0000000
--- a/doc/source/field_guide/whitebox.rst
+++ /dev/null
@@ -1 +0,0 @@
-../../../tempest/whitebox/README.rst
\ No newline at end of file
diff --git a/doc/source/index.rst b/doc/source/index.rst
index f70cdd1..1c32b9c 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -31,7 +31,6 @@
    field_guide/scenario
    field_guide/stress
    field_guide/thirdparty
-   field_guide/whitebox
    field_guide/unit_tests
 
 ------------------
diff --git a/etc/tempest.conf.sample b/etc/tempest.conf.sample
index 8d96858..2f07a19 100644
--- a/etc/tempest.conf.sample
+++ b/etc/tempest.conf.sample
@@ -161,29 +161,6 @@
 # Expected first device name when a volume is attached to an instance
 volume_device_name = vdb
 
-[whitebox]
-# Whitebox options for compute. Whitebox options enable the
-# whitebox test cases, which look at internal Nova database state,
-# SSH into VMs to check instance state, etc.
-
-# Should we run whitebox tests for Compute?
-whitebox_enabled = true
-
-# Path of nova source directory
-source_dir = /opt/stack/nova
-
-# Path of nova configuration file
-config_path = /etc/nova/nova.conf
-
-# Directory containing nova binaries such as nova-manage
-bin_dir = /usr/local/bin
-
-# Connection string to the database of Compute service
-db_uri = mysql://nova:secret@localhost/nova
-
-# Path to a private key file for SSH access to remote hosts
-path_to_private_key = /home/user/.ssh/id_rsa
-
 [compute-admin]
 # This should be the username of a user WITH administrative privileges
 # If not defined the admin user from the identity section will be used
diff --git a/requirements.txt b/requirements.txt
index 877b23c..ab48ec5 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -18,6 +18,4 @@
 keyring>=1.6.1
 testrepository>=0.0.17
 oslo.config>=1.1.0
-# Needed for whitebox testing
-SQLAlchemy>=0.7.8,<=0.7.99
 eventlet>=0.13.0
diff --git a/run_tests.sh b/run_tests.sh
index d672b62..710fbaa 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -10,7 +10,6 @@
   echo "  -f, --force              Force a clean re-build of the virtual environment. Useful when dependencies have been added."
   echo "  -u, --update             Update the virtual environment with any newer package versions"
   echo "  -s, --smoke              Only run smoke tests"
-  echo "  -w, --whitebox           Only run whitebox tests"
   echo "  -t, --serial             Run testr serially"
   echo "  -c, --nova-coverage      Enable Nova coverage collection"
   echo "  -C, --config             Config file location"
@@ -38,7 +37,7 @@
 logging=0
 logging_config=etc/logging.conf
 
-if ! options=$(getopt -o VNnfuswtcphdC:lL: -l virtual-env,no-virtual-env,no-site-packages,force,update,smoke,whitebox,serial,nova-coverage,pep8,help,debug,config:,logging,logging-config: -- "$@")
+if ! options=$(getopt -o VNnfustcphdC:lL: -l virtual-env,no-virtual-env,no-site-packages,force,update,smoke,serial,nova-coverage,pep8,help,debug,config:,logging,logging-config: -- "$@")
 then
     # parse error
     usage
@@ -60,7 +59,6 @@
     -C|--config) config_file=$2; shift;;
     -p|--pep8) let just_pep8=1;;
     -s|--smoke) testrargs="$testrargs smoke";;
-    -w|--whitebox) testrargs="$testrargs whitebox";;
     -t|--serial) serial=1;;
     -l|--logging) logging=1;;
     -L|--logging-config) logging_config=$2; shift;;
diff --git a/tempest/README.rst b/tempest/README.rst
index 33021c8..dbac809 100644
--- a/tempest/README.rst
+++ b/tempest/README.rst
@@ -18,7 +18,6 @@
 |    scenario/ - complex scenario tests
 |    stress/ - stress tests
 |    thirdparty/ - 3rd party api tests
-|    whitebox/ - white box testing
 
 Each of these directories contains different types of tests. What
 belongs in each directory, the rules and examples for good tests, are
@@ -78,11 +77,3 @@
 completely legitimate for Tempest to include tests of 3rdparty APIs,
 but those should be kept separate from the normal OpenStack
 validation.
-
-
-whitebox
---------
-
-Whitebox tests are tests which require access to the database of the
-target OpenStack machine to verify internal state after operations
-are made. White box tests are allowed to use the python clients.
diff --git a/tempest/config.py b/tempest/config.py
index 7245b10..acb0e8d 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -238,36 +238,6 @@
     for opt in ComputeAdminGroup:
         conf.register_opt(opt, group='compute-admin')
 
-
-whitebox_group = cfg.OptGroup(name='whitebox',
-                              title="Whitebox Options")
-
-WhiteboxGroup = [
-    cfg.BoolOpt('whitebox_enabled',
-                default=False,
-                help="Does the test environment support whitebox tests for "
-                     "Compute?"),
-    cfg.StrOpt('db_uri',
-               default=None,
-               help="Connection string to the database of Compute service"),
-    cfg.StrOpt('source_dir',
-               default="/opt/stack/nova",
-               help="Path of nova source directory"),
-    cfg.StrOpt('config_path',
-               default='/etc/nova/nova.conf',
-               help="Path of nova configuration file"),
-    cfg.StrOpt('bin_dir',
-               default="/usr/local/bin/",
-               help="Directory containing nova binaries such as nova-manage"),
-]
-
-
-def register_whitebox_opts(conf):
-    conf.register_group(whitebox_group)
-    for opt in WhiteboxGroup:
-        conf.register_opt(opt, group='whitebox')
-
-
 image_group = cfg.OptGroup(name='image',
                            title="Image Service Options")
 
@@ -650,7 +620,6 @@
 
         register_compute_opts(cfg.CONF)
         register_identity_opts(cfg.CONF)
-        register_whitebox_opts(cfg.CONF)
         register_image_opts(cfg.CONF)
         register_network_opts(cfg.CONF)
         register_volume_opts(cfg.CONF)
@@ -663,7 +632,6 @@
         register_scenario_opts(cfg.CONF)
         register_service_available_opts(cfg.CONF)
         self.compute = cfg.CONF.compute
-        self.whitebox = cfg.CONF.whitebox
         self.identity = cfg.CONF.identity
         self.images = cfg.CONF.image
         self.network = cfg.CONF.network
diff --git a/tempest/whitebox/README.rst b/tempest/whitebox/README.rst
deleted file mode 100644
index 0e45421..0000000
--- a/tempest/whitebox/README.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-Tempest Guide to Whitebox tests
-===============================
-
-
-What are these tests?
----------------------
-
-When you hit the OpenStack API, this causes internal state changes in
-the system. This might be database transitions, vm modifications,
-other deep state changes which aren't really accessible from the
-OpenStack API. These side effects are sometimes important to
-validate.
-
-White box testing is an approach there. In white box testing you are
-given database access to the environment, and can verify internal
-record changes after an API call.
-
-This is an optional part of testing, and requires extra setup, but can
-be useful for validating Tempest internals.
-
-
-Why are these tests in tempest?
--------------------------------
-
-Especially when it comes to something like VM state changing, which is
-a coordination of numerous running daemons, and a functioning VM, it's
-very difficult to get a realistic test like this in unit tests.
-
-
-Scope of these tests
---------------------
-
-White box tests should be limitted to tests where black box testing
-(using the OpenStack API to verify results) isn't sufficient.
-
-As these poke at internals of OpenStack, it should also be realized
-that these tests are very tightly coupled to current implementation of
-OpenStack. They will need to be maintained agressively to keep up with
-internals changes in OpenStack projects.
-
-
-Example of a good test
-----------------------
-
-Pushing VMs through a series of state transitions, and ensuring along
-the way the database state transitions match what's expected.
diff --git a/tempest/whitebox/__init__.py b/tempest/whitebox/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/tempest/whitebox/__init__.py
+++ /dev/null
diff --git a/tempest/whitebox/manager.py b/tempest/whitebox/manager.py
deleted file mode 100644
index 3b1b107..0000000
--- a/tempest/whitebox/manager.py
+++ /dev/null
@@ -1,146 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2012 OpenStack, LLC
-# 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 os
-import shlex
-import subprocess
-import sys
-
-from sqlalchemy import create_engine, MetaData
-
-from tempest.common.ssh import Client
-from tempest.common.utils.data_utils import rand_name
-from tempest import exceptions
-from tempest.openstack.common import log as logging
-from tempest.scenario import manager
-
-LOG = logging.getLogger(__name__)
-
-
-class WhiteboxTest(object):
-
-    """
-    Base test case class mixin for "whitebox tests"
-
-    Whitebox tests are tests that have the following characteristics:
-
-     * Test common and advanced operations against a set of servers
-     * Use a client that it is possible to send random or bad data with
-     * SSH into either a host or a guest in order to validate server state
-     * May execute SQL queries directly against internal databases to verify
-       the state of data records
-    """
-    pass
-
-
-class ComputeWhiteboxTest(manager.OfficialClientTest):
-
-    """
-    Base smoke test case class for OpenStack Compute API (Nova)
-    """
-
-    @classmethod
-    def setUpClass(cls):
-        super(ComputeWhiteboxTest, cls).setUpClass()
-        if not cls.config.whitebox.whitebox_enabled:
-            msg = "Whitebox testing disabled"
-            raise cls.skipException(msg)
-
-        # Add some convenience attributes that tests use...
-        cls.nova_dir = cls.config.whitebox.source_dir
-        cls.compute_bin_dir = cls.config.whitebox.bin_dir
-        cls.compute_config_path = cls.config.whitebox.config_path
-        cls.build_interval = cls.config.compute.build_interval
-        cls.build_timeout = cls.config.compute.build_timeout
-        cls.ssh_user = cls.config.compute.ssh_user
-        cls.image_ref = cls.config.compute.image_ref
-        cls.image_ref_alt = cls.config.compute.image_ref_alt
-        cls.flavor_ref = cls.config.compute.flavor_ref
-        cls.flavor_ref_alt = cls.config.compute.flavor_ref_alt
-
-    # NOTE(afazekas): Mimics the helper method used in the api tests
-    @classmethod
-    def create_server(cls, **kwargs):
-        flavor_ref = cls.config.compute.flavor_ref
-        image_ref = cls.config.compute.image_ref
-        name = rand_name(cls.__name__ + "-instance")
-        if 'name' in kwargs:
-            name = kwargs.pop('name')
-        flavor = kwargs.get('flavor', flavor_ref)
-        image_id = kwargs.get('image_id', image_ref)
-
-        server = cls.compute_client.servers.create(
-            name, image_id, flavor, **kwargs)
-
-        if 'wait_until' in kwargs:
-            cls.status_timeout(cls.compute_client.servers, server.id,
-                               server['id'], kwargs['wait_until'])
-
-        server = cls.compute_client.servers.get(server.id)
-        cls.set_resource(name, server)
-        return server
-
-    @classmethod
-    def get_db_handle_and_meta(cls, database='nova'):
-        """Return a connection handle and metadata of an OpenStack database."""
-        engine_args = {"echo": False,
-                       "convert_unicode": True,
-                       "pool_recycle": 3600
-                       }
-
-        try:
-            engine = create_engine(cls.config.whitebox.db_uri, **engine_args)
-            connection = engine.connect()
-            meta = MetaData()
-            meta.reflect(bind=engine)
-
-        except Exception as e:
-            raise exceptions.SQLException(message=e)
-
-        return connection, meta
-
-    def nova_manage(self, category, action, params):
-        """Executes nova-manage command for the given action."""
-
-        nova_manage_path = os.path.join(self.compute_bin_dir, 'nova-manage')
-        cmd = ' '.join([nova_manage_path, category, action, params])
-
-        if self.deploy_mode == 'devstack-local':
-            if not os.path.isdir(self.nova_dir):
-                sys.exit("Cannot find Nova source directory: %s" %
-                         self.nova_dir)
-
-            cmd = shlex.split(cmd)
-            result = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-
-        # TODO(rohitk): Need to define host connection parameters in config
-        else:
-            client = self.get_ssh_connection(self.config.whitebox.api_host,
-                                             self.config.whitebox.api_user,
-                                             self.config.whitebox.api_passwd)
-            result = client.exec_command(cmd)
-
-        return result
-
-    def get_ssh_connection(self, host, username, password):
-        """Create an SSH connection object to a host."""
-        ssh_timeout = self.config.compute.ssh_timeout
-        ssh_client = Client(host, username, password, ssh_timeout)
-        if not ssh_client.test_connection_auth():
-            raise exceptions.SSHTimeout()
-        else:
-            return ssh_client
diff --git a/tempest/whitebox/test_images_whitebox.py b/tempest/whitebox/test_images_whitebox.py
deleted file mode 100644
index 06dcd7f..0000000
--- a/tempest/whitebox/test_images_whitebox.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2012 OpenStack, LLC
-# 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.
-
-from tempest.common.utils.data_utils import rand_name
-from tempest.openstack.common import log as logging
-from tempest.whitebox import manager
-
-from novaclient import exceptions
-
-LOG = logging.getLogger(__name__)
-
-
-class ImagesWhiteboxTest(manager.ComputeWhiteboxTest):
-    _interface = 'json'
-
-    @classmethod
-    def setUpClass(cls):
-        super(ImagesWhiteboxTest, cls).setUpClass()
-        cls.create_image = cls.compute_client.servers.create_image
-        cls.connection, cls.meta = cls.get_db_handle_and_meta()
-        cls.shared_server = cls.create_server()
-        cls.image_ids = []
-
-    @classmethod
-    def tearDownClass(cls):
-        """Delete images and server after a test is executed."""
-        for image_id in cls.image_ids:
-            cls.client.delete_image(image_id)
-            cls.image_ids.remove(image_id)
-        super(ImagesWhiteboxTest, cls).tearDownClass()
-
-    @classmethod
-    def update_state(self, server_id, vm_state, task_state, deleted=0):
-        """Update states of an instance in database for validation."""
-        if not task_state:
-            task_state = "NULL"
-
-        instances = self.meta.tables['instances']
-        stmt = instances.update().where(instances.c.uuid == server_id).values(
-            deleted=deleted,
-            vm_state=vm_state,
-            task_state=task_state)
-
-        self.connection.execute(stmt, autocommit=True)
-
-    def _test_create_image_409_base(self, vm_state, task_state, deleted=0):
-        """Base method for create image tests based on vm and task states."""
-        try:
-            self.update_state(self.shared_server.id, vm_state,
-                              task_state, deleted)
-
-            image_name = rand_name('snap-')
-            self.assertRaises(exceptions.Conflict,
-                              self.create_image,
-                              self.shared_server.id, image_name)
-        except Exception:
-            LOG.error("Should not allow create image when vm_state=%s and "
-                      "task_state=%s" % (vm_state, task_state))
-            raise
-        finally:
-            self.update_state(self.shared_server.id, 'active', None)
-
-    def test_create_image_when_vm_eq_building_task_eq_scheduling(self):
-        # 409 error when instance states are building,scheduling
-        self._test_create_image_409_base("building", "scheduling")
-
-    def test_create_image_when_vm_eq_building_task_eq_networking(self):
-        # 409 error when instance states are building,networking
-        self._test_create_image_409_base("building", "networking")
-
-    def test_create_image_when_vm_eq_building_task_eq_bdm(self):
-        # 409 error when instance states are building,block_device_mapping
-        self._test_create_image_409_base("building", "block_device_mapping")
-
-    def test_create_image_when_vm_eq_building_task_eq_spawning(self):
-        # 409 error when instance states are building,spawning
-        self._test_create_image_409_base("building", "spawning")
-
-    def test_create_image_when_vm_eq_active_task_eq_image_backup(self):
-        # 409 error when instance states are active,image_backup
-        self._test_create_image_409_base("active", "image_backup")
-
-    def test_create_image_when_vm_eq_resized_task_eq_resize_prep(self):
-        # 409 error when instance states are resized,resize_prep
-        self._test_create_image_409_base("resized", "resize_prep")
-
-    def test_create_image_when_vm_eq_resized_task_eq_resize_migrating(self):
-        # 409 error when instance states are resized,resize_migrating
-        self._test_create_image_409_base("resized", "resize_migrating")
-
-    def test_create_image_when_vm_eq_resized_task_eq_resize_migrated(self):
-        # 409 error when instance states are resized,resize_migrated
-        self._test_create_image_409_base("resized", "resize_migrated")
-
-    def test_create_image_when_vm_eq_resized_task_eq_resize_finish(self):
-        # 409 error when instance states are resized,resize_finish
-        self._test_create_image_409_base("resized", "resize_finish")
-
-    def test_create_image_when_vm_eq_resized_task_eq_resize_reverting(self):
-        # 409 error when instance states are resized,resize_reverting
-        self._test_create_image_409_base("resized", "resize_reverting")
-
-    def test_create_image_when_vm_eq_resized_task_eq_resize_confirming(self):
-        # 409 error when instance states are resized,resize_confirming
-        self._test_create_image_409_base("resized", "resize_confirming")
-
-    def test_create_image_when_vm_eq_active_task_eq_resize_verify(self):
-        # 409 error when instance states are active,resize_verify
-        self._test_create_image_409_base("active", "resize_verify")
-
-    def test_create_image_when_vm_eq_active_task_eq_updating_password(self):
-        # 409 error when instance states are active,updating_password
-        self._test_create_image_409_base("active", "updating_password")
-
-    def test_create_image_when_vm_eq_active_task_eq_rebuilding(self):
-        # 409 error when instance states are active,rebuilding
-        self._test_create_image_409_base("active", "rebuilding")
-
-    def test_create_image_when_vm_eq_active_task_eq_rebooting(self):
-        # 409 error when instance states are active,rebooting
-        self._test_create_image_409_base("active", "rebooting")
-
-    def test_create_image_when_vm_eq_building_task_eq_deleting(self):
-        # 409 error when instance states are building,deleting
-        self._test_create_image_409_base("building", "deleting")
-
-    def test_create_image_when_vm_eq_active_task_eq_deleting(self):
-        # 409 error when instance states are active,deleting
-        self._test_create_image_409_base("active", "deleting")
-
-    def test_create_image_when_vm_eq_error_task_eq_building(self):
-        # 409 error when instance states are error,building
-        self._test_create_image_409_base("error", "building")
-
-    def test_create_image_when_vm_eq_error_task_eq_none(self):
-        # 409 error when instance states are error,None
-        self._test_create_image_409_base("error", None)
-
-    def test_create_image_when_vm_eq_deleted_task_eq_none(self):
-        # 409 error when instance states are deleted,None
-        self._test_create_image_409_base("deleted", None)
-
-    def test_create_image_when_vm_eq_resized_task_eq_none(self):
-        # 409 error when instance states are resized,None
-        self._test_create_image_409_base("resized", None)
-
-    def test_create_image_when_vm_eq_error_task_eq_resize_prep(self):
-        # 409 error when instance states are error,resize_prep
-        self._test_create_image_409_base("error", "resize_prep")
diff --git a/tempest/whitebox/test_servers_whitebox.py b/tempest/whitebox/test_servers_whitebox.py
deleted file mode 100644
index b6c888c..0000000
--- a/tempest/whitebox/test_servers_whitebox.py
+++ /dev/null
@@ -1,184 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2012 OpenStack, LLC
-# 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.
-
-from tempest.api.identity.base import BaseIdentityAdminTest
-from tempest import exceptions
-from tempest.openstack.common import log as logging
-from tempest.whitebox import manager
-
-LOG = logging.getLogger(__name__)
-
-
-class ServersWhiteboxTest(manager.ComputeWhiteboxTest):
-    _interface = 'json'
-
-    @classmethod
-    def setUpClass(cls):
-        super(ServersWhiteboxTest, cls).setUpClass()
-        # NOTE(afazekas): Strange relationship
-        BaseIdentityAdminTest.setUpClass()
-        cls.client = cls.servers_client
-        cls.img_client = cls.images_client
-        cls.admin_client = BaseIdentityAdminTest.client
-
-        cls.connection, cls.meta = cls.get_db_handle_and_meta()
-
-        resp, tenants = cls.admin_client.list_tenants()
-        cls.tenant_id = [
-            tnt['id']
-            for tnt in tenants if tnt['name'] == cls.config.compute.tenant_name
-        ][0]
-
-        cls.shared_server = cls.create_server()
-
-    def tearDown(cls):
-        for server in cls.servers:
-            try:
-                cls.client.delete_server(server['id'])
-            except exceptions.NotFound:
-                continue
-
-    def update_state(self, server_id, vm_state, task_state, deleted=0):
-        """Update states of an instance in database for validation."""
-        if not task_state:
-            task_state = 'NULL'
-
-        instances = self.meta.tables['instances']
-        stmt = instances.update().where(instances.c.uuid == server_id).values(
-            deleted=deleted,
-            vm_state=vm_state,
-            task_state=task_state)
-        self.connection.execute(stmt, autocommit=True)
-
-    def _test_delete_server_base(self, vm_state, task_state):
-        """
-        Base method for delete server tests based on vm and task states.
-        Validates for successful server termination.
-        """
-        server = self.create_server()
-        self.update_state(server['id'], vm_state, task_state)
-
-        resp, body = self.client.delete_server(server['id'])
-        self.assertEqual('204', resp['status'])
-        self.client.wait_for_server_termination(server['id'],
-                                                ignore_error=True)
-
-        instances = self.meta.tables['instances']
-        stmt = instances.select().where(instances.c.uuid == server['id'])
-        result = self.connection.execute(stmt).first()
-
-        self.assertEqual(True, result.deleted > 0)
-        self.assertEqual('deleted', result.vm_state)
-        self.assertEqual(None, result.task_state)
-
-    def _test_delete_server_403_base(self, vm_state, task_state):
-        """
-        Base method for delete server tests based on vm and task states.
-        Validates for 403 error code.
-        """
-        try:
-            self.update_state(self.shared_server['id'], vm_state, task_state)
-
-            self.assertRaises(exceptions.Unauthorized,
-                              self.client.delete_server,
-                              self.shared_server['id'])
-        except Exception:
-            LOG.error("Should not allow delete server when vm_state=%s and "
-                      "task_state=%s" % (vm_state, task_state))
-            raise
-        finally:
-            self.update_state(self.shared_server['id'], 'active', None)
-
-    def test_delete_server_when_vm_eq_building_task_eq_networking(self):
-        # Delete server when instance states are building,networking
-        self._test_delete_server_base('building', 'networking')
-
-    def test_delete_server_when_vm_eq_building_task_eq_bdm(self):
-        # Delete server when instance states are building,block device mapping
-        self._test_delete_server_base('building', 'block_device_mapping')
-
-    def test_delete_server_when_vm_eq_building_task_eq_spawning(self):
-        # Delete server when instance states are building,spawning
-        self._test_delete_server_base('building', 'spawning')
-
-    def test_delete_server_when_vm_eq_active_task_eq_image_backup(self):
-        # Delete server when instance states are active,image_backup
-        self._test_delete_server_base('active', 'image_backup')
-
-    def test_delete_server_when_vm_eq_active_task_eq_rebuilding(self):
-        # Delete server when instance states are active,rebuilding
-        self._test_delete_server_base('active', 'rebuilding')
-
-    def test_delete_server_when_vm_eq_error_task_eq_spawning(self):
-        # Delete server when instance states are error,spawning
-        self._test_delete_server_base('error', 'spawning')
-
-    def test_delete_server_when_vm_eq_resized_task_eq_resize_prep(self):
-        # Delete server when instance states are resized,resize_prep
-        self._test_delete_server_403_base('resized', 'resize_prep')
-
-    def test_delete_server_when_vm_eq_resized_task_eq_resize_migrating(self):
-        # Delete server when instance states are resized,resize_migrating
-        self._test_delete_server_403_base('resized', 'resize_migrating')
-
-    def test_delete_server_when_vm_eq_resized_task_eq_resize_migrated(self):
-        # Delete server when instance states are resized,resize_migrated
-        self._test_delete_server_403_base('resized', 'resize_migrated')
-
-    def test_delete_server_when_vm_eq_resized_task_eq_resize_finish(self):
-        # Delete server when instance states are resized,resize_finish
-        self._test_delete_server_403_base('resized', 'resize_finish')
-
-    def test_delete_server_when_vm_eq_resized_task_eq_resize_reverting(self):
-        # Delete server when instance states are resized,resize_reverting
-        self._test_delete_server_403_base('resized', 'resize_reverting')
-
-    def test_delete_server_when_vm_eq_resized_task_eq_resize_confirming(self):
-        # Delete server when instance states are resized,resize_confirming
-        self._test_delete_server_403_base('resized', 'resize_confirming')
-
-    def test_delete_server_when_vm_eq_active_task_eq_resize_verify(self):
-        # Delete server when instance states are active,resize_verify
-        self._test_delete_server_base('active', 'resize_verify')
-
-    def test_delete_server_when_vm_eq_active_task_eq_rebooting(self):
-        # Delete server when instance states are active,rebooting
-        self._test_delete_server_base('active', 'rebooting')
-
-    def test_delete_server_when_vm_eq_building_task_eq_deleting(self):
-        # Delete server when instance states are building,deleting
-        self._test_delete_server_base('building', 'deleting')
-
-    def test_delete_server_when_vm_eq_active_task_eq_deleting(self):
-        # Delete server when instance states are active,deleting
-        self._test_delete_server_base('active', 'deleting')
-
-    def test_delete_server_when_vm_eq_error_task_eq_none(self):
-        # Delete server when instance states are error,None
-        self._test_delete_server_base('error', None)
-
-    def test_delete_server_when_vm_eq_resized_task_eq_none(self):
-        # Delete server when instance states are resized,None
-        self._test_delete_server_403_base('resized', None)
-
-    def test_delete_server_when_vm_eq_error_task_eq_resize_prep(self):
-        # Delete server when instance states are error,resize_prep
-        self._test_delete_server_base('error', 'resize_prep')
-
-    def test_delete_server_when_vm_eq_error_task_eq_error(self):
-        # Delete server when instance states are error,error
-        self._test_delete_server_base('error', 'error')