public void ConnectionStringOverridesConfigurationFile() { const string aiConfiguration = @" <?xml version=""1.0"" encoding=""utf-8""?> <ApplicationInsights xmlns=""http://schemas.microsoft.com/ApplicationInsights/2013/Settings""> <InstrumentationKey>c8da242c-9f2d-45ab-913c-c9953516e9c2</InstrumentationKey> <TelemetryChannel Type=""Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel""/> </ApplicationInsights> "; var healthReporterMock = new Mock <IHealthReporter>(); var telemetry = new TraceTelemetry(); using (var configFile = new TemporaryFile()) { configFile.Write(aiConfiguration); var config = new ApplicationInsightsOutputConfiguration(); config.ConnectionString = "InstrumentationKey=d0198460-ce4a-4efa-9e17-3edef2b40f15"; config.ConfigurationFilePath = configFile.FilePath; var output = new ApplicationInsightsOutput(config, healthReporterMock.Object); VerifyNoErrorsOrWarnings(healthReporterMock); output.telemetryClient.InitializeInstrumentationKey(telemetry); } Assert.Equal("d0198460-ce4a-4efa-9e17-3edef2b40f15", telemetry.Context.InstrumentationKey, StringComparer.OrdinalIgnoreCase); }
private void Initialize(ApplicationInsightsOutputConfiguration aiOutputConfiguration) { Debug.Assert(aiOutputConfiguration != null); Debug.Assert(this.healthReporter != null); if (!aiOutputConfiguration.Validate(out string validationError)) { this.healthReporter.ReportWarning($"{nameof(ApplicationInsightsOutput)}: invalid configuration. {validationError} No data will be sent to Application Insights", EventFlowContextIdentifiers.Output); return; } TelemetryConfiguration telemetryConfiguration = null; if (string.IsNullOrWhiteSpace(aiOutputConfiguration.ConfigurationFilePath)) { telemetryConfiguration = TelemetryConfiguration.CreateDefault(); } else { string configurationFileContent = File.ReadAllText(aiOutputConfiguration.ConfigurationFilePath); telemetryConfiguration = TelemetryConfiguration.CreateFromConfiguration(configurationFileContent); } if (!string.IsNullOrWhiteSpace(aiOutputConfiguration.ConnectionString)) { telemetryConfiguration.ConnectionString = aiOutputConfiguration.ConnectionString; } if (!string.IsNullOrWhiteSpace(aiOutputConfiguration.InstrumentationKey)) { telemetryConfiguration.InstrumentationKey = aiOutputConfiguration.InstrumentationKey; } this.telemetryClient = new TelemetryClient(telemetryConfiguration); }
private void Initialize(ApplicationInsightsOutputConfiguration aiOutputConfiguration) { Debug.Assert(aiOutputConfiguration != null); Debug.Assert(this.healthReporter != null); if (string.IsNullOrWhiteSpace(aiOutputConfiguration.ConfigurationFilePath)) { if (string.IsNullOrWhiteSpace(aiOutputConfiguration.InstrumentationKey)) { string errorMessage = $"{nameof(ApplicationInsightsOutput)}: Application Insights instrumentation key is not set)"; this.healthReporter.ReportProblem(errorMessage, EventFlowContextIdentifiers.Configuration); throw new Exception(errorMessage); } this.telemetryClient = new TelemetryClient(); this.telemetryClient.InstrumentationKey = aiOutputConfiguration.InstrumentationKey; } else { string configurationFileContent = File.ReadAllText(aiOutputConfiguration.ConfigurationFilePath); TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.CreateFromConfiguration(configurationFileContent); if (!string.IsNullOrWhiteSpace(aiOutputConfiguration.InstrumentationKey)) { telemetryConfiguration.InstrumentationKey = aiOutputConfiguration.InstrumentationKey; } this.telemetryClient = new TelemetryClient(telemetryConfiguration); } }
public ApplicationInsightsOutput(ApplicationInsightsOutputConfiguration applicationInsightsOutputConfiguration, IHealthReporter healthReporter) { Requires.NotNull(applicationInsightsOutputConfiguration, nameof(applicationInsightsOutputConfiguration)); Requires.NotNull(healthReporter, nameof(healthReporter)); this.healthReporter = healthReporter; Initialize(applicationInsightsOutputConfiguration); }
public void InvalidConfigurationResultsInAnError() { var healthReporterMock = new Mock <IHealthReporter>(); var config = new ApplicationInsightsOutputConfiguration(); var output = new ApplicationInsightsOutput(config, healthReporterMock.Object); healthReporterMock.Verify( hr => hr.ReportWarning( It.IsRegex("invalid configuration"), It.Is <string>(ctx => string.Equals(ctx, EventFlowContextIdentifiers.Output, StringComparison.Ordinal))), Times.Exactly(1)); }
public void InstrumentationKeyOverridesConnectionString() { var healthReporterMock = new Mock <IHealthReporter>(); var config = new ApplicationInsightsOutputConfiguration(); config.ConnectionString = "InstrumentationKey=d0198460-ce4a-4efa-9e17-3edef2b40f15"; config.InstrumentationKey = "c8da242c-9f2d-45ab-913c-c9953516e9c2"; var output = new ApplicationInsightsOutput(config, healthReporterMock.Object); VerifyNoErrorsOrWarnings(healthReporterMock); var telemetry = new TraceTelemetry(); output.telemetryClient.InitializeInstrumentationKey(telemetry); Assert.Equal("c8da242c-9f2d-45ab-913c-c9953516e9c2", telemetry.Context.InstrumentationKey, StringComparer.OrdinalIgnoreCase); }
public ApplicationInsightsOutput(IConfiguration configuration, IHealthReporter healthReporter) { Requires.NotNull(configuration, nameof(configuration)); Requires.NotNull(healthReporter, nameof(healthReporter)); this.healthReporter = healthReporter; var aiOutputConfiguration = new ApplicationInsightsOutputConfiguration(); try { configuration.Bind(aiOutputConfiguration); } catch { healthReporter.ReportProblem($"Invalid {nameof(ApplicationInsightsOutput)} configuration encountered: '{configuration.ToString()}'", EventFlowContextIdentifiers.Configuration); throw; } Initialize(aiOutputConfiguration); }
private void Initialize(ApplicationInsightsOutputConfiguration aiOutputConfiguration) { Debug.Assert(aiOutputConfiguration != null); Debug.Assert(this.healthReporter != null); if (string.IsNullOrWhiteSpace(aiOutputConfiguration.ConfigurationFilePath)) { this.telemetryClient = new TelemetryClient(); } else { string configurationFileContent = File.ReadAllText(aiOutputConfiguration.ConfigurationFilePath); TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.CreateFromConfiguration(configurationFileContent); this.telemetryClient = new TelemetryClient(telemetryConfiguration); } if (!string.IsNullOrWhiteSpace(aiOutputConfiguration.InstrumentationKey)) { this.telemetryClient.InstrumentationKey = aiOutputConfiguration.InstrumentationKey; } }
public void UsesIsoDateFormat() { EventData e = new EventData(); e.Payload.Add("DateTimeProperty", new DateTime(2017, 4, 19, 10, 15, 23, DateTimeKind.Utc)); e.Payload.Add("DateTimeOffsetProperty", new DateTimeOffset(2017, 4, 19, 10, 16, 07, TimeSpan.Zero)); var healthReporterMock = new Mock <IHealthReporter>(); var config = new ApplicationInsightsOutputConfiguration(); var aiOutput = new ApplicationInsightsOutput(config, healthReporterMock.Object); var propertyBag = new PropertyBag(); aiOutput.AddProperties(propertyBag, e); var dateTimeRegex = new Regex("2017-04-19T10:15:23(\\.0+)?Z", RegexOptions.None, TimeSpan.FromMilliseconds(100)); Assert.Matches(dateTimeRegex, propertyBag.Properties["DateTimeProperty"]); var dateTimeOffsetRegex = new Regex("2017-04-19T10:16:07(\\.0+)?\\+00:00", RegexOptions.None, TimeSpan.FromMilliseconds(100)); Assert.Matches(dateTimeOffsetRegex, propertyBag.Properties["DateTimeOffsetProperty"]); }