or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

index.mdmetrics-testing.mdminicluster-management.mdresult-verification.mdspecialized-connectors.mdtest-data-sources.mdtest-environments.mdvalidation-utilities.md

minicluster-management.mddocs/

0

# MiniCluster Management

1

2

JUnit integration components for managing Flink MiniCluster lifecycle, providing embedded cluster environments for testing Flink applications with support for both JUnit 4 and JUnit 5 frameworks.

3

4

## Capabilities

5

6

### JUnit 5 MiniCluster Extension

7

8

Manages MiniCluster lifecycle as a JUnit 5 extension with automatic startup, shutdown, and configuration management. Supports parameter injection and provides access to test environments and cluster clients.

9

10

```java { .api }

11

@Experimental

12

public class MiniClusterExtension implements BeforeAllCallback, AfterAllCallback, ParameterResolver {

13

public MiniClusterExtension();

14

public MiniClusterExtension(MiniClusterResourceConfiguration configuration);

15

public MiniClusterExtension(Supplier<MiniClusterResourceConfiguration> configurationSupplier);

16

17

public TestStreamEnvironment getTestStreamEnvironment();

18

public Configuration getClientConfiguration();

19

public Integer getNumberSlots();

20

public boolean isRunning();

21

}

22

```

23

24

#### Usage Example

25

26

```java

27

import org.apache.flink.test.junit5.MiniClusterExtension;

28

import org.apache.flink.test.junit5.InjectClusterClient;

29

import org.apache.flink.client.ClusterClient;

30

import org.junit.jupiter.api.Test;

31

import org.junit.jupiter.api.extension.RegisterExtension;

32

33

public class MyStreamingTest {

34

35

@RegisterExtension

36

static final MiniClusterExtension MINI_CLUSTER_EXTENSION =

37

new MiniClusterExtension();

38

39

@Test

40

void testWithDefaultCluster() throws Exception {

41

StreamExecutionEnvironment env =

42

MINI_CLUSTER_EXTENSION.getTestStreamEnvironment();

43

// Test implementation

44

}

45

46

@Test

47

void testWithInjectedClient(@InjectClusterClient ClusterClient<?> client) {

48

// Use injected cluster client

49

}

50

}

51

```

52

53

### Parameter Injection Annotation

54

55

Annotation for injecting cluster client instances into test method parameters, supporting both ClusterClient and RestClusterClient types.

56

57

```java { .api }

58

@Target(ElementType.PARAMETER)

59

@Retention(RetentionPolicy.RUNTIME)

60

@Experimental

61

public @interface InjectClusterClient {

62

}

63

```

64

65

### JUnit 4 MiniCluster Resource

66

67

JUnit 4 resource that manages MiniCluster lifecycle with client access, providing compatibility for legacy test suites.

68

69

```java { .api }

70

public class MiniClusterWithClientResource extends ExternalResource {

71

public ClusterClient<?> getClusterClient();

72

public RestClusterClient<?> getRestClusterClient();

73

public TestStreamEnvironment getTestStreamEnvironment();

74

}

75

```

76

77

#### Usage Example

78

79

```java

80

import org.apache.flink.test.util.MiniClusterWithClientResource;

81

import org.junit.ClassRule;

82

import org.junit.Test;

83

84

public class MyJUnit4Test {

85

86

@ClassRule

87

public static MiniClusterWithClientResource miniClusterResource =

88

new MiniClusterWithClientResource();

89

90

@Test

91

public void testStreamingJob() throws Exception {

92

StreamExecutionEnvironment env =

93

miniClusterResource.getTestStreamEnvironment();

94

// Test implementation

95

}

96

}

97

```

98

99

### Abstract Test Base Classes

100

101

Base classes providing MiniCluster integration and temporary file management for common testing patterns.

102

103

```java { .api }

104

public abstract class AbstractTestBase {

105

protected String getTempDirPath(String dirName);

106

protected String getTempFilePath(String fileName);

107

protected String createTempFile(String fileName, String contents) throws IOException;

108

protected File createAndRegisterTempFile(String fileName) throws IOException;

109

}

110

111

public abstract class AbstractTestBaseJUnit4 {

112

// Same API as AbstractTestBase but for JUnit 4

113

}

114

```

115

116

### Parameterized Test Bases

117

118

Base classes for running multiple test programs with parameter variations and execution mode configurations.

119

120

```java { .api }

121

public abstract class MultipleProgramsTestBase extends AbstractTestBase {

122

public enum TestExecutionMode {

123

CLUSTER,

124

CLUSTER_OBJECT_REUSE

125

}

126

}

127

128

public abstract class MultipleProgramsTestBaseJUnit4 extends AbstractTestBaseJUnit4 {

129

// JUnit 4 version of MultipleProgramsTestBase

130

}

131

```

132

133

### Single Program Test Bases

134

135

Base classes for single test programs with object reuse variations and execution result tracking.

136

137

```java { .api }

138

public abstract class JavaProgramTestBase extends AbstractTestBase {

139

public abstract JobExecutionResult testProgram() throws Exception;

140

141

public void setNumberOfTestRepetitions(int numberOfRepetitions);

142

public int getParallelism();

143

public JobExecutionResult getLatestExecutionResult();

144

public boolean isCollectionExecution();

145

}

146

147

public abstract class JavaProgramTestBaseJUnit4 extends AbstractTestBaseJUnit4 {

148

// JUnit 4 version of JavaProgramTestBase

149

}

150

```

151

152

## Configuration Types

153

154

### MiniCluster Resource Configuration

155

156

Configuration for MiniCluster setup including parallelism, task manager resources, and cluster settings.

157

158

```java { .api }

159

public class MiniClusterResourceConfiguration {

160

public int getNumberTaskManagers();

161

public int getNumberSlotsPerTaskManager();

162

public Configuration getConfiguration();

163

// Additional configuration methods

164

}

165

```