Search in sources :

Example 6 with Edge

use of org.hypertrace.core.datamodel.Edge 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 Edge

use of org.hypertrace.core.datamodel.Edge 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 Edge

use of org.hypertrace.core.datamodel.Edge 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 Edge

use of org.hypertrace.core.datamodel.Edge 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)

Aggregations

Edge (org.hypertrace.core.datamodel.Edge)9 Event (org.hypertrace.core.datamodel.Event)7 StructuredTrace (org.hypertrace.core.datamodel.StructuredTrace)7 Entity (org.hypertrace.core.datamodel.Entity)6 Test (org.junit.jupiter.api.Test)5 ArrayList (java.util.ArrayList)2 ApiNodeEventEdge (org.hypertrace.core.datamodel.ApiNodeEventEdge)2 AvroBuilderCache.fastNewBuilder (org.hypertrace.core.datamodel.shared.AvroBuilderCache.fastNewBuilder)2 StructuredTraceGraph (org.hypertrace.core.datamodel.shared.StructuredTraceGraph)2 HashBasedTable (com.google.common.collect.HashBasedTable)1 Lists (com.google.common.collect.Lists)1 Maps (com.google.common.collect.Maps)1 Sets (com.google.common.collect.Sets)1 Table (com.google.common.collect.Table)1 ByteBuffer (java.nio.ByteBuffer)1 Collections (java.util.Collections)1 HashSet (java.util.HashSet)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Map (java.util.Map)1