From 6b52aaf77c69b6f3cffacf40f1e55b966ad703f7 Mon Sep 17 00:00:00 2001 From: Rhys Bevilaqua Date: Mon, 20 Jul 2026 14:56:13 +0800 Subject: [PATCH] Add option to run tests against an in-memory raven instance --- .../SharedEmbeddedServer.cs | 2 +- src/ServiceControl.RavenDB/EmbeddedDatabase.cs | 10 +++++++++- .../EmbeddedDatabaseConfiguration.cs | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ServiceControl.Persistence.Tests.RavenDB/SharedEmbeddedServer.cs b/src/ServiceControl.Persistence.Tests.RavenDB/SharedEmbeddedServer.cs index 1491e73840..670dab2bfb 100644 --- a/src/ServiceControl.Persistence.Tests.RavenDB/SharedEmbeddedServer.cs +++ b/src/ServiceControl.Persistence.Tests.RavenDB/SharedEmbeddedServer.cs @@ -38,7 +38,7 @@ public static async Task GetInstance(CancellationToken cancell }; // TODO: See if more refactoring can be done between this and the RavenPersisterSettings above - var embeddedConfig = new EmbeddedDatabaseConfiguration(settings.ServerUrl, RavenPersisterSettings.DatabaseNameDefault, dbPath, logPath, logsMode); + var embeddedConfig = new EmbeddedDatabaseConfiguration(settings.ServerUrl, RavenPersisterSettings.DatabaseNameDefault, dbPath, logPath, logsMode) { RunInMemory = true }; embeddedDatabase = EmbeddedDatabase.Start(embeddedConfig, new ApplicationLifetime(new NullLogger())); diff --git a/src/ServiceControl.RavenDB/EmbeddedDatabase.cs b/src/ServiceControl.RavenDB/EmbeddedDatabase.cs index 08fb28eb88..cf2157181f 100644 --- a/src/ServiceControl.RavenDB/EmbeddedDatabase.cs +++ b/src/ServiceControl.RavenDB/EmbeddedDatabase.cs @@ -69,6 +69,13 @@ public static EmbeddedDatabase Start(EmbeddedDatabaseConfiguration databaseConfi } logger.LogInformation("Loading RavenDB license from {LicenseFileName}", licenseFileNameAndServerDirectory.LicenseFileName); + + List optionalArgs = []; + if (databaseConfiguration.RunInMemory) + { + optionalArgs.Add("--RunInMemory=true"); + } + var serverOptions = new ServerOptions { CommandLineArgs = @@ -76,7 +83,8 @@ public static EmbeddedDatabase Start(EmbeddedDatabaseConfiguration databaseConfi $"--Logs.Mode={databaseConfiguration.LogsMode}", // HINT: If this is not set, then Raven will pick a default location relative to the server binaries // See https://github.com/ravendb/ravendb/issues/15694 - $"--Indexing.NuGetPackagesPath=\"{nugetPackagesPath}\"" + $"--Indexing.NuGetPackagesPath=\"{nugetPackagesPath}\"", + ..optionalArgs ], DataDirectory = databaseConfiguration.DbPath, ServerUrl = databaseConfiguration.ServerUrl, diff --git a/src/ServiceControl.RavenDB/EmbeddedDatabaseConfiguration.cs b/src/ServiceControl.RavenDB/EmbeddedDatabaseConfiguration.cs index 90ba6bbdea..a7edba7b01 100644 --- a/src/ServiceControl.RavenDB/EmbeddedDatabaseConfiguration.cs +++ b/src/ServiceControl.RavenDB/EmbeddedDatabaseConfiguration.cs @@ -10,6 +10,8 @@ public class EmbeddedDatabaseConfiguration(string serverUrl, string dbName, stri public string LogPath { get; } = logPath; public string LogsMode { get; } = logsMode; + public bool RunInMemory { get; set; } + public Func FindClrType { get; init; } } }