From 912a21a8fd6ba0582c1196ced0095afd149dfe3a Mon Sep 17 00:00:00 2001
From: Stephen Finucane <stephenfin@redhat.com>
Date: Wed, 6 Sep 2023 11:42:20 +0100
Subject: [PATCH] tests: Add compute v2 FakeClientMixin

This ensures we are speccing the compute proxy API.

Change-Id: I7adbf2666d71f222fbd9c1479216f72cb9893348
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
---
 .../unit/common/test_availability_zone.py     | 16 ++---------
 .../tests/unit/common/test_limits.py          |  1 -
 .../tests/unit/common/test_quota.py           |  1 -
 .../tests/unit/compute/v2/fakes.py            | 28 +++++++++++++++----
 .../tests/unit/compute/v2/test_aggregate.py   | 17 -----------
 .../tests/unit/compute/v2/test_console.py     | 17 ++---------
 .../tests/unit/compute/v2/test_flavor.py      | 21 +-------------
 .../tests/unit/compute/v2/test_host.py        | 18 ++----------
 .../tests/unit/compute/v2/test_hypervisor.py  | 15 ++--------
 .../unit/compute/v2/test_hypervisor_stats.py  |  5 ----
 .../tests/unit/compute/v2/test_keypair.py     |  9 ------
 .../tests/unit/compute/v2/test_server.py      |  5 ----
 .../unit/compute/v2/test_server_backup.py     | 13 ---------
 .../unit/compute/v2/test_server_event.py      |  9 ------
 .../unit/compute/v2/test_server_group.py      |  9 ------
 .../unit/compute/v2/test_server_image.py      | 13 ---------
 .../unit/compute/v2/test_server_migration.py  |  5 ----
 .../unit/compute/v2/test_server_volume.py     | 14 ++--------
 .../tests/unit/compute/v2/test_service.py     | 16 ++---------
 .../tests/unit/compute/v2/test_usage.py       |  5 ----
 .../network/v2/test_floating_ip_compute.py    | 16 +++--------
 .../v2/test_floating_ip_pool_compute.py       | 10 +------
 .../unit/network/v2/test_network_compute.py   | 14 +++-------
 .../network/v2/test_security_group_compute.py | 18 ++++--------
 .../v2/test_security_group_rule_compute.py    | 16 +++--------
 .../unit/volume/v3/test_volume_attachment.py  |  1 -
 26 files changed, 55 insertions(+), 257 deletions(-)

diff --git a/openstackclient/tests/unit/common/test_availability_zone.py b/openstackclient/tests/unit/common/test_availability_zone.py
index 1e5cbf9d37..0965c01ce4 100644
--- a/openstackclient/tests/unit/common/test_availability_zone.py
+++ b/openstackclient/tests/unit/common/test_availability_zone.py
@@ -10,8 +10,6 @@
 #   License for the specific language governing permissions and limitations
 #   under the License.
 
-from unittest import mock
-
 from openstackclient.common import availability_zone
 from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
 from openstackclient.tests.unit.network.v2 import fakes as network_fakes
@@ -78,22 +76,12 @@ def _build_network_az_datalist(network_az, long_datalist=False):
     return (datalist,)
 
 
