@Override public void report(TelemetryClient telemetryClient) { MetricTelemetry mt = new MetricTelemetry(METRIC_NAME, 0.0); mt.markAsCustomPerfCounter(); long[] threadIds = threadBean.findDeadlockedThreads(); if (threadIds != null && threadIds.length > 0) { ArrayList<Long> blockedThreads = new ArrayList<Long>(); StringBuilder sb = new StringBuilder(); for (long threadId : threadIds) { ThreadInfo threadInfo = threadBean.getThreadInfo(threadId); if (threadInfo == null) { continue; } setThreadInfoAndStack(sb, threadInfo); blockedThreads.add(threadId); } if (!blockedThreads.isEmpty()) { String uuid = LocalStringsUtils.generateRandomIntegerId(); mt.setValue((double)blockedThreads.size()); mt.getContext().getOperation().setId(uuid); TraceTelemetry trace = new TraceTelemetry(String.format("%s%s", "Suspected deadlocked threads: ", sb.toString())); trace.getContext().getOperation().setId(uuid); telemetryClient.track(trace); } } telemetryClient.track(mt); } private void setThreadInfoAndStack(StringBuilder sb, ThreadInfo ti) {
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()); }
private OperationContext createAndInitializeTelemetry() { TraceTelemetry telemetry = new TraceTelemetry(); defaultInitializer.initialize(telemetry); return telemetry.getContext().getOperation(); }
@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)); } }
/** * Sends a TraceTelemetry record to Application Insights. Appears in "traces" in Analytics and Search. * @param message A log message. Max length 10000. * @param severityLevel The severity level. * @param properties Named string values you can use to search and classify trace messages. */ public void trackTrace(String message, SeverityLevel severityLevel, Map<String, String> properties) { if (isDisabled()) { return; } if (Strings.isNullOrEmpty(message)) { message = ""; } TraceTelemetry et = new TraceTelemetry(message, severityLevel); MapUtil.copy(properties, et.getContext().getProperties()); this.track(et); }
@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 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 testSessionIdNotOverriddenIfAlreadySet() { String expectedSessionId = "SOME_ID"; TraceTelemetry telemetry = new TraceTelemetry(); telemetry.getContext().getSession().setId(expectedSessionId); sessionTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals(expectedSessionId, telemetry.getContext().getSession().getId()); }
@Test public void testTelemetryIsUpdatedWithUserAgent() { TraceTelemetry telemetry = new TraceTelemetry("new telemetry"); initializer.onInitializeTelemetry(telemetry); Assert.assertEquals(HttpHelper.TEST_USER_AGENT, telemetry.getContext().getUser().getUserAgent()); } }
private static void verifyTraceTelemetry(Telemetry telemetry, SeverityLevel expectedSeverityLevel, Map<String, String> expectedProperties) { assertNotNull(telemetry); assertTrue(telemetry instanceof TraceTelemetry); TraceTelemetry traceTelemetry = (TraceTelemetry)telemetry; assertEquals(traceTelemetry.getSeverityLevel(), expectedSeverityLevel); if (expectedProperties != null) { assertEquals(traceTelemetry.getContext().getProperties(), expectedProperties); } }
@Test public void testAcquisitionDateSetWhenRequired() { TraceTelemetry telemetry = new TraceTelemetry(); userTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals(acquisitionTime, telemetry.getContext().getUser().getAcquisitionDate()); } }
@Test public void testSessionIdIsUpdatedFromRequest() { TraceTelemetry telemetry = new TraceTelemetry(); sessionTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals(REQUEST_SESSION_ID, telemetry.getContext().getSession().getId()); }
@Test public void testUserIdIsUpdatedFromRequest() { TraceTelemetry telemetry = new TraceTelemetry(); userTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals(REQUEST_USER_ID, telemetry.getContext().getUser().getId()); }
@Test public void testIsFirstSessionSetWhenRequired() { TraceTelemetry telemetry = new TraceTelemetry(); sessionTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertEquals("First session expected.", true, telemetry.getContext().getSession().getIsFirst()); }
private void testNoSessionCookie(Boolean isFirstValue) { RequestTelemetryContext requestTelemetryContext = ThreadContext.getRequestTelemetryContext(); requestTelemetryContext.getHttpRequestTelemetry().getContext().getSession().setIsFirst(isFirstValue); requestTelemetryContext.getHttpRequestTelemetry().getContext().getSession().setId(null); TraceTelemetry telemetry = new TraceTelemetry(); sessionTelemetryInitializer.onInitializeTelemetry(telemetry); Assert.assertNull(telemetry.getContext().getSession().getId()); Assert.assertFalse(telemetry.getContext().getSession().getIsFirst()); } }
@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()); }
tt.getContext().setInstrumentationKey(iKey); testCases.add(new Object[]{ "Trace", tt.getContext().setInstrumentationKey(iKey); tt.getProperties().putAll(props); testCases.add(new Object[]{