Add option for whether the cloud supports floating ips

This commit adds a new config option to specify whether the cloud under
test supports floating ips or not. Not every cloud supports floating ips
so we need to be able to handle that and properly skip tests.

Change-Id: Iedc3c7f9d045408f54d94c34b478fb1b28b593c9
Closes-Bug: #1603492
This commit is contained in:
Matthew Treinish 2017-05-19 12:08:17 -04:00
parent d64c46b776
commit 3312de38c9
No known key found for this signature in database
GPG Key ID: FD12A0F214C9E177
17 changed files with 63 additions and 0 deletions

View File

@ -0,0 +1,5 @@
---
features:
- A new config option in the network-feature-enabled section, floating_ips,
to specify whether floating ips are available in the cloud under test. By
default this is set to True.

View File

@ -29,6 +29,12 @@ class FloatingIPsTestJSON(base.BaseFloatingIPsTest):
server_id = None
floating_ip = None
@classmethod
def skip_checks(cls):
super(FloatingIPsTestJSON, cls).skip_checks()
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_clients(cls):
super(FloatingIPsTestJSON, cls).setup_clients()

View File

@ -27,6 +27,12 @@ CONF = config.CONF
class FloatingIPsNegativeTestJSON(base.BaseFloatingIPsTest):
@classmethod
def skip_checks(cls):
super(FloatingIPsNegativeTestJSON, cls).skip_checks()
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_clients(cls):
super(FloatingIPsNegativeTestJSON, cls).setup_clients()

View File

@ -23,6 +23,12 @@ CONF = config.CONF
class FloatingIPDetailsTestJSON(base.BaseV2ComputeTest):
@classmethod
def skip_checks(cls):
super(FloatingIPDetailsTestJSON, cls).skip_checks()
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_clients(cls):
super(FloatingIPDetailsTestJSON, cls).setup_clients()

View File

@ -25,6 +25,12 @@ CONF = config.CONF
class FloatingIPDetailsNegativeTestJSON(base.BaseV2ComputeTest):
@classmethod
def skip_checks(cls):
super(FloatingIPDetailsNegativeTestJSON, cls).skip_checks()
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_clients(cls):
super(FloatingIPDetailsNegativeTestJSON, cls).setup_clients()

View File

@ -65,6 +65,8 @@ class ServerRescueTestJSON(base.BaseV2ComputeTest):
@decorators.idempotent_id('4842e0cf-e87d-4d9d-b61f-f4791da3cacc')
@testtools.skipUnless(CONF.network.public_network_id,
'The public_network_id option must be specified.')
@testtools.skipUnless(CONF.network_feature_enabled.floating_ips,
"Floating ips are not available")
def test_rescued_vm_associate_dissociate_floating_ip(self):
# Association of floating IP to a rescued vm
floating_ip_body = self.floating_ips_client.create_floating_ip(

View File

@ -10,11 +10,16 @@
# License for the specific language governing permissions and limitations
# under the License.
import testtools
from tempest.api.network import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class ExternalNetworksTestJSON(base.BaseAdminNetworkTest):
@ -91,6 +96,8 @@ class ExternalNetworksTestJSON(base.BaseAdminNetworkTest):
self.assertFalse(show_net['router:external'])
@decorators.idempotent_id('82068503-2cf2-4ed4-b3be-ecb89432e4bb')
@testtools.skipUnless(CONF.network_feature_enabled.floating_ips,
'Floating ips are not availabled')
def test_delete_external_networks_with_floating_ip(self):
# Verifies external network can be deleted while still holding
# (unassociated) floating IPs

View File

@ -34,6 +34,8 @@ class FloatingIPAdminTestJSON(base.BaseAdminNetworkTest):
if not CONF.network.public_network_id:
msg = "The public_network_id option must be specified."
raise cls.skipException(msg)
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_clients(cls):

View File

@ -49,6 +49,8 @@ class FloatingIPTestJSON(base.BaseNetworkTest):
if not CONF.network.public_network_id:
msg = "The public_network_id option must be specified."
raise cls.skipException(msg)
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def resource_setup(cls):

View File

@ -40,6 +40,8 @@ class FloatingIPNegativeTestJSON(base.BaseNetworkTest):
if not CONF.network.public_network_id:
msg = "The public_network_id option must be specified."
raise cls.skipException(msg)
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def resource_setup(cls):

View File

@ -647,6 +647,9 @@ NetworkFeaturesGroup = [
cfg.BoolOpt('port_security',
default=False,
help="Does the test environment support port security?"),
cfg.BoolOpt('floating_ips',
default=True,
help='Does the test environment support floating_ips')
]
validation_group = cfg.OptGroup(name='validation',

View File

@ -103,6 +103,8 @@ class TestMinimumBasicScenario(manager.ScenarioTest):
@decorators.idempotent_id('bdbb5441-9204-419d-a225-b4fdbfb1a1a8')
@testtools.skipUnless(CONF.network.public_network_id,
'The public_network_id option must be specified.')
@testtools.skipUnless(CONF.network_feature_enabled.floating_ips,
'Floating ips are not available')
@test.services('compute', 'volume', 'image', 'network')
def test_minimum_basic_scenario(self):
image = self.glance_image_create()

View File

@ -48,6 +48,8 @@ class TestNetworkAdvancedServerOps(manager.NetworkScenarioTest):
msg = ('Either project_networks_reachable must be "true", or '
'public_network_id must be defined.')
raise cls.skipException(msg)
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_credentials(cls):

View File

@ -90,6 +90,8 @@ class TestNetworkBasicOps(manager.NetworkScenarioTest):
if not test.is_extension_enabled(ext, 'network'):
msg = "%s extension not enabled." % ext
raise cls.skipException(msg)
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_credentials(cls):

View File

@ -51,6 +51,8 @@ class TestGettingAddress(manager.NetworkScenarioTest):
if CONF.network.shared_physical_network:
msg = 'Deployment uses a shared physical network'
raise cls.skipException(msg)
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_credentials(cls):

View File

@ -148,6 +148,8 @@ class TestSecurityGroupsBasicOps(manager.NetworkScenarioTest):
msg = ('Deployment uses a shared physical network, security '
'groups not supported')
raise cls.skipException(msg)
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
@classmethod
def setup_credentials(cls):

View File

@ -43,6 +43,12 @@ class TestServerBasicOps(manager.ScenarioTest):
* Terminate the instance
"""
@classmethod
def skip_checks(cls):
super(TestServerBasicOps, cls).skip_checks()
if not CONF.network_feature_enabled.floating_ips:
raise cls.skipException("Floating ips are not available")
def setUp(self):
super(TestServerBasicOps, self).setUp()
self.run_ssh = CONF.validation.run_validation