/** * This method takes incoming traceparent object and creates a new outbound traceparent object * @param incomingTraceparent * @return */ private static Traceparent processIncomingTraceparent(Traceparent incomingTraceparent, HttpServletRequest request) { Traceparent processedTraceparent = null; // If incoming traceparent is null create a new Traceparent if (incomingTraceparent == null) { // If BackCompt mode is enabled, read the Request-Id Header if (isW3CBackCompatEnabled) { processedTraceparent = processLegacyCorrelation(request); } if (processedTraceparent == null){ processedTraceparent = new Traceparent(); } } else { // create outbound traceparent inheriting traceId, flags from parent. processedTraceparent = new Traceparent(0, incomingTraceparent.getTraceId(), null, incomingTraceparent.getTraceFlags()); } return processedTraceparent; }
/** * This method takes incoming traceparent object and creates a new outbound traceparent object * @param incomingTraceparent * @return */ private static Traceparent processIncomingTraceparent(Traceparent incomingTraceparent, HttpServletRequest request) { Traceparent processedTraceparent = null; // If incoming traceparent is null create a new Traceparent if (incomingTraceparent == null) { // If BackCompt mode is enabled, read the Request-Id Header if (isW3CBackCompatEnabled) { processedTraceparent = processLegacyCorrelation(request); } if (processedTraceparent == null){ processedTraceparent = new Traceparent(); } } else { // create outbound traceparent inheriting traceId, flags from parent. processedTraceparent = new Traceparent(0, incomingTraceparent.getTraceId(), null, incomingTraceparent.getTraceFlags()); } return processedTraceparent; }
@Test public void testTraceparentAreResolved() { //setup Map<String, String> headers = new HashMap<>(); Traceparent t = new Traceparent(); headers.put(TraceContextCorrelation.TRACEPARENT_HEADER_NAME, t.toString()); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TraceContextCorrelation.resolveCorrelation(request, response, requestTelemetry); //validate we have generated proper ID's Assert.assertNotNull(requestTelemetry.getId()); Assert.assertTrue(requestTelemetry.getId().startsWith(formatedID(t.getTraceId()))); //validate operation context ID's OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertEquals(t.getTraceId(), operation.getId()); Assert.assertEquals(formatedID(t.getTraceId() + "." + t.getSpanId()), operation.getParentId()); }
requestTelemetry.setId("|" + processedTraceParent.getTraceId() + "." + processedTraceParent.getSpanId() + "."); requestTelemetry.getContext().getOperation().setId(processedTraceParent.getTraceId()); requestTelemetry.getContext().getOperation().setParentId("|" + processedTraceParent.getTraceId() + "." + incomingTraceparent.getSpanId() + "."); } else {
requestTelemetry.setId("|" + processedTraceParent.getTraceId() + "." + processedTraceParent.getSpanId() + "."); requestTelemetry.getContext().getOperation().setId(processedTraceParent.getTraceId()); requestTelemetry.getContext().getOperation().setParentId("|" + processedTraceParent.getTraceId() + "." + incomingTraceparent.getSpanId() + "."); } else {
Traceparent tp = new Traceparent(); String incomingId = "|" + tp.getTraceId() + ".bcec871c_1."; headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", null)); Assert.assertFalse(requestTelemetry.getId().startsWith("|"+tp.getTraceId())); Assert.assertNotEquals(tp.getTraceId(), operation.getId()); Assert.assertNotEquals(incomingId, operation.getParentId());
Traceparent tp = new Traceparent(); String incomingId = "|" + tp.getTraceId() + ".bcec871c_1."; headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", null)); Assert.assertNotNull(requestTelemetry.getId()); Assert.assertTrue(requestTelemetry.getId().startsWith("|"+tp.getTraceId())); Assert.assertEquals(tp.getTraceId(), operation.getId()); Assert.assertEquals(incomingId, operation.getParentId());
Assert.assertNotEquals(tp.getSpanId(), id[1]); Assert.assertTrue(requestTelemetry.getId().startsWith(formatedID(tp.getTraceId()))); Assert.assertEquals(tp.getTraceId(), operation.getId()); Assert.assertEquals(formatedID(tp.getTraceId() + "." + tp.getSpanId()), operation.getParentId());
Assert.assertEquals(tp.getTraceId(), exceptionTelemetry.getContext().getOperation().getId()); Assert.assertEquals(requestTelemetry.getId(), exceptionTelemetry.getContext().getOperation().getParentId());