From 35279ec21a5614602f1a7e1faeb1d3ca2ca6955f Mon Sep 17 00:00:00 2001 From: Igor Degtiarov Date: Thu, 22 Sep 2016 13:22:22 +0300 Subject: [PATCH] Functional tests for OpenstackTelemetry plugin (Resource part) Testing Ceilometer Resource API functionality in OpenstackTelemetry plugin when Resource API is available Change-Id: Ib1c3574ee610ee3d9706478072a18e0b67c0ac43 --- stacklight_tests/openstack_telemetry/api.py | 26 ++++++++++++ .../toolchain/test_openstack_telemetry.py | 42 +++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/stacklight_tests/openstack_telemetry/api.py b/stacklight_tests/openstack_telemetry/api.py index cebe3ce..c85d68f 100644 --- a/stacklight_tests/openstack_telemetry/api.py +++ b/stacklight_tests/openstack_telemetry/api.py @@ -231,6 +231,32 @@ class OpenstackTelemeteryPluginApi(base_test.PluginApi): self.helpers.verify(60, self.ceilometer_client.trait_descriptions.list, 5, fail_msg, msg, event_type=event_type) + def check_ceilometer_resource_functionality(self): + logger.info("Start checking Ceilometer Resource API") + + fail_msg = "Failed to get resource list." + msg = "getting resources list" + resources_list = self.helpers.verify( + 600, self.ceilometer_client.resources.list, 1, fail_msg, msg, + limit=10) + resource_id = resources_list[0].resource_id + fail_msg = ("Failed to find '{}' resource with certain resource " + "ID.".format(resource_id)) + msg = ("searching '{}' resource with certain resource " + "ID".format(resource_id)) + self.helpers.verify(60, self.ceilometer_client.resources.get, 2, + fail_msg, msg, resource_id=resource_id) + + fail_msg = "Failed to get meters list." + msg = "getting meters list" + self.helpers.verify(60, self.ceilometer_client.meters.list, 3, + fail_msg, msg, limit=10) + + fail_msg = "Failed to get unique meters list." + msg = "getting unique meters list" + self.helpers.verify(60, self.ceilometer_client.meters.list, 4, + fail_msg, msg, limit=10, unique=True) + def create_alarm(self, **kwargs): for alarm in self.ceilometer_client.alarms.list(): if alarm.name == kwargs['name']: diff --git a/stacklight_tests/toolchain/test_openstack_telemetry.py b/stacklight_tests/toolchain/test_openstack_telemetry.py index 403ec1b..bf7f06e 100644 --- a/stacklight_tests/toolchain/test_openstack_telemetry.py +++ b/stacklight_tests/toolchain/test_openstack_telemetry.py @@ -134,3 +134,45 @@ class TestOpenstackTelemetry(api.ToolchainApi): additional_tests=additional_tests, advanced_options=options ) + + @test(depends_on_groups=["prepare_slaves_5"], + groups=["openstack_telemetry_resource_functional", + "deploy_openstack_telemetry", "functional"]) + @log_snapshot_after_test + def openstack_telemetry_resource_functional(self): + """Deploy an environment with Openstack-Telemetry plugin with + enabled Ceilometer Resource API and check its functionality + + 1. Upload the Openstack-Telemetry, Elasticsearch-Kibana and + InfluxDB-Grafana plugins to the master node + 2. Install the plugins + 3. Create the cluster + 4. Add 3 nodes with controller role + 5. Add 1 nodes with compute and cinder roles + 6. Add 1 nodes with elasticsearch_kibana and influxdb_grafana roles + 9. Enable Ceilometer Resource API + 10. Deploy the cluster + 11. Check that plugins are running + 12. Run OSTF + 13. Check Ceilometer Sample API + 14. Check Ceilometer Alarm API + 15. Check Ceilometer Resource API + + Duration 90m + """ + additional_tests = ( + self.OPENSTACK_TELEMETRY.check_ceilometer_sample_functionality, + self.OPENSTACK_TELEMETRY.check_ceilometer_alarm_functionality, + self.OPENSTACK_TELEMETRY.check_ceilometer_resource_functionality, + ) + + options = { + "advanced_settings/value": True, + "resource_api/value": True, + } + + self._deploy_telemetry_plugin( + "openstack_telemetry_resource_functional", + additional_tests=additional_tests, + advanced_options=options + )