@Test public void testRequestContextIsResolved() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue("id1", null); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); mockProfileFetcher.setAppIdToReturn("id2"); //run TelemetryCorrelationUtils.resolveRequestSource(request, requestTelemetry, "ikey1"); //validate we have populated the source as expected Assert.assertEquals(getRequestSourceValue("id1", null), requestTelemetry.getSource()); }
@Test public void testRequestContextIsNotResolvedWithNullRequest() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue("id1", "Worker Role"); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); mockProfileFetcher.setAppIdToReturn("id2"); //run TelemetryCorrelationUtils.resolveRequestSource(null, requestTelemetry, "ike1"); //validate Assert.assertNull(requestTelemetry.getSource()); }
@Test public void testRequestContextIsNotResolvedWithFailedAppProfileFetch() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue("id1", null); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.FAILED); mockProfileFetcher.setAppIdToReturn("id2"); //run TelemetryCorrelationUtils.resolveRequestSource(request, requestTelemetry, "ikey1"); //validate source is not set as the task to retrieve appId failed. Assert.assertNull(requestTelemetry.getSource()); }
@Test public void testRequestContextIsResolvedWithAppIdAndRoleName() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue("id1", "Worker Role"); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); mockProfileFetcher.setAppIdToReturn("id2"); //run TelemetryCorrelationUtils.resolveRequestSource(request, requestTelemetry, "ikey1"); //validate we have populated the source as expected Assert.assertEquals(getRequestSourceValue("id1", "Worker Role"), requestTelemetry.getSource()); }
@Test public void testRequestContextIsNotResolvedWithNullRequestTelemetry() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue("id1", "Worker Role"); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); mockProfileFetcher.setAppIdToReturn("id2"); //run TelemetryCorrelationUtils.resolveRequestSource(request, null, "ike1"); //validate Assert.assertNull(requestTelemetry.getSource()); }
@Test public void testRequestContextIsResolvedWithRoleNameOnly() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue(null, "Worker Role"); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); mockProfileFetcher.setAppIdToReturn("id2"); //run TelemetryCorrelationUtils.resolveRequestSource(request, requestTelemetry, "ikey1"); //validate we have populated the source as expected Assert.assertEquals(getRequestSourceValue(null, "Worker Role"), requestTelemetry.getSource()); }
@Test public void testRequestContextIsNotResolvedForSameApp() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue("id1", null); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); //appId returned is the same as incoming one. mockProfileFetcher.setAppIdToReturn("id1"); //run TelemetryCorrelationUtils.resolveRequestSource(request, requestTelemetry, "ikey1"); //validate source is not set as the incoming request came from the same application. Assert.assertNull(requestTelemetry.getSource()); }
@Test public void testOnEndAddsSourceFieldForRequestWithRoleNameOnly() { //setup: initialize a request telemetry context RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); //mock a servlet request with cross-component correlation headers Map<String, String> headers = new HashMap<String, String>(); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue(null, "Front End")); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); //configure mock appId fetcher to return different appId from what's on the request header mockProfileFetcher.setAppIdToReturn("id2"); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); //run defaultModule.onBeginRequest(request, response); defaultModule.onEndRequest(request, null); //validate source RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); Assert.assertEquals(TelemetryCorrelationUtilsTests.getRequestSourceValue(null, "Front End"), requestTelemetry.getSource()); }
@Test public void testRequestContextIsNotResolvedWithPendingAppProfileFetch() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue("id1", null); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.PENDING); mockProfileFetcher.setAppIdToReturn("id2"); //run TelemetryCorrelationUtils.resolveRequestSource(request, requestTelemetry, "ikey1"); //validate source is not set as the task to retrieve appId was still pending. Assert.assertNull(requestTelemetry.getSource()); }
@Test public void testOnEndAddsSourceFieldForRequestWithRequestContext() { //setup: initialize a request telemetry context RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); //mock a servlet request with cross-component correlation headers Map<String, String> headers = new HashMap<String, String>(); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", null)); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); //configure mock appId fetcher to return different appId from what's on the request header mockProfileFetcher.setAppIdToReturn("id2"); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); //run defaultModule.onBeginRequest(request, response); defaultModule.onEndRequest(request, null); //validate source RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); Assert.assertEquals(TelemetryCorrelationUtilsTests.getRequestSourceValue("id1", null), requestTelemetry.getSource()); }
@Test public void testRequestContextIsNotResolvedWithNullIkey() { //setup Hashtable<String, String> headers = new Hashtable<String, String>(); String incomingRequestContextHeader = getRequestContextHeaderValue("id1", "Worker Role"); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, incomingRequestContextHeader); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); RequestTelemetry requestTelemetry = new RequestTelemetry(); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); mockProfileFetcher.setAppIdToReturn("id2"); //run TelemetryCorrelationUtils.resolveRequestSource(request, requestTelemetry, null); //validate Assert.assertNull(requestTelemetry.getSource()); }
@Test public void testOnEndAddsSourceFieldForRequestWithRoleNameForSameApp() { //setup: initialize a request telemetry context RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); //mock a servlet request with cross-component correlation headers Map<String, String> headers = new HashMap<String, String>(); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", "Front End")); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); //configure mock appId fetcher to return the same appId from what's on the request header mockProfileFetcher.setAppIdToReturn("id1"); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); //run defaultModule.onBeginRequest(request, response); defaultModule.onEndRequest(request, null); //validate source RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); Assert.assertEquals(TelemetryCorrelationUtilsTests.getRequestSourceValue(null, "Front End"), requestTelemetry.getSource()); }
@Test public void testOnEndDoesNotAddSourceFieldForRequestFromSameApp() { //setup: initialize a request telemetry context RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); //mock a servlet request with cross-component correlation headers Map<String, String> headers = new HashMap<String, String>(); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", null)); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); //configure mock appId fetcher to return the same appId from what's on the request header mockProfileFetcher.setAppIdToReturn("id1"); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); //run defaultModule.onBeginRequest(request, response); defaultModule.onEndRequest(request, null); //validate source RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); Assert.assertNull(requestTelemetry.getSource()); }
@Test public void testOnEndAddsSourceFieldForRequestWithRoleNameAndAppId() { //setup: initialize a request telemetry context RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); //mock a servlet request with cross-component correlation headers Map<String, String> headers = new HashMap<String, String>(); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", "Front End")); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); //configure mock appId fetcher to return different appId from what's on the request header mockProfileFetcher.setAppIdToReturn("id2"); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); //run defaultModule.onBeginRequest(request, response); defaultModule.onEndRequest(request, null); //validate source RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); Assert.assertEquals(TelemetryCorrelationUtilsTests.getRequestSourceValue("id1", "Front End"), requestTelemetry.getSource()); }
@Test public void testOnEndDoesNotOverrideSourceField() { //setup: initialize a request telemetry context RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime()); ThreadContext.setRequestTelemetryContext(context); RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); requestTelemetry.setSource("myAppId"); //mock a servlet request with cross-component correlation headers Map<String, String> headers = new HashMap<String, String>(); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", "Front End")); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); //configure mock appId fetcher to return different appId from what's on the request header mockProfileFetcher.setAppIdToReturn("id2"); mockProfileFetcher.setResultStatus(ProfileFetcherResultTaskStatus.COMPLETE); //run defaultModule.onBeginRequest(request, response); defaultModule.onEndRequest(request, null); //validate source Assert.assertEquals("myAppId", requestTelemetry.getSource()); }
headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", null)); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers, 1); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse(); Assert.assertEquals(TelemetryCorrelationUtilsTests.getRequestSourceValue("id1", null), requestTelemetry.getSource());
headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests. getRequestContextHeaderValue("id1", null)); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse();
headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests. getRequestContextHeaderValue("id1", null)); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse();
headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId); headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests. getRequestContextHeaderValue("id1", null)); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse();
headers.put(TelemetryCorrelationUtils.REQUEST_CONTEXT_HEADER_NAME, TelemetryCorrelationUtilsTests.getRequestContextHeaderValue("id1", null)); HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers); HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse();