Class SafeNamedContainerStarter<C extends org.testcontainers.containers.GenericContainer<?>>

java.lang.Object
software.xdev.tci.safestart.SafeNamedContainerStarter<C>
All Implemented Interfaces:
Runnable

public class SafeNamedContainerStarter<C extends org.testcontainers.containers.GenericContainer<?>> extends Object implements Runnable
It's not possible to start a container with e.g. the same name, port bindings, etc. with startupAttempts > 1, which is the default in a few containers (e.g. MariaDB or Selenium-Browsers).

SafeNamedContainerStarter addresses these problems by

  • ensuring that after every started container has a unique name (addresses the name problem)
  • removing previously failed started containers (addresses the port and other problems)
  • Field Details

    • LOG

      protected static final org.slf4j.Logger LOG
    • baseContainerName

      protected final String baseContainerName
    • containerNames

      protected final List<String> containerNames
    • container

      protected final C extends org.testcontainers.containers.GenericContainer<?> container
    • starter

      protected final Consumer<C extends org.testcontainers.containers.GenericContainer<?>> starter
    • attachRandomUUID

      protected boolean attachRandomUUID
  • Constructor Details

    • SafeNamedContainerStarter

      public SafeNamedContainerStarter(String baseContainerName, C container)
    • SafeNamedContainerStarter

      public SafeNamedContainerStarter(String baseContainerName, C container, Consumer<C> starter)
  • Method Details

    • withAttachRandomUUID

      public SafeNamedContainerStarter<C> withAttachRandomUUID(boolean attachRandomUUID)
    • run

      public void run()
      Specified by:
      run in interface Runnable
    • start

      public void start()
    • tryCleanupContainerAfterStartFail

      protected void tryCleanupContainerAfterStartFail(List<String> containerNames)