/** * {@inheritDoc} */ @Override public Span get(SpanIdent spanIdent) { return spanDao.get(spanIdent); }
@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()); } }
@Override public void run() { boolean reschedule = true; try { SpanIdent backEndSpanIdent = new SpanIdent(traceId, traceId); AbstractSpan backEndSpan = spanDao.get(backEndSpanIdent); if (backEndSpan != null) { backEndSpan.setParentSpanId(eumSpanId); reschedule = false; } } finally { if (reschedule) { schedule(false); // retry later } } }
@Test public void testBackEndSpanFirst() throws InterruptedException { when(spanDao.get(Matchers.eq(backEndIdent))).thenReturn(backEndSpan); processor.process(Collections.singleton(frontEndSpan), mock(EntityManager.class)); verify(backEndSpan, times(1)).setParentSpanId(eq(frontEndIdent.getId())); }
@Test public void testEUMSpanFirst() throws InterruptedException { // span initially not available MutableInt counter = new MutableInt(0); doAnswer(new Answer<AbstractSpan>() { @Override public AbstractSpan answer(InvocationOnMock invocation) throws Throwable { counter.increment(); if (counter.longValue() >= 5) { // make it available on the fifth attempt return backEndSpan; } else { return null; } } }).when(spanDao).get(Matchers.eq(backEndIdent)); processor.process(Collections.singleton(frontEndSpan), mock(EntityManager.class)); verify(backEndSpan, times(1)).setParentSpanId(eq(frontEndIdent.getId())); }