-class TestAvailabilityZone(
+class TestAvailabilityZoneList(
     network_fakes.FakeClientMixin,
     volume_fakes.FakeClientMixin,
+    compute_fakes.FakeClientMixin,
     utils.TestCommand,
 ):
-    def setUp(self):
-        super().setUp()
-
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.availability_zones = mock.Mock()
-
-
-class TestAvailabilityZoneList(TestAvailabilityZone):
     compute_azs = compute_fakes.create_availability_zones()
     volume_azs = volume_fakes.create_availability_zones(count=1)
     network_azs = network_fakes.create_availability_zones()
diff --git a/openstackclient/tests/unit/common/test_limits.py b/openstackclient/tests/unit/common/test_limits.py
index ecbbe534ab..86b17b1826 100644
--- a/openstackclient/tests/unit/common/test_limits.py
+++ b/openstackclient/tests/unit/common/test_limits.py
@@ -27,7 +27,6 @@ class TestComputeLimits(compute_fakes.TestComputev2):
     def setUp(self):
         super().setUp()
         self.app.client_manager.volume_endpoint_enabled = False
-        self.compute_client = self.app.client_manager.compute
 
         self.fake_limits = compute_fakes.FakeLimits()
         self.compute_client.limits.get.return_value = self.fake_limits
diff --git a/openstackclient/tests/unit/common/test_quota.py b/openstackclient/tests/unit/common/test_quota.py
index 8a15fb4c48..1884321a33 100644
--- a/openstackclient/tests/unit/common/test_quota.py
+++ b/openstackclient/tests/unit/common/test_quota.py
@@ -48,7 +48,6 @@ class TestQuota(compute_fakes.TestComputev2):
         self.projects_mock.reset_mock()
         self.projects_mock.get.return_value = self.projects[0]
 
-        self.compute_client = self.app.client_manager.compute
         self.compute_quotas_mock = self.compute_client.quotas
         self.compute_quotas_mock.reset_mock()
         self.compute_quotas_class_mock = self.compute_client.quota_classes
diff --git a/openstackclient/tests/unit/compute/v2/fakes.py b/openstackclient/tests/unit/compute/v2/fakes.py
index 5632458634..3e9f4ad9bf 100644
--- a/openstackclient/tests/unit/compute/v2/fakes.py
+++ b/openstackclient/tests/unit/compute/v2/fakes.py
@@ -19,6 +19,7 @@ from unittest import mock
 import uuid
 
 from novaclient import api_versions
+from openstack.compute.v2 import _proxy
 from openstack.compute.v2 import aggregate as _aggregate
 from openstack.compute.v2 import availability_zone as _availability_zone
 from openstack.compute.v2 import extension as _extension
@@ -148,12 +149,7 @@ class FakeComputev2Client(object):
         self.api_version = api_versions.APIVersion('2.1')
 
 
-class TestComputev2(
-    network_fakes.FakeClientMixin,
-    image_fakes.FakeClientMixin,
-    volume_fakes.FakeClientMixin,
-    utils.TestCommand,
-):
+class FakeClientMixin:
     def setUp(self):
         super().setUp()
 
@@ -168,6 +164,26 @@ class TestComputev2(
             endpoint=fakes.AUTH_URL,
         )
 
+        # TODO(stephenfin): Rename to 'compute_client' once all commands are
+        # migrated to SDK
+        self.app.client_manager.sdk_connection.compute = mock.Mock(
+            _proxy.Proxy
+        )
+        self.compute_sdk_client = (
+            self.app.client_manager.sdk_connection.compute
+        )
+
+
+class TestComputev2(
+    network_fakes.FakeClientMixin,
+    image_fakes.FakeClientMixin,
+    volume_fakes.FakeClientMixin,
+    FakeClientMixin,
+    utils.TestCommand,
+):
+    def setUp(self):
+        super().setUp()
+
         self.app.client_manager.identity = identity_fakes.FakeIdentityv2Client(
             endpoint=fakes.AUTH_URL,
             token=fakes.AUTH_TOKEN,
diff --git a/openstackclient/tests/unit/compute/v2/test_aggregate.py b/openstackclient/tests/unit/compute/v2/test_aggregate.py
index 52f6759a89..13a6437200 100644
--- a/openstackclient/tests/unit/compute/v2/test_aggregate.py
+++ b/openstackclient/tests/unit/compute/v2/test_aggregate.py
@@ -55,23 +55,6 @@ class TestAggregate(compute_fakes.TestComputev2):
         fake_ag.uuid,
     )
 
-    def setUp(self):
-        super(TestAggregate, self).setUp()
-
-        # Get a shortcut to the AggregateManager Mock
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.aggregates = mock.Mock()
-        self.compute_sdk_client.find_aggregate = mock.Mock()
-        self.compute_sdk_client.create_aggregate = mock.Mock()
-        self.compute_sdk_client.update_aggregate = mock.Mock()
-        self.compute_sdk_client.update_aggregate = mock.Mock()
-        self.compute_sdk_client.set_aggregate_metadata = mock.Mock()
-        self.compute_sdk_client.add_host_to_aggregate = mock.Mock()
-        self.compute_sdk_client.remove_host_from_aggregate = mock.Mock()
-
 
 class TestAggregateAddHost(TestAggregate):
     def setUp(self):
diff --git a/openstackclient/tests/unit/compute/v2/test_console.py b/openstackclient/tests/unit/compute/v2/test_console.py
index 07772fa44f..c04f55cb05 100644
--- a/openstackclient/tests/unit/compute/v2/test_console.py
+++ b/openstackclient/tests/unit/compute/v2/test_console.py
@@ -20,20 +20,7 @@ from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
 from openstackclient.tests.unit import utils
 
 
-class TestConsole(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestConsole, self).setUp()
-
-        # SDK mock
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.find_server = mock.Mock()
-        self.compute_sdk_client.get_server_console_output = mock.Mock()
-
-
-class TestConsoleLog(TestConsole):
+class TestConsoleLog(compute_fakes.TestComputev2):
     _server = compute_fakes.create_one_server()
 
     def setUp(self):
@@ -89,7 +76,7 @@ class TestConsoleLog(TestConsole):
         )
 
 
