From bfaa50f18bfdc02470a44d5e209e66085f0dcb05 Mon Sep 17 00:00:00 2001 From: Eric Fried Date: Thu, 9 Jan 2020 12:04:54 -0600 Subject: [PATCH] Create default network for several compute tests Chipping away at the referenced bug, this commit introduces a class-level variable on BaseV2ComputeTest that triggers setup_credentials to create a default network, and sets it for several classes where the problem has been observed. The class variable is so we can whack-a-mole with one line instead of four whenever this problem pops up. Change-Id: Ia34fe3b41261de02918713c2a948e6c56554bf6f Partial-Bug: #1844568 --- .../api/compute/admin/test_live_migration.py | 17 +++++++---------- tempest/api/compute/base.py | 8 +++++++- tempest/api/compute/security_groups/base.py | 8 ++------ .../api/compute/servers/test_delete_server.py | 1 + tempest/api/compute/servers/test_disk_config.py | 1 + .../compute/servers/test_instance_actions.py | 1 + .../servers/test_instance_actions_negative.py | 1 + .../servers/test_list_servers_negative.py | 1 + .../api/compute/servers/test_multiple_create.py | 1 + tempest/api/compute/servers/test_novnc.py | 1 + .../compute/servers/test_server_addresses.py | 7 +------ .../servers/test_server_addresses_negative.py | 6 +----- .../api/compute/servers/test_server_group.py | 1 + .../api/compute/servers/test_server_metadata.py | 1 + tempest/api/compute/servers/test_server_tags.py | 2 ++ tempest/api/compute/servers/test_servers.py | 1 + .../compute/servers/test_servers_negative.py | 6 +----- .../compute/servers/test_virtual_interfaces.py | 6 +----- 18 files changed, 32 insertions(+), 38 deletions(-) diff --git a/tempest/api/compute/admin/test_live_migration.py b/tempest/api/compute/admin/test_live_migration.py index b1a7c52c9e..836b9751e4 100644 --- a/tempest/api/compute/admin/test_live_migration.py +++ b/tempest/api/compute/admin/test_live_migration.py @@ -31,6 +31,13 @@ LOG = logging.getLogger(__name__) class LiveMigrationTestBase(base.BaseV2ComputeAdminTest): + # These tests don't attempt any SSH validation nor do they use + # floating IPs on the instance, so all we need is a network and + # a subnet so the instance being migrated has a single port, but + # we need that to make sure we are properly updating the port + # host bindings during the live migration. + create_default_network = True + @classmethod def skip_checks(cls): super(LiveMigrationTestBase, cls).skip_checks() @@ -43,16 +50,6 @@ class LiveMigrationTestBase(base.BaseV2ComputeAdminTest): raise cls.skipException( "Less than 2 compute nodes, skipping migration test.") - @classmethod - def setup_credentials(cls): - # These tests don't attempt any SSH validation nor do they use - # floating IPs on the instance, so all we need is a network and - # a subnet so the instance being migrated has a single port, but - # we need that to make sure we are properly updating the port - # host bindings during the live migration. - cls.set_network_resources(network=True, subnet=True) - super(LiveMigrationTestBase, cls).setup_credentials() - @classmethod def setup_clients(cls): super(LiveMigrationTestBase, cls).setup_clients() diff --git a/tempest/api/compute/base.py b/tempest/api/compute/base.py index aaf7a5af93..7c2d9d2cb3 100644 --- a/tempest/api/compute/base.py +++ b/tempest/api/compute/base.py @@ -39,6 +39,9 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest, """Base test case class for all Compute API tests.""" force_tenant_isolation = False + # Set this to True in subclasses to create a default network. See + # https://bugs.launchpad.net/tempest/+bug/1844568 + create_default_network = False # TODO(andreaf) We should care also for the alt_manager here # but only once client lazy load in the manager is done @@ -58,7 +61,10 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest, @classmethod def setup_credentials(cls): - cls.set_network_resources() + # Setting network=True, subnet=True creates a default network + cls.set_network_resources( + network=cls.create_default_network, + subnet=cls.create_default_network) super(BaseV2ComputeTest, cls).setup_credentials() @classmethod diff --git a/tempest/api/compute/security_groups/base.py b/tempest/api/compute/security_groups/base.py index 49125d1f47..ef69a13fe5 100644 --- a/tempest/api/compute/security_groups/base.py +++ b/tempest/api/compute/security_groups/base.py @@ -24,18 +24,14 @@ CONF = config.CONF class BaseSecurityGroupsTest(base.BaseV2ComputeTest): max_microversion = '2.35' + create_default_network = True + @classmethod def skip_checks(cls): super(BaseSecurityGroupsTest, cls).skip_checks() if not utils.get_service_list()['network']: raise cls.skipException("network service not enabled.") - @classmethod - def setup_credentials(cls): - # A network and a subnet will be created for these tests - cls.set_network_resources(network=True, subnet=True) - super(BaseSecurityGroupsTest, cls).setup_credentials() - @staticmethod def generate_random_security_group_id(): if (CONF.service_available.neutron and diff --git a/tempest/api/compute/servers/test_delete_server.py b/tempest/api/compute/servers/test_delete_server.py index 0263b81454..a7db88a137 100644 --- a/tempest/api/compute/servers/test_delete_server.py +++ b/tempest/api/compute/servers/test_delete_server.py @@ -26,6 +26,7 @@ CONF = config.CONF class DeleteServersTestJSON(base.BaseV2ComputeTest): + create_default_network = True # NOTE: Server creations of each test class should be under 10 # for preventing "Quota exceeded for instances" diff --git a/tempest/api/compute/servers/test_disk_config.py b/tempest/api/compute/servers/test_disk_config.py index bc4806995c..5b8e7ab968 100644 --- a/tempest/api/compute/servers/test_disk_config.py +++ b/tempest/api/compute/servers/test_disk_config.py @@ -24,6 +24,7 @@ CONF = config.CONF class ServerDiskConfigTestJSON(base.BaseV2ComputeTest): + create_default_network = True @classmethod def skip_checks(cls): diff --git a/tempest/api/compute/servers/test_instance_actions.py b/tempest/api/compute/servers/test_instance_actions.py index b916a42d67..9f7e2d1b73 100644 --- a/tempest/api/compute/servers/test_instance_actions.py +++ b/tempest/api/compute/servers/test_instance_actions.py @@ -19,6 +19,7 @@ from tempest.lib import decorators class InstanceActionsTestJSON(base.BaseV2ComputeTest): + create_default_network = True @classmethod def setup_clients(cls): diff --git a/tempest/api/compute/servers/test_instance_actions_negative.py b/tempest/api/compute/servers/test_instance_actions_negative.py index 1d3a790869..4b5a2c3a5d 100644 --- a/tempest/api/compute/servers/test_instance_actions_negative.py +++ b/tempest/api/compute/servers/test_instance_actions_negative.py @@ -20,6 +20,7 @@ from tempest.lib import exceptions as lib_exc class InstanceActionsNegativeTestJSON(base.BaseV2ComputeTest): + create_default_network = True @classmethod def setup_clients(cls): diff --git a/tempest/api/compute/servers/test_list_servers_negative.py b/tempest/api/compute/servers/test_list_servers_negative.py index f0915de9cc..b95db5c1d0 100644 --- a/tempest/api/compute/servers/test_list_servers_negative.py +++ b/tempest/api/compute/servers/test_list_servers_negative.py @@ -20,6 +20,7 @@ from tempest.lib import exceptions as lib_exc class ListServersNegativeTestJSON(base.BaseV2ComputeTest): + create_default_network = True @classmethod def setup_clients(cls): diff --git a/tempest/api/compute/servers/test_multiple_create.py b/tempest/api/compute/servers/test_multiple_create.py index 059454dd02..e176251a89 100644 --- a/tempest/api/compute/servers/test_multiple_create.py +++ b/tempest/api/compute/servers/test_multiple_create.py @@ -19,6 +19,7 @@ from tempest.lib import decorators class MultipleCreateTestJSON(base.BaseV2ComputeTest): + create_default_network = True @decorators.idempotent_id('61e03386-89c3-449c-9bb1-a06f423fd9d1') def test_multiple_create(self): diff --git a/tempest/api/compute/servers/test_novnc.py b/tempest/api/compute/servers/test_novnc.py index 7cf6d83d2b..68e09e7f18 100644 --- a/tempest/api/compute/servers/test_novnc.py +++ b/tempest/api/compute/servers/test_novnc.py @@ -33,6 +33,7 @@ else: class NoVNCConsoleTestJSON(base.BaseV2ComputeTest): + create_default_network = True @classmethod def skip_checks(cls): diff --git a/tempest/api/compute/servers/test_server_addresses.py b/tempest/api/compute/servers/test_server_addresses.py index f79b05f836..c936ce5aa7 100644 --- a/tempest/api/compute/servers/test_server_addresses.py +++ b/tempest/api/compute/servers/test_server_addresses.py @@ -19,12 +19,7 @@ from tempest.lib import decorators class ServerAddressesTestJSON(base.BaseV2ComputeTest): - - @classmethod - def setup_credentials(cls): - # This test module might use a network and a subnet - cls.set_network_resources(network=True, subnet=True) - super(ServerAddressesTestJSON, cls).setup_credentials() + create_default_network = True @classmethod def setup_clients(cls): diff --git a/tempest/api/compute/servers/test_server_addresses_negative.py b/tempest/api/compute/servers/test_server_addresses_negative.py index b2b3cc0965..f33c6d9a6b 100644 --- a/tempest/api/compute/servers/test_server_addresses_negative.py +++ b/tempest/api/compute/servers/test_server_addresses_negative.py @@ -20,11 +20,7 @@ from tempest.lib import exceptions as lib_exc class ServerAddressesNegativeTestJSON(base.BaseV2ComputeTest): - - @classmethod - def setup_credentials(cls): - cls.set_network_resources(network=True, subnet=True) - super(ServerAddressesNegativeTestJSON, cls).setup_credentials() + create_default_network = True @classmethod def setup_clients(cls): diff --git a/tempest/api/compute/servers/test_server_group.py b/tempest/api/compute/servers/test_server_group.py index 1b7cb96a2e..4b5efaa694 100644 --- a/tempest/api/compute/servers/test_server_group.py +++ b/tempest/api/compute/servers/test_server_group.py @@ -29,6 +29,7 @@ class ServerGroupTestJSON(base.BaseV2ComputeTest): policies = affinity/anti-affinity It also adds the tests for list and get details of server-groups """ + create_default_network = True @classmethod def skip_checks(cls): diff --git a/tempest/api/compute/servers/test_server_metadata.py b/tempest/api/compute/servers/test_server_metadata.py index fe950186e5..9d87e1c751 100644 --- a/tempest/api/compute/servers/test_server_metadata.py +++ b/tempest/api/compute/servers/test_server_metadata.py @@ -18,6 +18,7 @@ from tempest.lib import decorators class ServerMetadataTestJSON(base.BaseV2ComputeTest): + create_default_network = True @classmethod def setup_clients(cls): diff --git a/tempest/api/compute/servers/test_server_tags.py b/tempest/api/compute/servers/test_server_tags.py index 8d0a4e3a31..3893b01bd9 100644 --- a/tempest/api/compute/servers/test_server_tags.py +++ b/tempest/api/compute/servers/test_server_tags.py @@ -26,6 +26,8 @@ class ServerTagsTestJSON(base.BaseV2ComputeTest): min_microversion = '2.26' max_microversion = 'latest' + create_default_network = True + @classmethod def skip_checks(cls): super(ServerTagsTestJSON, cls).skip_checks() diff --git a/tempest/api/compute/servers/test_servers.py b/tempest/api/compute/servers/test_servers.py index 1e3e966458..3a4bd6de92 100644 --- a/tempest/api/compute/servers/test_servers.py +++ b/tempest/api/compute/servers/test_servers.py @@ -25,6 +25,7 @@ CONF = config.CONF class ServersTestJSON(base.BaseV2ComputeTest): + create_default_network = True @classmethod def setup_clients(cls): diff --git a/tempest/api/compute/servers/test_servers_negative.py b/tempest/api/compute/servers/test_servers_negative.py index 1759d64ae1..f42bb9c1f5 100644 --- a/tempest/api/compute/servers/test_servers_negative.py +++ b/tempest/api/compute/servers/test_servers_negative.py @@ -30,6 +30,7 @@ CONF = config.CONF class ServersNegativeTestJSON(base.BaseV2ComputeTest): + create_default_network = True def setUp(self): super(ServersNegativeTestJSON, self).setUp() @@ -46,11 +47,6 @@ class ServersNegativeTestJSON(base.BaseV2ComputeTest): # server_check_teardown should be called after super's tearDown. self.server_check_teardown() - @classmethod - def setup_credentials(cls): - cls.set_network_resources(network=True, subnet=True) - super(ServersNegativeTestJSON, cls).setup_credentials() - @classmethod def setup_clients(cls): super(ServersNegativeTestJSON, cls).setup_clients() diff --git a/tempest/api/compute/servers/test_virtual_interfaces.py b/tempest/api/compute/servers/test_virtual_interfaces.py index f810ec5b5c..dfd6ca4b3b 100644 --- a/tempest/api/compute/servers/test_virtual_interfaces.py +++ b/tempest/api/compute/servers/test_virtual_interfaces.py @@ -32,11 +32,7 @@ class VirtualInterfacesTestJSON(base.BaseV2ComputeTest): depends_on_nova_network = True - @classmethod - def setup_credentials(cls): - # This test needs a network and a subnet - cls.set_network_resources(network=True, subnet=True) - super(VirtualInterfacesTestJSON, cls).setup_credentials() + create_default_network = True @classmethod def setup_clients(cls):