Skip to content

Commit

Permalink
test: or-2638 archive stream for impossible event
Browse files Browse the repository at this point in the history
  • Loading branch information
emalfroy committed Jan 15, 2025
1 parent 477c2ce commit 8d325fd
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
using Hosts.Configuration.ConfigurationBindings;
using Nest;
using Schema.Search;
using System.Text;

public static class ElasticSearchExtensions
{
public static IServiceCollection AddElasticSearch(
this IServiceCollection services,
ElasticSearchOptionsSection elasticSearchOptions)
ElasticSearchOptionsSection elasticSearchOptions, ILogger<IElasticClient> logger)
{
var elasticClient = CreateElasticClient(elasticSearchOptions);
var elasticClient = CreateElasticClient(elasticSearchOptions, logger);

EnsureIndexExists(elasticClient,
elasticSearchOptions.Indices!.Verenigingen!,
Expand All @@ -35,7 +36,7 @@ public static void EnsureIndexExists(
elasticClient.Indices.CreateDuplicateDetectionIndex(duplicateDetectionIndexName);
}

public static ElasticClient CreateElasticClient(ElasticSearchOptionsSection elasticSearchOptions)
public static ElasticClient CreateElasticClient(ElasticSearchOptionsSection elasticSearchOptions, ILogger logger)
{
var settings = new ConnectionSettings(new Uri(elasticSearchOptions.Uri!))
.BasicAuthentication(
Expand All @@ -45,6 +46,23 @@ public static ElasticClient CreateElasticClient(ElasticSearchOptionsSection elas
.MapVerenigingDocument(elasticSearchOptions.Indices!.Verenigingen!)
.MapDuplicateDetectionDocument(elasticSearchOptions.Indices!.DuplicateDetection!);

if (elasticSearchOptions.EnableDevelopmentLogs)
settings = settings.DisableDirectStreaming()
.PrettyJson()
.OnRequestCompleted(apiCallDetails =>
{
if (apiCallDetails.RequestBodyInBytes != null)
logger.LogDebug(
message: "{HttpMethod} {Uri} \n {RequestBody}",
apiCallDetails.HttpMethod,
apiCallDetails.Uri,
Encoding.UTF8.GetString(apiCallDetails.RequestBodyInBytes));

if (apiCallDetails.ResponseBodyInBytes != null)
logger.LogDebug(message: "Response: {ResponseBody}",
Encoding.UTF8.GetString(apiCallDetails.ResponseBodyInBytes));
});

var elasticClient = new ElasticClient(settings);

return elasticClient;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,15 @@ public static IServiceCollection ConfigureElasticSearch(
this IServiceCollection services,
ElasticSearchOptionsSection elasticSearchOptions)
{
var elasticClient = CreateElasticClient(elasticSearchOptions);

ElasticSearchExtensions.EnsureIndexExists(elasticClient,
elasticSearchOptions.Indices!.Verenigingen!,
elasticSearchOptions.Indices!.DuplicateDetection!);
var elasticClient = (IServiceProvider serviceProvider)
=> ElasticSearchExtensions.CreateElasticClient(elasticSearchOptions, serviceProvider.GetRequiredService<ILogger<ElasticClient>>());

services.AddSingleton(elasticSearchOptions);

services.AddSingleton(_ => elasticClient);
services.AddSingleton<IElasticClient>(_ => elasticClient);
services.AddSingleton(sp => elasticClient(sp));

return services;
}
services.AddSingleton<IElasticClient>(sp => sp.GetRequiredService<ElasticClient>());

private static ElasticClient CreateElasticClient(ElasticSearchOptionsSection elasticSearchOptions)
{
var settings = new ConnectionSettings(new Uri(elasticSearchOptions.Uri!))
.BasicAuthentication(
elasticSearchOptions.Username,
elasticSearchOptions.Password)
.MapVerenigingDocument(elasticSearchOptions.Indices!.Verenigingen!)
.MapDuplicateDetectionDocument(elasticSearchOptions.Indices.DuplicateDetection!);

var elasticClient = new ElasticClient(settings);

return elasticClient;
return services;
}
}
5 changes: 5 additions & 0 deletions src/AssociationRegistry.Admin.ProjectionHost/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ namespace AssociationRegistry.Admin.ProjectionHost;
using Asp.Versioning.ApplicationModels;
using Extensions;
using Infrastructure.ConfigurationBindings;
using Infrastructure.Extensions;
using Infrastructure.Json;
using Infrastructure.Metrics;
using Infrastructure.Program;
Expand Down Expand Up @@ -78,6 +79,10 @@ public static async Task Main(string[] args)

var app = builder.Build();

ElasticSearchExtensions.EnsureIndexExists(app.Services.GetRequiredService<IElasticClient>(),
elasticSearchOptions.Indices!.Verenigingen!,
elasticSearchOptions.Indices!.DuplicateDetection!);

app.AddProjectionEndpoints(
app.Configuration.GetSection(RebuildConfigurationSection.SectionName).Get<RebuildConfigurationSection>()!);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ namespace AssociationRegistry.Test.E2E.When_Aanvaard_Dubbel_Van_Handler_Fails;
using Vereniging;
using AutoFixture;
using FluentAssertions;
using Marten;
using Microsoft.Extensions.DependencyInjection;
using NodaTime;
using Wolverine;
Expand Down Expand Up @@ -59,7 +60,7 @@ public async Task Then_VerwerkWeigeringDubbelDoorAuthentiekeVerenigingHandler_Pu
var message = messages.ShouldHaveMessageOfType<DeadLetterEnvelope>();
message.Envelope.MessageType.Should().Be(typeof(VerwerkWeigeringDubbelDoorAuthentiekeVerenigingMessage).FullName);
}

/// <summary>
/// AanvaardDubbeleVerenigingMessage (onbestaande vCode) -> AanvaardDubbeleVerenigingMessagehandler
/// AanvaardDubbeleVerenigingMessageHandler -> throws uncaught exception -> puts AanvaardDubbeleVerenigingMessage on DLQ
Expand Down Expand Up @@ -89,6 +90,9 @@ public async Task Then_The_Dlq_Receives_AanvaardDubbeleVerenigingMessage()

var message = messages.ShouldHaveMessageOfType<DeadLetterEnvelope>();
message.Envelope.MessageType.Should().Be(typeof(AanvaardDubbeleVerenigingMessage).FullName);

var session = _setup.AdminApiHost.Services.GetRequiredService<IDocumentSession>();
session.Events.ArchiveStream(aanvaardDubbeleVerenigingMessage.VCode);
}

private async Task<IReadOnlyList<DeadLetterEnvelope>?> WaitForMessageInDlq<TMessage>(IMessageStore messageStore)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"ElasticClientOptions": {
"EnableDevelopmentLogs": true,
"Uri": "http://127.0.0.1:9200",
"Username": "elastic",
"Password": "local_development",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public async Task InitializeAsync()

AdminProjectionElasticClient =
Admin.ProjectionHost.Infrastructure.Extensions.ElasticSearchExtensions.CreateElasticClient(
Configuration.GetElasticSearchOptionsSection());
Configuration.GetElasticSearchOptionsSection(), NullLogger.Instance);

var adminStore = DocumentStore.For(
opts =>
Expand Down

0 comments on commit 8d325fd

Please sign in to comment.