-class TestConsoleUrlShow(TestConsole):
+class TestConsoleUrlShow(compute_fakes.TestComputev2):
     _server = compute_fakes.create_one_server()
 
     def setUp(self):
diff --git a/openstackclient/tests/unit/compute/v2/test_flavor.py b/openstackclient/tests/unit/compute/v2/test_flavor.py
index 1f28545639..e81d2bf707 100644
--- a/openstackclient/tests/unit/compute/v2/test_flavor.py
+++ b/openstackclient/tests/unit/compute/v2/test_flavor.py
@@ -30,25 +30,6 @@ class TestFlavor(compute_fakes.TestComputev2):
     def setUp(self):
         super(TestFlavor, self).setUp()
 
-        # SDK mock
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.flavors = mock.Mock()
-        self.compute_sdk_client.find_flavor = mock.Mock()
-        self.compute_sdk_client.delete_flavor = mock.Mock()
-        self.compute_sdk_client.update_flavor = mock.Mock()
-        self.compute_sdk_client.flavor_add_tenant_access = mock.Mock()
-        self.compute_sdk_client.flavor_remove_tenant_access = mock.Mock()
-        self.compute_sdk_client.create_flavor_extra_specs = mock.Mock()
-        self.compute_sdk_client.update_flavor_extra_specs_property = (
-            mock.Mock()
-        )
-        self.compute_sdk_client.delete_flavor_extra_specs_property = (
-            mock.Mock()
-        )
-
         self.projects_mock = self.app.client_manager.identity.projects
         self.projects_mock.reset_mock()
 
@@ -1193,7 +1174,7 @@ class TestFlavorUnset(TestFlavor):
             self.flavor.id,
             self.project.id,
         )
-        self.compute_sdk_client.delete_flavor_extra_specs_proerty.assert_not_called()
+        self.compute_sdk_client.delete_flavor_extra_specs_property.assert_not_called()
         self.assertIsNone(result)
 
     def test_flavor_unset_no_project(self):
diff --git a/openstackclient/tests/unit/compute/v2/test_host.py b/openstackclient/tests/unit/compute/v2/test_host.py
index 6fbce9afaa..8a899ea2bd 100644
--- a/openstackclient/tests/unit/compute/v2/test_host.py
+++ b/openstackclient/tests/unit/compute/v2/test_host.py
@@ -21,20 +21,8 @@ from openstackclient.tests.unit import fakes
 from openstackclient.tests.unit import utils as tests_utils
 
 
-class TestHost(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestHost, self).setUp()
-
-        # Get a shortcut to the compute client
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.get = mock.Mock()
-
-
 @mock.patch('openstackclient.api.compute_v2.APIv2.host_list')
-class TestHostList(TestHost):
+class TestHostList(compute_fakes.TestComputev2):
     _host = compute_fakes.create_one_host()
 
     def setUp(self):
