/** * {@inheritDoc} */ @Override public Span get(SpanIdent spanIdent) { return spanDao.get(spanIdent); }
/** * {@inheritDoc} */ @Override public Collection<? extends Span> getRootSpans(int limit, Date fromDate, Date toDate, ResultComparator<AbstractSpan> resultComparator) { if (null != resultComparator) { resultComparator.setCachedDataService(cachedDataService); } return spanDao.getRootSpans(limit, fromDate, toDate, resultComparator); }
/** * {@inheritDoc} */ @Override public Collection<? extends Span> getSpans(long traceId) { return spanDao.getSpans(traceId); };
/** * Returns the span with given span ident. * * @param spanIdent * {@link SpanIdent} * @return Span with given span ident. */ public AbstractSpan get(SpanIdent spanIdent) { IIndexQuery query = spanQueryFactory.get(spanIdent); Collection<AbstractSpan> results = getIndexingTree().query(query); if (CollectionUtils.isNotEmpty(results)) { return results.iterator().next(); } else { return null; } }
/** * Returns spans that belong to the given trace. * * @param traceId * Trace id. * @return All spans for the trace. */ public Collection<AbstractSpan> getSpans(long traceId) { IIndexQuery query = spanQueryFactory.getSpans(traceId); return getIndexingTree().query(query); }
@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())); }