diff --git a/rally/plugins/openstack/scenarios/ceilometer/queries.py b/rally/plugins/openstack/scenarios/ceilometer/queries.py index d1ec9052..28ea566a 100644 --- a/rally/plugins/openstack/scenarios/ceilometer/queries.py +++ b/rally/plugins/openstack/scenarios/ceilometer/queries.py @@ -20,14 +20,15 @@ from rally.plugins.openstack.scenarios.ceilometer import utils as ceiloutils from rally.task import validation -class CeilometerQueries(ceiloutils.CeilometerScenario): +@validation.required_services(consts.Service.CEILOMETER) +@validation.required_openstack(users=True) +@scenario.configure(context={"cleanup": ["ceilometer"]}, + name="CeilometerQueries.create_and_query_alarms") +class CeilometerQueriesCreateAndQueryAlarms(ceiloutils.CeilometerScenario): """Benchmark scenarios for Ceilometer Queries API.""" - @validation.required_services(consts.Service.CEILOMETER) - @validation.required_openstack(users=True) - @scenario.configure(context={"cleanup": ["ceilometer"]}) - def create_and_query_alarms(self, meter_name, threshold, filter=None, - orderby=None, limit=None, **kwargs): + def run(self, meter_name, threshold, filter=None, orderby=None, + limit=None, **kwargs): """Create an alarm and then query it with specific parameters. This scenario tests POST /v2/query/alarms @@ -46,11 +47,16 @@ class CeilometerQueries(ceiloutils.CeilometerScenario): self._create_alarm(meter_name, threshold, kwargs) self._query_alarms(filter, orderby, limit) - @validation.required_services(consts.Service.CEILOMETER) - @validation.required_openstack(users=True) - @scenario.configure(context={"cleanup": ["ceilometer"]}) - def create_and_query_alarm_history(self, meter_name, threshold, - orderby=None, limit=None, **kwargs): + +@validation.required_services(consts.Service.CEILOMETER) +@validation.required_openstack(users=True) +@scenario.configure(context={"cleanup": ["ceilometer"]}, + name="CeilometerQueries.create_and_query_alarm_history") +class CeilometerQueriesCreateAndQueryAlarmHistory(ceiloutils + .CeilometerScenario): + """Benchmark scenarios for Ceilometer Queries API.""" + + def run(self, meter_name, threshold, orderby=None, limit=None, **kwargs): """Create an alarm and then query for its history. This scenario tests POST /v2/query/alarms/history @@ -67,13 +73,16 @@ class CeilometerQueries(ceiloutils.CeilometerScenario): alarm_filter = json.dumps({"=": {"alarm_id": alarm.alarm_id}}) self._query_alarm_history(alarm_filter, orderby, limit) - @validation.required_services(consts.Service.CEILOMETER) - @validation.required_openstack(users=True) - @scenario.configure(context={"cleanup": ["ceilometer"]}) - def create_and_query_samples(self, counter_name, counter_type, - counter_unit, counter_volume, resource_id, - filter=None, orderby=None, limit=None, - **kwargs): + +@validation.required_services(consts.Service.CEILOMETER) +@validation.required_openstack(users=True) +@scenario.configure(context={"cleanup": ["ceilometer"]}, + name="CeilometerQueries.create_and_query_samples") +class CeilometerQueriesCreateAndQuerySamples(ceiloutils.CeilometerScenario): + """Benchmark scenarios for Ceilometer Queries API.""" + + def run(self, counter_name, counter_type, counter_unit, counter_volume, + resource_id, filter=None, orderby=None, limit=None, **kwargs): """Create a sample and then query it with specific parameters. This scenario tests POST /v2/query/samples diff --git a/tests/unit/plugins/openstack/scenarios/ceilometer/test_queries.py b/tests/unit/plugins/openstack/scenarios/ceilometer/test_queries.py index 3519c36d..825fa8c7 100644 --- a/tests/unit/plugins/openstack/scenarios/ceilometer/test_queries.py +++ b/tests/unit/plugins/openstack/scenarios/ceilometer/test_queries.py @@ -22,28 +22,26 @@ from tests.unit import test class CeilometerQueriesTestCase(test.ScenarioTestCase): def test_create_and_query_alarms(self): - scenario = queries.CeilometerQueries(self.context) + scenario = queries.CeilometerQueriesCreateAndQueryAlarms(self.context) + scenario._create_alarm = mock.MagicMock() scenario._query_alarms = mock.MagicMock() - scenario.create_and_query_alarms("fake_meter_name", - 100, "fake_filter", - "fake_orderby_attribute", 10, - fakearg="f") + scenario.run("fake_meter_name", 100, "fake_filter", + "fake_orderby_attribute", 10, fakearg="f") scenario._create_alarm.assert_called_once_with("fake_meter_name", 100, {"fakearg": "f"}) scenario._query_alarms.assert_called_once_with( json.dumps("fake_filter"), "fake_orderby_attribute", 10) def test_create_and_query_alarms_no_filter(self): - scenario = queries.CeilometerQueries(self.context) + scenario = queries.CeilometerQueriesCreateAndQueryAlarms(self.context) + scenario._create_alarm = mock.MagicMock() scenario._query_alarms = mock.MagicMock() - scenario.create_and_query_alarms("fake_meter_name", - 100, None, - "fake_orderby_attribute", 10, - fakearg="f") + scenario.run("fake_meter_name", 100, None, "fake_orderby_attribute", + 10, fakearg="f") scenario._create_alarm.assert_called_once_with("fake_meter_name", 100, {"fakearg": "f"}) scenario._query_alarms.assert_called_once_with( @@ -52,33 +50,30 @@ class CeilometerQueriesTestCase(test.ScenarioTestCase): def test_create_and_query_alarm_history(self): fake_alarm = mock.MagicMock() fake_alarm.alarm_id = "fake_alarm_id" - scenario = queries.CeilometerQueries(self.context) + scenario = queries.CeilometerQueriesCreateAndQueryAlarmHistory( + self.context) + scenario._create_alarm = mock.MagicMock(return_value=fake_alarm) scenario._query_alarm_history = mock.MagicMock() fake_filter = json.dumps({"=": {"alarm_id": fake_alarm.alarm_id}}) - scenario.create_and_query_alarm_history("fake_meter_name", 100, - "fake_orderby_attribute", 10, - fakearg="f") + scenario.run("fake_meter_name", 100, "fake_orderby_attribute", + 10, fakearg="f") scenario._create_alarm.assert_called_once_with("fake_meter_name", 100, {"fakearg": "f"}) scenario._query_alarm_history.assert_called_once_with( fake_filter, "fake_orderby_attribute", 10) def test_create_and_query_samples(self): - scenario = queries.CeilometerQueries(self.context) + scenario = queries.CeilometerQueriesCreateAndQuerySamples(self.context) + scenario._create_sample = mock.MagicMock() scenario._query_samples = mock.MagicMock() - scenario.create_and_query_samples("fake_counter_name", - "fake_counter_type", - "fake_counter_unit", - "fake_counter_volume", - "fake_resource_id", - "fake_filter", - "fake_orderby_attribute", - 10, - fakearg="f") + scenario.run("fake_counter_name", "fake_counter_type", + "fake_counter_unit", "fake_counter_volume", + "fake_resource_id", "fake_filter", + "fake_orderby_attribute", 10, fakearg="f") scenario._create_sample.assert_called_once_with("fake_counter_name", "fake_counter_type", "fake_counter_unit", @@ -89,19 +84,15 @@ class CeilometerQueriesTestCase(test.ScenarioTestCase): json.dumps("fake_filter"), "fake_orderby_attribute", 10) def test_create_and_query_samples_no_filter(self): - scenario = queries.CeilometerQueries(self.context) + scenario = queries.CeilometerQueriesCreateAndQuerySamples(self.context) + scenario._create_sample = mock.MagicMock() scenario._query_samples = mock.MagicMock() - scenario.create_and_query_samples("fake_counter_name", - "fake_counter_type", - "fake_counter_unit", - "fake_counter_volume", - "fake_resource_id", - None, - "fake_orderby_attribute", - 10, - fakearg="f") + scenario.run("fake_counter_name", "fake_counter_type", + "fake_counter_unit", "fake_counter_volume", + "fake_resource_id", None, + "fake_orderby_attribute", 10, fakearg="f") scenario._create_sample.assert_called_once_with("fake_counter_name", "fake_counter_type", "fake_counter_unit",