Exemple #1
0
    def test_get_samples_multi_metric_pollster(self):
        pollster = DynamicPollster(
            self.pollster_definition_all_fields_multi_metrics)

        fake_manager = self.FakeManager()
        samples = pollster.get_samples(fake_manager, None,
                                       ["https://endpoint.server.name.com/"])

        samples_list = list(samples)
        self.assertEqual(4, len(samples_list))

        create_bucket_sample = [
            s for s in samples_list if s.name == "test-pollster.create_bucket"
        ][0]

        get_obj_sample = [
            s for s in samples_list if s.name == "test-pollster.get_obj"
        ][0]

        list_bucket_sample = [
            s for s in samples_list if s.name == "test-pollster.list_bucket"
        ][0]

        put_obj_sample = [
            s for s in samples_list if s.name == "test-pollster.put_obj"
        ][0]

        self.assertEqual(2, create_bucket_sample.volume)
        self.assertEqual(46, get_obj_sample.volume)
        self.assertEqual(8, list_bucket_sample.volume)
        self.assertEqual(46, put_obj_sample.volume)
Exemple #2
0
    def test_execute_request_get_samples_empty_keys(self):
        sample = {
            'user_id_attribute': "123456789",
            'project_id_attribute': "dfghyt432345t",
            'resource_id_attribute': "sdfghjt543"
        }

        def execute_request_get_samples_mock(self, **kwargs):
            samples = [sample]
            return samples

        DynamicPollster.execute_request_get_samples = \
            execute_request_get_samples_mock

        self.pollster_definition_all_fields['user_id_attribute'] = None
        self.pollster_definition_all_fields['project_id_attribute'] = None
        self.pollster_definition_all_fields['resource_id_attribute'] = None

        pollster = DynamicPollster(self.pollster_definition_all_fields)

        params = {"d": "d"}
        response = pollster.execute_request_get_samples(**params)

        self.assertNotIn('user_id', response[0])
        self.assertNotIn('project_id', response[0])
        self.assertNotIn('id', response[0])
Exemple #3
0
    def test_pollster_defintions_instantiation(self):
        def validate_definitions_instance(instance, isNonOpenstack,
                                          isMultiMetric, isSingleMetric):
            self.assertIs(
                isinstance(instance, NonOpenStackApisPollsterDefinition),
                isNonOpenstack)
            self.assertIs(isinstance(instance, MultiMetricPollsterDefinitions),
                          isMultiMetric)
            self.assertIs(
                isinstance(instance, SingleMetricPollsterDefinitions),
                isSingleMetric)

        pollster = DynamicPollster(
            self.pollster_definition_all_fields_multi_metrics)
        validate_definitions_instance(pollster.definitions, True, True, False)

        pollster = DynamicPollster(self.pollster_definition_all_fields)
        validate_definitions_instance(pollster.definitions, True, False, True)

        pollster = DynamicPollster(
            self.pollster_definition_only_openstack_required_multi_metric)
        validate_definitions_instance(pollster.definitions, False, True, False)

        pollster = DynamicPollster(
            self.pollster_definition_only_openstack_required_single_metric)
        validate_definitions_instance(pollster.definitions, False, False, True)
Exemple #4
0
    def test_default_discovery_empty_secret_id(self):
        pollster = DynamicPollster(
            self.pollster_definition_only_required_fields)

        self.assertEqual(
            "barbican:",
            pollster.definitions.sample_gatherer.default_discovery)
