From 8de78d352a341ada1ab9628f37b27449c13b975a Mon Sep 17 00:00:00 2001 From: Andre Hofmeister <9199345+HofmeisterAn@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:44:11 +0200 Subject: [PATCH] chore: Remove obsolete UntilOperationIsSucceeded wait strategy --- src/Testcontainers.Pulsar/PulsarBuilder.cs | 34 +++++------ ...tlessUnixEndpointAuthenticationProvider.cs | 10 ++-- .../WaitStrategies/IWaitForContainerOS.cs | 12 ---- .../UntilOperationIsSucceeded.cs | 31 ---------- .../WaitStrategies/WaitForContainerOS.cs | 6 -- .../WaitUntilOperationIsSucceededTest.cs | 58 ------------------- 6 files changed, 23 insertions(+), 128 deletions(-) delete mode 100644 src/Testcontainers/Configurations/WaitStrategies/UntilOperationIsSucceeded.cs delete mode 100644 tests/Testcontainers.Tests/Unit/Configurations/WaitUntilOperationIsSucceededTest.cs diff --git a/src/Testcontainers.Pulsar/PulsarBuilder.cs b/src/Testcontainers.Pulsar/PulsarBuilder.cs index e223c5c43..4834a025e 100644 --- a/src/Testcontainers.Pulsar/PulsarBuilder.cs +++ b/src/Testcontainers.Pulsar/PulsarBuilder.cs @@ -16,23 +16,7 @@ public sealed class PulsarBuilder : ContainerBuilder AuthenticationEnvVars; - - static PulsarBuilder() - { - const string authenticationPlugin = "org.apache.pulsar.client.impl.auth.AuthenticationToken"; - var authenticationEnvVars = new Dictionary(); - authenticationEnvVars.Add("authenticateOriginalAuthData", "false"); - authenticationEnvVars.Add("authenticationEnabled", "true"); - authenticationEnvVars.Add("authorizationEnabled", "true"); - authenticationEnvVars.Add("authenticationProviders", "org.apache.pulsar.broker.authentication.AuthenticationProviderToken"); - authenticationEnvVars.Add("brokerClientAuthenticationPlugin", authenticationPlugin); - authenticationEnvVars.Add("CLIENT_PREFIX_authPlugin", authenticationPlugin); - authenticationEnvVars.Add("PULSAR_PREFIX_authenticationRefreshCheckSeconds", "5"); - authenticationEnvVars.Add("PULSAR_PREFIX_tokenSecretKey", "file://" + SecretKeyFilePath); - authenticationEnvVars.Add("superUserRoles", Username); - AuthenticationEnvVars = new ReadOnlyDictionary(authenticationEnvVars); - } + private static readonly IReadOnlyDictionary AuthenticationEnvVars = InitAuthenticationEnvVars(); /// /// Initializes a new instance of the class. @@ -126,6 +110,22 @@ protected override PulsarBuilder Merge(PulsarConfiguration oldValue, PulsarConfi return new PulsarBuilder(new PulsarConfiguration(oldValue, newValue)); } + private static IReadOnlyDictionary InitAuthenticationEnvVars() + { + const string authenticationPlugin = "org.apache.pulsar.client.impl.auth.AuthenticationToken"; + var authenticationEnvVars = new Dictionary(); + authenticationEnvVars.Add("authenticateOriginalAuthData", "false"); + authenticationEnvVars.Add("authenticationEnabled", "true"); + authenticationEnvVars.Add("authorizationEnabled", "true"); + authenticationEnvVars.Add("authenticationProviders", "org.apache.pulsar.broker.authentication.AuthenticationProviderToken"); + authenticationEnvVars.Add("brokerClientAuthenticationPlugin", authenticationPlugin); + authenticationEnvVars.Add("CLIENT_PREFIX_authPlugin", authenticationPlugin); + authenticationEnvVars.Add("PULSAR_PREFIX_authenticationRefreshCheckSeconds", "5"); + authenticationEnvVars.Add("PULSAR_PREFIX_tokenSecretKey", "file://" + SecretKeyFilePath); + authenticationEnvVars.Add("superUserRoles", Username); + return new ReadOnlyDictionary(authenticationEnvVars); + } + /// private sealed class WaitUntil : IWaitUntil { diff --git a/src/Testcontainers/Builders/RootlessUnixEndpointAuthenticationProvider.cs b/src/Testcontainers/Builders/RootlessUnixEndpointAuthenticationProvider.cs index 7955be949..0195d6005 100644 --- a/src/Testcontainers/Builders/RootlessUnixEndpointAuthenticationProvider.cs +++ b/src/Testcontainers/Builders/RootlessUnixEndpointAuthenticationProvider.cs @@ -11,6 +11,8 @@ namespace DotNet.Testcontainers.Builders [PublicAPI] internal class RootlessUnixEndpointAuthenticationProvider : DockerEndpointAuthenticationProvider { + private const string DockerSocket = "docker.sock"; + /// /// Initializes a new instance of the class. /// @@ -51,17 +53,17 @@ public override IDockerEndpointAuthenticationConfiguration GetAuthConfig() protected static string GetSocketPathFromEnv() { var xdgRuntimeDir = Environment.GetEnvironmentVariable("XDG_RUNTIME_DIR"); - return string.Join("/", xdgRuntimeDir, "docker.sock"); + return string.Join("/", xdgRuntimeDir, DockerSocket); } protected static string GetSocketPathFromHomeDesktopDir() { - return string.Join("/", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".docker", "desktop", "docker.sock"); + return string.Join("/", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".docker", "desktop", DockerSocket); } protected static string GetSocketPathFromHomeRunDir() { - return string.Join("/", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".docker", "run", "docker.sock"); + return string.Join("/", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".docker", "run", DockerSocket); } protected static string GetSocketPathFromRunDir() @@ -78,7 +80,7 @@ protected static string GetSocketPathFromRunDir() uid = new Linux().GetUid(); } - return string.Join("/", string.Empty, "user", uid, "docker.sock"); + return string.Join("/", string.Empty, "user", uid, DockerSocket); } /// diff --git a/src/Testcontainers/Configurations/WaitStrategies/IWaitForContainerOS.cs b/src/Testcontainers/Configurations/WaitStrategies/IWaitForContainerOS.cs index 615ccbb17..cacefc5dd 100644 --- a/src/Testcontainers/Configurations/WaitStrategies/IWaitForContainerOS.cs +++ b/src/Testcontainers/Configurations/WaitStrategies/IWaitForContainerOS.cs @@ -93,18 +93,6 @@ public interface IWaitForContainerOS [PublicAPI] IWaitForContainerOS UntilMessageIsLogged(Regex pattern, Action waitStrategyModifier = null); - /// - /// Waits until the operation is completed successfully. - /// - /// The operation to be executed. - /// The number of attempts before an exception is thrown. - /// The wait strategy modifier to cancel the readiness check. - /// A configured instance of . - /// Thrown when number of failed operations exceeded . - [PublicAPI] - [Obsolete("Use one of the other wait strategies in combination with the `Action` argument, and set the number of retries.")] - IWaitForContainerOS UntilOperationIsSucceeded(Func operation, int maxCallCount, Action waitStrategyModifier = null); - /// /// Waits until the http request is completed successfully. /// diff --git a/src/Testcontainers/Configurations/WaitStrategies/UntilOperationIsSucceeded.cs b/src/Testcontainers/Configurations/WaitStrategies/UntilOperationIsSucceeded.cs deleted file mode 100644 index 2e891211e..000000000 --- a/src/Testcontainers/Configurations/WaitStrategies/UntilOperationIsSucceeded.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace DotNet.Testcontainers.Configurations -{ - using System; - using System.Threading.Tasks; - using DotNet.Testcontainers.Containers; - - internal class UntilOperationIsSucceeded : IWaitUntil - { - private readonly int _maxCallCount; - - private readonly Func _operation; - - private int _tryCount; - - public UntilOperationIsSucceeded(Func operation, int maxCallCount) - { - _operation = operation; - _maxCallCount = maxCallCount; - } - - public Task UntilAsync(IContainer container) - { - if (++_tryCount > _maxCallCount) - { - throw new TimeoutException($"Number of failed operations exceeded max count ({_maxCallCount})."); - } - - return Task.FromResult(_operation.Invoke()); - } - } -} diff --git a/src/Testcontainers/Configurations/WaitStrategies/WaitForContainerOS.cs b/src/Testcontainers/Configurations/WaitStrategies/WaitForContainerOS.cs index 4a6646c47..c5306d1c2 100644 --- a/src/Testcontainers/Configurations/WaitStrategies/WaitForContainerOS.cs +++ b/src/Testcontainers/Configurations/WaitStrategies/WaitForContainerOS.cs @@ -68,12 +68,6 @@ public IWaitForContainerOS UntilMessageIsLogged(Regex pattern, Action - public virtual IWaitForContainerOS UntilOperationIsSucceeded(Func operation, int maxCallCount, Action waitStrategyModifier = null) - { - return AddCustomWaitStrategy(new UntilOperationIsSucceeded(operation, maxCallCount), waitStrategyModifier); - } - /// public virtual IWaitForContainerOS UntilHttpRequestIsSucceeded(Func request, Action waitStrategyModifier = null) { diff --git a/tests/Testcontainers.Tests/Unit/Configurations/WaitUntilOperationIsSucceededTest.cs b/tests/Testcontainers.Tests/Unit/Configurations/WaitUntilOperationIsSucceededTest.cs deleted file mode 100644 index ae5a2b022..000000000 --- a/tests/Testcontainers.Tests/Unit/Configurations/WaitUntilOperationIsSucceededTest.cs +++ /dev/null @@ -1,58 +0,0 @@ -namespace DotNet.Testcontainers.Tests.Unit -{ - using System; - using System.Linq; - using System.Threading.Tasks; - using DotNet.Testcontainers.Builders; - using DotNet.Testcontainers.Configurations; - using Xunit; - - public sealed class WaitUntilOperationIsSucceededTest - { - [Theory] - [InlineData(1, 1)] - [InlineData(2, 2)] - [InlineData(5, 5)] - [InlineData(10, 10)] - [InlineData(-1, 0)] - [InlineData(0, 0)] - public async Task UntilMaxRepeats(int maxTryCount, int expectedCount) - { - // Given - var tryCount = 0; - - // When - var wait = Wait.ForUnixContainer().UntilOperationIsSucceeded(() => ++tryCount < 0, maxTryCount).Build().Skip(1).Single(); - - // Then - await Assert.ThrowsAsync(() => WaitStrategy.WaitUntilAsync(() => wait.UntilAsync(null), TimeSpan.FromMilliseconds(25), TimeSpan.FromSeconds(5))) - .ConfigureAwait(true); - - Assert.Equal(expectedCount, tryCount); - } - - [Theory] - [InlineData(1, 1)] - [InlineData(2, 2)] - [InlineData(5, 5)] - [InlineData(10, 10)] - [InlineData(10, 1)] - [InlineData(10, 2)] - [InlineData(10, 5)] - [InlineData(10, 7)] - public async Task UntilSomeRepeats(int maxTryCount, int expectedCount) - { - // Given - var tryCount = 0; - - // When - var wait = Wait.ForUnixContainer().UntilOperationIsSucceeded(() => ++tryCount >= expectedCount, maxTryCount).Build().Skip(1).Single(); - - // Then - _ = await Record.ExceptionAsync(() => WaitStrategy.WaitUntilAsync(() => wait.UntilAsync(null), TimeSpan.FromMilliseconds(25), TimeSpan.FromSeconds(5))) - .ConfigureAwait(true); - - Assert.Equal(expectedCount, tryCount); - } - } -}