예제 #1
0
    def test_update_transform(self):
        LOG.debug('Aodh update alarm transformer test:'
                  'transform entity event update')

        # Test setup
        spec_list = \
            mock_sync.simple_aodh_update_alarm_generators(alarm_num=5,
                                                          update_events=5)
        static_events = mock_sync.generate_random_events_list(spec_list)

        for event in static_events:
            # convert neighbor from dict to vertex object
            neighbors = event[TransformerBase.QUERY_RESULT]
            vertices = []
            for neighbor in neighbors:
                neighbor_vertex = self._convert_dist_to_vertex(neighbor)
                vertices.append(
                    self.transformers[AODH_DATASOURCE].update_uuid_in_vertex(
                        neighbor_vertex))
            event[TransformerBase.QUERY_RESULT] = vertices

            # Test action
            wrapper = self.transformers[AODH_DATASOURCE].transform(event)

            # Test assertions
            vertex = wrapper.vertex
            self._validate_aodh_vertex_props(vertex, event)

            neighbors = wrapper.neighbors
            self.assertEqual(1, len(neighbors))
            self._validate_neighbors(neighbors, vertex.vertex_id, event)

            self._validate_action(event, wrapper)
예제 #2
0
    def test_snapshot_transform(self):
        LOG.debug('Ceilometer alarm transformer test: '
                  'transform entity event snapshot')

        # Test setup
        spec_list = mock_sync.simple_aodh_alarm_generators(alarm_num=3,
                                                           snapshot_events=3)
        static_events = mock_sync.generate_random_events_list(spec_list)

        for event in static_events:
            # convert neighbor from dict to vertex object
            neighbors = event[TransformerBase.QUERY_RESULT]
            vertices = []
            for neighbor in neighbors:
                neighbor_vertex = self._convert_dist_to_vertex(neighbor)
                vertices.append(self.transformers[CEILOMETER_DATASOURCE].
                                update_uuid_in_vertex(neighbor_vertex))
            event[TransformerBase.QUERY_RESULT] = vertices

            # Test action
            wrapper = self.transformers[CEILOMETER_DATASOURCE].transform(event)

            # Test assertions
            vertex = wrapper.vertex
            self._validate_aodh_vertex_props(vertex, event)

            neighbors = wrapper.neighbors
            self.assertThat(neighbors, matchers.HasLength(1))
            self._validate_neighbors(neighbors, vertex.vertex_id, event)

            self._validate_action(event, wrapper)
예제 #3
0
    def test_snapshot_transform(self):
        LOG.debug('Aodh alarm transformer test: transform entity event '
                  'snapshot')

        # Test setup
        spec_list = mock_sync.simple_aodh_alarm_generators(alarm_num=3,
                                                           snapshot_events=3)
        static_events = mock_sync.generate_random_events_list(spec_list)

        for event in static_events:
            # convert neighbor from dict to vertex object
            neighbors = event[TransformerBase.QUERY_RESULT]
            vertices = []
            for neighbor in neighbors:
                vertices.append(self._convert_dist_to_vertex(neighbor))
            event[TransformerBase.QUERY_RESULT] = vertices

            # Test action
            wrapper = self.transformers[AODH_DATASOURCE].transform(event)

            # Test assertions
            vertex = wrapper.vertex
            self._validate_aodh_vertex_props(vertex, event)

            neighbors = wrapper.neighbors
            self.assertEqual(1, len(neighbors))
            self._validate_neighbors(neighbors, vertex.vertex_id, event)

            self._validate_action(event, wrapper)
예제 #4
0
    def _generate_event(time, hostname, severity):
        update_vals = {
            CProps.HOST: hostname,
            CProps.SEVERITY: severity,
            CProps.TIME: time,
            DSProps.SAMPLE_DATE: format_unix_timestamp(time),
            CProps.RESOURCE_NAME: hostname
        }

        generators = mock_transformer.simple_collectd_alarm_generators(
            update_vals=update_vals)

        return mock_transformer.generate_random_events_list(generators)[0]
예제 #5
0
    def _generate_event(time, hostname, status):
        details = {}
        if hostname:
            details[DoctorDetails.HOSTNAME] = hostname
        if status:
            details[DoctorDetails.STATUS] = status

        update_vals = {EventProps.DETAILS: details}
        if time:
            update_vals[EventProps.TIME] = time
            update_vals[DoctorProps.UPDATE_TIME] = time

        generators = mock_transformer.simple_doctor_alarm_generators(
            update_vals=update_vals)

        return mock_transformer.generate_random_events_list(generators)[0]
예제 #6
0
    def _create_collectd_event(time, resource_type, resource_name, host_name,
                               severity, message):
        update_vals = {
            CProps.TIME: time,
            DSProps.SAMPLE_DATE: format_unix_timestamp(time),
            CProps.HOST: host_name,
            CProps.RESOURCE_TYPE: resource_type,
            CProps.RESOURCE_NAME: resource_name,
            CProps.MESSAGE: message,
            CProps.SEVERITY: severity
        }

        spec_list = mock_transformer.simple_collectd_alarm_generators(
            update_vals=update_vals)
        static_events = mock_transformer.generate_random_events_list(spec_list)

        return static_events[0]
예제 #7
0
    def _generate_event(hostname):
        # fake query result to be used by the transformer for determining
        # the neighbor
        query_result = [{
            VProps.VITRAGE_TYPE: NOVA_HOST_DATASOURCE,
            VProps.ID: hostname
        }]
        labels = {PLabels.SEVERITY: 'critical', PLabels.INSTANCE: hostname}

        update_vals = {
            TransformerBase.QUERY_RESULT: query_result,
            PProps.LABELS: labels
        }
        generators = mock_transformer.simple_prometheus_alarm_generators(
            update_vals=update_vals)

        return mock_transformer.generate_random_events_list(generators)[0]
