Search in sources :

Example 6 with Entity

use of org.hypertrace.core.datamodel.Entity in project hypertrace-ingester by hypertrace.

the class ApiTraceGraphBuilderTest method testBuildGraph.

@Test
void testBuildGraph() {
    Entity entity = mock(Entity.class);
    Event parent = mock(Event.class);
    Event child = mock(Event.class);
    Edge eventEdge = mock(Edge.class);
    StructuredTrace underTestTrace = mock(StructuredTrace.class);
    when(underTestTrace.getCustomerId()).thenReturn("__defaultTenant");
    when(underTestTrace.getTraceId()).thenReturn(ByteBuffer.wrap("2ebbc19b6428510f".getBytes()));
    when(underTestTrace.getEntityList()).thenReturn(List.of(entity));
    when(underTestTrace.getEventList()).thenReturn(List.of(parent, child));
    when(underTestTrace.getEntityEdgeList()).thenReturn(List.of());
    when(underTestTrace.getEntityEventEdgeList()).thenReturn(List.of());
    when(underTestTrace.getEventEdgeList()).thenReturn(List.of(eventEdge));
    // structure trace builder
    try (MockedStatic<StructuredTrace> builderMockedStatic = mockStatic(StructuredTrace.class)) {
        StructuredTrace.Builder builder = mock(StructuredTrace.Builder.class);
        when(builder.build()).thenReturn(underTestTrace);
        builderMockedStatic.when(() -> StructuredTrace.newBuilder(underTestTrace)).thenReturn(builder);
        // make two calls, and check that first call create cache entries, and second call uses same
        try (MockedConstruction<ApiTraceGraph> mockedConstruction = mockConstruction(ApiTraceGraph.class)) {
            // first call
            ApiTraceGraph actual = ApiTraceGraphBuilder.buildGraph(underTestTrace);
            Assertions.assertNotNull(actual);
            Assertions.assertEquals(1, mockedConstruction.constructed().size());
            // second call
            ApiTraceGraph second = ApiTraceGraphBuilder.buildGraph(underTestTrace);
            Assertions.assertEquals(actual, second);
            Assertions.assertEquals(1, mockedConstruction.constructed().size());
        }
    }
}
Also used : Entity(org.hypertrace.core.datamodel.Entity) StructuredTrace(org.hypertrace.core.datamodel.StructuredTrace) Event(org.hypertrace.core.datamodel.Event) Edge(org.hypertrace.core.datamodel.Edge) Test(org.junit.jupiter.api.Test)

Example 7 with Entity

use of org.hypertrace.core.datamodel.Entity in project hypertrace-ingester by hypertrace.

the class GraphBuilderUtilTest method testIsTraceEntitiesChanged.

@Test
public void testIsTraceEntitiesChanged() {
    Entity entity1 = mock(Entity.class);
    Entity entity2 = mock(Entity.class);
    Event parent = mock(Event.class);
    Event child1 = mock(Event.class);
    Event child2 = mock(Event.class);
    Edge eventEdge1 = mock(Edge.class);
    Edge eventEdge2 = mock(Edge.class);
    // same size
    StructuredTrace cachedTrace = mock(StructuredTrace.class);
    when(cachedTrace.getCustomerId()).thenReturn("__defaultTenant");
    when(cachedTrace.getTraceId()).thenReturn(ByteBuffer.wrap("2ebbc19b6428510f".getBytes()));
    when(cachedTrace.getEntityList()).thenReturn(List.of(entity1));
    when(cachedTrace.getEntityEdgeList()).thenReturn(List.of());
    when(cachedTrace.getEntityEventEdgeList()).thenReturn(List.of());
    when(cachedTrace.getEventList()).thenReturn(List.of(parent, child1, child2));
    when(cachedTrace.getEventEdgeList()).thenReturn(List.of(eventEdge1, eventEdge2));
    StructuredTrace underTestTrace = mock(StructuredTrace.class);
    when(underTestTrace.getCustomerId()).thenReturn("__defaultTenant");
    when(underTestTrace.getTraceId()).thenReturn(ByteBuffer.wrap("2ebbc19b6428510f".getBytes()));
    when(underTestTrace.getEntityList()).thenReturn(List.of(entity1, entity2));
    when(underTestTrace.getEntityEdgeList()).thenReturn(List.of());
    when(underTestTrace.getEntityEventEdgeList()).thenReturn(List.of());
    when(underTestTrace.getEventList()).thenReturn(List.of(parent, child1, child2));
    when(underTestTrace.getEventEdgeList()).thenReturn(List.of(eventEdge1, eventEdge2));
    Assertions.assertFalse(GraphBuilderUtil.isTraceEventsChanged(cachedTrace, underTestTrace));
    Assertions.assertTrue(GraphBuilderUtil.isTraceEntitiesChanged(cachedTrace, underTestTrace));
}
Also used : Entity(org.hypertrace.core.datamodel.Entity) StructuredTrace(org.hypertrace.core.datamodel.StructuredTrace) Event(org.hypertrace.core.datamodel.Event) Edge(org.hypertrace.core.datamodel.Edge) Test(org.junit.jupiter.api.Test)

Example 8 with Entity

use of org.hypertrace.core.datamodel.Entity in project hypertrace-ingester by hypertrace.

the class GraphBuilderUtilTest method testIsTraceEventsChanged.

