diff --git a/rally-jobs/rally-neutron.yaml b/rally-jobs/rally-neutron.yaml index 905c9f857d..112d084c82 100644 --- a/rally-jobs/rally-neutron.yaml +++ b/rally-jobs/rally-neutron.yaml @@ -209,19 +209,17 @@ NeutronLoadbalancerV1.create_and_delete_vips: - args: + pool_create_args: {} vip_create_args: {} runner: type: "constant" times: {{smoke or 20}} - concurrency: {{smoke or 1}} + concurrency: {{smoke or 10}} context: users: tenants: {{smoke or 5}} users_per_tenant: {{smoke or 2}} network: {} - lbaas: - pool: {} - lbaas_version: 1 quotas: neutron: network: -1 diff --git a/rally/plugins/openstack/scenarios/neutron/loadbalancer_v1.py b/rally/plugins/openstack/scenarios/neutron/loadbalancer_v1.py index 4eba3bc11d..daa7501c4e 100644 --- a/rally/plugins/openstack/scenarios/neutron/loadbalancer_v1.py +++ b/rally/plugins/openstack/scenarios/neutron/loadbalancer_v1.py @@ -120,23 +120,23 @@ class NeutronLoadbalancerV1(utils.NeutronScenario): @validation.required_services(consts.Service.NEUTRON) @validation.required_openstack(users=True) @validation.required_contexts("network") - @validation.required_contexts("lbaas") @scenario.configure(context={"cleanup": ["neutron"]}) - def create_and_delete_vips(self, vip_create_args=None): + def create_and_delete_vips(self, pool_create_args=None, + vip_create_args=None): """Create a vip(v1) and then delete vips(v1). Measure the "neutron lb-vip-create" and "neutron lb-vip-delete" command performance. The scenario creates a vip for pool and then deletes those vips. + :param pool_create_args: dict, POST /lb/pools request options :param vip_create_args: dict, POST /lb/vips request options """ vips = [] - pools = [] + pool_create_args = pool_create_args or {} vip_create_args = vip_create_args or {} networks = self.context.get("tenant", {}).get("networks", []) - for net in networks: - [pools.append(pool) for pool in net.get("lb_pools")] + pools = self._create_v1_pools(networks, **pool_create_args) with atomic.ActionTimer(self, "neutron.create_%s_vips" % len(pools)): for pool in pools: vips.append(self._create_v1_vip(pool, **vip_create_args)) diff --git a/tests/unit/plugins/openstack/scenarios/neutron/test_loadbalancer_v1.py b/tests/unit/plugins/openstack/scenarios/neutron/test_loadbalancer_v1.py index 7439ad9091..c56506bf33 100644 --- a/tests/unit/plugins/openstack/scenarios/neutron/test_loadbalancer_v1.py +++ b/tests/unit/plugins/openstack/scenarios/neutron/test_loadbalancer_v1.py @@ -33,12 +33,6 @@ class NeutronLoadbalancerv1TestCase(test.TestCase): "subnets": ["fake_subnet"]}]}}) return context - def _get_context_pools(self): - context = self._get_context() - for network in context["tenant"]["networks"]: - network.update({"lb_pools": [{"pool": {"id": "pool-id"}}]}) - return context - @ddt.data( {}, {"pool_create_args": None}, @@ -172,24 +166,38 @@ class NeutronLoadbalancerv1TestCase(test.TestCase): {"vip_create_args": None}, {"vip_create_args": {}}, {"vip_create_args": {"name": "given-name"}}, + {"pool_create_args": None}, + {"pool_create_args": {}}, + {"pool_create_args": {"name": "given-pool-name"}}, ) @ddt.unpack - def test_create_and_delete_vips(self, vip_create_args=None): + def test_create_and_delete_vips(self, pool_create_args=None, + vip_create_args=None): + pools = [{ + "pool": { + "id": "pool-id" + } + }] vip = { "vip": { "id": "vip-id" } } neutron_scenario = loadbalancer_v1.NeutronLoadbalancerV1( - self._get_context_pools()) + self._get_context()) vip_data = vip_create_args or {} + pool_data = pool_create_args or {} + networks = self._get_context()["tenant"]["networks"] + neutron_scenario._create_v1_pools = mock.Mock(return_value=pools) neutron_scenario._create_v1_vip = mock.Mock(return_value=vip) neutron_scenario._delete_v1_vip = mock.Mock() neutron_scenario.create_and_delete_vips( + pool_create_args=pool_create_args, vip_create_args=vip_create_args) - for net in self._get_context_pools()["tenant"]["networks"]: - neutron_scenario._create_v1_vip.assert_has_calls( - [mock.call(pool, **vip_data) for pool in net["lb_pools"]]) + neutron_scenario._create_v1_pools.assert_called_once_with( + networks, **pool_data) + neutron_scenario._create_v1_vip.assert_has_calls( + [mock.call(pool, **vip_data) for pool in pools]) neutron_scenario._delete_v1_vip.assert_has_calls( [mock.call(vip["vip"])])