@@ -93,7 +81,7 @@ class TestHostList(TestHost):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.host_set')
-class TestHostSet(TestHost):
+class TestHostSet(compute_fakes.TestComputev2):
     def setUp(self):
         super(TestHostSet, self).setUp()
 
@@ -143,7 +131,7 @@ class TestHostSet(TestHost):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.host_show')
-class TestHostShow(TestHost):
+class TestHostShow(compute_fakes.TestComputev2):
     _host = compute_fakes.create_one_host()
 
     def setUp(self):
diff --git a/openstackclient/tests/unit/compute/v2/test_hypervisor.py b/openstackclient/tests/unit/compute/v2/test_hypervisor.py
index 1651b04a18..0499ae59e8 100644
--- a/openstackclient/tests/unit/compute/v2/test_hypervisor.py
+++ b/openstackclient/tests/unit/compute/v2/test_hypervisor.py
@@ -25,18 +25,7 @@ from openstackclient.compute.v2 import hypervisor
 from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
 
 
-class TestHypervisor(compute_fakes.TestComputev2):
-    def setUp(self):
-        super().setUp()
-
-        # Create and get a shortcut to the compute client mock
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.reset_mock()
-
-
-class TestHypervisorList(TestHypervisor):
+class TestHypervisorList(compute_fakes.TestComputev2):
     def setUp(self):
         super().setUp()
 
@@ -294,7 +283,7 @@ class TestHypervisorList(TestHypervisor):
         )
 
 
-class TestHypervisorShow(TestHypervisor):
+class TestHypervisorShow(compute_fakes.TestComputev2):
     def setUp(self):
         super().setUp()
 
diff --git a/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py b/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py
index b35475cfca..bb755310a4 100644
--- a/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py
+++ b/openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py
@@ -23,11 +23,6 @@ class TestHypervisorStats(compute_fakes.TestComputev2):
     def setUp(self):
         super(TestHypervisorStats, self).setUp()
 
-        # Get a shortcut to the compute client hypervisors mock
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
         self.compute_sdk_client.get = mock.Mock()
 
 
diff --git a/openstackclient/tests/unit/compute/v2/test_keypair.py b/openstackclient/tests/unit/compute/v2/test_keypair.py
index 7fd56d4e8f..39d5739d17 100644
--- a/openstackclient/tests/unit/compute/v2/test_keypair.py
+++ b/openstackclient/tests/unit/compute/v2/test_keypair.py
@@ -40,15 +40,6 @@ class TestKeypair(compute_fakes.TestComputev2):
             loaded=True,
         )
 
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.keypairs = mock.Mock()
-        self.compute_sdk_client.create_keypair = mock.Mock()
-        self.compute_sdk_client.delete_keypair = mock.Mock()
-        self.compute_sdk_client.find_keypair = mock.Mock()
-
 
 class TestKeypairCreate(TestKeypair):
     def setUp(self):
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index ea29c1b78c..db6dfc969d 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -70,11 +70,6 @@ class TestServer(compute_fakes.TestComputev2):
         self.servers_mock = self.compute_client.servers
         self.servers_mock.reset_mock()
 
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-
         # Get a shortcut to the compute client ServerMigrationsManager Mock
         self.server_migrations_mock = self.compute_client.server_migrations
         self.server_migrations_mock.reset_mock()
diff --git a/openstackclient/tests/unit/compute/v2/test_server_backup.py b/openstackclient/tests/unit/compute/v2/test_server_backup.py
index 5075672662..a72f96f161 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_backup.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_backup.py
@@ -23,21 +23,8 @@ from openstackclient.tests.unit.image.v2 import fakes as image_fakes
 
 
 class TestServerBackup(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestServerBackup, self).setUp()
-
-        # Get a shortcut to the compute client ServerManager Mock
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-
-        # Set object attributes to be tested. Could be overwritten in subclass.
-        self.attrs = {}
-
     def setup_servers_mock(self, count):
         servers = compute_fakes.create_sdk_servers(
-            attrs=self.attrs,
             count=count,
         )
 