Exemple #5
0
    def test_execute_request_get_samples_non_empty_keys(self):
        sample = {
            'user_id_attribute': "123456789",
            'project_id_attribute': "dfghyt432345t",
            'resource_id_attribute': "sdfghjt543"
        }

        def execute_request_get_samples_mock(self, **kwargs):
            samples = [sample]
            return samples

        PollsterSampleGatherer.execute_request_get_samples = \
            execute_request_get_samples_mock

        self.pollster_definition_all_fields[
            'user_id_attribute'] = 'user_id_attribute'
        self.pollster_definition_all_fields[
            'project_id_attribute'] = 'project_id_attribute'
        self.pollster_definition_all_fields[
            'resource_id_attribute'] = 'resource_id_attribute'

        pollster = DynamicPollster(self.pollster_definition_all_fields)

        params = {"d": "d"}
        response = pollster.definitions.sample_gatherer. \
            execute_request_get_samples(**params)

        self.assertEqual(sample['user_id_attribute'], response[0]['user_id'])
        self.assertEqual(sample['project_id_attribute'],
                         response[0]['project_id'])
        self.assertEqual(sample['resource_id_attribute'], response[0]['id'])
Exemple #6
0
    def test_internal_execute_request_get_samples_status_code_not_ok(
            self, get_mock):
        sys.modules['module-name'] = mock.MagicMock()

        pollster = DynamicPollster(
            self.pollster_definition_only_required_fields)

        for http_status_code in requests.status_codes._codes.keys():
            if http_status_code >= 400:
                return_value = self.FakeResponse()
                return_value.status_code = http_status_code
                return_value.json_object = {}
                return_value.reason = requests.status_codes._codes[
                    http_status_code][0]

                get_mock.return_value = return_value

                kwargs = {'resource': "credentials"}
                exception = self.assertRaises(
                    NonOpenStackApisDynamicPollsterException,
                    pollster.definitions.sample_gatherer.
                    internal_execute_request_get_samples, kwargs)

                self.assertEqual(
                    "NonOpenStackApisDynamicPollsterException"
                    " None: Error while executing request[%s]."
                    " Status[%s] and reason [%s]." %
                    (self.pollster_definition_only_required_fields['url_path'],
                     http_status_code, return_value.reason), str(exception))
    def test_instantiate_dynamic_pollster_standard_pollster(self):
        pollster_definition_only_required_fields = {
            'name': "test-pollster", 'sample_type': "gauge", 'unit': "test",
            'value_attribute': "volume", 'endpoint_type': "test",
            'url_path': "v1/test/endpoint/fake"}
        pollster = DynamicPollster(pollster_definition_only_required_fields)

        self.assertIsInstance(pollster.definitions,
                              SingleMetricPollsterDefinitions)
    def test_instantiate_dynamic_pollster_non_openstack_api(self):
        pollster_definition_only_required_fields = {
            'name': "test-pollster", 'sample_type': "gauge", 'unit': "test",
            'value_attribute': "volume",
            'url_path': "v1/test/endpoint/fake", 'module': "module-name",
            'authentication_object': "authentication_object"}
        pollster = DynamicPollster(pollster_definition_only_required_fields)

        self.assertIsInstance(pollster.definitions,
                              NonOpenStackApisPollsterDefinition)
Exemple #9
0
    def test_set_default_values(self):
        pollster = DynamicPollster(
            self.pollster_definition_only_required_fields)

        pollster_definitions = pollster.pollster_definitions

        self.assertEqual(None, pollster_definitions['user_id_attribute'])
        self.assertEqual(None, pollster_definitions['project_id_attribute'])
        self.assertEqual(None, pollster_definitions['resource_id_attribute'])
        self.assertEqual('', pollster_definitions['barbican_secret_id'])
        self.assertEqual('', pollster_definitions['authentication_parameters'])
Exemple #10
0
    def test_generate_new_attributes_in_sample(self):
        pollster = DynamicPollster(
            self.pollster_definition_only_required_fields)

        sample = {"test": "2"}
        new_key = "new-key"

        pollster.definitions.sample_gatherer. \
            generate_new_attributes_in_sample(sample, "test", new_key)

        self.assertIn(new_key, sample)
        self.assertEqual(sample["test"], sample[new_key])
