private void configureWebAppNameContextInitializer(String appName, TelemetryConfiguration configuration) { for (ContextInitializer ci : configuration.getContextInitializers()) { if (ci instanceof WebAppNameContextInitializer) { ((WebAppNameContextInitializer)ci).setAppName(appName); return; } } }
private void configureWebAppNameContextInitializer(String appName, TelemetryConfiguration configuration) { for (ContextInitializer ci : configuration.getContextInitializers()) { if (ci instanceof WebAppNameContextInitializer) { ((WebAppNameContextInitializer)ci).setAppName(appName); return; } } }
/** * Sets the configuration data of Context Initializers in configuration class. * @param contextInitializers The configuration data. * @param configuration The configuration class. */ public void initialize(ContextInitializersXmlElement contextInitializers, TelemetryConfiguration configuration) { List<ContextInitializer> initializerList = configuration.getContextInitializers(); // To keep with prev version. A few will probably be moved to the configuration initializerList.add(new SdkVersionContextInitializer()); initializerList.add(new DeviceInfoContextInitializer()); initializerList.add(new CloudInfoContextInitializer()); if (contextInitializers != null) { ReflectionUtils.loadComponents(ContextInitializer.class, initializerList, contextInitializers.getAdds()); } } }
boolean isDeveloperMode = StringUtils.equalsIgnoreCase(isDeveloperModeProperty, "true"); ContextInitializer initializer = new TelemetryContextInitializer(isDeveloperMode); TelemetryConfiguration.getActive().getContextInitializers().add(initializer);
public static void main(String[] args) throws IOException { System.out.println("This program sends application insights telemetry event using custom context initializer."); TelemetryClient appInsights = new TelemetryClient(); if (args.length > 0) { appInsights.getContext().setInstrumentationKey(args[0]); } appInsights.getContext().setInstrumentationKey("your-ikey"); String iKey = appInsights.getContext().getInstrumentationKey(); if (iKey == null) { System.out.println("Error: no iKey set in ApplicationInsights.xml or as a parameter for this program."); return; } GitBuildInfoContextInitializer customContextInitializer = new GitBuildInfoContextInitializer(); TelemetryConfiguration.getActive().getContextInitializers().add(customContextInitializer); System.out.println("Custom context initializer added to configuration"); // Trace telemetry appInsights.trackTrace("Things seem to be going well"); System.out.println("[3] Trace -- text=\"Things seem to be going well\""); System.out.println(); System.out.println("Press any key to exit"); System.in.read(); }
@Test public void testTelemetryContextsAreCalled() { ContextInitializer mockContextInitializer = Mockito.mock(ContextInitializer.class); configuration.getContextInitializers().add(mockContextInitializer); TelemetryInitializer mockTelemetryInitializer = Mockito.mock(TelemetryInitializer.class); configuration.getTelemetryInitializers().add(mockTelemetryInitializer); TelemetryContext mockContext = new TelemetryContext(); Telemetry mockTelemetry = Mockito.mock(Telemetry.class); Mockito.doReturn(mockContext).when(mockTelemetry).getContext(); client.track(mockTelemetry); Mockito.verify(mockContextInitializer, Mockito.times(1)).initialize(any(TelemetryContext.class)); Mockito.verify(mockTelemetryInitializer, Mockito.times(1)).initialize(mockTelemetry); }
@Bean @DependsOn("internalLogger") public TelemetryConfiguration telemetryConfiguration(TelemetryChannel telemetryChannel) { TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.getActiveWithoutInitializingConfig(); telemetryConfiguration.setTrackingIsDisabled(!applicationInsightsProperties.isEnabled()); telemetryConfiguration.setInstrumentationKey(applicationInsightsProperties.getInstrumentationKey()); if (contextInitializers != null) { telemetryConfiguration.getContextInitializers().addAll(contextInitializers); } if (telemetryInitializers != null) { telemetryConfiguration.getTelemetryInitializers().addAll(telemetryInitializers); } if (telemetryModules != null) { telemetryConfiguration.getTelemetryModules().addAll(telemetryModules); } if (telemetryProcessors != null) { telemetryConfiguration.getTelemetryProcessors().addAll(telemetryProcessors); } telemetryConfiguration.setChannel(telemetryChannel); initializeComponents(telemetryConfiguration); initializePerformanceCounterContainer(); return telemetryConfiguration; }
@Test public void testContextThrowsInInitialize() { ContextInitializer mockContextInitializer = new ContextInitializer() { @Override public void initialize(TelemetryContext context) { throw new RuntimeException(); } }; configuration.getContextInitializers().add(mockContextInitializer); TraceTelemetry telemetry = new TraceTelemetry("test"); client.track(telemetry); }
@Test public void testInitialize() { ContextInitializersXmlElement xmlElement = new ContextInitializersXmlElement(); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); ContextInitializersInitializer tested = new ContextInitializersInitializer(); tested.initialize(xmlElement, mockConfiguration); List<ContextInitializer> initializerList = mockConfiguration.getContextInitializers(); assertThat(initializerList, hasSize(3)); assertThat(initializerList, Matchers.<ContextInitializer>hasItem(instanceOf(DeviceInfoContextInitializer.class))); assertThat(initializerList, Matchers.<ContextInitializer>hasItem(instanceOf(SdkVersionContextInitializer.class))); assertThat(initializerList, Matchers.<ContextInitializer>hasItem(instanceOf(CloudInfoContextInitializer.class))); }
@Test public void shouldBeAbleToAddCustomModules() { EnvironmentTestUtils.addEnvironment(context, "azure.application-insights.instrumentation-key: 00000000-0000-0000-0000-000000000000"); context.register(PropertyPlaceholderAutoConfiguration.class, ApplicationInsightsTelemetryAutoConfiguration.class, CustomModuleConfiguration.class); context.refresh(); TelemetryConfiguration telemetryConfiguration = context.getBean(TelemetryConfiguration.class); ContextInitializer myContextInitializer = context.getBean("myContextInitializer", ContextInitializer.class); TelemetryInitializer myTelemetryInitializer = context.getBean("myTelemetryInitializer", TelemetryInitializer.class); TelemetryModule myTelemetryModule = context.getBean("myTelemetryModule", TelemetryModule.class); TelemetryProcessor myTelemetryProcessor = context.getBean("myTelemetryProcessor", TelemetryProcessor.class); assertThat(telemetryConfiguration.getContextInitializers()).contains(myContextInitializer); assertThat(telemetryConfiguration.getTelemetryInitializers()).contains(myTelemetryInitializer); assertThat(telemetryConfiguration.getTelemetryModules()).contains(myTelemetryModule); assertThat(telemetryConfiguration.getTelemetryProcessors()).contains(myTelemetryProcessor); }
@Test public void shouldHaveIdenticalConfiguration() throws Exception{ Field field = telemetryClient.getClass().getDeclaredField("configuration"); field.setAccessible(true); TelemetryConfiguration config1 = (TelemetryConfiguration)field.get(telemetryClient); //needed for clearing down the active instance and get the new config. tearDown(); //Instance created from XML config. TelemetryClient t2 = new TelemetryClient(); Field field2 = t2.getClass().getDeclaredField("configuration"); field2.setAccessible(true); TelemetryConfiguration config2 = (TelemetryConfiguration)field2.get(t2); Assert.assertNotEquals(config1, config2); //There is one additional TelemetryInitializer in case of SpringBoot(For Cloud_RoleName) Assert.assertEquals(config1.getTelemetryInitializers().size(), config2.getTelemetryInitializers().size() + 1); Assert.assertEquals(config1.getTelemetryModules().size(), config2.getTelemetryModules().size()); Assert.assertEquals(config1.getContextInitializers().size(), config2.getContextInitializers().size()); Assert.assertEquals(config1.getTelemetryProcessors().size(), config2.getTelemetryProcessors().size()); Assert.assertEquals(config1.getInstrumentationKey(), config2.getInstrumentationKey()); Assert.assertEquals(config1.isTrackingDisabled(), config2.isTrackingDisabled()); }
private TelemetryContext createInitializedContext() { TelemetryContext ctx = new TelemetryContext(); ctx.setInstrumentationKey(configuration.getInstrumentationKey()); for (ContextInitializer init : configuration.getContextInitializers()) { try { init.initialize(ctx); } catch (ThreadDeath td) { throw td; } catch (Throwable t) { try { InternalLogger.INSTANCE.error("Exception in context initializer: '%s'", t.toString()); } catch (ThreadDeath td) { throw td; } catch (Throwable t2) { // chomp } } } // Set the nodeName for billing purpose if it does not already exist InternalContext internal = ctx.getInternal(); if (CommonUtils.isNullOrEmpty(internal.getNodeName())) { String host = CommonUtils.getHostName(); if (!CommonUtils.isNullOrEmpty(host)) { internal.setNodeName(host); } } return ctx; } }
@Test public void testWithEmptySections() { AppInsightsConfigurationBuilder mockParser = Mockito.mock(AppInsightsConfigurationBuilder.class); ApplicationInsightsXmlConfiguration appConf = new ApplicationInsightsXmlConfiguration(); appConf.setInstrumentationKey(MOCK_IKEY); appConf.setTelemetryInitializers(null); appConf.setContextInitializers(null); appConf.setModules(null); appConf.setSdkLogger(null); Mockito.doReturn(appConf).when(mockParser).build(any(InputStream.class)); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertEquals(false, mockConfiguration.isTrackingDisabled()); assertEquals(MOCK_IKEY, mockConfiguration.getInstrumentationKey()); assertThat(mockConfiguration.getContextInitializers(), hasSize(3)); assertThat(mockConfiguration.getChannel(), instanceOf(InProcessTelemetryChannel.class)); }
@Test public void testEmptyConfiguration() { TelemetryConfiguration emptyConfig = TelemetryConfiguration.getActiveWithoutInitializingConfig(); Assert.assertNull(emptyConfig.getInstrumentationKey()); Assert.assertSame(NopTelemetryChannel.instance(), emptyConfig.getChannel()); Assert.assertEquals(0, emptyConfig.getTelemetryModules().size()); Assert.assertFalse(emptyConfig.isTrackingDisabled()); Assert.assertEquals(0, emptyConfig.getContextInitializers().size()); Assert.assertEquals(0, emptyConfig.getTelemetryProcessors().size()); }
@Test public void testInitializeAllDefaults() throws Exception { AppInsightsConfigurationBuilder mockParser = createMockParser(true, true, false); ApplicationInsightsXmlConfiguration appConf = mockParser.build(null); appConf.setInstrumentationKey(MOCK_IKEY); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertEquals(false, mockConfiguration.isTrackingDisabled()); assertEquals(MOCK_IKEY, mockConfiguration.getInstrumentationKey()); assertThat(mockConfiguration.getContextInitializers(), Matchers.<ContextInitializer>hasSize(3)); assertThat(mockConfiguration.getTelemetryInitializers(), Matchers.<TelemetryInitializer>empty()); assertThat(mockConfiguration.getTelemetryProcessors(), empty()); assertThat(mockConfiguration.getChannel(), instanceOf(StdOutChannel.class)); }
@Test public void testContextInitializers() { AppInsightsConfigurationBuilder mockParser = createMockParser(true, true, false); ApplicationInsightsXmlConfiguration appConf = mockParser.build(null); appConf.setInstrumentationKey(MOCK_IKEY); ContextInitializersXmlElement contextInitializersXmlElement = new ContextInitializersXmlElement(); ArrayList<AddTypeXmlElement> contexts = new ArrayList<AddTypeXmlElement>(); AddTypeXmlElement addXmlElement = new AddTypeXmlElement(); addXmlElement.setType("com.microsoft.applicationinsights.extensibility.initializer.DeviceInfoContextInitializer"); contexts.add(addXmlElement); contextInitializersXmlElement.setAdds(contexts); appConf.setContextInitializers(contextInitializersXmlElement); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertEquals(false, mockConfiguration.isTrackingDisabled()); assertEquals(MOCK_IKEY, mockConfiguration.getInstrumentationKey()); assertThat(mockConfiguration.getContextInitializers(), hasSize(4)); assertThat(mockConfiguration.getTelemetryInitializers(), empty()); assertThat(mockConfiguration.getTelemetryProcessors(), empty()); assertThat(mockConfiguration.getChannel(), instanceOf(StdOutChannel.class)); }
@Test public void testTelemetryContextInitializers() { AppInsightsConfigurationBuilder mockParser = createMockParser(true, true, false); ApplicationInsightsXmlConfiguration appConf = mockParser.build( null ); appConf.setInstrumentationKey(MOCK_IKEY); TelemetryInitializersXmlElement telemetryInitializersXmlElement = new TelemetryInitializersXmlElement(); ArrayList<AddTypeXmlElement> contexts = new ArrayList<AddTypeXmlElement>(); AddTypeXmlElement addXmlElement = new AddTypeXmlElement(); addXmlElement.setType("com.microsoft.applicationinsights.extensibility.initializer.TimestampPropertyInitializer"); contexts.add(addXmlElement); telemetryInitializersXmlElement.setAdds(contexts); appConf.setTelemetryInitializers(telemetryInitializersXmlElement); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertEquals(false, mockConfiguration.isTrackingDisabled()); assertEquals(MOCK_IKEY, mockConfiguration.getInstrumentationKey()); assertThat(mockConfiguration.getContextInitializers(), hasSize(3)); assertThat(mockConfiguration.getTelemetryInitializers(), hasSize(1)); assertThat(mockConfiguration.getTelemetryProcessors(), empty()); assertThat(mockConfiguration.getChannel(), instanceOf(StdOutChannel.class)); }
assertThat(mockConfiguration.getContextInitializers(), hasSize(3)); assertThat(mockConfiguration.getTelemetryInitializers(), empty()); assertThat(mockConfiguration.getChannel(), instanceOf(StdOutChannel.class));