Merge "Fix availability zone API tests"

This commit is contained in:
Zuul 2020-07-16 18:46:20 +00:00 committed by Gerrit Code Review
commit 8480068fc4
5 changed files with 59 additions and 9 deletions

View File

@ -195,6 +195,12 @@ OctaviaGroup = [
cfg.StrOpt('availability_zone',
default=None,
help='Availability zone to use for creating servers.'),
cfg.StrOpt('availability_zone2',
default=None,
help='A second availability zone to use for creating servers.'),
cfg.StrOpt('availability_zone3',
default=None,
help='A third availability zone to use for creating servers.'),
cfg.BoolOpt('test_reuse_connection', default=True,
help='Reuse TCP connections while testing LB with '
'HTTP members (keep-alive).'),

View File

@ -31,6 +31,15 @@ CONF = config.CONF
class AvailabilityZoneAPITest(test_base.LoadBalancerBaseTest):
"""Test the availability zone object API."""
@classmethod
def skip_checks(cls):
super(AvailabilityZoneAPITest, cls).skip_checks()
if (CONF.load_balancer.availability_zone is None and
not CONF.load_balancer.test_with_noop):
raise cls.skipException(
'Availability Zone API tests require an availability zone '
'configured in the [load_balancer] availability_zone setting.')
@classmethod
def resource_setup(cls):
"""Setup resources needed by the tests."""
@ -46,7 +55,7 @@ class AvailabilityZoneAPITest(test_base.LoadBalancerBaseTest):
availability_zone_profile_name = data_utils.rand_name(
"lb_admin_availabilityzoneprofile-setup")
availability_zone_data = {
const.COMPUTE_ZONE: 'my_compute_zone',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data_json = jsonutils.dumps(availability_zone_data)

View File

@ -32,6 +32,16 @@ CONF = config.CONF
class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
"""Test the availability zone profile object API."""
@classmethod
def skip_checks(cls):
super(AvailabilityZoneProfileAPITest, cls).skip_checks()
if (CONF.load_balancer.availability_zone is None and
not CONF.load_balancer.test_with_noop):
raise cls.skipException(
'Availability zone profile API tests require an availability '
'zone configured in the [load_balancer] availability_zone '
'setting in the tempest configuration file.')
@decorators.idempotent_id('e512b580-ef32-44c3-bbd2-efdc27ba2ea6')
def test_availability_zone_profile_create(self):
"""Tests availability zone profile create and basic show APIs.
@ -53,7 +63,7 @@ class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
availability_zone_profile_name = data_utils.rand_name(
"lb_admin_availabilityzoneprofile1-create")
availability_zone_data = {
const.COMPUTE_ZONE: 'my_compute_zone',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data_json = jsonutils.dumps(availability_zone_data)
@ -116,12 +126,20 @@ class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
raise self.skipException(
'Availability zone profiles are only available on '
'Octavia API version 2.14 or newer.')
if ((CONF.load_balancer.availability_zone2 is None or
CONF.load_balancer.availability_zone3 is None) and
not CONF.load_balancer.test_with_noop):
raise self.skipException(
'Availability zone profile list API test requires the '
'[load_balancer] availability_zone, availability_zone2, and '
'availability_zone3 settings be defined in the tempest '
'configuration file.')
# Create availability zone profile 1
availability_zone_profile1_name = data_utils.rand_name(
"lb_admin_availabilityzoneprofile-list-1")
availability_zone_data1 = {
const.COMPUTE_ZONE: 'my_compute_zone1',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data1_json = jsonutils.dumps(availability_zone_data1)
@ -144,7 +162,7 @@ class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
availability_zone_profile2_name = data_utils.rand_name(
"lb_admin_availabilityzoneprofile-list-2")
availability_zone_data2 = {
const.COMPUTE_ZONE: 'my_compute_zone2',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone2,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data2_json = jsonutils.dumps(availability_zone_data2)
@ -167,7 +185,7 @@ class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
availability_zone_profile3_name = data_utils.rand_name(
"lb_admin_availabilityzoneprofile-list-3")
availability_zone_data3 = {
const.COMPUTE_ZONE: 'my_compute_zone3',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone3,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data3_json = jsonutils.dumps(availability_zone_data3)
@ -329,7 +347,7 @@ class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
availability_zone_profile_name = data_utils.rand_name(
"lb_admin_availabilityzoneprofile1-show")
availability_zone_data = {
const.COMPUTE_ZONE: 'my_compute_zone',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data_json = jsonutils.dumps(availability_zone_data)
@ -390,11 +408,17 @@ class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
raise self.skipException(
'Availability zone profiles are only available on '
'Octavia API version 2.14 or newer.')
if (CONF.load_balancer.availability_zone2 is None and
not CONF.load_balancer.test_with_noop):
raise self.skipException(
'Availability zone profile update API tests requires '
'[load_balancer] availability_zone2 to be defined in the '
'tempest configuration file.')
availability_zone_profile_name = data_utils.rand_name(
"lb_admin_availabilityzoneprofile1-update")
availability_zone_data = {
const.COMPUTE_ZONE: 'my_compute_zone1',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data_json = jsonutils.dumps(availability_zone_data)
@ -427,7 +451,7 @@ class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
availability_zone_profile_name2 = data_utils.rand_name(
"lb_admin_availabilityzoneprofile1-update2")
availability_zone_data2 = {
const.COMPUTE_ZONE: 'my_compute_zone2',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone2,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data2_json = jsonutils.dumps(availability_zone_data2)
@ -495,7 +519,7 @@ class AvailabilityZoneProfileAPITest(test_base.LoadBalancerBaseTest):
availability_zone_profile_name = data_utils.rand_name(
"lb_admin_availabilityzoneprofile1-delete")
availability_zone_data = {
const.COMPUTE_ZONE: 'my_compute_zone',
const.COMPUTE_ZONE: CONF.load_balancer.availability_zone,
const.MANAGEMENT_NETWORK: uuidutils.generate_uuid(),
}
availability_zone_data_json = jsonutils.dumps(availability_zone_data)

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixed availability zone API tests to skip if the required availability
zones are not defined in the tempest configuration file and the test run
is not using no-op drivers.

View File

@ -397,6 +397,11 @@
"$TEMPEST_CONFIG":
load_balancer:
test_with_noop: True
# AZ API tests with no-op need AZs configured but they do not
# need to actually exist in Nova due to the no-op driver.
availability_zone: bogus-az-1
availability_zone2: bogus-az-2
availability_zone3: bogus-az-3
post-config:
$OCTAVIA_CONF:
controller_worker: