Class MiniClusterExtension
- All Implemented Interfaces:
org.junit.jupiter.api.extension.AfterAllCallback,org.junit.jupiter.api.extension.AfterEachCallback,org.junit.jupiter.api.extension.BeforeAllCallback,org.junit.jupiter.api.extension.BeforeEachCallback,org.junit.jupiter.api.extension.Extension,org.junit.jupiter.api.extension.ParameterResolver
MiniCluster and registers the StreamExecutionEnvironment in the
correct thread local environment.
Example usage:
@ExtendWith(MiniClusterExtension.class)
class MyTest {
@Test
public void myTest() {
ExecutionEnvironment execEnv = ExecutionEnvironment.getExecutionEnvironment();
}
}
Or to tune the MiniCluster parameters:
class MyTest {
@RegisterExtension
public static final MiniClusterExtension MINI_CLUSTER_RESOURCE =
new MiniClusterExtension(
new MiniClusterResourceConfiguration.Builder()
.setNumberTaskManagers(1)
.setConfiguration(new Configuration())
.build());
@Test
public void myTest() {
ExecutionEnvironment execEnv = ExecutionEnvironment.getExecutionEnvironment();
}
}
You can use parameter injection with the annotations InjectMiniCluster, InjectClusterClient, InjectClusterRESTAddress, InjectClusterClientConfiguration:
class MyTest {
@RegisterExtension
public static final MiniClusterExtension MINI_CLUSTER_RESOURCE =
new MiniClusterExtension(
new MiniClusterResourceConfiguration.Builder()
.setNumberTaskManagers(1)
.setConfiguration(new Configuration())
.build());
@Test
public void myTest(@InjectMiniCluster MiniCluster miniCluster) {
// Use miniCluster
}
@Test
public void myTest(@InjectClusterClient ClusterClient<?> clusterClient) {
// clusterClient here is an instance of MiniClusterClient
}
@Test
public void myTest(@InjectClusterClient RestClusterClient<?> restClusterClient) {
// Using RestClusterClient as parameter type will force the creation of a RestClusterClient,
// rather than MiniClusterClient
}
}
You can use it both with programmatic and declarative extension annotations. Check <a href="https://junit.org/junit5/docs/snapshot/user-guide/#extensions-registration>JUnit 5 docs for more details.
This extension by default creates one MiniCluster per test class. If you need one
instance of MiniCluster per test, we suggest you to instantiate it manually in your test
code.
This extension works correctly with parallel tests and with parametrized tests, but it doesn't
work when combining TestFactory and parallel tests, because of some limitations. Use ParameterizedTest instead.
-
Constructor Summary
ConstructorsConstructorDescriptionMiniClusterExtension(Supplier<org.apache.flink.runtime.testutils.MiniClusterResourceConfiguration> miniClusterResourceConfigurationSupplier) MiniClusterExtension(org.apache.flink.runtime.testutils.MiniClusterResourceConfiguration miniClusterResourceConfiguration) -
Method Summary
Modifier and TypeMethodDescriptionvoidafterAll(org.junit.jupiter.api.extension.ExtensionContext context) voidafterEach(org.junit.jupiter.api.extension.ExtensionContext context) voidbeforeAll(org.junit.jupiter.api.extension.ExtensionContext context) voidbeforeEach(org.junit.jupiter.api.extension.ExtensionContext context) org.apache.flink.configuration.ConfigurationbooleanresolveParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) booleansupportsParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext)
-
Constructor Details
-
MiniClusterExtension
public MiniClusterExtension() -
MiniClusterExtension
public MiniClusterExtension(org.apache.flink.runtime.testutils.MiniClusterResourceConfiguration miniClusterResourceConfiguration) -
MiniClusterExtension
@Experimental public MiniClusterExtension(Supplier<org.apache.flink.runtime.testutils.MiniClusterResourceConfiguration> miniClusterResourceConfigurationSupplier)
-
-
Method Details
-
supportsParameter
public boolean supportsParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws org.junit.jupiter.api.extension.ParameterResolutionException - Specified by:
supportsParameterin interfaceorg.junit.jupiter.api.extension.ParameterResolver- Throws:
org.junit.jupiter.api.extension.ParameterResolutionException
-
resolveParameter
public Object resolveParameter(org.junit.jupiter.api.extension.ParameterContext parameterContext, org.junit.jupiter.api.extension.ExtensionContext extensionContext) throws org.junit.jupiter.api.extension.ParameterResolutionException - Specified by:
resolveParameterin interfaceorg.junit.jupiter.api.extension.ParameterResolver- Throws:
org.junit.jupiter.api.extension.ParameterResolutionException
-
beforeAll
- Specified by:
beforeAllin interfaceorg.junit.jupiter.api.extension.BeforeAllCallback- Throws:
Exception
-
beforeEach
- Specified by:
beforeEachin interfaceorg.junit.jupiter.api.extension.BeforeEachCallback- Throws:
Exception
-
afterEach
- Specified by:
afterEachin interfaceorg.junit.jupiter.api.extension.AfterEachCallback- Throws:
Exception
-
afterAll
- Specified by:
afterAllin interfaceorg.junit.jupiter.api.extension.AfterAllCallback- Throws:
Exception
-
getTestStreamEnvironment
-
getClientConfiguration
public org.apache.flink.configuration.Configuration getClientConfiguration() -
getNumberSlots
-
isRunning
public boolean isRunning()
-