Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/load-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Useful flags, passed after `--`:
| Flag | Description |
|---|---|
| `--tag <tag>` | Test a specific ServiceControl image tag, for example a PR prerelease like `pr-1234` |
| `--persistence <type>` | Persistence for the error instance: `RavenDb` (default), `SqlServer`, or `PostgreSql` |
| `--storage <type>` | Storage for the error instance: `RavenDb` (default), `SqlServer`, or `PostgreSql` |
| `--error-ingestion-scale-unit <n>` | Start `n` additional error-ingestion-only ServiceControl instances |
| `--azure-blob-body-storage "<connection string>"` | Store message bodies in Azure Blob Storage instead of the container file system. Applies only to `SqlServer` and `PostgreSql`. The error instance and its scale-out units share one container, and each audit instance gets its own |
| `--s3-body-storage <bucket>` | Store message bodies in S3 instead of the container file system. Applies only to `SqlServer` and `PostgreSql`, and is mutually exclusive with `--azure-blob-body-storage`. The error instance and its scale-out units share the `error-bodies/` prefix, and each audit instance gets its own |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace ServiceControl.AcceptanceTests.PostgreSql;

public class AcceptanceTestStorageConfiguration : IAcceptanceTestStorageConfiguration
{
public string PersistenceType { get; } = "PostgreSQL";
public string StorageType { get; } = "PostgreSQL";

public async Task CustomizeSettings(Settings settings, CancellationToken cancellationToken = default)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

public class AcceptanceTestStorageConfiguration : IAcceptanceTestStorageConfiguration
{
public string PersistenceType { get; } = "RavenDB";
public string StorageType { get; } = "RavenDB";


public async Task CustomizeSettings(Settings settings, CancellationToken cancellationToken = default)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public async Task InitializeSettings()
transportType: transportIntegration.TypeName,
forwardErrorMessages: false,
errorRetentionPeriod: TimeSpan.FromDays(1),
persisterType: "RavenDB")
storageType: "RavenDB")
{
TransportConnectionString = transportIntegration.ConnectionString,
AssemblyLoadContextResolver = static _ => AssemblyLoadContext.Default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace ServiceControl.AcceptanceTests.SqlServer;

public class AcceptanceTestStorageConfiguration : IAcceptanceTestStorageConfiguration
{
public string PersistenceType { get; } = "SQLServer";
public string StorageType { get; } = "SQLServer";

public async Task CustomizeSettings(Settings settings, CancellationToken cancellationToken = default)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public async Task InitializeSettings()
{
settings = new Settings(
transportType: TransportIntegration.TypeName,
persisterType: StorageConfiguration.PersistenceType,
storageType: StorageConfiguration.StorageType,
forwardErrorMessages: false,
errorRetentionPeriod: TimeSpan.FromDays(1))
{
Expand Down
4 changes: 2 additions & 2 deletions src/ServiceControl.AcceptanceTests/MaintenanceModeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public void Should_refuse_maintenance_mode()
{
var settings = new Settings(
transportType: TransportIntegration.TypeName,
persisterType: StorageConfiguration.PersistenceType,
storageType: StorageConfiguration.StorageType,
forwardErrorMessages: false,
errorRetentionPeriod: TimeSpan.FromDays(1))
{
Expand All @@ -25,7 +25,7 @@ public void Should_refuse_maintenance_mode()

var exception = Assert.Throws<Exception>(() => new ServiceCollection().AddPersistence(settings, maintenanceMode: true));

Assert.That(exception.Message, Does.Contain("Maintenance mode is not supported").And.Contain(StorageConfiguration.PersistenceType));
Assert.That(exception.Message, Does.Contain("Maintenance mode is not supported").And.Contain(StorageConfiguration.StorageType));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ static async Task<FailedMessageEntity> WaitForFailedMessage(IHost host, string m

async Task<Settings> CreateSettings()
{
var settings = new Settings(TransportIntegration.TypeName, StorageConfiguration.PersistenceType,
var settings = new Settings(TransportIntegration.TypeName, StorageConfiguration.StorageType,
CreateLoggingSettings(), forwardErrorMessages: false, errorRetentionPeriod: TimeSpan.FromDays(10))
{
InstanceName = $"IngestOnly.{Guid.NewGuid():n}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace ServiceControl.AcceptanceTests.TestSupport;

public interface IAcceptanceTestStorageConfiguration
{
string PersistenceType { get; }
string StorageType { get; }

Task CustomizeSettings(Settings settings, CancellationToken cancellationToken = default);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ async Task InitializeServiceControlCore(ScenarioContext context)
var loggingSettings = new LoggingSettings(Settings.SettingsRootNamespace, defaultLevel: LogLevel.Debug, logPath: logPath);
LoggerUtil.ActiveLoggers = Loggers.Test;

var settings = new Settings(transportToUse.TypeName, persistenceToUse.PersistenceType, loggingSettings, forwardErrorMessages: false, errorRetentionPeriod: TimeSpan.FromDays(10))
var settings = new Settings(transportToUse.TypeName, persistenceToUse.StorageType, loggingSettings, forwardErrorMessages: false, errorRetentionPeriod: TimeSpan.FromDays(10))
{
InstanceName = instanceName,
AllowMessageEditing = true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class When_triggering_a_manual_retention_purge : AcceptanceTest
[Test]
public async Task Should_be_available_on_efcore_persisters()
{
if (StorageConfiguration.PersistenceType == "RavenDB")
if (StorageConfiguration.StorageType == "RavenDB")
{
Assert.Ignore("RavenDB has no sweeper — covered by Should_return_501_on_a_ravendb_backed_instance.");
return;
Expand Down Expand Up @@ -67,7 +67,7 @@ await Define<Context>()
[Test]
public async Task Should_report_background_completion_via_status()
{
if (StorageConfiguration.PersistenceType == "RavenDB")
if (StorageConfiguration.StorageType == "RavenDB")
{
Assert.Ignore("RavenDB has no sweeper — covered by Should_return_501_on_a_ravendb_backed_instance.");
return;
Expand Down Expand Up @@ -101,7 +101,7 @@ await Define<Context>()
[Test]
public async Task Should_return_501_on_a_ravendb_backed_instance()
{
if (StorageConfiguration.PersistenceType != "RavenDB")
if (StorageConfiguration.StorageType != "RavenDB")
{
Assert.Ignore("EFCore persisters support the purge — covered by the efcore tests.");
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace ServiceControl.Audit.AcceptanceTests.PostgreSql;

public class AcceptanceTestStorageConfiguration : IAcceptanceTestStorageConfiguration
{
public string PersistenceType { get; } = "PostgreSQL";
public string StorageType { get; } = "PostgreSQL";

public async Task<IDictionary<string, string>> CustomizeSettings(CancellationToken cancellationToken = default)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

public class AcceptanceTestStorageConfiguration : IAcceptanceTestStorageConfiguration
{
public string PersistenceType { get; } = "RavenDB";
public string StorageType { get; } = "RavenDB";

EmbeddedDatabase databaseInstance;
string databaseName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace ServiceControl.Audit.AcceptanceTests.SqlServer;

public class AcceptanceTestStorageConfiguration : IAcceptanceTestStorageConfiguration
{
public string PersistenceType { get; } = "SQLServer";
public string StorageType { get; } = "SQLServer";

public async Task<IDictionary<string, string>> CustomizeSettings(CancellationToken cancellationToken = default)
{
Expand Down
2 changes: 1 addition & 1 deletion src/ServiceControl.Audit.AcceptanceTests/AcceptanceTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public void Setup()
StorageConfiguration = new AcceptanceTestStorageConfiguration();

serviceControlRunnerBehavior = new ServiceControlComponentBehavior(TransportIntegration, StorageConfiguration, s => SetSettings(s), s => CustomConfiguration(s), d => SetStorageConfiguration(d), hb => CustomizeHostBuilder(hb));
TestContext.Out.WriteLine($"Using persistence {StorageConfiguration.PersistenceType}");
TestContext.Out.WriteLine($"Using storage type {StorageConfiguration.StorageType}");
}

[TearDown]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ class MaintenanceModeTests : AcceptanceTest
[Test]
public void Should_refuse_unsupported_persister_before_starting_host()
{
var settings = new Settings(persisterType: StorageConfiguration.PersistenceType)
var settings = new Settings(storageType: StorageConfiguration.StorageType)
{
AssemblyLoadContextResolver = static _ => AssemblyLoadContext.Default
};

var exception = Assert.ThrowsAsync<InvalidOperationException>(async () =>
await new MaintenanceModeCommand().Execute(new HostArguments([]), settings));

Assert.That(exception.Message, Does.Contain("Maintenance mode is not supported").And.Contain(StorageConfiguration.PersistenceType));
Assert.That(exception.Message, Does.Contain("Maintenance mode is not supported").And.Contain(StorageConfiguration.StorageType));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace ServiceControl.Audit.AcceptanceTests.TestSupport;

public interface IAcceptanceTestStorageConfiguration
{
string PersistenceType { get; }
string StorageType { get; }

Task<IDictionary<string, string>> CustomizeSettings(CancellationToken cancellationToken = default);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ async Task InitializeServiceControlCore(ScenarioContext context)
var loggingSettings = new LoggingSettings(Settings.SettingsRootNamespace, defaultLevel: LogLevel.Debug, logPath: logPath);
LoggerUtil.ActiveLoggers = Loggers.Test;

settings = new Settings(transportToUse.TypeName, persistenceToUse.PersistenceType, loggingSettings)
settings = new Settings(transportToUse.TypeName, persistenceToUse.StorageType, loggingSettings)
{
InstanceName = instanceName,
TransportConnectionString = transportToUse.ConnectionString,
Expand Down
16 changes: 8 additions & 8 deletions src/ServiceControl.Audit.Persistence/PersistenceManifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ public class PersistenceManifest

public string[] Aliases { get; set; } = [];

internal bool IsMatch(string persistenceType) =>
string.Equals(TypeName, persistenceType, StringComparison.Ordinal) // Type names are case-sensitive
|| string.Equals(Name, persistenceType, StringComparison.OrdinalIgnoreCase)
|| Aliases.Contains(persistenceType, StringComparer.Ordinal);
internal bool IsMatch(string storageType) =>
string.Equals(TypeName, storageType, StringComparison.Ordinal) // Type names are case-sensitive
|| string.Equals(Name, storageType, StringComparison.OrdinalIgnoreCase)
|| Aliases.Contains(storageType, StringComparer.Ordinal);
}

public static class PersistenceManifestLibrary
Expand Down Expand Up @@ -95,14 +95,14 @@ static string GetAssemblyDirectory()
return Path.GetDirectoryName(assemblyLocation);
}

public static PersistenceManifest Find(string persistenceType)
public static PersistenceManifest Find(string storageType)
{
if (persistenceType == null)
if (storageType == null)
{
throw new Exception("No persistenceType has been configured. Either provide a Type or Name in the PersistenceType setting.");
throw new Exception("No storageType has been configured. Either provide a Type or Name in the StorageType setting.");
}

var persistenceManifest = PersistenceManifests.FirstOrDefault(w => w.IsMatch(persistenceType));
var persistenceManifest = PersistenceManifests.FirstOrDefault(w => w.IsMatch(storageType));

return persistenceManifest;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
"Hostname": "localhost",
"VirtualDirectory": "",
"TransportType": "LearningTransport",
"PersistenceType": "RavenDB",
"StorageType": "RavenDB",
"AuditQueue": "audit",
"ForwardAuditMessages": false,
"IngestAuditMessages": true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ public void Should_find_persistence_manifest_by_type()
[Test]
public void Should_return_null_for_not_found_persistence_type()
{
var fakePersistenceType = "My.fake.persistence, fakeTransportAssembly";
var persistenceManifest = PersistenceManifestLibrary.Find(fakePersistenceType);
var fakeStorageType = "My.fake.persistence, fakeTransportAssembly";
var persistenceManifest = PersistenceManifestLibrary.Find(fakeStorageType);

Assert.That(persistenceManifest, Is.Null);
}
Expand Down
8 changes: 4 additions & 4 deletions src/ServiceControl.Audit/App.config
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ These settings are only here so that we can debug ServiceControl while developin
<!--<add key="ServiceControl.Audit/TransportType" value="RabbitMQ.QuorumConventionalRouting" />-->
<!--<add key="ServiceControl.Audit/TransportType" value="SQLServer" />-->

<!-- DEVS - Pick a persistence to run Auditing instance on. -->
<add key="ServiceControl.Audit/PersistenceType" value="RavenDB" />
<!--<add key="ServiceControl.Audit/PersistenceType" value="SQLServer" />-->
<!--<add key="ServiceControl.Audit/PersistenceType" value="PostgreSQL" />-->
<!-- DEVS - Pick a storage type to run Auditing instance on. -->
<add key="ServiceControl.Audit/StorageType" value="RavenDB" />
<!--<add key="ServiceControl.Audit/StorageType" value="SQLServer" />-->
<!--<add key="ServiceControl.Audit/StorageType" value="PostgreSQL" />-->
<!--<add key="ServiceControl.Audit/Database/ConnectionString" value="" />-->
<!--<add key="ServiceControl.Audit/MessageBody/StorageType" value="FileSystem" />-->
<!--<add key="ServiceControl.Audit/MessageBody/FileSystem/StoragePath" value="C:\ServiceControl.Audit\bodies" />-->
Expand Down
2 changes: 1 addition & 1 deletion src/ServiceControl.Audit/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ EXPOSE 44444
COPY --from=build /deploy/Particular.ServiceControl.Audit /app
COPY --from=build /healthcheck /healthcheck

ENV PersistenceType=RavenDB \
ENV StorageType=RavenDB \
AuditRetentionPeriod=7

HEALTHCHECK --start-period=10s CMD ["/healthcheck/healthcheck", "http://localhost:44444/api/configuration"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ static void RecordStartup(Settings settings, EndpointConfiguration endpointConfi
Forwarding Audit Messages: {settings.ForwardAuditMessages}
ServiceControl Logging Level: {settings.LoggingSettings.LogLevel}
Transport Customization: {settings.TransportType},
Persistence Customization: {settings.PersistenceType},
Persistence Customization: {settings.StorageType},
Persistence: {persistenceConfiguration.Name}
-------------------------------------------------------------";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public override async Task Execute(HostArguments args, Settings settings, Cancel
var persistenceConfiguration = PersistenceConfigurationFactory.LoadPersistenceConfiguration(settings);
if (!persistenceConfiguration.SupportsMaintenanceMode)
{
throw new InvalidOperationException($"Maintenance mode is not supported by the {settings.PersistenceType} persister.");
throw new InvalidOperationException($"Maintenance mode is not supported by the {settings.StorageType} persister.");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
throw new InvalidOperationException($"Maintenance mode is not supported by the {settings.StorageType} persister.");
throw new InvalidOperationException($"Maintenance mode is not supported by the {settings.StorageType} storage type.");

}

var persistenceSettings = persistenceConfiguration.BuildPersistenceSettings(settings);
Expand Down
6 changes: 3 additions & 3 deletions src/ServiceControl.Audit/Infrastructure/Settings/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

public class Settings
{
public Settings(string transportType = null, string persisterType = null, LoggingSettings loggingSettings = null)
public Settings(string transportType = null, string storageType = null, LoggingSettings loggingSettings = null)
{
LoggingSettings = loggingSettings ?? new(SettingsRootNamespace);

Expand All @@ -31,7 +31,7 @@ public Settings(string transportType = null, string persisterType = null, Loggin

TransportType = transportType ?? SettingsReader.Read<string>(SettingsRootNamespace, "TransportType");

PersistenceType = persisterType ?? SettingsReader.Read<string>(SettingsRootNamespace, "PersistenceType");
StorageType = storageType ?? SettingsReader.Read<string>(SettingsRootNamespace, "StorageType");

TransportConnectionString = GetConnectionString();

Expand Down Expand Up @@ -153,7 +153,7 @@ public string RootUrl

public string TransportType { get; private set; }

public string PersistenceType { get; private set; }
public string StorageType { get; private set; }

public string AuditQueue { get; set; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public OkObjectResult Config()
},
Persistence = new

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What consumes this endpoint and uses this value? Should we look into that and rename to Storage to match https://github.com/Particular/ServiceControl/pull/6077/changes#diff-0dac823f83eb2baf7a60865a0e0f69a28455224625a193cc769ce543c36fbe12R82 ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possibly

I changed it back because I didn't want to upset SP but it looks like it's only consumed internally in SC

{
settings.PersistenceType
PersistenceType = settings.StorageType
},
Plugins = new
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public static IPersistenceConfiguration LoadPersistenceConfiguration(Settings se
{
try
{
var persistenceManifest = PersistenceManifestLibrary.Find(settings.PersistenceType);
var persistenceManifest = PersistenceManifestLibrary.Find(settings.StorageType);
var assemblyPath = Path.Combine(persistenceManifest.Location, $"{persistenceManifest.AssemblyName}.dll");
var loadContext = settings.AssemblyLoadContextResolver(assemblyPath);
var customizationType = Type.GetType(persistenceManifest.TypeName, loadContext.LoadFromAssemblyName, null, true);
Expand All @@ -20,7 +20,7 @@ public static IPersistenceConfiguration LoadPersistenceConfiguration(Settings se
}
catch (Exception e)
{
throw new Exception($"Could not load persistence customization type {settings.PersistenceType}.", e);
throw new Exception($"Could not load persistence customization type {settings.StorageType}.", e);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ namespace ServiceControl.MultiInstance.AcceptanceTests.TestSupport
class SharedRavenStorageConfiguration : PrimaryStorageConfiguration, AuditStorageConfiguration
{
// Both persisters ship a manifest named RavenDB, and only one of them survives the copy into this project's output folder
string PrimaryStorageConfiguration.PersistenceType => TypeNameOf(typeof(RavenPersistenceConfiguration));
string PrimaryStorageConfiguration.StorageType => TypeNameOf(typeof(RavenPersistenceConfiguration));

string AuditStorageConfiguration.PersistenceType => TypeNameOf(typeof(AuditRavenPersistenceConfiguration));
string AuditStorageConfiguration.StorageType => TypeNameOf(typeof(AuditRavenPersistenceConfiguration));

async Task PrimaryStorageConfiguration.CustomizeSettings(PrimaryInstanceSettings settings, CancellationToken cancellationToken)
{
Expand Down
Loading
Loading