/** * {@inheritDoc} */ @Override protected void processData(DefaultData data, EntityManager entityManager) { if (data instanceof EUMSpan) { EUMSpan frontEndSpan = (EUMSpan) data; AbstractEUMSpanDetails details = frontEndSpan.getDetails(); if (details instanceof PageLoadRequest) { long traceId = frontEndSpan.getSpanIdent().getTraceId(); long eumSpanId = frontEndSpan.getSpanIdent().getId(); // if the ids are equal no correlation takes place, e.g. because the html was // cached. if (traceId != eumSpanId) { EumSpanCorrelationTask correlationTask = new EumSpanCorrelationTask(traceId, eumSpanId); correlationTask.schedule(true); } } } }
@Test public void testAllDataAvailable() throws IOException { ObjectNode node = buildEventListenerRecord(); EUMSpan span = performDeserialization(node); assertThat(span.getDetails(), instanceOf(JSEventListenerExecution.class)); assertThat(span.getSpanIdent().getId(), equalTo(ELEMENT_ID)); assertThat(span.getSpanIdent().getTraceId(), equalTo(TRACE_ID)); assertThat(span.getParentSpanId(), equalTo(PARENT_ID)); assertThat(span.getTimeStamp().getTime(), equalTo(ENTER_TIMESTAMP)); assertThat(span.getDuration(), equalTo(DURATION)); JSEventListenerExecution exec = (JSEventListenerExecution) span.getDetails(); assertThat(exec.getFunctionName(), equalTo(FUNCTION_NAME)); assertThat(exec.getEventType(), equalTo(EVENT_TYPE)); }
@BeforeMethod public void initMocks() { doAnswer(new Answer<ScheduledFuture<Void>>() { @Override public ScheduledFuture<Void> answer(InvocationOnMock invocation) throws Throwable { ((Runnable) invocation.getArguments()[0]).run(); return null; } }).when(scheduledExecutor).schedule(any(Runnable.class), anyLong(), any()); when(backEndSpan.getPropagationType()).thenReturn(PropagationType.HTTP); when(backEndSpan.isRoot()).thenReturn(true); when(backEndSpan.getSpanIdent()).thenReturn(backEndIdent); when(frontEndSpan.getPropagationType()).thenReturn(PropagationType.HTTP); when(frontEndSpan.isRoot()).thenReturn(true); PageLoadRequest details = mock(PageLoadRequest.class); when(frontEndSpan.getDetails()).thenReturn(details); when(frontEndSpan.getDetails()).thenReturn(spanDetails); when(frontEndSpan.getSpanIdent()).thenReturn(frontEndIdent); }
@Test public void testDefaultTraceId() throws IOException { ObjectNode node = buildEventListenerRecord(); node.remove("traceId"); EUMSpan span = performDeserialization(node); assertThat(span.getDetails(), instanceOf(JSEventListenerExecution.class)); assertThat(span.getSpanIdent().getId(), equalTo(ELEMENT_ID)); assertThat(span.getSpanIdent().getTraceId(), equalTo(ELEMENT_ID)); assertThat(span.getParentSpanId(), equalTo(PARENT_ID)); assertThat(span.getTimeStamp().getTime(), equalTo(ENTER_TIMESTAMP)); assertThat(span.getDuration(), equalTo(DURATION)); JSEventListenerExecution exec = (JSEventListenerExecution) span.getDetails(); assertThat(exec.getFunctionName(), equalTo(FUNCTION_NAME)); assertThat(exec.getEventType(), equalTo(EVENT_TYPE)); }
@Test public void testDefaultParentId() throws IOException { ObjectNode node = buildEventListenerRecord(); node.remove("parentId"); EUMSpan span = performDeserialization(node); assertThat(span.getDetails(), instanceOf(JSEventListenerExecution.class)); assertThat(span.getSpanIdent().getId(), equalTo(ELEMENT_ID)); assertThat(span.getSpanIdent().getTraceId(), equalTo(TRACE_ID)); assertThat(span.getParentSpanId(), equalTo(0L)); assertThat(span.getTimeStamp().getTime(), equalTo(ENTER_TIMESTAMP)); assertThat(span.getDuration(), equalTo(DURATION)); JSEventListenerExecution exec = (JSEventListenerExecution) span.getDetails(); assertThat(exec.getFunctionName(), equalTo(FUNCTION_NAME)); assertThat(exec.getEventType(), equalTo(EVENT_TYPE)); }