Modify Member tests for Provider Drivers
There is a possibility that the provider drivers may not support some functionality. Member API tests are very closely coupled with Monitors, so in case if a provider driver doesnt support monitors, the Octavia API tests may not give the correct response. The following patch attempts to split the same. Change-Id: Idc0965550a57d4424a7d4f27525bf345324bd68a
This commit is contained in:
parent
a128c99bb3
commit
9169029d1a
|
@ -99,6 +99,14 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
CONF.load_balancer.build_interval,
|
CONF.load_balancer.build_interval,
|
||||||
CONF.load_balancer.build_timeout)
|
CONF.load_balancer.build_timeout)
|
||||||
|
|
||||||
|
def _create_member_and_get_monitor_status(self, **member_kwargs):
|
||||||
|
monitor = CONF.loadbalancer_feature_enabled.health_monitor_enabled
|
||||||
|
if not monitor:
|
||||||
|
del member_kwargs[const.MONITOR_ADDRESS]
|
||||||
|
del member_kwargs[const.MONITOR_PORT]
|
||||||
|
member = self.mem_member_client.create_member(**member_kwargs)
|
||||||
|
return member, monitor
|
||||||
|
|
||||||
# Note: This test also covers basic member show API
|
# Note: This test also covers basic member show API
|
||||||
@decorators.idempotent_id('0623aa1f-753d-44e7-afa1-017d274eace7')
|
@decorators.idempotent_id('0623aa1f-753d-44e7-afa1-017d274eace7')
|
||||||
def test_member_ipv4_create(self):
|
def test_member_ipv4_create(self):
|
||||||
|
@ -117,6 +125,7 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
* Tests that users without the loadbalancer member role cannot
|
* Tests that users without the loadbalancer member role cannot
|
||||||
create members.
|
create members.
|
||||||
* Create a fully populated member.
|
* Create a fully populated member.
|
||||||
|
* If driver doesnt support Monitors, allow to create without monitor
|
||||||
* Show member details.
|
* Show member details.
|
||||||
* Validate the show reflects the requested values.
|
* Validate the show reflects the requested values.
|
||||||
"""
|
"""
|
||||||
|
@ -156,7 +165,9 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
self.os_primary.member_client.create_member,
|
self.os_primary.member_client.create_member,
|
||||||
**member_kwargs)
|
**member_kwargs)
|
||||||
|
|
||||||
member = self.mem_member_client.create_member(**member_kwargs)
|
member, monitor = self._create_member_and_get_monitor_status(
|
||||||
|
**member_kwargs)
|
||||||
|
|
||||||
self.addClassResourceCleanup(
|
self.addClassResourceCleanup(
|
||||||
self.mem_member_client.cleanup_member,
|
self.mem_member_client.cleanup_member,
|
||||||
member[const.ID], pool_id=self.pool_id,
|
member[const.ID], pool_id=self.pool_id,
|
||||||
|
@ -181,13 +192,13 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
self.assertEqual(const.NO_MONITOR, member[const.OPERATING_STATUS])
|
self.assertEqual(const.NO_MONITOR, member[const.OPERATING_STATUS])
|
||||||
|
|
||||||
equal_items = [const.NAME, const.ADMIN_STATE_UP, const.ADDRESS,
|
equal_items = [const.NAME, const.ADMIN_STATE_UP, const.ADDRESS,
|
||||||
const.PROTOCOL_PORT, const.WEIGHT,
|
const.PROTOCOL_PORT, const.WEIGHT]
|
||||||
const.MONITOR_ADDRESS, const.MONITOR_PORT]
|
|
||||||
|
|
||||||
if self.mem_member_client.is_version_supported(
|
if self.mem_member_client.is_version_supported(
|
||||||
self.api_version, '2.1'):
|
self.api_version, '2.1'):
|
||||||
equal_items.append(const.BACKUP)
|
equal_items.append(const.BACKUP)
|
||||||
|
|
||||||
|
if monitor:
|
||||||
|
equal_items += [const.MONITOR_ADDRESS, const.MONITOR_PORT]
|
||||||
if const.SUBNET_ID in member_kwargs:
|
if const.SUBNET_ID in member_kwargs:
|
||||||
equal_items.append(const.SUBNET_ID)
|
equal_items.append(const.SUBNET_ID)
|
||||||
else:
|
else:
|
||||||
|
@ -451,7 +462,9 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
member_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
member_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
||||||
const.ID]
|
const.ID]
|
||||||
|
|
||||||
member = self.mem_member_client.create_member(**member_kwargs)
|
member, monitor = self._create_member_and_get_monitor_status(
|
||||||
|
**member_kwargs)
|
||||||
|
|
||||||
self.addClassResourceCleanup(
|
self.addClassResourceCleanup(
|
||||||
self.mem_member_client.cleanup_member,
|
self.mem_member_client.cleanup_member,
|
||||||
member[const.ID], pool_id=self.pool_id,
|
member[const.ID], pool_id=self.pool_id,
|
||||||
|
@ -476,13 +489,14 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
self.assertEqual(const.NO_MONITOR, member[const.OPERATING_STATUS])
|
self.assertEqual(const.NO_MONITOR, member[const.OPERATING_STATUS])
|
||||||
|
|
||||||
equal_items = [const.NAME, const.ADMIN_STATE_UP, const.ADDRESS,
|
equal_items = [const.NAME, const.ADMIN_STATE_UP, const.ADDRESS,
|
||||||
const.PROTOCOL_PORT, const.WEIGHT,
|
const.PROTOCOL_PORT, const.WEIGHT]
|
||||||
const.MONITOR_ADDRESS, const.MONITOR_PORT]
|
|
||||||
|
|
||||||
if self.mem_member_client.is_version_supported(
|
if self.mem_member_client.is_version_supported(
|
||||||
self.api_version, '2.1'):
|
self.api_version, '2.1'):
|
||||||
equal_items.append(const.BACKUP)
|
equal_items.append(const.BACKUP)
|
||||||
|
|
||||||
|
if monitor:
|
||||||
|
equal_items += [const.MONITOR_ADDRESS, const.MONITOR_PORT]
|
||||||
if const.SUBNET_ID in member_kwargs:
|
if const.SUBNET_ID in member_kwargs:
|
||||||
equal_items.append(const.SUBNET_ID)
|
equal_items.append(const.SUBNET_ID)
|
||||||
else:
|
else:
|
||||||
|
@ -553,7 +567,9 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
member_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
member_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
||||||
const.ID]
|
const.ID]
|
||||||
|
|
||||||
member = self.mem_member_client.create_member(**member_kwargs)
|
member, monitor = self._create_member_and_get_monitor_status(
|
||||||
|
**member_kwargs)
|
||||||
|
|
||||||
self.addClassResourceCleanup(
|
self.addClassResourceCleanup(
|
||||||
self.mem_member_client.cleanup_member,
|
self.mem_member_client.cleanup_member,
|
||||||
member[const.ID], pool_id=self.pool_id,
|
member[const.ID], pool_id=self.pool_id,
|
||||||
|
@ -571,27 +587,30 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
CONF.load_balancer.build_interval,
|
CONF.load_balancer.build_interval,
|
||||||
CONF.load_balancer.build_timeout,
|
CONF.load_balancer.build_timeout,
|
||||||
pool_id=self.pool_id)
|
pool_id=self.pool_id)
|
||||||
if not CONF.load_balancer.test_with_noop:
|
status = const.OFFLINE
|
||||||
member = waiters.wait_for_status(
|
if not monitor or CONF.load_balancer.test_with_noop:
|
||||||
self.mem_member_client.show_member,
|
status = const.NO_MONITOR
|
||||||
member[const.ID], const.OPERATING_STATUS,
|
member = waiters.wait_for_status(
|
||||||
const.OFFLINE,
|
self.mem_member_client.show_member,
|
||||||
CONF.load_balancer.build_interval,
|
member[const.ID], const.OPERATING_STATUS,
|
||||||
CONF.load_balancer.build_timeout,
|
status,
|
||||||
pool_id=self.pool_id)
|
CONF.load_balancer.build_interval,
|
||||||
|
CONF.load_balancer.build_timeout,
|
||||||
|
pool_id=self.pool_id)
|
||||||
|
|
||||||
parser.parse(member[const.CREATED_AT])
|
parser.parse(member[const.CREATED_AT])
|
||||||
parser.parse(member[const.UPDATED_AT])
|
parser.parse(member[const.UPDATED_AT])
|
||||||
UUID(member[const.ID])
|
UUID(member[const.ID])
|
||||||
|
|
||||||
equal_items = [const.NAME, const.ADMIN_STATE_UP, const.ADDRESS,
|
equal_items = [const.NAME, const.ADMIN_STATE_UP, const.ADDRESS,
|
||||||
const.PROTOCOL_PORT, const.WEIGHT,
|
const.PROTOCOL_PORT, const.WEIGHT]
|
||||||
const.MONITOR_ADDRESS, const.MONITOR_PORT]
|
|
||||||
|
|
||||||
if self.mem_member_client.is_version_supported(
|
if self.mem_member_client.is_version_supported(
|
||||||
self.api_version, '2.1'):
|
self.api_version, '2.1'):
|
||||||
equal_items.append(const.BACKUP)
|
equal_items.append(const.BACKUP)
|
||||||
|
|
||||||
|
if monitor:
|
||||||
|
equal_items += [const.MONITOR_ADDRESS, const.MONITOR_PORT]
|
||||||
if const.SUBNET_ID in member_kwargs:
|
if const.SUBNET_ID in member_kwargs:
|
||||||
equal_items.append(const.SUBNET_ID)
|
equal_items.append(const.SUBNET_ID)
|
||||||
else:
|
else:
|
||||||
|
@ -600,8 +619,9 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
for item in equal_items:
|
for item in equal_items:
|
||||||
self.assertEqual(member_kwargs[item], member[item])
|
self.assertEqual(member_kwargs[item], member[item])
|
||||||
|
|
||||||
if CONF.load_balancer.test_with_noop:
|
if CONF.load_balancer.test_with_noop or not monitor:
|
||||||
# Operating status with noop will stay in NO_MONITOR
|
# Operating status with noop or Driver not supporting Monitors
|
||||||
|
# will stay in NO_MONITOR
|
||||||
self.assertEqual(const.NO_MONITOR, member[const.OPERATING_STATUS])
|
self.assertEqual(const.NO_MONITOR, member[const.OPERATING_STATUS])
|
||||||
else:
|
else:
|
||||||
# Operating status will be OFFLINE while admin_state_up = False
|
# Operating status will be OFFLINE while admin_state_up = False
|
||||||
|
@ -646,18 +666,18 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
const.NAME: new_name,
|
const.NAME: new_name,
|
||||||
const.ADMIN_STATE_UP: not member[const.ADMIN_STATE_UP],
|
const.ADMIN_STATE_UP: not member[const.ADMIN_STATE_UP],
|
||||||
const.WEIGHT: member[const.WEIGHT] + 1,
|
const.WEIGHT: member[const.WEIGHT] + 1,
|
||||||
const.MONITOR_ADDRESS: '192.0.2.3',
|
|
||||||
const.MONITOR_PORT: member[const.MONITOR_PORT] + 1,
|
|
||||||
}
|
}
|
||||||
if self.mem_member_client.is_version_supported(
|
if self.mem_member_client.is_version_supported(
|
||||||
self.api_version, '2.1'):
|
self.api_version, '2.1'):
|
||||||
member_update_kwargs.update({
|
member_update_kwargs.update({
|
||||||
const.BACKUP: not member[const.BACKUP]
|
const.BACKUP: not member[const.BACKUP]
|
||||||
})
|
})
|
||||||
|
if monitor:
|
||||||
|
member_update_kwargs[const.MONITOR_ADDRESS] = '192.0.2.3'
|
||||||
|
member_update_kwargs[const.MONITOR_PORT] = member[
|
||||||
|
const.MONITOR_PORT] + 1
|
||||||
member = self.mem_member_client.update_member(
|
member = self.mem_member_client.update_member(
|
||||||
member[const.ID], **member_update_kwargs)
|
member[const.ID], **member_update_kwargs)
|
||||||
|
|
||||||
waiters.wait_for_status(
|
waiters.wait_for_status(
|
||||||
self.mem_lb_client.show_loadbalancer, self.lb_id,
|
self.mem_lb_client.show_loadbalancer, self.lb_id,
|
||||||
const.PROVISIONING_STATUS, const.ACTIVE,
|
const.PROVISIONING_STATUS, const.ACTIVE,
|
||||||
|
@ -683,13 +703,14 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
self.assertEqual(const.NO_MONITOR, member[const.OPERATING_STATUS])
|
self.assertEqual(const.NO_MONITOR, member[const.OPERATING_STATUS])
|
||||||
|
|
||||||
# Test changed items
|
# Test changed items
|
||||||
equal_items = [const.NAME, const.ADMIN_STATE_UP, const.WEIGHT,
|
equal_items = [const.NAME, const.ADMIN_STATE_UP, const.WEIGHT]
|
||||||
const.MONITOR_ADDRESS, const.MONITOR_PORT]
|
|
||||||
|
|
||||||
if self.mem_member_client.is_version_supported(
|
if self.mem_member_client.is_version_supported(
|
||||||
self.api_version, '2.1'):
|
self.api_version, '2.1'):
|
||||||
equal_items.append(const.BACKUP)
|
equal_items.append(const.BACKUP)
|
||||||
|
|
||||||
|
if monitor:
|
||||||
|
equal_items += [const.MONITOR_ADDRESS, const.MONITOR_PORT]
|
||||||
for item in equal_items:
|
for item in equal_items:
|
||||||
self.assertEqual(member_update_kwargs[item], member[item])
|
self.assertEqual(member_update_kwargs[item], member[item])
|
||||||
|
|
||||||
|
@ -748,8 +769,9 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
if self.lb_member_vip_subnet:
|
if self.lb_member_vip_subnet:
|
||||||
member1_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
member1_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
||||||
const.ID]
|
const.ID]
|
||||||
|
member1, monitor = self._create_member_and_get_monitor_status(
|
||||||
|
**member1_kwargs)
|
||||||
|
|
||||||
member1 = self.mem_member_client.create_member(**member1_kwargs)
|
|
||||||
self.addClassResourceCleanup(
|
self.addClassResourceCleanup(
|
||||||
self.mem_member_client.cleanup_member,
|
self.mem_member_client.cleanup_member,
|
||||||
member1[const.ID], pool_id=pool_id,
|
member1[const.ID], pool_id=pool_id,
|
||||||
|
@ -770,8 +792,6 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
const.ADDRESS: '192.0.2.3',
|
const.ADDRESS: '192.0.2.3',
|
||||||
const.PROTOCOL_PORT: 81,
|
const.PROTOCOL_PORT: 81,
|
||||||
const.WEIGHT: 51,
|
const.WEIGHT: 51,
|
||||||
const.MONITOR_ADDRESS: '192.0.2.4',
|
|
||||||
const.MONITOR_PORT: 8081,
|
|
||||||
}
|
}
|
||||||
if self.mem_member_client.is_version_supported(
|
if self.mem_member_client.is_version_supported(
|
||||||
self.api_version, '2.1'):
|
self.api_version, '2.1'):
|
||||||
|
@ -779,6 +799,9 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
const.BACKUP: True,
|
const.BACKUP: True,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if monitor:
|
||||||
|
member2_kwargs[const.MONITOR_ADDRESS] = '192.0.2.4'
|
||||||
|
member2_kwargs[const.MONITOR_PORT] = 8081
|
||||||
if self.lb_member_vip_subnet:
|
if self.lb_member_vip_subnet:
|
||||||
member2_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
member2_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
||||||
const.ID]
|
const.ID]
|
||||||
|
@ -803,8 +826,6 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
const.ADDRESS: '192.0.2.5',
|
const.ADDRESS: '192.0.2.5',
|
||||||
const.PROTOCOL_PORT: 82,
|
const.PROTOCOL_PORT: 82,
|
||||||
const.WEIGHT: 52,
|
const.WEIGHT: 52,
|
||||||
const.MONITOR_ADDRESS: '192.0.2.6',
|
|
||||||
const.MONITOR_PORT: 8082,
|
|
||||||
}
|
}
|
||||||
if self.mem_member_client.is_version_supported(
|
if self.mem_member_client.is_version_supported(
|
||||||
self.api_version, '2.1'):
|
self.api_version, '2.1'):
|
||||||
|
@ -812,6 +833,9 @@ class MemberAPITest(test_base.LoadBalancerBaseTest):
|
||||||
const.BACKUP: True,
|
const.BACKUP: True,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if monitor:
|
||||||
|
member2_kwargs[const.MONITOR_ADDRESS] = '192.0.2.6'
|
||||||
|
member2_kwargs[const.MONITOR_PORT] = 8082
|
||||||
if self.lb_member_vip_subnet:
|
if self.lb_member_vip_subnet:
|
||||||
member3_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
member3_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
|
||||||
const.ID]
|
const.ID]
|
||||||
|
|
Loading…
Reference in New Issue