public void LogCosmosSqlDependency_WithTableStorageDependency_CreatesDependencyTelemetry() { // Arrange var spySink = new InMemoryLogSink(); string operationId = $"operation-id-{Guid.NewGuid()}"; ILogger logger = CreateLogger(spySink, config => config.Enrich.WithProperty(ContextProperties.Correlation.OperationId, operationId)); string container = _bogusGenerator.Commerce.ProductName(); string database = _bogusGenerator.Commerce.ProductName(); string accountName = _bogusGenerator.Finance.AccountName(); var startTime = DateTimeOffset.UtcNow; var duration = TimeSpan.FromSeconds(5); var telemetryContext = new Dictionary <string, object> { ["Namespace"] = "azure.cosmos.namespace" }; logger.LogCosmosSqlDependency(accountName, database, container, isSuccessful: true, startTime: startTime, duration: duration, context: telemetryContext); LogEvent logEvent = Assert.Single(spySink.CurrentLogEmits); Assert.NotNull(logEvent); var converter = ApplicationInsightsTelemetryConverter.Create(); // Act IEnumerable <ITelemetry> telemetries = converter.Convert(logEvent, formatProvider: null); // Assert AssertDoesNotContainLogProperty(logEvent, DependencyTracking.DependencyLogEntry); Assert.Collection(telemetries, telemetry => { var dependencyTelemetry = Assert.IsType <DependencyTelemetry>(telemetry); Assert.Equal("Azure DocumentDB", dependencyTelemetry.Type); Assert.Equal($"{database}/{container}", dependencyTelemetry.Data); Assert.Equal(accountName, dependencyTelemetry.Target); Assert.Equal(startTime, dependencyTelemetry.Timestamp); Assert.Equal(duration, dependencyTelemetry.Duration); Assert.True(dependencyTelemetry.Success); AssertContainsTelemetryProperty(dependencyTelemetry, "Namespace", "azure.cosmos.namespace"); }); }
public async Task LogCosmosSqlDependency_SinksToApplicationInsights_ResultsInCosmosSqlDependencyTelemetry() { // Arrange string componentName = BogusGenerator.Commerce.ProductName(); string container = BogusGenerator.Commerce.ProductName(); string database = BogusGenerator.Commerce.ProductName(); string accountName = BogusGenerator.Finance.AccountName(); using (ILoggerFactory loggerFactory = CreateLoggerFactory(config => config.Enrich.WithComponentName(componentName))) { ILogger logger = loggerFactory.CreateLogger <ApplicationInsightsSinkTests>(); bool isSuccessful = BogusGenerator.PickRandom(true, false); DateTimeOffset startTime = DateTimeOffset.Now; // BogusGenerator.Date.RecentOffset(days: 0); TimeSpan duration = BogusGenerator.Date.Timespan(); Dictionary <string, object> telemetryContext = CreateTestTelemetryContext(); // Act logger.LogCosmosSqlDependency(accountName, database, container, isSuccessful, startTime, duration, telemetryContext); } // Assert using (ApplicationInsightsDataClient client = CreateApplicationInsightsClient()) { await RetryAssertUntilTelemetryShouldBeAvailableAsync(async() => { EventsResults <EventsDependencyResult> results = await client.Events.GetDependencyEventsAsync(ApplicationId, timespan: "PT15M"); Assert.NotEmpty(results.Value); Assert.Contains(results.Value, result => { return(result.Dependency.Type == "Azure DocumentDB" && result.Dependency.Target == accountName && result.Dependency.Data == $"{database}/{container}" && result.Cloud.RoleName == componentName); }); }); } }