Exemple #11
0
    def test_user_set_optional_parameters(self):
        pollster = DynamicPollster(self.pollster_definition_all_fields)
        pollster_definitions = pollster.pollster_definitions

        self.assertEqual('user_id', pollster_definitions['user_id_attribute'])
        self.assertEqual('project_id',
                         pollster_definitions['project_id_attribute'])
        self.assertEqual('id', pollster_definitions['resource_id_attribute'])
        self.assertEqual('barbican_id',
                         pollster_definitions['barbican_secret_id'])
        self.assertEqual('parameters',
                         pollster_definitions['authentication_parameters'])
Exemple #12
0
    def test_get_request_linked_samples_url_no_next_sample(self):
        pollster = DynamicPollster(
            self.pollster_definition_only_required_fields)

        expected_url = self.pollster_definition_only_required_fields[
            'url_path']

        kwargs = {'resource': "non-openstack-resource"}
        url = pollster.definitions.sample_gatherer\
            .get_request_linked_samples_url(kwargs)

        self.assertEqual(expected_url, url)
Exemple #13
0
    def test_get_request_linked_samples_url_next_sample_only_url_path(self):
        pollster = DynamicPollster(
            self.pollster_definition_only_required_fields)

        base_url = self.pollster_definition_only_required_fields['url_path']
        next_sample_path = "/next_page"
        expected_url = urlparse.urljoin(base_url, next_sample_path)

        kwargs = {'next_sample_url': next_sample_path}

        url = pollster.definitions.sample_gatherer\
            .get_request_linked_samples_url(kwargs)

        self.assertEqual(expected_url, url)
Exemple #14
0
    def test_execute_request_get_samples_non_empty_keys(self):
        sample = {
            'user_id_attribute': "123456789",
            'project_id_attribute': "dfghyt432345t",
            'resource_id_attribute': "sdfghjt543"
        }

        def internal_execute_request_get_samples_mock(self, arg):
            class Response:
                def json(self):
                    return [sample]

            return Response(), "url"

        original_method = NonOpenStackApisSamplesGatherer. \
            internal_execute_request_get_samples
        try:
            NonOpenStackApisSamplesGatherer. \
                internal_execute_request_get_samples = \
                internal_execute_request_get_samples_mock

            self.pollster_definition_all_fields[
                'user_id_attribute'] = 'user_id_attribute'
            self.pollster_definition_all_fields[
                'project_id_attribute'] = 'project_id_attribute'
            self.pollster_definition_all_fields[
                'resource_id_attribute'] = 'resource_id_attribute'

            pollster = DynamicPollster(self.pollster_definition_all_fields)

            params = {"d": "d"}
            response = pollster.definitions.sample_gatherer. \
                execute_request_get_samples(**params)

            self.assertEqual(sample['user_id_attribute'],
                             response[0]['user_id'])
            self.assertEqual(sample['project_id_attribute'],
                             response[0]['project_id'])
            self.assertEqual(sample['resource_id_attribute'],
                             response[0]['id'])
        finally:
            NonOpenStackApisSamplesGatherer. \
                internal_execute_request_get_samples = original_method
Exemple #15
0
    def test_internal_execute_request_get_samples_status_code_ok(
            self, get_mock):
        sys.modules['module-name'] = mock.MagicMock()

        pollster = DynamicPollster(
            self.pollster_definition_only_required_fields)

        return_value = self.FakeResponse()
        return_value.status_code = requests.codes.ok
        return_value.json_object = {}
        return_value.reason = "Ok"

        get_mock.return_value = return_value

        kwargs = {'resource': "credentials"}

        resp, url = pollster.definitions.sample_gatherer. \
            internal_execute_request_get_samples(kwargs)

        self.assertEqual(
            self.pollster_definition_only_required_fields['url_path'], url)
        self.assertEqual(return_value, resp)
Exemple #16
0
    def test_default_discovery_not_empty_secret_id(self):
        pollster = DynamicPollster(self.pollster_definition_all_fields)

        self.assertEqual(
            "barbican:barbican_id",
            pollster.definitions.sample_gatherer.default_discovery)