diff --git a/rally/plugins/openstack/scenarios/gnocchi/status.py b/rally/plugins/openstack/scenarios/gnocchi/status.py new file mode 100644 index 00000000..39357c4b --- /dev/null +++ b/rally/plugins/openstack/scenarios/gnocchi/status.py @@ -0,0 +1,34 @@ +# Copyright 2017 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from rally import consts +from rally.plugins.openstack import scenario +from rally.plugins.openstack.scenarios.gnocchi import utils as gnocchiutils +from rally.task import validation + +"""Scenarios for Gnocchi status.""" + + +@validation.add("required_services", + services=[consts.Service.GNOCCHI]) +@validation.add("required_platform", platform="openstack", admin=True) +@scenario.configure(name="Gnocchi.get_status") +class GetStatus(gnocchiutils.GnocchiBase): + + def run(self, detailed=False): + """Get the status of measurements processing. + + :param detailed: get detailed output + """ + self.admin_gnocchi.get_status(detailed) diff --git a/samples/tasks/scenarios/gnocchi/get-status.json b/samples/tasks/scenarios/gnocchi/get-status.json new file mode 100644 index 00000000..a4a1e4fa --- /dev/null +++ b/samples/tasks/scenarios/gnocchi/get-status.json @@ -0,0 +1,19 @@ +{ + "Gnocchi.get_status": [ + { + "args": { + "detailed": false + }, + "runner": { + "type": "constant", + "times": 10, + "concurrency": 2 + }, + "sla": { + "failure_rate": { + "max": 0 + } + } + } + ] +} diff --git a/samples/tasks/scenarios/gnocchi/get-status.yaml b/samples/tasks/scenarios/gnocchi/get-status.yaml new file mode 100644 index 00000000..0dfdfcdd --- /dev/null +++ b/samples/tasks/scenarios/gnocchi/get-status.yaml @@ -0,0 +1,12 @@ +--- + Gnocchi.get_status: + - + args: + detailed: false + runner: + type: constant + times: 10 + concurrency: 2 + sla: + failure_rate: + max: 0 diff --git a/tests/unit/plugins/openstack/scenarios/gnocchi/test_status.py b/tests/unit/plugins/openstack/scenarios/gnocchi/test_status.py new file mode 100644 index 00000000..11bc3305 --- /dev/null +++ b/tests/unit/plugins/openstack/scenarios/gnocchi/test_status.py @@ -0,0 +1,43 @@ +# Copyright 2017 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import mock + +from rally.plugins.openstack.scenarios.gnocchi import status +from tests.unit import test + + +class GnocchiStatusTestCase(test.ScenarioTestCase): + + def get_test_context(self): + context = super(GnocchiStatusTestCase, self).get_test_context() + context.update({ + "admin": { + "user_id": "fake", + "credential": mock.MagicMock() + } + }) + return context + + def setUp(self): + super(GnocchiStatusTestCase, self).setUp() + patch = mock.patch( + "rally.plugins.openstack.services.gnocchi.metric.GnocchiService") + self.addCleanup(patch.stop) + self.mock_metric = patch.start() + + def test_get_status(self): + metric_service = self.mock_metric.return_value + status.GetStatus(self.context).run(False) + metric_service.get_status.assert_called_once_with(False)