Refactor code structure and optimize performance across multiple modules

This commit is contained in:
StellaOps Bot
2025-12-26 20:03:22 +02:00
parent c786faae84
commit f10d83c444
1385 changed files with 69732 additions and 10280 deletions

View File

@@ -3,6 +3,7 @@ using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using StellaOps.Router.Common.Models;
using StellaOps.TestKit;
namespace StellaOps.Router.Config.Tests;
/// <summary>
@@ -32,7 +33,8 @@ public sealed class RouterConfigProviderTests : IDisposable
#region Constructor Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Constructor_InitializesCurrentConfig()
{
// Arrange & Act
@@ -42,7 +44,8 @@ public sealed class RouterConfigProviderTests : IDisposable
provider.Current.Should().NotBeNull();
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Constructor_ExposesOptions()
{
// Arrange
@@ -60,7 +63,8 @@ public sealed class RouterConfigProviderTests : IDisposable
provider.Options.ConfigPath.Should().Be("/test/path.yaml");
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Constructor_WithHotReloadDisabled_DoesNotThrow()
{
// Arrange
@@ -77,7 +81,8 @@ public sealed class RouterConfigProviderTests : IDisposable
#region Validate Tests - PayloadLimits
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_ValidConfig_ReturnsIsValid()
{
// Arrange
@@ -90,7 +95,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.IsValid.Should().BeTrue();
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_ZeroMaxRequestBytesPerCall_ReturnsError()
{
// Arrange
@@ -105,7 +111,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("MaxRequestBytesPerCall"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_NegativeMaxRequestBytesPerCall_ReturnsError()
{
// Arrange
@@ -120,7 +127,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("MaxRequestBytesPerCall"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_ZeroMaxRequestBytesPerConnection_ReturnsError()
{
// Arrange
@@ -135,7 +143,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("MaxRequestBytesPerConnection"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_ZeroMaxAggregateInflightBytes_ReturnsError()
{
// Arrange
@@ -150,7 +159,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("MaxAggregateInflightBytes"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_MaxCallBytesLargerThanConnectionBytes_ReturnsWarning()
{
// Arrange
@@ -174,7 +184,8 @@ public sealed class RouterConfigProviderTests : IDisposable
#region Validate Tests - RoutingOptions
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_ZeroDefaultTimeout_ReturnsError()
{
// Arrange
@@ -189,7 +200,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("DefaultTimeout"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_NegativeDefaultTimeout_ReturnsError()
{
// Arrange
@@ -208,7 +220,8 @@ public sealed class RouterConfigProviderTests : IDisposable
#region Validate Tests - Services
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_EmptyServiceName_ReturnsError()
{
// Arrange
@@ -223,7 +236,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("Service name cannot be empty"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_WhitespaceServiceName_ReturnsError()
{
// Arrange
@@ -238,7 +252,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("Service name cannot be empty"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_DuplicateServiceNames_ReturnsError()
{
// Arrange
@@ -254,7 +269,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("Duplicate service name"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_DuplicateServiceNamesCaseInsensitive_ReturnsError()
{
// Arrange
@@ -270,7 +286,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("Duplicate service name"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_EndpointEmptyMethod_ReturnsError()
{
// Arrange
@@ -289,7 +306,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("endpoint method cannot be empty"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_EndpointEmptyPath_ReturnsError()
{
// Arrange
@@ -308,7 +326,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("endpoint path cannot be empty"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_EndpointNonPositiveTimeout_ReturnsWarning()
{
// Arrange
@@ -331,7 +350,8 @@ public sealed class RouterConfigProviderTests : IDisposable
#region Validate Tests - StaticInstances
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_StaticInstanceEmptyServiceName_ReturnsError()
{
// Arrange
@@ -352,7 +372,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("Static instance service name cannot be empty"));
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Validate_StaticInstanceEmptyHost_ReturnsError()
{
// Arrange
@@ -373,7 +394,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("host cannot be empty"));
}
[Theory]
[Trait("Category", TestCategories.Unit)]
[Theory]
[InlineData(0)]
[InlineData(-1)]
[InlineData(65536)]
@@ -398,7 +420,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.Errors.Should().Contain(e => e.Contains("port must be between 1 and 65535"));
}
[Theory]
[Trait("Category", TestCategories.Unit)]
[Theory]
[InlineData(1)]
[InlineData(80)]
[InlineData(443)]
@@ -423,7 +446,8 @@ public sealed class RouterConfigProviderTests : IDisposable
result.IsValid.Should().BeTrue();
}
[Theory]
[Trait("Category", TestCategories.Unit)]
[Theory]
[InlineData(0)]
[InlineData(-1)]
[InlineData(-100)]
@@ -452,7 +476,8 @@ public sealed class RouterConfigProviderTests : IDisposable
#region ReloadAsync Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task ReloadAsync_ValidConfig_UpdatesCurrentConfig()
{
// Arrange
@@ -465,7 +490,8 @@ public sealed class RouterConfigProviderTests : IDisposable
provider.Current.Should().NotBeNull();
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task ReloadAsync_InvalidConfig_ThrowsConfigurationException()
{
// Arrange
@@ -483,7 +509,8 @@ public sealed class RouterConfigProviderTests : IDisposable
provider.Current.PayloadLimits.MaxRequestBytesPerCall.Should().BeGreaterThan(0);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task ReloadAsync_Cancelled_ThrowsOperationCanceledException()
{
// Arrange
@@ -499,7 +526,8 @@ public sealed class RouterConfigProviderTests : IDisposable
#region ConfigurationChanged Event Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task ReloadAsync_RaisesConfigurationChangedEvent()
{
// Arrange
@@ -521,7 +549,8 @@ public sealed class RouterConfigProviderTests : IDisposable
#region Dispose Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Dispose_CanBeCalledMultipleTimes()
{
// Arrange