Skip to content

Commit

Permalink
Fix #348 - Deprecated TelemetryConfiguration.Active
Browse files Browse the repository at this point in the history
  • Loading branch information
CarlosLanderas committed Dec 16, 2019
1 parent c00f82b commit ed2946d
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
Expand All @@ -20,16 +21,26 @@ internal class ApplicationInsightsPublisher

private static TelemetryClient _client;
private static readonly object sync_root = new object();

private readonly TelemetryConfiguration _telemetryConfiguration;
private readonly string _instrumentationKey;
private readonly bool _saveDetailedReport;
private readonly bool _excludeHealthyReports;

public ApplicationInsightsPublisher(string instrumentationKey = default, bool saveDetailedReport = false, bool excludeHealthyReports = false)
public ApplicationInsightsPublisher(
IOptions<TelemetryConfiguration> telemetryConfiguration,
string instrumentationKey = default,
bool saveDetailedReport = false,
bool excludeHealthyReports = false)
{
_telemetryConfiguration = telemetryConfiguration?.Value;
_instrumentationKey = instrumentationKey;
_saveDetailedReport = saveDetailedReport;
_excludeHealthyReports = excludeHealthyReports;

if (string.IsNullOrEmpty(instrumentationKey) && string.IsNullOrEmpty(_telemetryConfiguration?.InstrumentationKey))
{
throw new ArgumentNullException("No instrumentation key was provided in options or constructor");
}
}
public Task PublishAsync(HealthReport report, CancellationToken cancellationToken)
{
Expand Down Expand Up @@ -113,7 +124,7 @@ private TelemetryClient GetOrCreateTelemetryClient()
//key active on the project.

var configuration = string.IsNullOrWhiteSpace(_instrumentationKey)
? TelemetryConfiguration.Active
? new TelemetryConfiguration(_telemetryConfiguration?.InstrumentationKey)
: new TelemetryConfiguration(_instrumentationKey);

_client = new TelemetryClient(configuration);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
using HealthChecks.Publisher.ApplicationInsights;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Options;

namespace Microsoft.Extensions.DependencyInjection
{
Expand All @@ -22,7 +25,8 @@ public static IHealthChecksBuilder AddApplicationInsightsPublisher(this IHealthC
builder.Services
.AddSingleton<IHealthCheckPublisher>(sp =>
{
return new ApplicationInsightsPublisher(instrumentationKey, saveDetailedReport, excludeHealthyReports);
var telemetryConfigurationOptions = sp.GetService<IOptions<TelemetryConfiguration>>();
return new ApplicationInsightsPublisher(telemetryConfigurationOptions, instrumentationKey, saveDetailedReport, excludeHealthyReports);
});

return builder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,53 @@
using HealthChecks.Publisher.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using System;
using Xunit;

namespace UnitTests.DependencyInjection.Publisher.ApplicationInsights
{
public class application_insights_publisher_registration_should
{
[Fact]
public void add_publisher_when_properly_configured()
public void fail_when_no_telemetry_configuration_is_configured_using_parameters_or_IOptions()
{
var services = new ServiceCollection();
services.AddHealthChecks()
.AddApplicationInsightsPublisher();

var serviceProvider = services.BuildServiceProvider();

Assert.Throws<ArgumentNullException>(() =>
{
serviceProvider.GetService<IHealthCheckPublisher>();
});
}

[Fact]
public void add_healthcheck_when_properly_configured_with_instrumentation_key_parameter()
{
var services = new ServiceCollection();
services
.AddHealthChecks()
.AddApplicationInsightsPublisher("telemetrykey");

var serviceProvider = services.BuildServiceProvider();
var publisher = serviceProvider.GetService<IHealthCheckPublisher>();

Assert.NotNull(publisher);
}

[Fact]
public void add_healthcheck_when_application_insights_is_properly_configured_with_IOptions()
{
var services = new ServiceCollection();
services.Configure<TelemetryConfiguration>(config => config.InstrumentationKey = "telemetrykey");

services
.AddHealthChecks()
.AddApplicationInsightsPublisher();

var serviceProvider = services.BuildServiceProvider();
var publisher = serviceProvider.GetService<IHealthCheckPublisher>();

Expand Down

0 comments on commit ed2946d

Please sign in to comment.