From 7d6d200872c3bae21f98ac7a9060dcce9169aa9a Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Fri, 3 Mar 2017 11:01:57 +0200 Subject: [PATCH] withCustomizer -> withCreateContainerCmdModifier. Add JavaDoc. --- .../containers/GenericContainer.java | 16 ++++++++++++---- .../junit/GenericContainerRuleTest.java | 6 +++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/GenericContainer.java b/core/src/main/java/org/testcontainers/containers/GenericContainer.java index 134baf65328..a166ca925b2 100644 --- a/core/src/main/java/org/testcontainers/containers/GenericContainer.java +++ b/core/src/main/java/org/testcontainers/containers/GenericContainer.java @@ -134,7 +134,7 @@ public class GenericContainer> private List> logConsumers = new ArrayList<>(); - private final Set> createContainerCmdHooks = new HashSet<>(); + private final Set> createContainerCmdMidifiers = new HashSet<>(); private static final Set AVAILABLE_IMAGE_NAME_CACHE = new HashSet<>(); private static final RateLimiter DOCKER_CLIENT_RATE_LIMITER = RateLimiterBuilder @@ -193,7 +193,7 @@ private void tryStart(Profiler profiler) { profiler.start("Create container"); CreateContainerCmd createCommand = dockerClient.createContainerCmd(dockerImageName); applyConfiguration(createCommand); - createContainerCmdHooks.forEach(hook -> hook.accept(createCommand)); + createContainerCmdMidifiers.forEach(hook -> hook.accept(createCommand)); containerId = createCommand.exec().getId(); ResourceReaper.instance().registerContainerForCleanup(containerId, dockerImageName); @@ -891,8 +891,16 @@ public void close() { stop(); } - public SELF withCustomizer(Consumer hook) { - createContainerCmdHooks.add(hook); + /** + * Allow low level modifications of {@link CreateContainerCmd} after it was pre-configured in {@link #tryStart(Profiler)}. + * Invocation happens eagerly on a moment when container is created. + * Warning: this does expose the underlying docker-java API so might change outside of our control. + * + * @param modifier {@link Consumer} of {@link CreateContainerCmd}. + * @return this + */ + public SELF withCreateContainerCmdModifier(Consumer modifier) { + createContainerCmdMidifiers.add(modifier); return self(); } diff --git a/core/src/test/java/org/testcontainers/junit/GenericContainerRuleTest.java b/core/src/test/java/org/testcontainers/junit/GenericContainerRuleTest.java index efbbc1a58ef..59d9cb2b34f 100644 --- a/core/src/test/java/org/testcontainers/junit/GenericContainerRuleTest.java +++ b/core/src/test/java/org/testcontainers/junit/GenericContainerRuleTest.java @@ -290,11 +290,11 @@ public void createContainerCmdHookTest() { try( GenericContainer container = new GenericContainer<>("redis:3.0.2") .withCommand("redis-server", "--help") - .withCustomizer(cmd -> cmd.withName("overrideMe")) + .withCreateContainerCmdModifier(cmd -> cmd.withName("overrideMe")) // Preserves the order - .withCustomizer(cmd -> cmd.withName(randomName)) + .withCreateContainerCmdModifier(cmd -> cmd.withName(randomName)) // Allows to override pre-configured values by GenericContainer - .withCustomizer(cmd -> cmd.withCmd("redis-server", "--port", "6379")) + .withCreateContainerCmdModifier(cmd -> cmd.withCmd("redis-server", "--port", "6379")) ) { container.start();