public void TrackAddsTimestampWhenMissing() { ITelemetry sentTelemetry = null; var channel = new StubTelemetryChannel { OnSend = telemetry => sentTelemetry = telemetry }; var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "Test key" }; var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); Assert.NotEqual(DateTimeOffset.MinValue, sentTelemetry.Timestamp); }
public void TrackDoesNotOverwriteTelemetryPropertiesWithClientPropertiesBecauseExplicitlySetValuesTakePrecedence() { var configuration = new TelemetryConfiguration { TelemetryChannel = new StubTelemetryChannel() }; var client = new TelemetryClient(configuration); client.Context.Properties["TestProperty"] = "ClientValue"; client.Context.InstrumentationKey = "Test Key"; var telemetry = new StubTelemetry { Properties = { { "TestProperty", "TelemetryValue" } } }; client.Track(telemetry); Assert.Equal("TelemetryValue", telemetry.Properties["TestProperty"]); }
public void TrackDoesNotSendDataWhenTelemetryIsDisabled() { var sentTelemetry = new List <ITelemetry>(); var channel = new StubTelemetryChannel { OnSend = t => sentTelemetry.Add(t) }; var configuration = new TelemetryConfiguration { DisableTelemetry = true, TelemetryChannel = channel }; var client = new TelemetryClient(configuration) { }; client.Track(new StubTelemetry()); Assert.Equal(0, sentTelemetry.Count); }
public void TrackDoesNotAddDeveloperModeCustomPropertyIfDeveloperModeIsSetToFalse() { ITelemetry sentTelemetry = null; var channel = new StubTelemetryChannel { OnSend = telemetry => sentTelemetry = telemetry, DeveloperMode = false }; var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "Test key" }; var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); Assert.False(((ISupportProperties)sentTelemetry).Properties.ContainsKey("DeveloperMode")); }
public void TrackAddsDeveloperModeCustomPropertyWhenDeveloperModeIsTrue() { ITelemetry sentTelemetry = null; var channel = new StubTelemetryChannel { OnSend = telemetry => sentTelemetry = telemetry, DeveloperMode = true }; var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "Test key" }; var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); Assert.Equal("true", ((ISupportProperties)sentTelemetry).Properties["DeveloperMode"]); }
public void TrackDoesNotWriteTelemetryToDebugOutputIfNotInDeveloperMode() { ClearActiveTelemetryConfiguration(); string actualMessage = null; var debugOutput = new StubDebugOutput { OnWriteLine = message => actualMessage = message }; PlatformSingleton.Current = new StubPlatform { OnGetDebugOutput = () => debugOutput }; var channel = new StubTelemetryChannel(); var configuration = new TelemetryConfiguration("Test key", channel); var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); PlatformSingleton.Current = null; Assert.Null(actualMessage); }
public void TrackAddsSdkVerionByDefault() { // split version by 4 numbers manually so we do not do the same as in the product code and actually test it string versonStr = Assembly.GetAssembly(typeof(TelemetryConfiguration)).GetCustomAttributes(false) .OfType <AssemblyFileVersionAttribute>() .First() .Version; string[] versionParts = new Version(versonStr).ToString().Split('.'); var configuration = new TelemetryConfiguration(Guid.NewGuid().ToString(), new StubTelemetryChannel()); var client = new TelemetryClient(configuration); client.Context.InstrumentationKey = "Test"; EventTelemetry eventTelemetry = new EventTelemetry("test"); client.Track(eventTelemetry); Assert.Equal("dotnet:" + string.Join(".", versionParts[0], versionParts[1], versionParts[2]) + "-" + versionParts[3], eventTelemetry.Context.Internal.SdkVersion); }
public void TrackLogsDiagnosticsMessageOnExceptionsDuringTelemetryIntializersInitialize() { using (var listener = new TestEventListener()) { listener.EnableEvents(CoreEventSource.Log, EventLevel.Error); var configuration = new TelemetryConfiguration("Test key", new StubTelemetryChannel()); var telemetryInitializer = new StubTelemetryInitializer(); var exceptionMessage = "Test exception message"; telemetryInitializer.OnInitialize = item => { throw new Exception(exceptionMessage); }; configuration.TelemetryInitializers.Add(telemetryInitializer); var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); var exceptionExplanation = "Exception while initializing " + typeof(StubTelemetryInitializer).FullName; var diagnosticsMessage = (string)listener.Messages.First().Payload[0]; Assert.Contains(exceptionExplanation, diagnosticsMessage, StringComparison.OrdinalIgnoreCase); Assert.Contains(exceptionMessage, diagnosticsMessage, StringComparison.OrdinalIgnoreCase); } }
public void TrackCopiesPropertiesFromClientToTelemetryBeforeInvokingInitializersBecauseExplicitlySetValuesTakePrecedence() { const string PropertyName = "TestProperty"; string valueInInitializer = null; var initializer = new StubTelemetryInitializer(); initializer.OnInitialize = telemetry => valueInInitializer = ((ISupportProperties)telemetry).Properties[PropertyName]; var configuration = new TelemetryConfiguration { TelemetryChannel = new StubTelemetryChannel(), TelemetryInitializers = { initializer } }; var client = new TelemetryClient(configuration); client.Context.Properties[PropertyName] = "ClientValue"; client.Context.InstrumentationKey = "Test Key"; client.Track(new StubTelemetry()); Assert.Equal(client.Context.Properties[PropertyName], valueInInitializer); }
public void TrackWritesTelemetryToDebugOutputIfIKeyNotEmpty() { string actualMessage = null; var debugOutput = new StubDebugOutput { OnWriteLine = message => actualMessage = message, OnIsAttached = () => true, }; PlatformSingleton.Current = new StubPlatform { OnGetDebugOutput = () => debugOutput }; var channel = new StubTelemetryChannel { DeveloperMode = true }; var configuration = new TelemetryConfiguration("123", channel); var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); Assert.True(actualMessage.StartsWith("Application Insights Telemetry: ")); PlatformSingleton.Current = null; }
public void TrackLogsDiagnosticsMessageOnExceptionsDuringTelemetryIntializersInitialize() { using (var listener = new TestEventListener()) { listener.EnableEvents(CoreEventSource.Log, EventLevel.Error); var configuration = new TelemetryConfiguration { InstrumentationKey = "Test key", TelemetryChannel = new StubTelemetryChannel() }; var telemetryInitializer = new StubTelemetryInitializer(); var exceptionMessage = "Test exception message"; telemetryInitializer.OnInitialize = item => { throw new Exception(exceptionMessage); }; configuration.TelemetryInitializers.Add(telemetryInitializer); var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); var exceptionExplanation = "Exception while initializing " + typeof(StubTelemetryInitializer).FullName; var diagnosticsMessage = (string)listener.Messages.First().Payload[0]; Assert.Contains(exceptionExplanation, diagnosticsMessage, StringComparison.OrdinalIgnoreCase); Assert.Contains(exceptionMessage, diagnosticsMessage, StringComparison.OrdinalIgnoreCase); } }
public void TrackCopiesPropertiesFromClientToTelemetry() { var configuration = new TelemetryConfiguration { TelemetryChannel = new StubTelemetryChannel() }; var client = new TelemetryClient(configuration); client.Context.Properties["TestProperty"] = "TestValue"; client.Context.InstrumentationKey = "Test Key"; var telemetry = new StubTelemetry(); client.Track(telemetry); Assert.Equal(client.Context.Properties.ToArray(), telemetry.Properties.ToArray()); }
public void TrackCopiesPropertiesFromClientToTelemetryBeforeInvokingInitializersBecauseExplicitlySetValuesTakePrecedence() { const string PropertyName = "TestProperty"; string valueInInitializer = null; var initializer = new StubTelemetryInitializer(); initializer.OnInitialize = telemetry => valueInInitializer = ((ISupportProperties)telemetry).Properties[PropertyName]; var configuration = new TelemetryConfiguration { TelemetryChannel = new StubTelemetryChannel(), TelemetryInitializers = { initializer } }; var client = new TelemetryClient(configuration); client.Context.Properties[PropertyName] = "ClientValue"; client.Context.InstrumentationKey = "Test Key"; client.Track(new StubTelemetry()); Assert.Equal(client.Context.Properties[PropertyName], valueInInitializer); }
public void TrackDoesNotAddDeveloperModeCustomPropertyIfDeveloperModeIsSetToFalse() { ITelemetry sentTelemetry = null; var channel = new StubTelemetryChannel { OnSend = telemetry => sentTelemetry = telemetry, DeveloperMode = false }; var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "Test key" }; var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); Assert.False(((ISupportProperties)sentTelemetry).Properties.ContainsKey("DeveloperMode")); }
public void TrackDoesNotOverrideSdkVersion() { var configuration = new TelemetryConfiguration { TelemetryChannel = new StubTelemetryChannel(), InstrumentationKey = Guid.NewGuid().ToString() }; var client = new TelemetryClient(configuration); client.Context.InstrumentationKey = "Test"; EventTelemetry eventTelemetry = new EventTelemetry("test"); eventTelemetry.Context.Internal.SdkVersion = "test"; client.Track(eventTelemetry); Assert.Equal("test", eventTelemetry.Context.Internal.SdkVersion); }
public void TrackDoesNotOverwriteTelemetryPropertiesWithClientPropertiesBecauseExplicitlySetValuesTakePrecedence() { var configuration = new TelemetryConfiguration { TelemetryChannel = new StubTelemetryChannel() }; var client = new TelemetryClient(configuration); client.Context.Properties["TestProperty"] = "ClientValue"; client.Context.InstrumentationKey = "Test Key"; var telemetry = new StubTelemetry { Properties = { { "TestProperty", "TelemetryValue" } } }; client.Track(telemetry); Assert.Equal("TelemetryValue", telemetry.Properties["TestProperty"]); }
public void TrackDoesNotSendDataWhenTelemetryIsDisabled() { var sentTelemetry = new List<ITelemetry>(); var channel = new StubTelemetryChannel { OnSend = t => sentTelemetry.Add(t) }; var configuration = new TelemetryConfiguration { DisableTelemetry = true , TelemetryChannel = channel }; var client = new TelemetryClient(configuration) {}; client.Track(new StubTelemetry()); Assert.Equal(0, sentTelemetry.Count); }
public void TrackAddsDeveloperModeCustomPropertyWhenDeveloperModeIsTrue() { ITelemetry sentTelemetry = null; var channel = new StubTelemetryChannel { OnSend = telemetry => sentTelemetry = telemetry, DeveloperMode = true }; var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "Test key" }; var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); Assert.Equal("true", ((ISupportProperties)sentTelemetry).Properties["DeveloperMode"]); }
public void TrackWritesTelemetryToDebugOutputIfIKeyNotEmpty() { string actualMessage = null; var debugOutput = new StubDebugOutput { OnWriteLine = message => actualMessage = message, OnIsAttached = () => true, }; PlatformSingleton.Current = new StubPlatform { OnGetDebugOutput = () => debugOutput }; var channel = new StubTelemetryChannel { DeveloperMode = true }; var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "123" }; var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); Assert.True(actualMessage.StartsWith("Application Insights Telemetry: ")); PlatformSingleton.Current = null; }
public void TrackAddsTimestampWhenMissing() { ITelemetry sentTelemetry = null; var channel = new StubTelemetryChannel { OnSend = telemetry => sentTelemetry = telemetry }; var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "Test key" }; var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); Assert.NotEqual(DateTimeOffset.MinValue, sentTelemetry.Timestamp); }
public void TrackDoesNotWriteTelemetryToDebugOutputIfNotInDeveloperMode() { string actualMessage = null; var debugOutput = new StubDebugOutput { OnWriteLine = message => actualMessage = message }; PlatformSingleton.Current = new StubPlatform { OnGetDebugOutput = () => debugOutput }; var channel = new StubTelemetryChannel(); var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "Test key" }; var client = new TelemetryClient(configuration); client.Track(new StubTelemetry()); PlatformSingleton.Current = null; Assert.Null(actualMessage); }
public void TrackDoesNotTryAddingDeveloperModeCustomPropertyWhenTelemetryDoesNotSupportCustomProperties() { var channel = new StubTelemetryChannel { DeveloperMode = true }; var configuration = new TelemetryConfiguration { TelemetryChannel = channel, InstrumentationKey = "Test Key" }; var client = new TelemetryClient(configuration); Assert.DoesNotThrow(() => client.Track(new SessionStateTelemetry())); }
public void TrackDoesNotThrowExceptionsDuringTelemetryIntializersInitialize() { var configuration = new TelemetryConfiguration { InstrumentationKey = "Test key", TelemetryChannel = new StubTelemetryChannel() }; var telemetryInitializer = new StubTelemetryInitializer(); telemetryInitializer.OnInitialize = item => { throw new Exception(); }; configuration.TelemetryInitializers.Add(telemetryInitializer); var client = new TelemetryClient(configuration); Assert.DoesNotThrow(() => client.Track(new StubTelemetry())); }
public void TrackRespectsInstrumentaitonKeySetByTelemetryInitializer() { var sentTelemetry = new List<ITelemetry>(); var channel = new StubTelemetryChannel { OnSend = t => sentTelemetry.Add(t) }; var configuration = new TelemetryConfiguration { // no instrumentation key set here TelemetryChannel = channel }; var initializedTelemetry = new List<ITelemetry>(); var telemetryInitializer = new StubTelemetryInitializer(); telemetryInitializer.OnInitialize = item => { item.Context.InstrumentationKey = "Foo"; initializedTelemetry.Add(item); }; configuration.TelemetryInitializers.Add(telemetryInitializer); var client = new TelemetryClient(configuration); var telemetry = new StubTelemetry(); client.Track(telemetry); Assert.Equal(1, sentTelemetry.Count); Assert.Equal(1, initializedTelemetry.Count); }
public void TrackAddsSdkVerionByDefault() { var configuration = new TelemetryConfiguration { TelemetryChannel = new StubTelemetryChannel(), InstrumentationKey = Guid.NewGuid().ToString() }; var client = new TelemetryClient(configuration); client.Context.InstrumentationKey = "Test"; EventTelemetry eventTelemetry = new EventTelemetry("test"); client.Track(eventTelemetry); Assert.StartsWith("dotnet: ", eventTelemetry.Context.Internal.SdkVersion); }