} else { TelemetryCorrelationUtils.resolveCorrelation(request, response, telemetry);
} else { TelemetryCorrelationUtils.resolveCorrelation(request, response, telemetry);
@Test public void testCorrelationContextNotPopulatedIfNoRequestId() { //setup - empty RequestId Hashtable<String, String> headers = new Hashtable<String, String>(); String correlationContext = "key1=value1, key2=value2"; headers.put(TelemetryCorrelationUtils.CORRELATION_CONTEXT_HEADER_NAME, correlationContext); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate no extra properties have been populated Assert.assertEquals(0, requestTelemetry.getProperties().size()); }
@Test public void testChildRequestDependencyIdGenerationWithNonHierarchicalRequestId() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingId = "guid"; headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); RequestTelemetry requestTelemetry = context.getHttpRequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); String childId = TelemetryCorrelationUtils.generateChildDependencyId(); //Incoming ID is non-hierarchical, so we must not modidy outgoing (child) id Assert.assertNotNull(childId); Assert.assertEquals(incomingId, childId); }
@Test public void testChildRequestDependencyIdGeneration() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingId = "|guid_1."; headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); RequestTelemetry requestTelemetry = context.getHttpRequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); String childId = TelemetryCorrelationUtils.generateChildDependencyId(); //validate we have generated proper ID's Assert.assertNotNull(childId); Assert.assertEquals(requestTelemetry.getId() + "1.", childId); }
@Test public void testCorrelationIdsAreResolvedWithNonHierarchicalRequest() { //setup - flat requestId Hashtable<String, String> headers = new Hashtable<String, String>(); headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, "guid"); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate we have generated proper ID's Assert.assertNotNull(requestTelemetry.getId()); Assert.assertTrue(requestTelemetry.getId().startsWith("|guid.")); Assert.assertEquals("|guid.".length() + 9, requestTelemetry.getId().length()); Assert.assertTrue(requestTelemetry.getId().endsWith("_")); //validate operation context ID's OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertEquals("guid", operation.getId()); Assert.assertEquals("guid", operation.getParentId()); }
@Test public void testCorrelationIdsAreResolvedWithNonHierarchicalRequest3() { //setup - flat requestId Hashtable<String, String> headers = new Hashtable<String, String>(); headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, "guid.guid2_"); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate we have generated proper ID's Assert.assertNotNull(requestTelemetry.getId()); Assert.assertTrue(requestTelemetry.getId().startsWith("|guid.guid2_")); Assert.assertEquals("|guid.guid2_".length() + 9, requestTelemetry.getId().length()); Assert.assertTrue(requestTelemetry.getId().endsWith("_")); //validate operation context ID's OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertEquals("guid", operation.getId()); Assert.assertEquals("guid.guid2_", operation.getParentId()); }
@Test public void testCorrelationIdsAreResolvedWithNonHierarchicalRequest2() { //setup - flat requestId Hashtable<String, String> headers = new Hashtable<String, String>(); headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, "guid.guid2.guid3"); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate we have generated proper ID's Assert.assertNotNull(requestTelemetry.getId()); Assert.assertTrue(requestTelemetry.getId().startsWith("|guid.guid2.guid3")); Assert.assertEquals("|guid.guid2.guid3.".length() + 9, requestTelemetry.getId().length()); Assert.assertTrue(requestTelemetry.getId().endsWith("_")); //validate operation context ID's OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertEquals("guid", operation.getId()); Assert.assertEquals("guid.guid2.guid3", operation.getParentId()); }
@Test public void testCorrelationIdsAreResolved() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String rootId = "9e74f0e5-efc4-41b5-86d1-3524a43bd891"; String incomingId = "|9e74f0e5-efc4-41b5-86d1-3524a43bd891.bcec871c_1."; headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate we have generated proper ID's Assert.assertNotNull(requestTelemetry.getId()); Assert.assertEquals(incomingId.length() + 9, requestTelemetry.getId().length()); Assert.assertTrue(requestTelemetry.getId().startsWith(incomingId)); Assert.assertTrue(requestTelemetry.getId().endsWith("_")); //validate operation context ID's OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertEquals(rootId, operation.getId()); Assert.assertEquals(incomingId, operation.getParentId()); }
@Test public void testCorrelationIdsAreResolvedWithNonHierarchicalRequest4() { //setup - flat requestId Hashtable<String, String> headers = new Hashtable<String, String>(); headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, "guid."); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate we have generated proper ID's Assert.assertNotNull(requestTelemetry.getId()); Assert.assertTrue(requestTelemetry.getId().startsWith("|guid.")); Assert.assertEquals("|guid.".length() + 9, requestTelemetry.getId().length()); Assert.assertTrue(requestTelemetry.getId().endsWith("_")); //validate operation context ID's OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertEquals("guid", operation.getId()); Assert.assertEquals("guid.", operation.getParentId()); }
@Test public void testChildRequestDependencyIdGenerationWithNoParentId() { //setup - make sure no RequestId is set (i.e. no parent) Hashtable<String, String> headers = new Hashtable<String, String>(); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); RequestTelemetry requestTelemetry = context.getHttpRequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); String childId = TelemetryCorrelationUtils.generateChildDependencyId(); //validate we have generated proper ID's Assert.assertNotNull(childId); Assert.assertEquals(requestTelemetry.getId() + "1.", childId); }
@Test public void testCorrelationContextPopulated() { //setup - empty RequestId Hashtable<String, String> headers = new Hashtable<String, String>(); String rootId = "9e74f0e5-efc4-41b5-86d1-3524a43bd891"; String incomingId = "|9e74f0e5-efc4-41b5-86d1-3524a43bd891.bcec871c_1."; headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers, 1); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate Assert.assertNotNull(requestTelemetry.getId()); Assert.assertEquals(incomingId.length() + 9, requestTelemetry.getId().length()); Assert.assertTrue(requestTelemetry.getId().startsWith(incomingId)); //validate operation context ID's OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertEquals(rootId, operation.getId()); Assert.assertEquals(incomingId, operation.getParentId()); //validate correlation context has been added as properties Assert.assertEquals(2, requestTelemetry.getProperties().size()); Assert.assertEquals("value1", requestTelemetry.getProperties().get("key1")); Assert.assertEquals("value2", requestTelemetry.getProperties().get("key2")); }
TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry);
@Test public void testCorrelationContextPopulatedWithMultipleHeaders() { //setup - empty RequestId Hashtable<String, String> headers = new Hashtable<String, String>(); String rootId = "9e74f0e5-efc4-41b5-86d1-3524a43bd891"; String incomingId = "|9e74f0e5-efc4-41b5-86d1-3524a43bd891.bcec871c_1."; headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers, 2); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate Assert.assertNotNull(requestTelemetry.getId()); Assert.assertEquals(incomingId.length() + 9, requestTelemetry.getId().length()); Assert.assertTrue(requestTelemetry.getId().startsWith(incomingId)); //validate operation context ID's OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertEquals(rootId, operation.getId()); Assert.assertEquals(incomingId, operation.getParentId()); //validate correlation context has been added as properties Assert.assertEquals(3, requestTelemetry.getProperties().size()); Assert.assertEquals("value1", requestTelemetry.getProperties().get("key1")); Assert.assertEquals("value2", requestTelemetry.getProperties().get("key2")); Assert.assertEquals("value3", requestTelemetry.getProperties().get("key3")); }
TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry);
@Test public void testCorrelationIdsAreResolvedIfRequestIdEmpty() { //setup - empty RequestId Hashtable<String, String> headers = new Hashtable<String, String>(); headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, ""); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate operation context ID's - there is no parent, so parentId should be null, rootId // is newly generated and request.Id is based on new rootId OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertNotNull(requestTelemetry.getId()); Assert.assertEquals(requestTelemetry.getId(), '|' + operation.getId() + '.'); Assert.assertNull(operation.getParentId()); }
@Test public void testChildRequestDependencyIdGenerationWithMultipleRequests() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingId = "|guid_1."; headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); RequestTelemetry requestTelemetry = context.getHttpRequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); String childId = TelemetryCorrelationUtils.generateChildDependencyId(); //validate we have generated proper ID's Assert.assertNotNull(childId); Assert.assertEquals(requestTelemetry.getId() + "1.", childId); // generate second child childId = TelemetryCorrelationUtils.generateChildDependencyId(); Assert.assertNotNull(childId); Assert.assertEquals(requestTelemetry.getId() + "2.", childId); }
@Test public void testCorrelationIdsAreResolvedIfNoRequestIdHeader() { //setup - no headers Hashtable<String, String> headers = new Hashtable<String, String>(); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); RequestTelemetry requestTelemetry = new RequestTelemetry(); //run TelemetryCorrelationUtils.resolveCorrelation(request, response, requestTelemetry); //validate operation context ID's - there is no parent, so parentId should be null, rootId // is newly generated and request.Id is based on new rootId OperationContext operation = requestTelemetry.getContext().getOperation(); Assert.assertNotNull(requestTelemetry.getId()); Assert.assertEquals(requestTelemetry.getId(), '|' + operation.getId() + '.'); Assert.assertNull(operation.getParentId()); }