public void ReactsToConfigurationChangesWithDisabledEventSources() { using (var module = new EventSourceTelemetryModule()) { var listeningRequest = new EventSourceListeningRequest(); listeningRequest.Name = TestEventSource.ProviderName; module.Sources.Add(listeningRequest); var disableListeningRequest = new DisableEventSourceRequest() { Name = TestEventSource.ProviderName }; // Disabled module.DisabledSources.Add(disableListeningRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.InfoEvent("Hey!"); int sentCount = this.adapterHelper.Channel.SentItems.Count(); Assert.AreEqual(0, sentCount); // From Disabled to Enabled module.DisabledSources.Remove(disableListeningRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.InfoEvent("Hey!"); sentCount = this.adapterHelper.Channel.SentItems.Count(); Assert.AreEqual(1, sentCount); // From Enabled to Disabled module.DisabledSources.Add(disableListeningRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.InfoEvent("Hey!"); sentCount = this.adapterHelper.Channel.SentItems.Count(); Assert.AreEqual(0, sentCount); } }
public void ReportsAllProperties() { using (var module = new EventSourceTelemetryModule()) { var listeningRequest = new EventSourceListeningRequest(); listeningRequest.Name = TestEventSource.ProviderName; module.Sources.Add(listeningRequest); module.Initialize(GetTestTelemetryConfiguration()); Guid providerGuid = new Guid("497c5589-4f7f-56de-ea19-ea0604d23948"); Guid eventId = new Guid("30ba9220-89a4-41e4-987c-9e27ade44b74"); Guid activityId = new Guid("0724a028-27d7-40a9-a299-acf79ff0db94"); EventSource.SetCurrentThreadActivityId(activityId); TestEventSource.Default.ComplexEvent(eventId); TraceTelemetry expected = new TraceTelemetry("Blah blah", SeverityLevel.Verbose); expected.Properties.Add("uniqueId", eventId.ToString()); expected.Properties.Add("ProviderName", TestEventSource.ProviderName); expected.Properties.Add("ProviderGuid", providerGuid.ToString()); expected.Properties.Add("EventId", TestEventSource.ComplexEventId.ToString(InvariantCulture)); expected.Properties.Add("EventName", nameof(TestEventSource.ComplexEvent)); expected.Properties.Add("ActivityId", activityId.ToString()); expected.Properties.Add("Keywords", "0x8000F00000000001"); expected.Properties.Add("Channel", "Debug"); expected.Properties.Add("Opcode", "Extension"); expected.Properties.Add("Tags", "0x00000011"); expected.Properties.Add("Task", "0x00000020"); CollectionAssert.AreEqual(new TraceTelemetry[] { expected }, this.adapterHelper.Channel.SentItems, new TraceTelemetryComparer(), "Reported event has properties different from expected"); } }
public static void EnableLogging() { var configuration = TelemetryConfiguration.Active; // subscribe to event sources var eventLoggingModule = new EventSourceTelemetryModule(); eventLoggingModule.Sources.Add(new EventSourceListeningRequest { Name = ApplicationConfigurationEventSourceName, Level = System.Diagnostics.Tracing.EventLevel.Informational }); eventLoggingModule.Initialize(configuration); // enable dependency tracking var module = new DependencyTrackingTelemetryModule(); // prevent Correlation Id to be sent to certain endpoints. You may add other domains as needed. module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.windows.net"); //... // enable known dependency tracking, note that in future versions, we will extend this list. // please check default settings in https://github.com/Microsoft/ApplicationInsights-dotnet-server/blob/develop/Src/DependencyCollector/NuGet/ApplicationInsights.config.install.xdt#L20 module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.ServiceBus"); module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.EventHubs"); //.... // initialize the module module.Initialize(configuration); }
public void WarnsIfNoSourcesConfigured() { using (var eventListener = new EventSourceModuleDiagnosticListener()) using (var module = new EventSourceTelemetryModule()) { module.Initialize(GetTestTelemetryConfiguration()); Assert.AreEqual(1, eventListener.EventsReceived.Count); Assert.AreEqual(nameof(EventSourceListenerEventSource.NoSourcesConfigured), eventListener.EventsReceived[0]); } }
public void ThrowsWhenNullConfigurationPassedToInitialize() { using (var module = new EventSourceTelemetryModule()) { ExceptionAssert.Throws <ArgumentNullException>(() => { module.Initialize(null); }); } }
public void DoesNotDisableAppInsightsDataIfExplicitlyEnabled() { using (var module = new EventSourceTelemetryModule()) { module.Sources.Add(new EventSourceListeningRequest { Name = "Microsoft-ApplicationInsights-Data" }); module.Initialize(GetTestTelemetryConfiguration()); Assert.AreEqual(0, module.DisabledSources.Count); } }
public void DisablesAppInsightsDataByDefault() { using (var module = new EventSourceTelemetryModule()) { module.Initialize(GetTestTelemetryConfiguration()); Assert.AreEqual(1, module.DisabledSources.Count); Assert.AreEqual(new DisableEventSourceRequest { Name = "Microsoft-ApplicationInsights-Data" }, module.DisabledSources[0]); } }
private EventSourceTelemetryModule CreateEventSourceTelemetryModule() { var module = new EventSourceTelemetryModule(); module.Sources.Add(new EventSourceListeningRequest() { Name = "Microsoft-ServiceFabric-Services", Level = EventLevel.Verbose }); module.Sources.Add(new EventSourceListeningRequest() { Name = "MyCompany-GettingStartedApplication-StatefulBackendService", Level = EventLevel.Verbose }); return(module); }
public void DoNotReportTplEvents() { using (var module = new EventSourceTelemetryModule()) { module.Initialize(GetTestTelemetryConfiguration()); for (int i = 0; i < 10; i += 2) { Parallel.For(0, 2, (idx) => { PerformActivityAsync(i + idx).GetAwaiter().GetResult(); }); } Assert.AreEqual(0, this.adapterHelper.Channel.SentItems.Length); } }
public void ReportsSingleEvent() { using (var module = new EventSourceTelemetryModule()) { var listeningRequest = new EventSourceListeningRequest(); listeningRequest.Name = TestEventSource.ProviderName; module.Sources.Add(listeningRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.InfoEvent("Hey!"); TraceTelemetry telemetry = (TraceTelemetry)this.adapterHelper.Channel.SentItems.Single(); Assert.AreEqual("Hey!", telemetry.Message); Assert.AreEqual("Hey!", telemetry.Properties["information"]); Assert.AreEqual(SeverityLevel.Information, telemetry.SeverityLevel); string expectedVersion = SdkVersionHelper.GetExpectedSdkVersion(prefix: "evl:", loggerType: typeof(EventSourceTelemetryModule)); Assert.AreEqual(expectedVersion, telemetry.Context.GetInternalContext().SdkVersion); } }
public void HandlesDuplicatePropertyNames() { using (var module = new EventSourceTelemetryModule()) { var listeningRequest = new EventSourceListeningRequest(); listeningRequest.Name = TestEventSource.ProviderName; module.Sources.Add(listeningRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.Tricky(7, "TrickyEvent", "Actual message"); Assert.AreEqual(1, this.adapterHelper.Channel.SentItems.Length); TraceTelemetry telemetry = (TraceTelemetry)this.adapterHelper.Channel.SentItems[0]; Assert.AreEqual("Manifest message", telemetry.Message); Assert.AreEqual(SeverityLevel.Information, telemetry.SeverityLevel); Assert.AreEqual("Actual message", telemetry.Properties["Message"]); Assert.AreEqual("7", telemetry.Properties["EventId"]); Assert.AreEqual("TrickyEvent", telemetry.Properties["EventName"]); Assert.IsTrue(telemetry.Properties[telemetry.Properties.Keys.First(key => key.StartsWith("EventId", StringComparison.Ordinal) && !string.Equals(key, "EventId", StringComparison.Ordinal))].Equals("7", StringComparison.Ordinal)); Assert.IsTrue(telemetry.Properties[telemetry.Properties.Keys.First(key => key.StartsWith("EventName", StringComparison.Ordinal) && !string.Equals(key, "EventName", StringComparison.Ordinal))].Equals("Tricky", StringComparison.Ordinal)); } }
public void CustomPayloadProperties() { OnEventWrittenHandler onWrittenHandler = (EventWrittenEventArgs args, TelemetryClient client) => { var traceTelemetry = new TraceTelemetry("CustomPayloadProperties", SeverityLevel.Verbose); traceTelemetry.Properties.Add("CustomPayloadProperties", "true"); client.Track(traceTelemetry); }; using (var module = new EventSourceTelemetryModule(onWrittenHandler)) { var listeningRequest = new EventSourceListeningRequest(); listeningRequest.Name = TestEventSource.ProviderName; module.Sources.Add(listeningRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.Write("CustomPayloadProperties"); TraceTelemetry telemetry = (TraceTelemetry)this.adapterHelper.Channel.SentItems[0]; Assert.IsTrue(telemetry.Properties.All(kvp => kvp.Key.Equals("CustomPayloadProperties", StringComparison.Ordinal) && kvp.Value.Equals("true", StringComparison.Ordinal))); } }
public void ReactsToConfigurationChanges() { using (var module = new EventSourceTelemetryModule()) { var listeningRequest = new EventSourceListeningRequest(); listeningRequest.Name = TestEventSource.ProviderName; module.Sources.Add(listeningRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.InfoEvent("Hey!"); TestEventSource.Default.WarningEvent(1, 2); // Now request reporting events only with certain keywords listeningRequest.Keywords = TestEventSource.Keywords.NonRoutine; module.Initialize(GetTestTelemetryConfiguration(resetChannel: false)); TestEventSource.Default.InfoEvent("Hey again!"); TestEventSource.Default.WarningEvent(3, 4); List <TraceTelemetry> expectedTelemetry = new List <TraceTelemetry>(); TraceTelemetry traceTelemetry = new TraceTelemetry("Hey!", SeverityLevel.Information); traceTelemetry.Properties["information"] = "Hey!"; expectedTelemetry.Add(traceTelemetry); traceTelemetry = new TraceTelemetry("Warning!", SeverityLevel.Warning); traceTelemetry.Properties["i1"] = 1.ToString(InvariantCulture); traceTelemetry.Properties["i2"] = 2.ToString(InvariantCulture); expectedTelemetry.Add(traceTelemetry); // Note that second informational event is not expected traceTelemetry = new TraceTelemetry("Warning!", SeverityLevel.Warning); traceTelemetry.Properties["i1"] = 3.ToString(InvariantCulture); traceTelemetry.Properties["i2"] = 4.ToString(InvariantCulture); expectedTelemetry.Add(traceTelemetry); CollectionAssert.AreEqual(expectedTelemetry, this.adapterHelper.Channel.SentItems, new TraceTelemetryComparer(), "Reported events are not what was expected"); } }
public void ReportsSeverityLevel() { using (var module = new EventSourceTelemetryModule()) { var listeningRequest = new EventSourceListeningRequest(); listeningRequest.Name = TestEventSource.ProviderName; module.Sources.Add(listeningRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.InfoEvent("Hey!"); TestEventSource.Default.WarningEvent(1, 2); TestEventSource.Default.ErrorEvent(2.3, "default context"); TraceTelemetry[] expectedTelemetry = new TraceTelemetry[] { new TraceTelemetry("Hey!", SeverityLevel.Information), new TraceTelemetry("Warning!", SeverityLevel.Warning), new TraceTelemetry("Error!", SeverityLevel.Error) }; CollectionAssert.AreEqual(expectedTelemetry, this.adapterHelper.Channel.SentItems, new TraceTelemetryComparer(), "Reported events are not what was expected"); } }
public void DisablingEventFromEventSource() { using (var module = new EventSourceTelemetryModule()) { var listeningRequest = new EventSourceListeningRequest() { Name = TestEventSource.ProviderName }; module.Sources.Add(listeningRequest); var disablingRequest = new DisableEventSourceRequest() { Name = TestEventSource.ProviderName }; module.DisabledSources.Add(disablingRequest); module.Initialize(GetTestTelemetryConfiguration()); TestEventSource.Default.InfoEvent("Hey!"); int sentCount = this.adapterHelper.Channel.SentItems.Count(); Assert.AreEqual(0, sentCount); } }