public ITestcontainersBuilder <T> WithWaitStrategy(IWaitUntil waitStrategy) { return(Build(this, new TestcontainersConfiguration { WaitStrategy = waitStrategy, })); }
/// <summary> /// Merges all existing and new Testcontainer configuration changes. This allows us to reuse previous configured configurations, <seealso cref="TestcontainersBuilder{T}" />. /// </summary> /// <param name="old">Previous Testcontainer configuration.</param> /// <returns>An updated Testcontainer configuration.</returns> internal TestcontainersConfiguration Merge(TestcontainersConfiguration old) { this.Container.Image = Merge(this.Container.Image, old.Container.Image); this.Container.Name = Merge(this.Container.Name, old.Container.Name); this.Container.WorkingDirectory = Merge(this.Container.WorkingDirectory, old.Container.WorkingDirectory); this.Container.Entrypoint = Merge(this.Container.Entrypoint, old.Container.Entrypoint); this.Container.Command = Merge(this.Container.Command, old.Container.Command); this.Container.Environments = Merge(this.Container.Environments, old.Container.Environments); this.Container.ExposedPorts = Merge(this.Container.ExposedPorts, old.Container.ExposedPorts); this.Container.Labels = Merge(this.Container.Labels, old.Container.Labels); this.Host.PortBindings = Merge(this.Host.PortBindings, old.Host.PortBindings); this.Host.Mounts = Merge(this.Host.Mounts, old.Host.Mounts); this.CleanUp = this.CleanUp && old.CleanUp; this.OutputConsumer = Merge(this.OutputConsumer, old.OutputConsumer, DefaultOutputConsumer); this.WaitStrategy = Merge(this.WaitStrategy, old.WaitStrategy, DefaultWaitStrategy); return(this); }
#pragma warning disable S107 public TestcontainersConfiguration( Uri endpoint, IDockerImage image, string name, string workingDirectory, IEnumerable <string> entrypoint, IEnumerable <string> command, IReadOnlyDictionary <string, string> environments, IReadOnlyDictionary <string, string> labels, IReadOnlyDictionary <string, string> exposedPorts, IReadOnlyDictionary <string, string> portBindings, IEnumerable <IBind> mounts, IOutputConsumer outputConsumer, IWaitUntil waitStrategy, bool cleanUp = true) { this.CleanUp = cleanUp; this.Endpoint = endpoint; this.Image = image; this.Name = name; this.WorkingDirectory = workingDirectory; this.Entrypoint = entrypoint; this.Command = command; this.Environments = environments; this.Labels = labels; this.ExposedPorts = exposedPorts; this.PortBindings = portBindings; this.Mounts = mounts; this.OutputConsumer = outputConsumer; this.WaitStrategy = waitStrategy; }
#pragma warning disable S107 private static ITestcontainersConfiguration Apply( Uri endpoint = null, IDockerImage image = null, string name = null, string workingDirectory = null, IEnumerable <string> entrypoint = null, IEnumerable <string> command = null, IReadOnlyDictionary <string, string> environments = null, IReadOnlyDictionary <string, string> labels = null, IReadOnlyDictionary <string, string> exposedPorts = null, IReadOnlyDictionary <string, string> portBindings = null, IEnumerable <IBind> mounts = null, IOutputConsumer outputConsumer = null, IWaitUntil waitStrategy = null, bool cleanUp = true) { return(new TestcontainersConfiguration( endpoint ?? DockerApiEndpoint.Local, image, name, workingDirectory, entrypoint, command, environments, labels, exposedPorts, portBindings, mounts, outputConsumer ?? OutputConsumerNull.Consumer, waitStrategy ?? WaitUntilContainerIsRunning.WaitStrategy, cleanUp)); }
/// <inheritdoc /> public virtual IWaitForContainerOS AddCustomWaitStrategy(IWaitUntil waitStrategy) { this.waitStrategies.Add(waitStrategy); return(this); }
public WaitUntilOperationSucceeded(Func <bool> operation, int maxCallCount, IWaitUntil containerIsRunningWaitStrategy) { this.maxCallCount = maxCallCount; this.operation = operation; this.containerIsRunningWaitStrategy = containerIsRunningWaitStrategy; }
public ITestcontainersBuilder <TDockerContainer> WithWaitStrategy(IWaitUntil waitStrategy) { return(Build(this, Apply(waitStrategy: waitStrategy))); }