use of com.navercorp.pinpoint.profiler.context.SpanChunk in project pinpoint by naver.
the class GrpcSpanMessageConverter method toMessage.
@Override
public GeneratedMessageV3 toMessage(SpanType message) {
if (message instanceof SpanChunk) {
final SpanChunk spanChunk = (SpanChunk) message;
final PSpanChunk pSpanChunk = buildPSpanChunk(spanChunk);
return pSpanChunk;
}
if (message instanceof Span) {
final Span span = (Span) message;
return buildPSpan(span);
}
return null;
}
use of com.navercorp.pinpoint.profiler.context.SpanChunk in project pinpoint by naver.
the class OrderedSpanRecorderTest method testOrderingWithSameEventTime.
@Test
public void testOrderingWithSameEventTime() {
// given
final long startTime = 100;
final long spanId = 1L;
TraceId traceId = new DefaultTraceId(agentId, startTime, 0, -1L, spanId, (short) 0);
final TraceRoot traceRoot = new DefaultTraceRoot(traceId, agentId, startTime, 0);
Span span = createSpan(traceRoot, startTime);
SpanChunk event = wrapSpanChunk(traceRoot, createSpanEvent(traceRoot, 0, 0));
SpanChunk event1 = wrapSpanChunk(traceRoot, createSpanEvent(traceRoot, 0, 1));
SpanChunk event2 = wrapSpanChunk(traceRoot, createSpanEvent(traceRoot, 0, 2));
SpanChunk asyncEvent1_1 = wrapSpanChunk(traceRoot, createAsyncSpanEvent(traceRoot, 0, 0), new DefaultLocalAsyncId(1, (short) 1));
SpanChunk asyncEvent1_2 = wrapSpanChunk(traceRoot, createAsyncSpanEvent(traceRoot, 0, 1), new DefaultLocalAsyncId(1, (short) 1));
SpanChunk asyncEvent2 = wrapSpanChunk(traceRoot, createAsyncSpanEvent(traceRoot, 0, 0), new DefaultLocalAsyncId(2, (short) 1));
final List<SpanType> expectedOrder = Arrays.asList(span, event, event1, event2, asyncEvent1_1, asyncEvent1_2, asyncEvent2);
// when
final List<SpanType> listToBeHandled = Arrays.asList(span, event, event1, event2, asyncEvent1_1, asyncEvent1_2, asyncEvent2);
Collections.shuffle(listToBeHandled);
for (SpanType base : listToBeHandled) {
this.recorder.handleSend(base);
}
// then
ByteArrayOutputStream baos = new ByteArrayOutputStream();
this.recorder.print(new PrintStream(baos));
this.logger.debug(baos.toString());
for (SpanType expectedBase : expectedOrder) {
SpanType actualBase = this.recorder.pop();
assertSame(expectedBase, actualBase);
}
assertNull(this.recorder.pop());
}
use of com.navercorp.pinpoint.profiler.context.SpanChunk in project pinpoint by naver.
the class OrderedSpanRecorderTest method testMultipleSpanOrdering.
@Test
public void testMultipleSpanOrdering() {
// given
final long startTime1 = 100;
final long spanId1 = 1L;
final TraceId traceId1 = new DefaultTraceId(agentId, startTime1, 0, -1L, spanId1, (short) 0);
final TraceRoot traceRoot1 = new DefaultTraceRoot(traceId1, agentId, startTime1, 0);
final long startTime2 = startTime1 + 10L;
final long spanId2 = 2L;
final TraceId traceId2 = new DefaultTraceId(agentId, startTime2, 0, -1L, spanId2, (short) 0);
final TraceRoot traceRoot2 = new DefaultTraceRoot(traceId2, agentId, startTime2, 0);
Span span1 = createSpan(traceRoot1, startTime1);
SpanChunk event1_0 = wrapSpanChunk(traceRoot1, createSpanEvent(traceRoot1, 1, 0));
SpanChunk event1_1 = wrapSpanChunk(traceRoot1, createSpanEvent(traceRoot1, 2, 1));
SpanChunk asyncEvent1_0 = wrapSpanChunk(traceRoot1, createAsyncSpanEvent(traceRoot1, 1, 0), new DefaultLocalAsyncId(1, (short) 1));
SpanChunk asyncEvent1_1 = wrapSpanChunk(traceRoot1, createAsyncSpanEvent(traceRoot1, 2, 1), new DefaultLocalAsyncId(1, (short) 1));
Span span2 = createSpan(traceRoot2, startTime2);
SpanChunk event2_0 = wrapSpanChunk(traceRoot2, createSpanEvent(traceRoot2, 0, 0));
SpanChunk event2_1 = wrapSpanChunk(traceRoot2, createSpanEvent(traceRoot2, 1, 1));
SpanChunk asyncEvent2_0 = wrapSpanChunk(traceRoot2, createAsyncSpanEvent(traceRoot2, 0, 0), new DefaultLocalAsyncId(2, (short) 1));
final List<SpanType> expectedOrder = Arrays.asList(span1, event1_0, event1_1, span2, event2_0, event2_1, asyncEvent1_0, asyncEvent1_1, asyncEvent2_0);
// when
final List<SpanType> listToBeHandled = Arrays.asList(span1, event1_0, event1_1, span2, event2_0, event2_1, asyncEvent1_0, asyncEvent1_1, asyncEvent2_0);
Collections.shuffle(listToBeHandled);
for (SpanType base : listToBeHandled) {
this.recorder.handleSend(base);
}
// then
ByteArrayOutputStream baos = new ByteArrayOutputStream();
this.recorder.print(new PrintStream(baos));
this.logger.debug(baos.toString());
for (SpanType expectedBase : expectedOrder) {
SpanType actualBase = this.recorder.pop();
assertSame(expectedBase, actualBase);
}
assertNull(this.recorder.pop());
}
use of com.navercorp.pinpoint.profiler.context.SpanChunk in project pinpoint by naver.
the class SpanPostProcessorTest method postProcess1.
@Test
public void postProcess1() {
SpanProcessor<TSpan, TSpanChunk> spanChunkPostProcessor = new SpanProcessorV1();
TraceRoot internalTraceId = newInternalTraceId();
TSpanChunk tSpanChunk = new TSpanChunk();
try {
SpanChunk spanChunk = new DefaultSpanChunk(internalTraceId, new ArrayList<SpanEvent>());
spanChunkPostProcessor.postProcess(spanChunk, tSpanChunk);
Assert.fail();
} catch (Exception ignored) {
}
}
use of com.navercorp.pinpoint.profiler.context.SpanChunk in project pinpoint by naver.
the class PluginVerifierExternalAdaptor method getServiceTypeCode.
private short getServiceTypeCode(SpanType spanType) {
if (spanType instanceof Span) {
final Span span = (Span) spanType;
return span.getServiceType();
}
if (spanType instanceof SpanChunk) {
final SpanChunk spanChunk = (SpanChunk) spanType;
List<SpanEvent> spanEventList = spanChunk.getSpanEventList();
if (spanEventList.size() != 1) {
throw new IllegalStateException("unexpected spanEventList.size() !=1");
}
SpanEvent spanEvent = spanEventList.get(0);
return spanEvent.getServiceType();
}
return -1;
}
Aggregations