diff --git a/openstackclient/tests/unit/compute/v2/test_server_event.py b/openstackclient/tests/unit/compute/v2/test_server_event.py
index 5598c822e1..ce9345bb01 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_event.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_event.py
@@ -29,15 +29,6 @@ class TestServerEvent(compute_fakes.TestComputev2):
     def setUp(self):
         super(TestServerEvent, self).setUp()
 
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.find_server = mock.Mock()
-        self.compute_sdk_client.server_actions = mock.Mock()
-        self.compute_sdk_client.get_server_action = mock.Mock()
-        self.compute_sdk_client.reset_mock()
-
         patcher = mock.patch.object(
             sdk_utils, 'supports_microversion', return_value=True
         )
diff --git a/openstackclient/tests/unit/compute/v2/test_server_group.py b/openstackclient/tests/unit/compute/v2/test_server_group.py
index 44fa083f1d..3356218ecc 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_group.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_group.py
@@ -47,15 +47,6 @@ class TestServerGroup(compute_fakes.TestComputev2):
         fake_server_group.user_id,
     )
 
-    def setUp(self):
-        super().setUp()
-
-        # Create and get a shortcut to the compute client mock
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-        self.compute_sdk_client.reset_mock()
-
 
 class TestServerGroupCreate(TestServerGroup):
     def setUp(self):
diff --git a/openstackclient/tests/unit/compute/v2/test_server_image.py b/openstackclient/tests/unit/compute/v2/test_server_image.py
index 317c055e8f..8ba6d12620 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_image.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_image.py
@@ -22,21 +22,8 @@ from openstackclient.tests.unit.image.v2 import fakes as image_fakes
 
 
 class TestServerImage(compute_fakes.TestComputev2):
-    def setUp(self):
-        super().setUp()
-
-        # Get a shortcut to the compute client ServerManager Mock
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-
-        # Set object attributes to be tested. Could be overwritten in subclass.
-        self.attrs = {}
-
     def setup_servers_mock(self, count):
         servers = compute_fakes.create_sdk_servers(
-            attrs=self.attrs,
             count=count,
         )
 
diff --git a/openstackclient/tests/unit/compute/v2/test_server_migration.py b/openstackclient/tests/unit/compute/v2/test_server_migration.py
index 236e28b45e..8cb4df4fe1 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_migration.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_migration.py
@@ -34,11 +34,6 @@ class TestServerMigration(compute_fakes.TestComputev2):
         self.server_migrations_mock = self.compute_client.server_migrations
         self.server_migrations_mock.reset_mock()
 
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-
         patcher = mock.patch.object(
             sdk_utils, 'supports_microversion', return_value=True
         )
diff --git a/openstackclient/tests/unit/compute/v2/test_server_volume.py b/openstackclient/tests/unit/compute/v2/test_server_volume.py
index 316d6de770..439ff048d3 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_volume.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_volume.py
@@ -20,17 +20,7 @@ from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
 from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
 
 
-class TestServerVolume(compute_fakes.TestComputev2):
-    def setUp(self):
-        super().setUp()
-
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-
-
-class TestServerVolumeList(TestServerVolume):
+class TestServerVolumeList(compute_fakes.TestComputev2):
     def setUp(self):
         super().setUp()
 
@@ -230,7 +220,7 @@ class TestServerVolumeList(TestServerVolume):
         )
 
 
-class TestServerVolumeUpdate(TestServerVolume):
+class TestServerVolumeUpdate(compute_fakes.TestComputev2):
     def setUp(self):
         super().setUp()
 
diff --git a/openstackclient/tests/unit/compute/v2/test_service.py b/openstackclient/tests/unit/compute/v2/test_service.py
index 31b7cf82c2..d658b1507d 100644
--- a/openstackclient/tests/unit/compute/v2/test_service.py
+++ b/openstackclient/tests/unit/compute/v2/test_service.py
@@ -22,17 +22,7 @@ from openstackclient.compute.v2 import service
 from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
 
 
