Skip to content

Commit d616250

Browse files
committed
[Improve][E2E] Reduce the times of copy connector jar to container
1 parent 69cd4ae commit d616250

File tree

1 file changed

+31
-11
lines changed
  • seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/util

1 file changed

+31
-11
lines changed

Diff for: seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/util/ContainerUtil.java

+31-11
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,16 @@ public static void copyConnectorJarToContainer(
9494
Set<String> connectorNames = getConnectors(jobConfig, connectors, "source");
9595
connectorNames.addAll(getConnectors(jobConfig, connectors, "sink"));
9696
File module = new File(PROJECT_ROOT_PATH + File.separator + connectorsRootPath);
97-
9897
List<File> connectorFiles = getConnectorFiles(module, connectorNames, connectorPrefix);
99-
connectorFiles.forEach(
100-
jar ->
101-
container.copyFileToContainer(
102-
MountableFile.forHostPath(jar.getAbsolutePath()),
103-
Paths.get(seatunnelHome, "connectors", jar.getName()).toString()));
98+
List<String> jars = getAlreadyInContainerConnectors(container, seatunnelHome);
99+
connectorFiles.stream()
100+
.filter(jar -> !jars.contains(jar.getName()))
101+
.forEach(
102+
jar ->
103+
container.copyFileToContainer(
104+
MountableFile.forHostPath(jar.getAbsolutePath()),
105+
Paths.get(seatunnelHome, "connectors", jar.getName())
106+
.toString()));
104107
}
105108

106109
public static void copyAllConnectorJarToContainer(
@@ -126,11 +129,15 @@ public static void copyAllConnectorJarToContainer(
126129
connectors.getConfig(pluginType.getType()))));
127130
File module = new File(PROJECT_ROOT_PATH + File.separator + connectorsRootPath);
128131
List<File> connectorFiles = getConnectorFiles(module, connectorNames, connectorPrefix);
129-
connectorFiles.forEach(
130-
jar ->
131-
container.copyFileToContainer(
132-
MountableFile.forHostPath(jar.getAbsolutePath()),
133-
Paths.get(seatunnelHome, "connectors", jar.getName()).toString()));
132+
List<String> jars = getAlreadyInContainerConnectors(container, seatunnelHome);
133+
connectorFiles.stream()
134+
.filter(jar -> !jars.contains(jar.getName()))
135+
.forEach(
136+
jar ->
137+
container.copyFileToContainer(
138+
MountableFile.forHostPath(jar.getAbsolutePath()),
139+
Paths.get(seatunnelHome, "connectors", jar.getName())
140+
.toString()));
134141
}
135142

136143
public static Set<String> getConnectorNames(Config config) {
@@ -155,6 +162,19 @@ public static Set<String> getConnectorIdentifier(String connectorType, String pl
155162
return treeSet;
156163
}
157164

165+
private static List<String> getAlreadyInContainerConnectors(
166+
GenericContainer<?> container, String seatunnelHome) {
167+
try {
168+
Container.ExecResult execResult =
169+
container.execInContainer(
170+
"ls", Paths.get(seatunnelHome, "connectors").toString());
171+
String result = execResult.getStdout();
172+
return Arrays.stream(result.split("\n")).collect(Collectors.toList());
173+
} catch (Exception e) {
174+
throw new RuntimeException(e);
175+
}
176+
}
177+
158178
public static String copyConfigFileToContainer(GenericContainer<?> container, String confFile) {
159179
final String targetConfInContainer = Paths.get("/tmp", confFile).toString();
160180
container.copyFileToContainer(

0 commit comments

Comments
 (0)