Esempio n. 1
0
 public ITestcontainersBuilder <T> WithWaitStrategy(IWaitUntil waitStrategy)
 {
     return(Build(this, new TestcontainersConfiguration
     {
         WaitStrategy = waitStrategy,
     }));
 }
Esempio n. 2
0
        /// <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;
        }
Esempio n. 4
0
#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;
 }
Esempio n. 7
0
 public ITestcontainersBuilder <TDockerContainer> WithWaitStrategy(IWaitUntil waitStrategy)
 {
     return(Build(this, Apply(waitStrategy: waitStrategy)));
 }