Skip to content

Commit

Permalink
Option to override AI instrumentation key (#2072)
Browse files Browse the repository at this point in the history
* Make instrumentationKey customizable

* Update submodule

* Fix tests
  • Loading branch information
epresi committed Jul 28, 2020
1 parent 8307882 commit c363b55
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 13 deletions.
2 changes: 1 addition & 1 deletion ExternalRepositories/SpecFlow.TestProjectGenerator
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
{
public class AppInsightsEventSerializer : IAppInsightsEventSerializer
{
public byte[] SerializeAnalyticsEvent(IAnalyticsEvent analyticsEvent)
public byte[] SerializeAnalyticsEvent(IAnalyticsEvent analyticsEvent, string instrumentationKey)
{
var eventTelemetry = new AppInsightsEventTelemetry(analyticsEvent);
var eventTelemetry = new AppInsightsEventTelemetry(analyticsEvent, instrumentationKey);
return Utf8Json.JsonSerializer.Serialize(eventTelemetry);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class AppInsightsEventTelemetry
public string EventDateTime { get; set; }

[DataMember(Name = "iKey")]
public string InstrumentationKey => AppInsightsInstrumentationKey.Key;
public string InstrumentationKey { get; set; }

[DataMember(Name = "data")]
public TelemetryData TelemetryData { get; set; }
Expand All @@ -26,8 +26,9 @@ public class AppInsightsEventTelemetry

private const string DefaultValue = "undefined";

public AppInsightsEventTelemetry(IAnalyticsEvent analyticsEvent)
public AppInsightsEventTelemetry(IAnalyticsEvent analyticsEvent, string instrumentationKey)
{
InstrumentationKey = instrumentationKey;
DataTypeName = $"Microsoft.ApplicationInsights.{InstrumentationKey}.Event";

EventDateTime = analyticsEvent.UtcDate.ToString("O");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
{
public interface IAppInsightsEventSerializer
{
byte[] SerializeAnalyticsEvent(IAnalyticsEvent analyticsEvent);
byte[] SerializeAnalyticsEvent(IAnalyticsEvent analyticsEvent, string instrumentationKey);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ public HttpClientAnalyticsTransmitterSink(IAppInsightsEventSerializer appInsight
_httpClient = httpClientWrapper.HttpClient;
}

public async Task<IResult> TransmitEvent(IAnalyticsEvent analyticsEvent)
public async Task<IResult> TransmitEvent(IAnalyticsEvent analyticsEvent, string instrumentationKey = AppInsightsInstrumentationKey.Key)
{
try
{
await TransmitEventAsync(analyticsEvent);
await TransmitEventAsync(analyticsEvent, instrumentationKey);
return Result.Success();
}
catch (Exception e)
Expand All @@ -33,9 +33,9 @@ public async Task<IResult> TransmitEvent(IAnalyticsEvent analyticsEvent)
}
}

public async Task TransmitEventAsync(IAnalyticsEvent analyticsEvent)
public async Task TransmitEventAsync(IAnalyticsEvent analyticsEvent, string instrumentationKey)
{
var serializedEventTelemetry = _appInsightsEventSerializer.SerializeAnalyticsEvent(analyticsEvent);
var serializedEventTelemetry = _appInsightsEventSerializer.SerializeAnalyticsEvent(analyticsEvent, instrumentationKey);

using (var httpContent = new ByteArrayContent(serializedEventTelemetry))
{
Expand Down
3 changes: 2 additions & 1 deletion TechTalk.SpecFlow/Analytics/IAnalyticsTransmitterSink.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using System.Threading.Tasks;
using TechTalk.SpecFlow.Analytics.AppInsights;
using TechTalk.SpecFlow.CommonModels;

namespace TechTalk.SpecFlow.Analytics
{
public interface IAnalyticsTransmitterSink
{
Task<IResult> TransmitEvent(IAnalyticsEvent analyticsEvent);
Task<IResult> TransmitEvent(IAnalyticsEvent analyticsEvent, string instrumentationKey = "");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public async Task TryTransmitEvent_AnalyticsDisabled_ShouldNotCallSink()
await analyticsTransmitter.TransmitEvent(analyticsEventMock.Object);

// ASSERT
analyticsTransmitterSinkMock.Verify(sink => sink.TransmitEvent(It.IsAny<IAnalyticsEvent>()), Times.Never);
analyticsTransmitterSinkMock.Verify(sink => sink.TransmitEvent(It.IsAny<IAnalyticsEvent>(), It.IsAny<string>()), Times.Never);
}

[Fact]
Expand All @@ -63,7 +63,7 @@ public async Task TransmitSpecFlowProjectCompilingEvent_AnalyticsEnabled_ShouldC
await analyticsTransmitter.TransmitSpecFlowProjectCompilingEvent(specFlowProjectCompilingEvent);

// ASSERT
analyticsTransmitterSinkMock.Verify(m => m.TransmitEvent(It.IsAny<IAnalyticsEvent>()), Times.Once);
analyticsTransmitterSinkMock.Verify(m => m.TransmitEvent(It.IsAny<IAnalyticsEvent>(), It.IsAny<string>()), Times.Once);
}
}
}

0 comments on commit c363b55

Please sign in to comment.