You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2022/02/24 15:56:39 UTC

[flink] 01/03: [hotfix][tests] Lazily create MiniClusterResourceConfiguraiton

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 <ch...@apache.org>
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();
     }