Skip to content

Commit 55fdc18

Browse files
committed
[FLINK-38723][common/composer] Add getFlinkConf method to Context.
1 parent b243c1a commit 55fdc18

2 files changed

Lines changed: 41 additions & 3 deletions

File tree

flink-cdc-composer/src/test/java/org/apache/flink/cdc/composer/flink/FlinkPipelineComposerTest.java

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,21 @@
2020
import org.apache.flink.cdc.common.configuration.ConfigOption;
2121
import org.apache.flink.cdc.common.configuration.Configuration;
2222
import org.apache.flink.cdc.common.factories.DataSinkFactory;
23+
import org.apache.flink.cdc.common.factories.DataSourceFactory;
2324
import org.apache.flink.cdc.common.factories.FactoryHelper;
2425
import org.apache.flink.cdc.common.pipeline.PipelineOptions;
2526
import org.apache.flink.cdc.common.sink.DataSink;
2627
import org.apache.flink.cdc.common.sink.EventSinkProvider;
2728
import org.apache.flink.cdc.common.sink.MetadataApplier;
29+
import org.apache.flink.cdc.common.source.DataSource;
2830
import org.apache.flink.cdc.composer.definition.PipelineDef;
2931
import org.apache.flink.cdc.composer.definition.SinkDef;
3032
import org.apache.flink.cdc.composer.definition.SourceDef;
3133
import org.apache.flink.cdc.composer.utils.FactoryDiscoveryUtils;
3234
import org.apache.flink.cdc.composer.utils.factory.DataSinkFactory1;
3335
import org.apache.flink.cdc.connectors.values.factory.ValuesDataFactory;
36+
import org.apache.flink.cdc.connectors.values.source.ValuesDataSource;
37+
import org.apache.flink.cdc.connectors.values.source.ValuesDataSourceHelper;
3438
import org.apache.flink.configuration.DeploymentOptions;
3539

3640
import org.apache.flink.shaded.guava31.com.google.common.collect.ImmutableMap;
@@ -83,7 +87,7 @@ void testGettingFlinkConfiguration() {
8387
FlinkPipelineComposer composer = FlinkPipelineComposer.ofMiniCluster();
8488
PipelineDef pipelineDef =
8589
new PipelineDef(
86-
new SourceDef(ValuesDataFactory.IDENTIFIER, null, new Configuration()),
90+
new SourceDef(TestDataSourceFactory.IDENTIFIER, null, new Configuration()),
8791
new SinkDef(TestDataSinkFactory.IDENTIFIER, null, new Configuration()),
8892
Collections.emptyList(),
8993
Collections.emptyList(),
@@ -93,7 +97,7 @@ void testGettingFlinkConfiguration() {
9397
composer.compose(pipelineDef);
9498
}
9599

96-
/** A dummy {@link DataSinkFactory} for testing. */
100+
/** A dummy {@link DataSinkFactory} that validates the execution target. */
97101
public static class TestDataSinkFactory implements DataSinkFactory {
98102

99103
public static final String IDENTIFIER = "test-sink-factory";
@@ -135,6 +139,39 @@ public Set<ConfigOption<?>> optionalOptions() {
135139
}
136140
}
137141

142+
/** A dummy {@link DataSourceFactory} that validates the execution target. */
143+
public static class TestDataSourceFactory implements DataSourceFactory {
144+
145+
public static final String IDENTIFIER = "test-source-factory";
146+
147+
@Override
148+
public DataSource createDataSource(Context context) {
149+
// This option has no default value.
150+
String target = context.getFlinkConf().get(DeploymentOptions.TARGET);
151+
if (!"local".equals(target)) {
152+
throw new IllegalArgumentException(
153+
"The flink configuration is invalid. Please check the pipeline configuration.");
154+
}
155+
return new ValuesDataSource(
156+
ValuesDataSourceHelper.EventSetId.SINGLE_SPLIT_SINGLE_TABLE, Integer.MAX_VALUE);
157+
}
158+
159+
@Override
160+
public String identifier() {
161+
return IDENTIFIER;
162+
}
163+
164+
@Override
165+
public Set<ConfigOption<?>> requiredOptions() {
166+
return new HashSet<>();
167+
}
168+
169+
@Override
170+
public Set<ConfigOption<?>> optionalOptions() {
171+
return new HashSet<>();
172+
}
173+
}
174+
138175
@ParameterizedTest
139176
@MethodSource
140177
void testInvalidPipelineConfiguration(Configuration pipelineConfig) {

flink-cdc-composer/src/test/resources/META-INF/services/org.apache.flink.cdc.common.factories.Factory

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ org.apache.flink.cdc.composer.utils.factory.DataSinkFactory2
1717
org.apache.flink.cdc.composer.utils.factory.DataSourceFactory1
1818
org.apache.flink.cdc.composer.utils.factory.DataSourceFactory2
1919
org.apache.flink.cdc.composer.testsource.factory.DistributedDataSourceFactory
20-
org.apache.flink.cdc.composer.flink.FlinkPipelineComposerTest$TestDataSinkFactory
20+
org.apache.flink.cdc.composer.flink.FlinkPipelineComposerTest$TestDataSinkFactory
21+
org.apache.flink.cdc.composer.flink.FlinkPipelineComposerTest$TestDataSourceFactory

0 commit comments

Comments
 (0)