This is an automated email from the ASF dual-hosted git repository. chesnay pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/flink.git
commit 881d4c6cb2094d6c3b37a5cc33dfe09918d02771 Author: Chesnay Schepler <[email protected]> AuthorDate: Thu Feb 24 14:19:14 2022 +0100 [hotfix][tests] Lazily create MiniClusterResourceConfiguraiton Certain configuration parameters (e.g., ports) are inferred from other extensions. As extensions commonly only really start up resources in before*() methods the current approach of determining the configuration up-front imposes limitations as to whether a MiniClusterExtension can be static or not. With this change the configuration can also be passed in with a Supplier that is evaluated right before the cluster is started. --- .../runtime/testutils/MiniClusterExtension.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/testutils/MiniClusterExtension.java b/flink-runtime/src/test/java/org/apache/flink/runtime/testutils/MiniClusterExtension.java index a6f7a37..0e1115c 100644 --- a/flink-runtime/src/test/java/org/apache/flink/runtime/testutils/MiniClusterExtension.java +++ b/flink-runtime/src/test/java/org/apache/flink/runtime/testutils/MiniClusterExtension.java @@ -18,21 +18,35 @@ package org.apache.flink.runtime.testutils; +import org.apache.flink.annotation.Experimental; import org.apache.flink.configuration.UnmodifiableConfiguration; import org.apache.flink.core.testutils.CustomExtension; import org.apache.flink.runtime.minicluster.MiniCluster; import org.junit.jupiter.api.extension.ExtensionContext; +import javax.annotation.Nullable; + import java.net.URI; +import java.util.function.Supplier; /** An extension which starts a {@link MiniCluster} for testing purposes. */ public class MiniClusterExtension implements CustomExtension { - private final MiniClusterResource miniClusterResource; + + private final Supplier<MiniClusterResourceConfiguration> + miniClusterResourceConfigurationSupplier; + @Nullable private MiniClusterResource miniClusterResource; public MiniClusterExtension( final MiniClusterResourceConfiguration miniClusterResourceConfiguration) { - this.miniClusterResource = new MiniClusterResource(miniClusterResourceConfiguration); + this(() -> miniClusterResourceConfiguration); + } + + @Experimental + public MiniClusterExtension( + final Supplier<MiniClusterResourceConfiguration> + miniClusterResourceConfigurationSupplier) { + this.miniClusterResourceConfigurationSupplier = miniClusterResourceConfigurationSupplier; } public int getNumberSlots() { @@ -53,6 +67,8 @@ public class MiniClusterExtension implements CustomExtension { @Override public void before(ExtensionContext context) throws Exception { + this.miniClusterResource = + new MiniClusterResource(miniClusterResourceConfigurationSupplier.get()); miniClusterResource.before(); }
