/** * This method provides the new instance of TelmetryConfiguration without loading the configuration * from configuration file. This will just give a plain bare bone instance. Typically used when * performing configuration programatically by creating beans, using @Beans tags. This is a common * scenario in SpringBoot. * @return {@link com.microsoft.applicationinsights.TelemetryConfiguration} */ public static TelemetryConfiguration getActiveWithoutInitializingConfig() { if (active == null) { synchronized (s_lock) { if (active == null) { active = new TelemetryConfiguration(); } } } return active; }
/** * Creates a new instance loaded from the ApplicationInsights.xml file. * If the configuration file does not exist, the new configuration instance is initialized with minimum defaults * needed to send telemetry to Application Insights. * @return Telemetry Configuration instance. */ public static TelemetryConfiguration createDefault() { TelemetryConfiguration telemetryConfiguration = new TelemetryConfiguration(); TelemetryConfigurationFactory.INSTANCE.initialize(telemetryConfiguration); return telemetryConfiguration; }
/** * Gets the active {@link com.microsoft.applicationinsights.TelemetryConfiguration} instance loaded from the * ApplicationInsights.xml file. If the configuration file does not exist, the active configuration instance is * initialized with minimum defaults needed to send telemetry to Application Insights. * @return The 'Active' instance */ public static TelemetryConfiguration getActive() { if (active == null) { synchronized (s_lock) { if (active == null) { active = new TelemetryConfiguration(); TelemetryConfigurationFactory.INSTANCE.initialize(active); } } } return active; }
public Tester(int numberOfContextProperties) { TelemetryConfiguration configuration = new TelemetryConfiguration(); configuration.setInstrumentationKey(TEST_IKEY); configuration.setChannel(new InProcessTelemetryChannel()); fakeTransmissionOutput = TestThreadLocalData.getTransmissionOutput(); testResultsVerifier = fakeTransmissionOutput.getTestResultsVerifier(); telemetryClient = new TelemetryClient(configuration); TelemetryContext context = telemetryClient.getContext(); for (int i = 0; i < numberOfContextProperties; ++i) { String asStr = String.valueOf(i); context.getProperties().put(MOCK_CONTEXT_PROPERTY_BASE_NAME + asStr, MOCK_CONTEXT_PROPERTY_BASE_VALUE + asStr); } }
@Test public void canExtendHeartBeatPayload() throws Exception { HeartBeatModule module = new HeartBeatModule(new HashMap<String, String>()); module.initialize(new TelemetryConfiguration()); Field field = module.getClass().getDeclaredField("heartBeatProviderInterface"); field.setAccessible(true); HeartBeatProviderInterface hbi = (HeartBeatProviderInterface)field.get(module); Assert.assertTrue(hbi.addHeartBeatProperty("test01", "This is value", true)); }
private TelemetryConfiguration createConfiguration(final List<Telemetry> itemsToSend) { TelemetryConfiguration configuration = new TelemetryConfiguration(); configuration.setInstrumentationKey("00000000-0000-0000-0000-000000000000"); class StubBufferTelemetryChannel extends StubTelemetryChannel { @Override public void send(Telemetry item) { itemsToSend.add(item); //item.reset(); } } configuration.setChannel(new StubBufferTelemetryChannel()); return configuration; }
@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))); }
@Before public void testInitialize() { configuration = new TelemetryConfiguration(); configuration.setInstrumentationKey("00000000-0000-0000-0000-000000000000"); channel = mock(TelemetryChannel.class); configuration.setChannel(channel); eventsSent = new LinkedList<Telemetry>(); // Setting the channel to add the sent telemetries to a collection, so they could be verified in tests. Mockito.doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { Telemetry telemetry = ((Telemetry) invocation.getArguments()[0]); eventsSent.add(telemetry); return null; } }).when(channel).send(Matchers.any(Telemetry.class)); client = new TelemetryClient(configuration); }
@Test public void canDisableHeartBeatPriorToInitialize() throws Exception { Map<String, String> dummyPropertyMap = new HashMap<>(); dummyPropertyMap.put("isHeartBeatEnabled", "false"); HeartBeatModule module = new HeartBeatModule(dummyPropertyMap); TelemetryConfiguration configuration = new TelemetryConfiguration(); configuration.getTelemetryModules().add(module); module.initialize(configuration); Assert.assertFalse(module.isHeartBeatEnabled()); Field field = module.getClass().getDeclaredField("heartBeatProviderInterface"); field.setAccessible(true); HeartBeatProviderInterface hbi = (HeartBeatProviderInterface) field.get(module); Assert.assertFalse(hbi.isHeartBeatEnabled()); }
@Test public void canDisableHeartBeatPropertyProviderPriorToInitialize() throws Exception { HeartBeatModule module = new HeartBeatModule(new HashMap<String, String>()); module.setExcludedHeartBeatPropertiesProvider(Arrays.asList("Base", "webapps")); Field field = module.getClass().getDeclaredField("heartBeatProviderInterface"); field.setAccessible(true); HeartBeatProviderInterface hbi = (HeartBeatProviderInterface) field.get(module); Assert.assertTrue(hbi.getExcludedHeartBeatPropertyProviders().contains("Base")); Assert.assertTrue(hbi.getExcludedHeartBeatPropertyProviders().contains("webapps")); module.initialize(new TelemetryConfiguration()); Thread.sleep(100); Assert.assertTrue(hbi.getExcludedHeartBeatPropertyProviders().contains("Base")); Assert.assertTrue(hbi.getExcludedHeartBeatPropertyProviders().contains("webapps")); }
private void testUseConfigurationInstrumentatonKey(String contextInstrumentationKey) { TelemetryConfiguration configuration = new TelemetryConfiguration(); TelemetryChannel mockChannel = Mockito.mock(TelemetryChannel.class); configuration.setChannel(mockChannel); configuration.setInstrumentationKey("00000000-0000-0000-0000-000000000000"); TelemetryContext mockContext = new TelemetryContext(); mockContext.setInstrumentationKey(contextInstrumentationKey); Telemetry mockTelemetry = Mockito.mock(Telemetry.class); Mockito.doReturn(mockContext).when(mockTelemetry).getContext(); TelemetryClient telemetryClient = new TelemetryClient(configuration); telemetryClient.track(mockTelemetry); Mockito.verify(mockChannel, Mockito.times(1)).send(mockTelemetry); assertEquals("00000000-0000-0000-0000-000000000000", mockContext.getInstrumentationKey()); }
private List<TelemetryModule> doPerfModuleTest(String enabled, int expectedModuleCount) { AppInsightsConfigurationBuilder mockParser = createMockParser(true, true, true); ApplicationInsightsXmlConfiguration appConf = mockParser.build(null); appConf.setInstrumentationKey(MOCK_IKEY); appConf.getChannel().setDeveloperMode(true); System.setProperty(TelemetryConfigurationFactory.PERFORMANCE_MODULES_SCANNING_ENABLED_PROPERTY, enabled); TelemetryConfigurationFactory.INSTANCE.setPerformanceCountersSection("com.microsoft.applicationinsights.internal.config"); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); //heartbeat is added as default List<TelemetryModule> mods = mockConfiguration.getTelemetryModules(); for (TelemetryModule tm : mods) { System.out.println(" >> loaded telemetry module: "+tm.getClass().getCanonicalName()); } assertEquals(expectedModuleCount, mods.size()); return mods; }
private void ikeyTest(String configurationIkey, String expectedIkey) { // Make sure that there is no exception when fetching the i-key by having both // the i-key and channel in the configuration, otherwise the channel won't be instantiated AppInsightsConfigurationBuilder mockParser = createMockParser(true, false, false); ApplicationInsightsXmlConfiguration appConf = new ApplicationInsightsXmlConfiguration(); appConf.setInstrumentationKey(configurationIkey); Mockito.doReturn(appConf).when(mockParser).build(any(InputStream.class)); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertEquals(mockConfiguration.getInstrumentationKey(), expectedIkey); assertTrue(mockConfiguration.getChannel() instanceof InProcessTelemetryChannel); }
@Test public void testInitializeWithFailingParse() throws Exception { AppInsightsConfigurationBuilder mockParser = createMockParserThatFailsToParse(); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertEquals(false, mockConfiguration.isTrackingDisabled()); assertThat(mockConfiguration.getChannel(), instanceOf(InProcessTelemetryChannel.class)); }
@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 testInitializeWithEmptyGetInstrumentationKey() throws Exception { AppInsightsConfigurationBuilder mockParser = createMockParser(false, true, false); ApplicationInsightsXmlConfiguration appConf = mockParser.build(null); appConf.setInstrumentationKey(""); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertEquals(false, mockConfiguration.isTrackingDisabled()); assertThat(mockConfiguration.getChannel(), instanceOf(InProcessTelemetryChannel.class)); }
@Test public void testInitializeWithNullGetInstrumentationKey() throws Exception { AppInsightsConfigurationBuilder mockParser = createMockParser(false, true, false); ApplicationInsightsXmlConfiguration appConf = mockParser.build(null); appConf.setInstrumentationKey(MOCK_IKEY); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertEquals(false, mockConfiguration.isTrackingDisabled()); assertThat(mockConfiguration.getChannel(), instanceOf(InProcessTelemetryChannel.class)); }
@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 testDefaultChannelWithData() { AppInsightsConfigurationBuilder mockParser = createMockParserWithDefaultChannel(true); ApplicationInsightsXmlConfiguration appConf = mockParser.build(null); appConf.setInstrumentationKey(MOCK_IKEY); appConf.getChannel().setDeveloperMode(true); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertTrue(mockConfiguration.getChannel().isDeveloperMode()); }
@Test public void testDefaultChannelWithBadData() { AppInsightsConfigurationBuilder mockParser = createMockParserWithDefaultChannel(true); ApplicationInsightsXmlConfiguration appConf = mockParser.build(null); appConf.setInstrumentationKey(MOCK_IKEY); ChannelXmlElement channelXmlElement = appConf.getChannel(); channelXmlElement.setEndpointAddress(NON_VALID_URL); channelXmlElement.setDeveloperMode(true); TelemetryConfiguration mockConfiguration = new TelemetryConfiguration(); initializeWithFactory(mockParser, mockConfiguration); assertFalse(mockConfiguration.getChannel().isDeveloperMode()); }