-class TestService(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestService, self).setUp()
-
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-
-
-class TestServiceDelete(TestService):
+class TestServiceDelete(compute_fakes.TestComputev2):
     services = compute_fakes.create_services(count=2)
 
     def setUp(self):
@@ -105,7 +95,7 @@ class TestServiceDelete(TestService):
         )
 
 
-class TestServiceList(TestService):
+class TestServiceList(compute_fakes.TestComputev2):
     service = compute_fakes.create_one_service()
 
     columns = (
@@ -233,7 +223,7 @@ class TestServiceList(TestService):
         self.assertEqual(data_long, list(data))
 
 
-class TestServiceSet(TestService):
+class TestServiceSet(compute_fakes.TestComputev2):
     def setUp(self):
         super(TestServiceSet, self).setUp()
 
diff --git a/openstackclient/tests/unit/compute/v2/test_usage.py b/openstackclient/tests/unit/compute/v2/test_usage.py
index 9ddc6c82df..ad8a8b5046 100644
--- a/openstackclient/tests/unit/compute/v2/test_usage.py
+++ b/openstackclient/tests/unit/compute/v2/test_usage.py
@@ -22,11 +22,6 @@ class TestUsage(compute_fakes.TestComputev2):
     def setUp(self):
         super(TestUsage, self).setUp()
 
-        self.app.client_manager.sdk_connection.compute = mock.Mock()
-        self.compute_sdk_client = (
-            self.app.client_manager.sdk_connection.compute
-        )
-
         self.projects_mock = self.app.client_manager.identity.projects
         self.projects_mock.reset_mock()
 
diff --git a/openstackclient/tests/unit/network/v2/test_floating_ip_compute.py b/openstackclient/tests/unit/network/v2/test_floating_ip_compute.py
index 1385b09df2..ed6ec12dcf 100644
--- a/openstackclient/tests/unit/network/v2/test_floating_ip_compute.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip_compute.py
@@ -24,16 +24,8 @@ from openstackclient.tests.unit import utils as tests_utils
 # Tests for Nova network
 
 
-class TestFloatingIPCompute(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestFloatingIPCompute, self).setUp()
-
-        # Get a shortcut to the compute client
-        self.compute_client = self.app.client_manager.compute
-
-
 @mock.patch('openstackclient.api.compute_v2.APIv2.floating_ip_create')
-class TestCreateFloatingIPCompute(TestFloatingIPCompute):
+class TestCreateFloatingIPCompute(compute_fakes.TestComputev2):
     # The floating ip to be deleted.
     _floating_ip = compute_fakes.create_one_floating_ip()
 
@@ -93,7 +85,7 @@ class TestCreateFloatingIPCompute(TestFloatingIPCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.floating_ip_delete')
-class TestDeleteFloatingIPCompute(TestFloatingIPCompute):
+class TestDeleteFloatingIPCompute(compute_fakes.TestComputev2):
     # The floating ips to be deleted.
     _floating_ips = compute_fakes.create_floating_ips(count=2)
 
@@ -169,7 +161,7 @@ class TestDeleteFloatingIPCompute(TestFloatingIPCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.floating_ip_list')
-class TestListFloatingIPCompute(TestFloatingIPCompute):
+class TestListFloatingIPCompute(compute_fakes.TestComputev2):
     # The floating ips to be list up
     _floating_ips = compute_fakes.create_floating_ips(count=3)
 
@@ -215,7 +207,7 @@ class TestListFloatingIPCompute(TestFloatingIPCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.floating_ip_find')
-class TestShowFloatingIPCompute(TestFloatingIPCompute):
+class TestShowFloatingIPCompute(compute_fakes.TestComputev2):
     # The floating ip to display.
     _floating_ip = compute_fakes.create_one_floating_ip()
 
diff --git a/openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py b/openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py
index 289a58bedd..cc07d5e69b 100644
--- a/openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py
@@ -20,16 +20,8 @@ from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
 # Tests for Compute network
 
 
-class TestFloatingIPPoolCompute(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestFloatingIPPoolCompute, self).setUp()
-
-        # Get a shortcut to the compute client
-        self.compute_client = self.app.client_manager.compute
-
-
 @mock.patch('openstackclient.api.compute_v2.APIv2.floating_ip_pool_list')
-class TestListFloatingIPPoolCompute(TestFloatingIPPoolCompute):
+class TestListFloatingIPPoolCompute(compute_fakes.TestComputev2):
     # The floating ip pools to list up
     _floating_ip_pools = compute_fakes.create_floating_ip_pools(count=3)
 
diff --git a/openstackclient/tests/unit/network/v2/test_network_compute.py b/openstackclient/tests/unit/network/v2/test_network_compute.py
index 775ee4e91a..ebe37243a0 100644
--- a/openstackclient/tests/unit/network/v2/test_network_compute.py
+++ b/openstackclient/tests/unit/network/v2/test_network_compute.py
@@ -23,16 +23,10 @@ from openstackclient.tests.unit import utils as tests_utils
 
 # Tests for Nova network
 #
-class TestNetworkCompute(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestNetworkCompute, self).setUp()
-
-        # Get a shortcut to the compute client
-        self.compute_client = self.app.client_manager.compute
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.network_create')
-class TestCreateNetworkCompute(TestNetworkCompute):
+class TestCreateNetworkCompute(compute_fakes.TestComputev2):
     # The network to create.
     _network = compute_fakes.create_one_network()
 
@@ -172,7 +166,7 @@ class TestCreateNetworkCompute(TestNetworkCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.network_delete')
-class TestDeleteNetworkCompute(TestNetworkCompute):
+class TestDeleteNetworkCompute(compute_fakes.TestComputev2):
     def setUp(self):
         super(TestDeleteNetworkCompute, self).setUp()
 
@@ -252,7 +246,7 @@ class TestDeleteNetworkCompute(TestNetworkCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.network_list')
-class TestListNetworkCompute(TestNetworkCompute):
+class TestListNetworkCompute(compute_fakes.TestComputev2):
     # The networks going to be listed up.
     _networks = compute_fakes.create_networks(count=3)
 
@@ -297,7 +291,7 @@ class TestListNetworkCompute(TestNetworkCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.network_find')
-class TestShowNetworkCompute(TestNetworkCompute):
+class TestShowNetworkCompute(compute_fakes.TestComputev2):
     # The network to show.
     _network = compute_fakes.create_one_network()
 
diff --git a/openstackclient/tests/unit/network/v2/test_security_group_compute.py b/openstackclient/tests/unit/network/v2/test_security_group_compute.py
index 06f5085928..f9ea640ff5 100644
--- a/openstackclient/tests/unit/network/v2/test_security_group_compute.py
+++ b/openstackclient/tests/unit/network/v2/test_security_group_compute.py
@@ -22,16 +22,8 @@ from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
 from openstackclient.tests.unit import utils as tests_utils
 
 
-class TestSecurityGroupCompute(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestSecurityGroupCompute, self).setUp()
-
-        # Get a shortcut to the compute client
-        self.compute_client = self.app.client_manager.compute
-
-
 @mock.patch('openstackclient.api.compute_v2.APIv2.security_group_create')
-class TestCreateSecurityGroupCompute(TestSecurityGroupCompute):
+class TestCreateSecurityGroupCompute(compute_fakes.TestComputev2):
     project = identity_fakes.FakeProject.create_one_project()
     domain = identity_fakes.FakeDomain.create_one_domain()
 
@@ -110,7 +102,7 @@ class TestCreateSecurityGroupCompute(TestSecurityGroupCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.security_group_delete')
-class TestDeleteSecurityGroupCompute(TestSecurityGroupCompute):
+class TestDeleteSecurityGroupCompute(compute_fakes.TestComputev2):
     # The security groups to be deleted.
     _security_groups = compute_fakes.create_security_groups()
 
@@ -192,7 +184,7 @@ class TestDeleteSecurityGroupCompute(TestSecurityGroupCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.security_group_list')
-class TestListSecurityGroupCompute(TestSecurityGroupCompute):
+class TestListSecurityGroupCompute(compute_fakes.TestComputev2):
     # The security group to be listed.
     _security_groups = compute_fakes.create_security_groups(count=3)
 
@@ -270,7 +262,7 @@ class TestListSecurityGroupCompute(TestSecurityGroupCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.security_group_set')
-class TestSetSecurityGroupCompute(TestSecurityGroupCompute):
+class TestSetSecurityGroupCompute(compute_fakes.TestComputev2):
     # The security group to be set.
     _security_group = compute_fakes.create_one_security_group()
 
@@ -337,7 +329,7 @@ class TestSetSecurityGroupCompute(TestSecurityGroupCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.security_group_find')
-class TestShowSecurityGroupCompute(TestSecurityGroupCompute):
+class TestShowSecurityGroupCompute(compute_fakes.TestComputev2):
     # The security group rule to be shown with the group.
     _security_group_rule = compute_fakes.create_one_security_group_rule()
 
diff --git a/openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py b/openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py
index 1fb4831ec4..5fff5b4315 100644
--- a/openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py
+++ b/openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py
@@ -23,16 +23,8 @@ from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
 from openstackclient.tests.unit import utils as tests_utils
 
 
-class TestSecurityGroupRuleCompute(compute_fakes.TestComputev2):
-    def setUp(self):
-        super(TestSecurityGroupRuleCompute, self).setUp()
-
-        # Get a shortcut to the network client
-        self.compute_client = self.app.client_manager.compute
-
-
 @mock.patch('openstackclient.api.compute_v2.APIv2.security_group_rule_create')
-class TestCreateSecurityGroupRuleCompute(TestSecurityGroupRuleCompute):
+class TestCreateSecurityGroupRuleCompute(compute_fakes.TestComputev2):
     project = identity_fakes.FakeProject.create_one_project()
     domain = identity_fakes.FakeDomain.create_one_domain()
 
@@ -305,7 +297,7 @@ class TestCreateSecurityGroupRuleCompute(TestSecurityGroupRuleCompute):
 
 
 @mock.patch('openstackclient.api.compute_v2.APIv2.security_group_rule_delete')
-class TestDeleteSecurityGroupRuleCompute(TestSecurityGroupRuleCompute):
+class TestDeleteSecurityGroupRuleCompute(compute_fakes.TestComputev2):
     # The security group rule to be deleted.
     _security_group_rules = compute_fakes.create_security_group_rules(count=2)
 
@@ -373,7 +365,7 @@ class TestDeleteSecurityGroupRuleCompute(TestSecurityGroupRuleCompute):
         sgr_mock.assert_any_call('unexist_rule')
 
 
-class TestListSecurityGroupRuleCompute(TestSecurityGroupRuleCompute):
+class TestListSecurityGroupRuleCompute(compute_fakes.TestComputev2):
     # The security group to hold the rules.
     _security_group = compute_fakes.create_one_security_group()
 
@@ -509,7 +501,7 @@ class TestListSecurityGroupRuleCompute(TestSecurityGroupRuleCompute):
         self.assertEqual(self.expected_data_no_group, list(data))
 
 
-class TestShowSecurityGroupRuleCompute(TestSecurityGroupRuleCompute):
+class TestShowSecurityGroupRuleCompute(compute_fakes.TestComputev2):
     # The security group rule to be shown.
     _security_group_rule = compute_fakes.create_one_security_group_rule()
 
diff --git a/openstackclient/tests/unit/volume/v3/test_volume_attachment.py b/openstackclient/tests/unit/volume/v3/test_volume_attachment.py
index c6fbbe58a0..91b27eb2cf 100644
--- a/openstackclient/tests/unit/volume/v3/test_volume_attachment.py
+++ b/openstackclient/tests/unit/volume/v3/test_volume_attachment.py
@@ -33,7 +33,6 @@ class TestVolumeAttachment(volume_fakes.TestVolume):
         self.projects_mock = self.app.client_manager.identity.projects
         self.projects_mock.reset_mock()
 
-        self.compute_client = self.app.client_manager.compute
         self.servers_mock = self.compute_client.servers
         self.servers_mock.reset_mock()