@Test
public void testIsTraceEventsChanged() {
    Entity entity = mock(Entity.class);
    Event parent = mock(Event.class);
    Event child1 = mock(Event.class);
    Event child2 = mock(Event.class);
    Edge eventEdge1 = mock(Edge.class);
    Edge eventEdge2 = mock(Edge.class);
    // same size
    StructuredTrace cachedTrace = mock(StructuredTrace.class);
    when(cachedTrace.getCustomerId()).thenReturn("__defaultTenant");
    when(cachedTrace.getTraceId()).thenReturn(ByteBuffer.wrap("2ebbc19b6428510f".getBytes()));
    when(cachedTrace.getEntityList()).thenReturn(List.of(entity));
    when(cachedTrace.getEntityEdgeList()).thenReturn(List.of());
    when(cachedTrace.getEntityEventEdgeList()).thenReturn(List.of());
    when(cachedTrace.getEventList()).thenReturn(List.of(parent, child1, child2));
    when(cachedTrace.getEventEdgeList()).thenReturn(List.of(eventEdge1));
    StructuredTrace underTestTrace = mock(StructuredTrace.class);
    when(underTestTrace.getCustomerId()).thenReturn("__defaultTenant");
    when(underTestTrace.getTraceId()).thenReturn(ByteBuffer.wrap("2ebbc19b6428510f".getBytes()));
    when(underTestTrace.getEntityList()).thenReturn(List.of(entity));
    when(underTestTrace.getEntityEdgeList()).thenReturn(List.of());
    when(underTestTrace.getEntityEventEdgeList()).thenReturn(List.of());
    when(underTestTrace.getEventList()).thenReturn(List.of(parent, child1, child2));
    when(underTestTrace.getEventEdgeList()).thenReturn(List.of(eventEdge1, eventEdge2));
    Assertions.assertTrue(GraphBuilderUtil.isTraceEventsChanged(cachedTrace, underTestTrace));
    Assertions.assertFalse(GraphBuilderUtil.isTraceEntitiesChanged(cachedTrace, underTestTrace));
}
Also used : Entity(org.hypertrace.core.datamodel.Entity) StructuredTrace(org.hypertrace.core.datamodel.StructuredTrace) Event(org.hypertrace.core.datamodel.Event) Edge(org.hypertrace.core.datamodel.Edge) Test(org.junit.jupiter.api.Test)

Example 9 with Entity

use of org.hypertrace.core.datamodel.Entity in project hypertrace-ingester by hypertrace.

the class EnrichmentProcessor method applyEnricher.

private void applyEnricher(Enricher enricher, StructuredTrace trace) {
    // Enrich entities
    List<Entity> entityList = trace.getEntityList();
    LOG.debug("Enriching Entities for {}", enricher.getClass().getName());
    for (Entity entity : entityList) {
        enricher.enrichEntity(trace, entity);
    }
    enricher.onEnrichEntitiesComplete(trace);
    LOG.debug("Enriching Events for {}", enricher.getClass().getName());
    // Enrich Events
    List<Event> eventList = trace.getEventList();
    for (Event event : eventList) {
        enricher.enrichEvent(trace, event);
    }
    // Enrich Edges
    List<Edge> eventEdgeList = trace.getEventEdgeList();
    for (Edge edge : eventEdgeList) {
        enricher.enrichEdge(trace, edge);
    }
    List<Edge> entityEdgeList = trace.getEntityEdgeList();
    for (Edge edge : entityEdgeList) {
        enricher.enrichEdge(trace, edge);
    }
    List<Edge> entityEventEdgeList = trace.getEntityEventEdgeList();
    for (Edge edge : entityEventEdgeList) {
        enricher.enrichEdge(trace, edge);
    }
    LOG.debug("Enriching Trace ID {} for {}", HexUtils.getHex(trace.getTraceId()), enricher.getClass().getName());
    // Enrich trace attributes/metrics
    enricher.enrichTrace(trace);
}
Also used : Entity(org.hypertrace.core.datamodel.Entity) Event(org.hypertrace.core.datamodel.Event) Edge(org.hypertrace.core.datamodel.Edge)

Example 10 with Entity

use of org.hypertrace.core.datamodel.Entity in project hypertrace-ingester by hypertrace.

the class AvroEntityConverterTest method convertsAttributeMaps.

@Test
void convertsAttributeMaps() {
    org.hypertrace.entity.data.service.v1.Entity inputEntity = BASIC_ENTITY.toBuilder().putAttributes("map", stringMapAttributeValue(Map.of("map-key-1", "map-value-1"))).build();
    Entity expectedAvroEntity = Entity.newBuilder(BASIC_AVRO_ENTITY).setAttributesBuilder(Attributes.newBuilder().setAttributeMap(Map.of("map", buildAttributeValueMap(Map.of("map-key-1", "map-value-1"))))).build();
    assertEquals(expectedAvroEntity, convertToAvroEntity(TENANT_ID, inputEntity).blockingGet());
}
Also used : AvroEntityConverter.convertToAvroEntity(org.hypertrace.trace.accessor.entities.AvroEntityConverter.convertToAvroEntity) Entity(org.hypertrace.core.datamodel.Entity) Test(org.junit.jupiter.api.Test)

Aggregations

Entity (org.hypertrace.core.datamodel.Entity)12 Test (org.junit.jupiter.api.Test)10 Event (org.hypertrace.core.datamodel.Event)7 Edge (org.hypertrace.core.datamodel.Edge)6 StructuredTrace (org.hypertrace.core.datamodel.StructuredTrace)5 AvroEntityConverter.convertToAvroEntity (org.hypertrace.trace.accessor.entities.AvroEntityConverter.convertToAvroEntity)3 ByteString (com.google.protobuf.ByteString)1 ByteBuffer (java.nio.ByteBuffer)1 HashMap (java.util.HashMap)1 List (java.util.List)1 AttributeValue (org.hypertrace.core.datamodel.AttributeValue)1 StructuredTraceGraph (org.hypertrace.core.datamodel.shared.StructuredTraceGraph)1 TraceState (org.hypertrace.viewgenerator.generators.ViewGeneratorState.TraceState)1