@Override public boolean process(Telemetry telemetry) { if (telemetry == null) { return true; } if (notNeededSources.isEmpty()) { return LocalStringsUtils.isNullOrEmpty(telemetry.getContext().getOperation().getSyntheticSource()); } if (notNeededSources.contains(telemetry.getContext().getOperation().getSyntheticSource())) { return false; } return true; }
/** * Send the heartbeat item synchronously to application insights backend. */ private void send() { MetricTelemetry telemetry = gatherData(); telemetry.getContext().getOperation().setSyntheticSource(HEARTBEAT_SYNTHETIC_METRIC_NAME); telemetryClient.trackMetric(telemetry); InternalLogger.INSTANCE.trace("No of heartbeats sent, %s", ++heartbeatsSent); }
/** * Initializes the properties of the given telemetry. * * @param telemetry The {@link com.microsoft.applicationinsights.telemetry.Telemetry} to initialize. */ @Override protected void onInitializeTelemetry(Telemetry telemetry) { RequestTelemetryContext telemetryContext = ThreadContext.getRequestTelemetryContext(); String operationName = telemetryContext.getHttpRequestTelemetry().getName(); updateRequestNameIfRequestTelemetry(telemetry, operationName); telemetry.getContext().getOperation().setName(operationName); }
/** * Initializes the properties of the given telemetry. * * @param telemetry The {@link com.microsoft.applicationinsights.telemetry.Telemetry} to initialize. */ @Override protected void onInitializeTelemetry(Telemetry telemetry) { RequestTelemetryContext telemetryContext = ThreadContext.getRequestTelemetryContext(); String operationName = telemetryContext.getHttpRequestTelemetry().getName(); updateRequestNameIfRequestTelemetry(telemetry, operationName); telemetry.getContext().getOperation().setName(operationName); }
private OperationContext createAndInitializeTelemetry() { TraceTelemetry telemetry = new TraceTelemetry(); defaultInitializer.initialize(telemetry); return telemetry.getContext().getOperation(); }
private OperationContext createAndInitializeTelemetry() { TraceTelemetry telemetry = new TraceTelemetry(); defaultInitializer.initialize(telemetry); return telemetry.getContext().getOperation(); }
@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()); }
@Test public void testWith99PercentWithOpId() { FixedRateTelemetrySampler tested = new FixedRateTelemetrySampler(); tested.setSamplingPercentage(99.0); Telemetry telemetry = new EventTelemetry(); telemetry.getContext().getOperation().setId("a"); boolean result = tested.isSampledIn(telemetry); telemetry.getContext().getOperation().setId("aa"); result = tested.isSampledIn(telemetry); telemetry.getContext().getOperation().setId("aaasdfsadfasdfsadfsadfsdafasfsadfsdf"); result = tested.isSampledIn(telemetry); Assert.assertTrue(result); }
@Test public void testRequestTelemetryInitializedWithOperationId() throws Exception { sendRequestAndGetResponseCookie(server.getPortNumber()); List<RequestTelemetry> items = channel.getTelemetryItems(RequestTelemetry.class); assertEquals(1, items.size()); RequestTelemetry requestTelemetry = items.get(0); // the WebRequestTrackingModule automatically creates a hierarchical ID for request telemetry of the // following form: "|guid.", where guid is the OperationId Assert.assertEquals("Operation id not match", requestTelemetry.getId(), "|" + requestTelemetry.getContext().getOperation().getId() + "."); }
@Test public void testRequestTelemetryInitializedWithOperationName() throws Exception { sendRequestAndGetResponseCookie(server.getPortNumber()); List<RequestTelemetry> items = channel.getTelemetryItems(RequestTelemetry.class); assertEquals(1, items.size()); RequestTelemetry requestTelemetry = items.get(0); Assert.assertEquals("Operation name not match", requestTelemetry.getName(), requestTelemetry.getContext().getOperation().getName()); }
@Test public void samplingScoreGeneratedUsingOperationIdIfPresent() { String operationId = generateRandomOperationId(); Telemetry eventTelemetry = new EventTelemetry(); eventTelemetry.getContext().getOperation().setId(operationId); Telemetry requestTelemetry = new RequestTelemetry(); requestTelemetry.getContext().getOperation().setId(operationId); double eventTelemetrySamplingScore = SamplingScoreGeneratorV2.getSamplingScore(eventTelemetry); double requestTelemetrySamplingScore = SamplingScoreGeneratorV2.getSamplingScore(requestTelemetry); Assert.assertEquals(eventTelemetrySamplingScore, requestTelemetrySamplingScore, 0.0); }
@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())); }
@Test public void testInitializerDoesNotOverrideCustomerOperationId() { String customerRequestName = "CustomerRequestName"; RequestTelemetry requestTelemetry = new RequestTelemetry(); OperationContext operationContext = requestTelemetry.getContext().getOperation(); operationContext.setName(customerRequestName); defaultInitializer.initialize(requestTelemetry); Assert.assertEquals("Customer operation name should not be changed.", customerRequestName, operationContext.getName()); }
@Test public void testOneSourceThatIsFound() throws Throwable { SyntheticSourceFilter tested = new SyntheticSourceFilter(); Telemetry telemetry = new PageViewTelemetry(); telemetry.getContext().getOperation().setSyntheticSource("A"); boolean result = tested.process(telemetry); assertFalse(result); }
@Test public void testInitializerDoesNotOverrideCustomerOperationId() { String customerId = "CustomerID"; RequestTelemetry requestTelemetry = new RequestTelemetry(); OperationContext operationContext = requestTelemetry.getContext().getOperation(); operationContext.setId(customerId); defaultInitializer.initialize(requestTelemetry); Assert.assertEquals("Customer operation ID should not be changed.", customerId, operationContext.getId()); }
@Test public void testSourcesThatIsDeclaredAndFound() throws Throwable { SyntheticSourceFilter tested = new SyntheticSourceFilter(); tested.setNotNeededSources("A, B"); Telemetry telemetry = new PageViewTelemetry(); telemetry.getContext().getOperation().setSyntheticSource("A"); boolean result = tested.process(telemetry); assertFalse(result); }
@Test public void testWith90PercentWithOpId() { FixedRateTelemetrySampler tested = new FixedRateTelemetrySampler(); tested.setSamplingPercentage(10.0); Telemetry telemetry = new EventTelemetry(); telemetry.getContext().getOperation().setId("a"); boolean result = tested.isSampledIn(telemetry); Assert.assertFalse(result); }
@Test public void testSourcesThatIsDeclaredAndNOTFound() throws Throwable { SyntheticSourceFilter tested = new SyntheticSourceFilter(); tested.setNotNeededSources("A, B"); Telemetry telemetry = new PageViewTelemetry(); telemetry.getContext().getOperation().setSyntheticSource("A1"); boolean result = tested.process(telemetry); assertTrue(result); } }
@Test public void testWith0PercentWithOpIdAndExclude() { FixedRateTelemetrySampler tested = new FixedRateTelemetrySampler(); tested.setSamplingPercentage(0.0); tested.setExcludeTypes("Event, PageView"); Telemetry telemetry = new EventTelemetry(); telemetry.getContext().getOperation().setId("a"); boolean result = tested.isSampledIn(telemetry); Assert.assertTrue(result); } }
@Test public void samplingScoreIsNotAffectedByPresenceOfUserId() { String userId1 = generateRandomUserId(); String userId2 = generateRandomUserId(); String operationId = generateRandomOperationId(); Telemetry eventTelemetry = new EventTelemetry(); eventTelemetry.getContext().getUser().setId(userId1); eventTelemetry.getContext().getOperation().setId(operationId); Telemetry requestTelemetry = new RequestTelemetry(); requestTelemetry.getContext().getUser().setId(userId2); requestTelemetry.getContext().getOperation().setId(operationId); double eventTelemetrySamplingScore = SamplingScoreGeneratorV2.getSamplingScore(eventTelemetry); double requestTelemetrySamplingScore = SamplingScoreGeneratorV2.getSamplingScore(requestTelemetry); Assert.assertEquals(eventTelemetrySamplingScore, requestTelemetrySamplingScore, 0.0); }