/** * {@inheritDoc} */ @Override public boolean canBeProcessed(DefaultData data) { if (data instanceof EUMSpan) { AbstractEUMSpanDetails details = ((EUMSpan) data).getDetails(); if (details instanceof PageLoadRequest) { return true; } } return false; }
/** * {@inheritDoc} */ @Override public EUMSpan read(Kryo kryo, Input input, Class<EUMSpan> type) { EUMSpan read = super.read(kryo, input, type); read.getDetails().setOwningSpan(read); return read; } }, nextRegistrationId++);
@Test public void testNoAjaxCorrelation() throws InterruptedException { when(frontEndSpan.getDetails()).thenReturn(mock(AjaxRequest.class)); processor.process(Collections.singleton(frontEndSpan), mock(EntityManager.class)); verify(spanDao, never()).get(any()); } }
@BeforeMethod public void setup() { subBuilder = new DummyPointBuilder(); builder = new EUMCachingParentPointBuilder(Collections.<AbstractEUMPointBuilder<?>> singletonList(subBuilder)); when(sessionInfo.getSessionId()).thenReturn(SESSION_ID); EUMSpan plrSpan = Mockito.mock(EUMSpan.class); when(plrSpan.getDetails()).thenReturn(pageLoadRequest); when(pageLoadRequest.getOwningSpan()).thenReturn(plrSpan); when(plrSpan.getTabId()).thenReturn(TAB_ID); when(plrSpan.getSessionId()).thenReturn(SESSION_ID); }
@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); }
AbstractEUMSpanDetails details = span.getDetails(); if (details != null) { if (details instanceof PageLoadRequest) {
@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)); }
protected void initMocks(AbstractRequest targetElement) { when(pageLoadRequestSpan.getDetails()).thenReturn(pageLoadRequest); when(pageLoadRequest.getOwningSpan()).thenReturn(pageLoadRequestSpan); when(sessionInfo.getSessionId()).thenReturn(SESSION_ID); when(pageLoadRequestSpan.getSessionId()).thenReturn(SESSION_ID); when(pageLoadRequestSpan.getTabId()).thenReturn(TAB_ID); if (targetElement != null) { EUMSpan span = Mockito.mock(EUMSpan.class); when(span.getDetails()).thenReturn(targetElement); when(targetElement.getOwningSpan()).thenReturn(span); when(span.getSessionId()).thenReturn(SESSION_ID); when(span.getTabId()).thenReturn(TAB_ID); when(targetElement.getUrl()).thenReturn(URL); } // assign data when(sessionInfo.getBrowser()).thenReturn(BROWSER); when(sessionInfo.getDevice()).thenReturn(DEVICE); when(sessionInfo.getLanguage()).thenReturn(LANGUAGE); when(pageLoadRequest.getUrl()).thenReturn(PAGELOAD_URL); }
@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)); }
protected Beacon generateBeacon(AbstractEUMSpanDetails elementToSend, boolean containsSessionInfo, boolean containsPLR, String modules) { ArrayList<EUMBeaconElement> data = new ArrayList<>(); if (containsSessionInfo) { data.add(sessionInfo); } if (containsPLR) { data.add(pageLoadRequest.getOwningSpan()); when(pageLoadRequest.getOwningSpan().getActiveAgentModules()).thenReturn(modules); } if (elementToSend != null) { EUMSpan span = Mockito.mock(EUMSpan.class); when(span.getTabId()).thenReturn(TAB_ID); when(span.getSessionId()).thenReturn(SESSION_ID); when(span.getDetails()).thenReturn(elementToSend); if (elementToSend instanceof DummyBeaconElement) { ((DummyBeaconElement) elementToSend).owner = span; } else { when(elementToSend.getOwningSpan()).thenReturn(span); } when(span.getActiveAgentModules()).thenReturn(modules); data.add(span); } return new Beacon(SESSION_ID, TAB_ID, modules, data); }
/** * {@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); } } } }