예제 #8
0
    def _generate_event(time, hostname, severity):
        # fake query result to be used by the transformer for determining
        # the neighbor
        query_result = [{VProps.VITRAGE_TYPE: NOVA_HOST_DATASOURCE,
                         VProps.ID: hostname}]

        update_vals = {CProps.HOST: hostname,
                       CProps.SEVERITY: severity,
                       CProps.TIME: time,
                       DSProps.SAMPLE_DATE: format_unix_timestamp(time),
                       CProps.RESOURCE_NAME: hostname,
                       TransformerBase.QUERY_RESULT: query_result}

        generators = mock_transformer.simple_collectd_alarm_generators(
            update_vals=update_vals)

        return mock_transformer.generate_random_events_list(generators)[0]
예제 #9
0
    def test_ceilometer_alarms_validity(self):
        # Setup
        processor = self._create_processor_with_graph(self.conf)
        self.assertThat(
            processor.entity_graph,
            matchers.HasLength(self._num_total_expected_vertices()))

        detail = {
            TransformerBase.QUERY_RESULT: '',
            DSProp.ENTITY_TYPE: CEILOMETER_DATASOURCE
        }
        spec_list = \
            mock_transformer.simple_aodh_alarm_generators(alarm_num=1,
                                                          snapshot_events=1,
                                                          snap_vals=detail)
        static_events = mock_transformer.generate_random_events_list(spec_list)

        aodh_event = static_events[0]
        aodh_event[CeilProps.RESOURCE_ID] = \
            self._find_entity_id_by_type(processor.entity_graph,
                                         NOVA_HOST_DATASOURCE)

        # Action
        processor.process_event(aodh_event)

        # Test assertions
        self.assertThat(
            processor.entity_graph,
            matchers.HasLength(self._num_total_expected_vertices() + 1))

        aodh_vertices = processor.entity_graph.get_vertices(
            vertex_attr_filter={
                VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,
                VProps.VITRAGE_TYPE: CEILOMETER_DATASOURCE
            })
        self.assertThat(aodh_vertices, matchers.HasLength(1))

        aodh_neighbors = processor.entity_graph.neighbors(
            aodh_vertices[0].vertex_id)
        self.assertThat(aodh_neighbors, matchers.HasLength(1))

        self.assertEqual(NOVA_HOST_DATASOURCE,
                         aodh_neighbors[0][VProps.VITRAGE_TYPE])
예제 #10
0
    def test_aodh_alarms_validity(self):
        # Setup
        processor = self._create_processor_with_graph(self.conf, uuid=True)
        self.assertEqual(self._num_total_expected_vertices(),
                         len(processor.entity_graph))

        detail = {TransformerBase.QUERY_RESULT: ''}
        spec_list = \
            mock_transformer.simple_aodh_alarm_generators(alarm_num=1,
                                                          snapshot_events=1,
                                                          snap_vals=detail)
        static_events = mock_transformer.generate_random_events_list(spec_list)

        aodh_event = static_events[0]
        aodh_event[AodhProps.RESOURCE_ID] = \
            self._find_entity_id_by_type(processor.entity_graph,
                                         NOVA_HOST_DATASOURCE)

        # Action
        processor.process_event(aodh_event)

        # Test assertions
        self.assertEqual(self._num_total_expected_vertices() + 1,
                         len(processor.entity_graph))

        aodh_vertices = processor.entity_graph.get_vertices(
            vertex_attr_filter={
                VProps.CATEGORY: EntityCategory.ALARM,
                VProps.TYPE: AODH_DATASOURCE
            })
        self.assertEqual(1, len(aodh_vertices))

        aodh_neighbors = processor.entity_graph.neighbors(
            aodh_vertices[0].vertex_id)
        self.assertEqual(1, len(aodh_neighbors))

        self.assertEqual(NOVA_HOST_DATASOURCE,
                         aodh_neighbors[0][VProps.TYPE])
예제 #11
0
    def test_aodh_alarms_validity(self):
        # Setup
        processor = self._create_processor_with_graph(self.conf)
        self.assertEqual(self._num_total_expected_vertices(),
                         len(processor.entity_graph))

        detail = {TransformerBase.QUERY_RESULT: ''}
        spec_list = \
            mock_transformer.simple_aodh_alarm_generators(alarm_num=1,
                                                          snapshot_events=1,
                                                          snap_vals=detail)
        static_events = mock_transformer.generate_random_events_list(spec_list)

        aodh_event = static_events[0]
        aodh_event[AodhProps.RESOURCE_ID] = \
            self._find_entity_id_by_type(processor.entity_graph,
                                         NOVA_HOST_DATASOURCE)

        # Action
        processor.process_event(aodh_event)

        # Test assertions
        self.assertEqual(self._num_total_expected_vertices() + 1,
                         len(processor.entity_graph))

        aodh_vertices = processor.entity_graph.get_vertices(
            vertex_attr_filter={
                VProps.CATEGORY: EntityCategory.ALARM,
                VProps.TYPE: AODH_DATASOURCE
            })
        self.assertEqual(1, len(aodh_vertices))

        aodh_neighbors = processor.entity_graph.neighbors(
            aodh_vertices[0].vertex_id)
        self.assertEqual(1, len(aodh_neighbors))

        self.assertEqual(NOVA_HOST_DATASOURCE,
                         aodh_neighbors[0][VProps.TYPE])
예제 #12
0
    def _generate_event(update_vals):
        generators = mock_transformer.simple_kapacitor_alarm_generators(
            update_vals=update_vals)

        return mock_transformer.generate_random_events_list(generators)[0]