private static void AddSecretStore(WorkerOptions options, KeyRotationConfig rotationConfig)
 {
     options.Configure(host => host.ConfigureSecretStore((configuration, stores) =>
     {
         stores.AddAzureKeyVaultWithServicePrincipal(
             rotationConfig.KeyVault.VaultUri,
             rotationConfig.ServicePrincipal.ClientId,
             rotationConfig.ServicePrincipal.ClientSecret)
         .AddConfiguration(configuration);
     }));
 }
Ejemplo n.º 2
0
        public async Task ServiceBusMessagePump_FailureDuringMessageHandling_TracksCorrelationInApplicationInsights()
        {
            // Arrange
            var    config           = TestConfig.Create();
            string connectionString = config.GetServiceBusConnectionString(ServiceBusEntityType.Queue);

            var spySink = new InMemoryLogSink();
            var options = new WorkerOptions();

            options.Configure(host => host.UseSerilog((context, currentConfig) =>
            {
                currentConfig
                .MinimumLevel.Debug()
                .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                .Enrich.FromLogContext()
                .Enrich.WithVersion()
                .Enrich.WithComponentName("Service Bus Queue Worker")
                .WriteTo.Sink(spySink);
            }));
            options.AddServiceBusQueueMessagePump(configuration => connectionString, opt => opt.AutoComplete = true)
            .WithServiceBusMessageHandler <OrdersSabotageAzureServiceBusMessageHandler, Order>();

            string            operationId = $"operation-{Guid.NewGuid()}", transactionId = $"transaction-{Guid.NewGuid()}";
            ServiceBusMessage orderMessage = OrderGenerator.Generate().AsServiceBusMessage(operationId, transactionId);

            await using (var worker = await Worker.StartNewAsync(options))
            {
                await using (var service = await TestMessagePumpService.StartNewAsync(config, _logger))
                {
                    // Act
                    await service.SendMessageToServiceBusAsync(connectionString, orderMessage);
                }

                // Assert
                RetryAssertUntilTelemetryShouldBeAvailable(() =>
                {
                    Assert.Contains(spySink.CurrentLogEmits,
                                    log => log.Exception?.InnerException?.Message.Contains("Sabotage") == true &&
                                    log.ContainsProperty(ContextProperties.Correlation.OperationId, operationId) &&
                                    log.ContainsProperty(ContextProperties.Correlation.TransactionId, transactionId));
                },
                                                           timeout: TimeSpan.FromMinutes(1));
            }
        }