From 6626f25a81b9e503a3ccedce6455f342de2e0307 Mon Sep 17 00:00:00 2001 From: Reedip Date: Mon, 3 Dec 2018 07:31:34 +0000 Subject: [PATCH] Add configuration to enable/disable L7,L4 protocols Currently not all Provider drivers support L7 in Octavia. Until the flavors option is not enabled, it is proposed to skip L7 in favor of L4( specifically TCP ) protocol tests for the provider drivers. Change-Id: I07b4f7038d71d684c23885c89257af2711a442a0 --- octavia_tempest_plugin/config.py | 8 ++++++ .../tests/api/v2/test_l7policy.py | 9 +++++++ .../tests/api/v2/test_l7rule.py | 8 ++++++ .../tests/api/v2/test_listener.py | 24 ++++++++++------- .../tests/api/v2/test_member.py | 15 +++++++---- .../tests/api/v2/test_pool.py | 27 ++++++++++--------- .../tests/scenario/v2/test_l7policy.py | 9 +++++++ .../tests/scenario/v2/test_l7rule.py | 9 +++++++ .../tests/scenario/v2/test_listener.py | 14 ++++++---- .../tests/scenario/v2/test_member.py | 8 ++++-- .../tests/scenario/v2/test_pool.py | 21 +++++++++------ 11 files changed, 110 insertions(+), 42 deletions(-) diff --git a/octavia_tempest_plugin/config.py b/octavia_tempest_plugin/config.py index 1bc4a63f..628664bc 100644 --- a/octavia_tempest_plugin/config.py +++ b/octavia_tempest_plugin/config.py @@ -176,4 +176,12 @@ LBFeatureEnabledGroup = [ default=True, help="Whether TLS termination is available with provider " "driver or not."), + cfg.BoolOpt('l7_protocol_enabled', + default=True, + help="Whether L7 Protocols are available with the provider" + " driver or not."), + cfg.StrOpt('l4_protocol', + default="TCP", + help="The type of L4 Protocol which is supported with the" + " provider driver."), ] diff --git a/octavia_tempest_plugin/tests/api/v2/test_l7policy.py b/octavia_tempest_plugin/tests/api/v2/test_l7policy.py index 255bbdeb..eeb22bf6 100644 --- a/octavia_tempest_plugin/tests/api/v2/test_l7policy.py +++ b/octavia_tempest_plugin/tests/api/v2/test_l7policy.py @@ -31,6 +31,15 @@ CONF = config.CONF class L7PolicyAPITest(test_base.LoadBalancerBaseTest): """Test the l7policy object API.""" + @classmethod + def skip_checks(cls): + super(L7PolicyAPITest, cls).skip_checks() + if not CONF.loadbalancer_feature_enabled.l7_protocol_enabled: + cls.skipException('[loadbalancer-feature-enabled] ' + '"l7_protocol_enabled" is set to False in the ' + 'Tempest configuration. L7 Scenario tests will ' + 'be skipped.') + @classmethod def resource_setup(cls): """Setup resources needed by the tests.""" diff --git a/octavia_tempest_plugin/tests/api/v2/test_l7rule.py b/octavia_tempest_plugin/tests/api/v2/test_l7rule.py index 395a3adf..a75b1573 100644 --- a/octavia_tempest_plugin/tests/api/v2/test_l7rule.py +++ b/octavia_tempest_plugin/tests/api/v2/test_l7rule.py @@ -30,6 +30,14 @@ CONF = config.CONF class L7RuleAPITest(test_base.LoadBalancerBaseTest): """Test the l7rule object API.""" + @classmethod + def skip_checks(cls): + super(L7RuleAPITest, cls).skip_checks() + if not CONF.loadbalancer_feature_enabled.l7_protocol_enabled: + cls.skipException('[loadbalancer-feature-enabled]' + ' "l7_protocol_enabled" is set to False in the' + ' Tempest configuration.L7 Scenario tests would' + ' be skipped.') @classmethod def resource_setup(cls): diff --git a/octavia_tempest_plugin/tests/api/v2/test_listener.py b/octavia_tempest_plugin/tests/api/v2/test_listener.py index 38da0aef..928ecfb0 100644 --- a/octavia_tempest_plugin/tests/api/v2/test_listener.py +++ b/octavia_tempest_plugin/tests/api/v2/test_listener.py @@ -42,6 +42,10 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): const.NAME: lb_name} cls._setup_lb_network_kwargs(lb_kwargs) + cls.protocol = const.HTTP + lb_feature_enabled = CONF.loadbalancer_feature_enabled + if not lb_feature_enabled.l7_protocol_enabled: + cls.protocol = lb_feature_enabled.l4_protocol lb = cls.mem_lb_client.create_loadbalancer(**lb_kwargs) cls.lb_id = lb[const.ID] @@ -72,7 +76,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): const.NAME: listener_name, const.DESCRIPTION: listener_description, const.ADMIN_STATE_UP: True, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.PROTOCOL_PORT: 80, const.LOADBALANCER_ID: self.lb_id, const.CONNECTION_LIMIT: 200, @@ -142,7 +146,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS]) else: self.assertEqual(const.ONLINE, listener[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, listener[const.PROTOCOL]) + self.assertEqual(self.protocol, listener[const.PROTOCOL]) self.assertEqual(80, listener[const.PROTOCOL_PORT]) self.assertEqual(200, listener[const.CONNECTION_LIMIT]) insert_headers = listener[const.INSERT_HEADERS] @@ -194,7 +198,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): const.NAME: listener1_name, const.DESCRIPTION: listener1_desc, const.ADMIN_STATE_UP: True, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.PROTOCOL_PORT: 80, const.LOADBALANCER_ID: lb_id, } @@ -226,7 +230,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): const.NAME: listener2_name, const.DESCRIPTION: listener2_desc, const.ADMIN_STATE_UP: True, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.PROTOCOL_PORT: 81, const.LOADBALANCER_ID: lb_id, } @@ -258,7 +262,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): const.NAME: listener3_name, const.DESCRIPTION: listener3_desc, const.ADMIN_STATE_UP: False, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.PROTOCOL_PORT: 82, const.LOADBALANCER_ID: lb_id, } @@ -420,7 +424,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): const.NAME: listener_name, const.DESCRIPTION: listener_description, const.ADMIN_STATE_UP: True, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.PROTOCOL_PORT: 81, const.LOADBALANCER_ID: self.lb_id, const.CONNECTION_LIMIT: 200, @@ -479,7 +483,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS]) else: self.assertEqual(const.ONLINE, listener[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, listener[const.PROTOCOL]) + self.assertEqual(self.protocol, listener[const.PROTOCOL]) self.assertEqual(81, listener[const.PROTOCOL_PORT]) self.assertEqual(200, listener[const.CONNECTION_LIMIT]) insert_headers = listener[const.INSERT_HEADERS] @@ -542,7 +546,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): const.NAME: listener_name, const.DESCRIPTION: listener_description, const.ADMIN_STATE_UP: False, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.PROTOCOL_PORT: 82, const.LOADBALANCER_ID: self.lb_id, const.CONNECTION_LIMIT: 200, @@ -590,7 +594,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): UUID(listener[const.ID]) # Operating status will be OFFLINE while admin_state_up = False self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, listener[const.PROTOCOL]) + self.assertEqual(self.protocol, listener[const.PROTOCOL]) self.assertEqual(82, listener[const.PROTOCOL_PORT]) self.assertEqual(200, listener[const.CONNECTION_LIMIT]) insert_headers = listener[const.INSERT_HEADERS] @@ -717,7 +721,7 @@ class ListenerAPITest(test_base.LoadBalancerBaseTest): listener_kwargs = { const.NAME: listener_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.PROTOCOL_PORT: 83, const.LOADBALANCER_ID: self.lb_id, } diff --git a/octavia_tempest_plugin/tests/api/v2/test_member.py b/octavia_tempest_plugin/tests/api/v2/test_member.py index 18073cca..e65dd991 100644 --- a/octavia_tempest_plugin/tests/api/v2/test_member.py +++ b/octavia_tempest_plugin/tests/api/v2/test_member.py @@ -40,8 +40,11 @@ class MemberAPITest(test_base.LoadBalancerBaseTest): lb_name = data_utils.rand_name("lb_member_lb1_member") lb_kwargs = {const.PROVIDER: CONF.load_balancer.provider, const.NAME: lb_name} - cls._setup_lb_network_kwargs(lb_kwargs) + cls.protocol = const.HTTP + lb_feature_enabled = CONF.loadbalancer_feature_enabled + if not lb_feature_enabled.l7_protocol_enabled: + cls.protocol = lb_feature_enabled.l4_protocol lb = cls.mem_lb_client.create_loadbalancer(**lb_kwargs) cls.lb_id = lb[const.ID] @@ -58,7 +61,7 @@ class MemberAPITest(test_base.LoadBalancerBaseTest): listener_name = data_utils.rand_name("lb_member_listener1_member") listener_kwargs = { const.NAME: listener_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: cls.protocol, const.PROTOCOL_PORT: '80', const.LOADBALANCER_ID: cls.lb_id, } @@ -78,7 +81,7 @@ class MemberAPITest(test_base.LoadBalancerBaseTest): pool_name = data_utils.rand_name("lb_member_pool1_member") pool_kwargs = { const.NAME: pool_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: cls.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.LISTENER_ID: cls.listener_id, } @@ -211,7 +214,8 @@ class MemberAPITest(test_base.LoadBalancerBaseTest): pool_name = data_utils.rand_name("lb_member_pool2_member-list") pool = self.mem_pool_client.create_pool( name=pool_name, loadbalancer_id=self.lb_id, - protocol=const.HTTP, lb_algorithm=const.LB_ALGORITHM_ROUND_ROBIN) + protocol=self.protocol, + lb_algorithm=const.LB_ALGORITHM_ROUND_ROBIN) pool_id = pool[const.ID] self.addCleanup( self.mem_pool_client.cleanup_pool, pool_id, @@ -710,7 +714,8 @@ class MemberAPITest(test_base.LoadBalancerBaseTest): pool_name = data_utils.rand_name("lb_member_pool3_member-batch") pool = self.mem_pool_client.create_pool( name=pool_name, loadbalancer_id=self.lb_id, - protocol=const.HTTP, lb_algorithm=const.LB_ALGORITHM_ROUND_ROBIN) + protocol=self.protocol, + lb_algorithm=const.LB_ALGORITHM_ROUND_ROBIN) pool_id = pool[const.ID] self.addClassResourceCleanup( self.mem_pool_client.cleanup_pool, pool_id, diff --git a/octavia_tempest_plugin/tests/api/v2/test_pool.py b/octavia_tempest_plugin/tests/api/v2/test_pool.py index 28b95b6d..63d9e467 100644 --- a/octavia_tempest_plugin/tests/api/v2/test_pool.py +++ b/octavia_tempest_plugin/tests/api/v2/test_pool.py @@ -39,8 +39,11 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): lb_name = data_utils.rand_name("lb_member_lb1_pool") lb_kwargs = {const.PROVIDER: CONF.load_balancer.provider, const.NAME: lb_name} - cls._setup_lb_network_kwargs(lb_kwargs) + cls.protocol = const.HTTP + lb_feature_enabled = CONF.loadbalancer_feature_enabled + if not lb_feature_enabled.l7_protocol_enabled: + cls.protocol = lb_feature_enabled.l4_protocol lb = cls.mem_lb_client.create_loadbalancer(**lb_kwargs) cls.lb_id = lb[const.ID] @@ -57,7 +60,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): listener_name = data_utils.rand_name("lb_member_listener1_pool") listener_kwargs = { const.NAME: listener_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: cls.protocol, const.PROTOCOL_PORT: '80', const.LOADBALANCER_ID: cls.lb_id, } @@ -98,7 +101,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): const.NAME: pool_name, const.DESCRIPTION: pool_description, const.ADMIN_STATE_UP: True, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.SESSION_PERSISTENCE: { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, @@ -156,7 +159,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): else: # OFFLINE if it is just on the LB directly or is in noop mode self.assertEqual(const.OFFLINE, pool[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, pool[const.PROTOCOL]) + self.assertEqual(self.protocol, pool[const.PROTOCOL]) self.assertEqual(1, len(pool[const.LOADBALANCERS])) self.assertEqual(self.lb_id, pool[const.LOADBALANCERS][0][const.ID]) if has_listener: @@ -211,7 +214,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): const.NAME: pool1_name, const.DESCRIPTION: pool1_desc, const.ADMIN_STATE_UP: True, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.SESSION_PERSISTENCE: { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, @@ -248,7 +251,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): const.NAME: pool2_name, const.DESCRIPTION: pool2_desc, const.ADMIN_STATE_UP: True, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.SESSION_PERSISTENCE: { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, @@ -284,7 +287,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): const.NAME: pool3_name, const.DESCRIPTION: pool3_desc, const.ADMIN_STATE_UP: False, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, # No session persistence, just so there's one test for that const.LOADBALANCER_ID: lb_id, @@ -425,7 +428,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): const.NAME: pool_name, const.DESCRIPTION: pool_description, const.ADMIN_STATE_UP: True, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.SESSION_PERSISTENCE: { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, @@ -460,7 +463,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): UUID(pool[const.ID]) # Operating status for pools will always be offline without members self.assertEqual(const.OFFLINE, pool[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, pool[const.PROTOCOL]) + self.assertEqual(self.protocol, pool[const.PROTOCOL]) self.assertEqual(1, len(pool[const.LOADBALANCERS])) self.assertEqual(self.lb_id, pool[const.LOADBALANCERS][0][const.ID]) self.assertEmpty(pool[const.LISTENERS]) @@ -519,7 +522,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): const.NAME: pool_name, const.DESCRIPTION: pool_description, const.ADMIN_STATE_UP: False, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.SESSION_PERSISTENCE: { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, @@ -554,7 +557,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): UUID(pool[const.ID]) # Operating status for pools will always be offline without members self.assertEqual(const.OFFLINE, pool[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, pool[const.PROTOCOL]) + self.assertEqual(self.protocol, pool[const.PROTOCOL]) self.assertEqual(1, len(pool[const.LOADBALANCERS])) self.assertEqual(self.lb_id, pool[const.LOADBALANCERS][0][const.ID]) self.assertEmpty(pool[const.LISTENERS]) @@ -667,7 +670,7 @@ class PoolAPITest(test_base.LoadBalancerBaseTest): pool_sp_cookie_name = 'my_cookie' pool_kwargs = { const.NAME: pool_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.SESSION_PERSISTENCE: { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_l7policy.py b/octavia_tempest_plugin/tests/scenario/v2/test_l7policy.py index 9e09f353..c39a6c68 100644 --- a/octavia_tempest_plugin/tests/scenario/v2/test_l7policy.py +++ b/octavia_tempest_plugin/tests/scenario/v2/test_l7policy.py @@ -28,6 +28,15 @@ CONF = config.CONF class L7PolicyScenarioTest(test_base.LoadBalancerBaseTest): + @classmethod + def skip_checks(cls): + super(L7PolicyScenarioTest, cls).skip_checks() + if not CONF.loadbalancer_feature_enabled.l7_protocol_enabled: + cls.skipException('[loadbalancer-feature-enabled] ' + '"l7_protocol_enabled" is set to False in the ' + 'Tempest configuration. L7 Scenario tests will ' + 'be skipped.') + @classmethod def resource_setup(cls): """Setup resources needed by the tests.""" diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_l7rule.py b/octavia_tempest_plugin/tests/scenario/v2/test_l7rule.py index 114ea3e3..5c322ab9 100644 --- a/octavia_tempest_plugin/tests/scenario/v2/test_l7rule.py +++ b/octavia_tempest_plugin/tests/scenario/v2/test_l7rule.py @@ -28,6 +28,15 @@ CONF = config.CONF class L7RuleScenarioTest(test_base.LoadBalancerBaseTest): + @classmethod + def skip_checks(cls): + super(L7RuleScenarioTest, cls).skip_checks() + if not CONF.loadbalancer_feature_enabled.l7_protocol_enabled: + cls.skipException('[loadbalancer-feature-enabled] ' + '"l7_protocol_enabled" is set to False in the ' + 'Tempest configuration. L7 Scenario tests will ' + 'be skipped.') + @classmethod def resource_setup(cls): """Setup resources needed by the tests.""" diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py index 7720d278..c504ea2e 100644 --- a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py +++ b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py @@ -51,11 +51,15 @@ class ListenerScenarioTest(test_base.LoadBalancerBaseTest): const.ACTIVE, CONF.load_balancer.lb_build_interval, CONF.load_balancer.lb_build_timeout) + cls.protocol = const.HTTP + lb_feature_enabled = CONF.loadbalancer_feature_enabled + if not lb_feature_enabled.l7_protocol_enabled: + cls.protocol = lb_feature_enabled.l4_protocol pool1_name = data_utils.rand_name("lb_member_pool1_listener") pool1_kwargs = { const.NAME: pool1_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: cls.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.LOADBALANCER_ID: cls.lb_id, } @@ -75,7 +79,7 @@ class ListenerScenarioTest(test_base.LoadBalancerBaseTest): pool2_name = data_utils.rand_name("lb_member_pool2_listener") pool2_kwargs = { const.NAME: pool2_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: cls.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.LOADBALANCER_ID: cls.lb_id, } @@ -109,7 +113,7 @@ class ListenerScenarioTest(test_base.LoadBalancerBaseTest): const.NAME: listener_name, const.DESCRIPTION: listener_description, const.ADMIN_STATE_UP: False, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.PROTOCOL_PORT: 80, const.LOADBALANCER_ID: self.lb_id, const.CONNECTION_LIMIT: 200, @@ -157,7 +161,7 @@ class ListenerScenarioTest(test_base.LoadBalancerBaseTest): UUID(listener[const.ID]) # Operating status will be OFFLINE while admin_state_up = False self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, listener[const.PROTOCOL]) + self.assertEqual(self.protocol, listener[const.PROTOCOL]) self.assertEqual(80, listener[const.PROTOCOL_PORT]) self.assertEqual(200, listener[const.CONNECTION_LIMIT]) insert_headers = listener[const.INSERT_HEADERS] @@ -230,7 +234,7 @@ class ListenerScenarioTest(test_base.LoadBalancerBaseTest): self.assertEqual(const.OFFLINE, listener[const.OPERATING_STATUS]) else: self.assertEqual(const.ONLINE, listener[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, listener[const.PROTOCOL]) + self.assertEqual(self.protocol, listener[const.PROTOCOL]) self.assertEqual(80, listener[const.PROTOCOL_PORT]) self.assertEqual(400, listener[const.CONNECTION_LIMIT]) insert_headers = listener[const.INSERT_HEADERS] diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_member.py b/octavia_tempest_plugin/tests/scenario/v2/test_member.py index 6bd18dee..d5c1b1b8 100644 --- a/octavia_tempest_plugin/tests/scenario/v2/test_member.py +++ b/octavia_tempest_plugin/tests/scenario/v2/test_member.py @@ -50,11 +50,15 @@ class MemberScenarioTest(test_base.LoadBalancerBaseTest): const.ACTIVE, CONF.load_balancer.lb_build_interval, CONF.load_balancer.lb_build_timeout) + protocol = const.HTTP + lb_feature_enabled = CONF.loadbalancer_feature_enabled + if not lb_feature_enabled.l7_protocol_enabled: + cls.protocol = lb_feature_enabled.l4_protocol listener_name = data_utils.rand_name("lb_member_listener1_member") listener_kwargs = { const.NAME: listener_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: protocol, const.PROTOCOL_PORT: '80', const.LOADBALANCER_ID: cls.lb_id, } @@ -74,7 +78,7 @@ class MemberScenarioTest(test_base.LoadBalancerBaseTest): pool_name = data_utils.rand_name("lb_member_pool1_member") pool_kwargs = { const.NAME: pool_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.LISTENER_ID: cls.listener_id, } diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_pool.py b/octavia_tempest_plugin/tests/scenario/v2/test_pool.py index cd266870..1cdd7273 100644 --- a/octavia_tempest_plugin/tests/scenario/v2/test_pool.py +++ b/octavia_tempest_plugin/tests/scenario/v2/test_pool.py @@ -50,11 +50,15 @@ class PoolScenarioTest(test_base.LoadBalancerBaseTest): const.ACTIVE, CONF.load_balancer.lb_build_interval, CONF.load_balancer.lb_build_timeout) + cls.protocol = const.HTTP + lb_feature_enabled = CONF.loadbalancer_feature_enabled + if not lb_feature_enabled.l7_protocol_enabled: + cls.protocol = lb_feature_enabled.l4_protocol listener_name = data_utils.rand_name("lb_member_listener1_pool") listener_kwargs = { const.NAME: listener_name, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: cls.protocol, const.PROTOCOL_PORT: '80', const.LOADBALANCER_ID: cls.lb_id, } @@ -95,7 +99,7 @@ class PoolScenarioTest(test_base.LoadBalancerBaseTest): const.NAME: pool_name, const.DESCRIPTION: pool_description, const.ADMIN_STATE_UP: False, - const.PROTOCOL: const.HTTP, + const.PROTOCOL: self.protocol, const.LB_ALGORITHM: const.LB_ALGORITHM_ROUND_ROBIN, const.SESSION_PERSISTENCE: { const.TYPE: const.SESSION_PERSISTENCE_APP_COOKIE, @@ -132,7 +136,7 @@ class PoolScenarioTest(test_base.LoadBalancerBaseTest): parser.parse(pool[const.UPDATED_AT]) UUID(pool[const.ID]) self.assertEqual(const.OFFLINE, pool[const.OPERATING_STATUS]) - self.assertEqual(const.HTTP, pool[const.PROTOCOL]) + self.assertEqual(self.protocol, pool[const.PROTOCOL]) self.assertEqual(1, len(pool[const.LOADBALANCERS])) self.assertEqual(self.lb_id, pool[const.LOADBALANCERS][0][const.ID]) if has_listener: @@ -158,10 +162,10 @@ class PoolScenarioTest(test_base.LoadBalancerBaseTest): const.DESCRIPTION: new_description, const.ADMIN_STATE_UP: True, const.LB_ALGORITHM: const.LB_ALGORITHM_LEAST_CONNECTIONS, - const.SESSION_PERSISTENCE: { - const.TYPE: const.SESSION_PERSISTENCE_HTTP_COOKIE, - }, } + if self.protocol == const.HTTP: + pool_update_kwargs[const.SESSION_PERSISTENCE] = { + const.TYPE: const.SESSION_PERSISTENCE_HTTP_COOKIE} pool = self.mem_pool_client.update_pool( pool[const.ID], **pool_update_kwargs) @@ -183,8 +187,9 @@ class PoolScenarioTest(test_base.LoadBalancerBaseTest): self.assertEqual(const.LB_ALGORITHM_LEAST_CONNECTIONS, pool[const.LB_ALGORITHM]) self.assertIsNotNone(pool.get(const.SESSION_PERSISTENCE)) - self.assertEqual(const.SESSION_PERSISTENCE_HTTP_COOKIE, - pool[const.SESSION_PERSISTENCE][const.TYPE]) + if self.protocol == const.HTTP: + self.assertEqual(const.SESSION_PERSISTENCE_HTTP_COOKIE, + pool[const.SESSION_PERSISTENCE][const.TYPE]) self.assertIsNone( pool[const.SESSION_PERSISTENCE].get(const.COOKIE_NAME))