public static double getSamplingScore(Telemetry telemetry) { double samplingScore = 0; try { if (telemetry.getContext().getUser().getId() != null) { samplingScore = (double) getSamplingHashCode(telemetry.getContext().getUser().getId()) / Integer.MAX_VALUE; } else if (telemetry.getContext().getOperation().getId() != null) { samplingScore = (double) getSamplingHashCode(telemetry.getContext().getOperation().getId()) / Integer.MAX_VALUE; } else { samplingScore = rand.nextDouble(); } } catch (Exception e) { InternalLogger.INSTANCE.error("Failed to fetch sample number for telemetry, using default"); samplingScore = rand.nextDouble(); } samplingScore *= 100; return samplingScore; }
/** * Initializes the properties of the given telemetry. * * @param telemetry The {@link com.microsoft.applicationinsights.telemetry.Telemetry} to initialize. */ @Override protected void onInitializeTelemetry(Telemetry telemetry) { UserContext userContext = telemetry.getContext().getUser(); if (!CommonUtils.isNullOrEmpty(userContext.getId())) { return; } RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); UserContext requestUserContext = requestTelemetry.getContext().getUser(); if (requestUserContext == null) { return; } userContext.setId(requestUserContext.getId()); Date requestUserAcquisitionDate = requestUserContext.getAcquisitionDate(); userContext.setAcquisitionDate(requestUserAcquisitionDate); } }
/** * Initializes the properties of the given telemetry. * * @param telemetry The {@link com.microsoft.applicationinsights.telemetry.Telemetry} to initialize. */ @Override protected void onInitializeTelemetry(Telemetry telemetry) { UserContext userContext = telemetry.getContext().getUser(); if (!CommonUtils.isNullOrEmpty(userContext.getId())) { return; } RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); UserContext requestUserContext = requestTelemetry.getContext().getUser(); if (requestUserContext == null) { return; } userContext.setId(requestUserContext.getId()); Date requestUserAcquisitionDate = requestUserContext.getAcquisitionDate(); userContext.setAcquisitionDate(requestUserAcquisitionDate); } }
@Test public void testSetId() { ConcurrentHashMap<String, String> map = new ConcurrentHashMap<String, String>(); UserContext context = new UserContext(map); context.setId("mock"); assertEquals("mock", context.getId()); assertEquals(1, map.size()); assertEquals("mock", map.get(ContextTagKeys.getKeys().getUserId())); }
@Test public void testWhenCookieExistCorrectUserIdAttachedToSentTelemetry() throws Exception { HttpHelper.sendRequestAndGetResponseCookie(server.getPortNumber(), userCookieFormatted); RequestTelemetry requestTelemetry = channel.getTelemetryItems(RequestTelemetry.class).get(0); Assert.assertTrue(userCookieFormatted.contains(requestTelemetry.getContext().getUser().getId())); Assert.assertEquals(requestTelemetry.getContext().getUser().getId(), HttpHelper.getCookie()); }
@Test public void gsmSyntheticHeadersTest() { WebSyntheticRequestTelemetryInitializer tested = new WebSyntheticRequestTelemetryInitializer(); HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class); Mockito.doReturn("").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_SOURCE); Mockito.doReturn("A1").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_RUN_ID); Mockito.doReturn("A2").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_LOCATION); RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime(), mockRequest); ThreadContext.setRequestTelemetryContext(context); TraceTelemetry telemetry = new TraceTelemetry(); tested.initialize(telemetry); assertEquals(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_SOURCE_NAME, telemetry.getContext().getOperation().getSyntheticSource()); assertEquals("A1", telemetry.getContext().getSession().getId()); assertEquals("A2", telemetry.getContext().getUser().getId()); }
@Override public void initialize(Telemetry telemetry) { RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry(); UserContext requestUserContext = requestTelemetry.getContext().getUser(); if (expectedUserId == null) { //No longer testing for UUID //Assert.assertTrue(Sanitizer.isUUID(requestUserContext.getId())); Assert.assertNotEquals(requestUserContext.getId(), HttpHelper.getCookie()); } else { Assert.assertEquals(expectedUserId, requestUserContext.getId()); } Assert.assertNotNull(requestUserContext.getAcquisitionDate()); } }
@Test public void commonSyntheticHeadersTest() { WebSyntheticRequestTelemetryInitializer tested = new WebSyntheticRequestTelemetryInitializer(); HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class); Mockito.doReturn("A").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_SOURCE); Mockito.doReturn("A1").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_USER_ID); Mockito.doReturn("A2").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_SESSION_ID); Mockito.doReturn("A3").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_OPERATION_ID); Mockito.doReturn("A4").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_TEST_NAME); Mockito.doReturn("A5").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_RUN_ID); Mockito.doReturn("A6").when(mockRequest).getHeader(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_LOCATION); RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime(), mockRequest); ThreadContext.setRequestTelemetryContext(context); TraceTelemetry telemetry = new TraceTelemetry(); tested.initialize(telemetry); assertEquals("A", telemetry.getContext().getOperation().getSyntheticSource()); assertEquals("A1", telemetry.getContext().getUser().getId()); assertEquals("A2", telemetry.getContext().getSession().getId()); assertEquals("A3", telemetry.getContext().getOperation().getId()); assertEquals("A4", telemetry.getContext().getProperties().get(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_TEST_NAME)); assertEquals("A5", telemetry.getContext().getProperties().get(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_RUN_ID)); assertEquals("A6", telemetry.getContext().getProperties().get(WebSyntheticRequestTelemetryInitializer.SYNTHETIC_TEST_LOCATION)); } }
@Test public void testUserIdIsUpdatedFromRequest() { TraceTelemetry telemetry = new TraceTelemetry(); userTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals(REQUEST_USER_ID, telemetry.getContext().getUser().getId()); }
private void handlePossibleGSMSyntheticRequest(Telemetry telemetry, HttpServletRequest request) { String gsmSyntheticTestRunId = request.getHeader(SYNTHETIC_TEST_RUN_ID); if (CommonUtils.isNullOrEmpty(gsmSyntheticTestRunId)) { return; } String syntheticSource = telemetry.getContext().getOperation().getSyntheticSource(); if (CommonUtils.isNullOrEmpty(syntheticSource)) { telemetry.getContext().getOperation().setSyntheticSource(SYNTHETIC_SOURCE_NAME); } String sessionId = telemetry.getContext().getSession().getId(); if (CommonUtils.isNullOrEmpty(sessionId)) { telemetry.getContext().getSession().setId(gsmSyntheticTestRunId); } String userId = telemetry.getContext().getUser().getId(); if (CommonUtils.isNullOrEmpty(userId)) { String header = request.getHeader(SYNTHETIC_TEST_LOCATION); telemetry.getContext().getUser().setId(header); } }
@Test public void noSyntheticHeadersTest() { WebSyntheticRequestTelemetryInitializer tested = new WebSyntheticRequestTelemetryInitializer(); HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class); Mockito.doReturn("").when(mockRequest).getHeader(anyString()); RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime(), mockRequest); ThreadContext.setRequestTelemetryContext(context); TraceTelemetry telemetry = new TraceTelemetry(); tested.initialize(telemetry); assertTrue(CommonUtils.isNullOrEmpty(telemetry.getContext().getSession().getId())); assertTrue(CommonUtils.isNullOrEmpty(telemetry.getContext().getUser().getId())); assertTrue(CommonUtils.isNullOrEmpty(telemetry.getContext().getOperation().getId())); }
private void handlePossibleGSMSyntheticRequest(Telemetry telemetry, HttpServletRequest request) { String gsmSyntheticTestRunId = request.getHeader(SYNTHETIC_TEST_RUN_ID); if (CommonUtils.isNullOrEmpty(gsmSyntheticTestRunId)) { return; } String syntheticSource = telemetry.getContext().getOperation().getSyntheticSource(); if (CommonUtils.isNullOrEmpty(syntheticSource)) { telemetry.getContext().getOperation().setSyntheticSource(SYNTHETIC_SOURCE_NAME); } String sessionId = telemetry.getContext().getSession().getId(); if (CommonUtils.isNullOrEmpty(sessionId)) { telemetry.getContext().getSession().setId(gsmSyntheticTestRunId); } String userId = telemetry.getContext().getUser().getId(); if (CommonUtils.isNullOrEmpty(userId)) { String header = request.getHeader(SYNTHETIC_TEST_LOCATION); telemetry.getContext().getUser().setId(header); } }
private void handleCommonSyntheticRequest(String syntheticSourceHeader, Telemetry telemetry, HttpServletRequest request) { String syntheticSource = telemetry.getContext().getOperation().getSyntheticSource(); if (CommonUtils.isNullOrEmpty(syntheticSource)) { telemetry.getContext().getOperation().setSyntheticSource(syntheticSourceHeader); } String userId = telemetry.getContext().getUser().getId(); if (CommonUtils.isNullOrEmpty(userId)) { String header = request.getHeader(SYNTHETIC_TEST_USER_ID); telemetry.getContext().getUser().setId(header); } String sessionId = telemetry.getContext().getSession().getId(); if (CommonUtils.isNullOrEmpty(sessionId)) { String header = request.getHeader(SYNTHETIC_TEST_SESSION_ID); telemetry.getContext().getSession().setId(header); } String operationId = telemetry.getContext().getOperation().getId(); if (CommonUtils.isNullOrEmpty(operationId)) { String header = request.getHeader(SYNTHETIC_TEST_OPERATION_ID); telemetry.getContext().getOperation().setId(header); } putInProperties(telemetry, request, SYNTHETIC_TEST_TEST_NAME, SYNTHETIC_TEST_RUN_ID, SYNTHETIC_TEST_LOCATION); }
private void handleCommonSyntheticRequest(String syntheticSourceHeader, Telemetry telemetry, HttpServletRequest request) { String syntheticSource = telemetry.getContext().getOperation().getSyntheticSource(); if (CommonUtils.isNullOrEmpty(syntheticSource)) { telemetry.getContext().getOperation().setSyntheticSource(syntheticSourceHeader); } String userId = telemetry.getContext().getUser().getId(); if (CommonUtils.isNullOrEmpty(userId)) { String header = request.getHeader(SYNTHETIC_TEST_USER_ID); telemetry.getContext().getUser().setId(header); } String sessionId = telemetry.getContext().getSession().getId(); if (CommonUtils.isNullOrEmpty(sessionId)) { String header = request.getHeader(SYNTHETIC_TEST_SESSION_ID); telemetry.getContext().getSession().setId(header); } String operationId = telemetry.getContext().getOperation().getId(); if (CommonUtils.isNullOrEmpty(operationId)) { String header = request.getHeader(SYNTHETIC_TEST_OPERATION_ID); telemetry.getContext().getOperation().setId(header); } putInProperties(telemetry, request, SYNTHETIC_TEST_TEST_NAME, SYNTHETIC_TEST_RUN_ID, SYNTHETIC_TEST_LOCATION); }
@Test public void testUserIdNotOverriddenIfAlreadySet() { String expectedUserId = "SOME_ID"; TraceTelemetry telemetry = new TraceTelemetry(); telemetry.getContext().getUser().setId(expectedUserId); userTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals(expectedUserId, telemetry.getContext().getUser().getId()); }
@Test public void testNoUserCookie() { RequestTelemetryContext requestTelemetryContext = ThreadContext.getRequestTelemetryContext(); requestTelemetryContext.getHttpRequestTelemetry().getContext().getUser().setAcquisitionDate(null); requestTelemetryContext.getHttpRequestTelemetry().getContext().getUser().setId(null); TraceTelemetry telemetry = new TraceTelemetry(); userTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertNull(telemetry.getContext().getUser().getId()); Assert.assertNull(telemetry.getContext().getUser().getAcquisitionDate()); }