This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 23ecfae32ff Refactor ShardingSphereProxyEmbeddedContainer (#36644)
23ecfae32ff is described below
commit 23ecfae32ff1ed6b3e368042a28c608ca37709fc
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Sep 20 14:20:02 2025 +0800
Refactor ShardingSphereProxyEmbeddedContainer (#36644)
* Refactor ShardingSphereProxyEmbeddedContainer
* Refactor ShardingSphereProxyEmbeddedContainer
* Refactor ShardingSphereProxyEmbeddedContainer
---
.../impl/ShardingSphereJdbcEmbeddedContainer.java | 11 ++-
.../impl/ShardingSphereProxyEmbeddedContainer.java | 82 +++++++++++-----------
2 files changed, 45 insertions(+), 48 deletions(-)
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/adapter/impl/ShardingSphereJdbcEmbeddedContainer.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/adapter/impl/ShardingSphereJdbcEmbeddedContainer.java
index 4ec0475d8ee..7113c8d121e 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/adapter/impl/ShardingSphereJdbcEmbeddedContainer.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/adapter/impl/ShardingSphereJdbcEmbeddedContainer.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.test.e2e.env.container.adapter.impl;
import com.zaxxer.hikari.HikariDataSource;
+import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.apache.shardingsphere.test.e2e.env.container.EmbeddedITContainer;
import
org.apache.shardingsphere.test.e2e.env.container.adapter.AdapterContainer;
@@ -37,6 +38,7 @@ import java.util.concurrent.atomic.AtomicReference;
/**
* ShardingSphere JDBC embedded container.
*/
+@RequiredArgsConstructor
public final class ShardingSphereJdbcEmbeddedContainer implements
EmbeddedITContainer, AdapterContainer {
private final StorageContainer storageContainer;
@@ -45,11 +47,6 @@ public final class ShardingSphereJdbcEmbeddedContainer
implements EmbeddedITCont
private final String configPath;
- public ShardingSphereJdbcEmbeddedContainer(final StorageContainer
storageContainer, final String configPath) {
- this.configPath = configPath;
- this.storageContainer = storageContainer;
- }
-
@Override
public void start() {
}
@@ -63,7 +60,6 @@ public final class ShardingSphereJdbcEmbeddedContainer
implements EmbeddedITCont
return targetDataSourceProvider.get();
}
- @SneakyThrows(IOException.class)
private DataSource createTargetDataSource() {
HikariDataSource result = new HikariDataSource();
result.setDriverClassName("org.apache.shardingsphere.driver.ShardingSphereDriver");
@@ -74,7 +70,8 @@ public final class ShardingSphereJdbcEmbeddedContainer
implements EmbeddedITCont
return result;
}
- private String processFile(final String filePath, final Map<String,
String> replacements) throws IOException {
+ @SneakyThrows(IOException.class)
+ private String processFile(final String filePath, final Map<String,
String> replacements) {
Path path = Paths.get(filePath);
String content = new String(Files.readAllBytes(path));
for (Entry<String, String> entry : replacements.entrySet()) {
diff --git
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/adapter/impl/ShardingSphereProxyEmbeddedContainer.java
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/adapter/impl/ShardingSphereProxyEmbeddedContainer.java
index 88232f48544..cf35fc14424 100644
---
a/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/adapter/impl/ShardingSphereProxyEmbeddedContainer.java
+++
b/test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/adapter/impl/ShardingSphereProxyEmbeddedContainer.java
@@ -98,32 +98,16 @@ public final class ShardingSphereProxyEmbeddedContainer
implements EmbeddedITCon
Collections.addAll(this.dependencies, dependencies);
}
- @Override
- public DataSource getTargetDataSource(final String serverLists) {
- DataSource dataSource = targetDataSourceProvider.get();
- if (null == dataSource) {
- DataSourceEnvironment dataSourceEnvironment =
DatabaseTypedSPILoader.getService(DataSourceEnvironment.class, databaseType);
-
targetDataSourceProvider.set(StorageContainerUtils.generateDataSource(dataSourceEnvironment.getURL(
- "127.0.0.1", 3307, config.getProxyDataSourceName()),
ProxyContainerConstants.USER, ProxyContainerConstants.PASSWORD, 2));
- }
- return targetDataSourceProvider.get();
- }
-
- @Override
- public String getAbbreviation() {
- return "proxy";
- }
-
@Override
public void start() {
dependencies.forEach(Startable::start);
- startInternalProxy();
+ startProxy();
new JdbcConnectCheckingWaitStrategy(() ->
getTargetDataSource(null).getConnection()).waitUntilReady(null);
}
@SneakyThrows({SQLException.class, IOException.class, SSLException.class,
InterruptedException.class})
- private void startInternalProxy() {
- YamlProxyConfiguration yamlConfig =
ProxyConfigurationLoader.load(getTempConfigDirectory().toString());
+ private void startProxy() {
+ YamlProxyConfiguration yamlConfig =
ProxyConfigurationLoader.load(getTempConfigurationDirectory().toString());
int port =
Integer.parseInt(ConfigurationPropertyKey.PROXY_DEFAULT_PORT.getDefaultValue());
new BootstrapInitializer().init(yamlConfig, port);
ProxySSLContext.init();
@@ -132,7 +116,7 @@ public final class ShardingSphereProxyEmbeddedContainer
implements EmbeddedITCon
log.info("ShardingSphere-Proxy {} mode started successfully",
ProxyContext.getInstance().getContextManager().getComputeNodeInstanceContext().getModeConfiguration().getType());
}
- private Path getTempConfigDirectory() throws IOException {
+ private Path getTempConfigurationDirectory() throws IOException {
Map<String, String> networkAliasAndHostLinkMap =
getNetworkAliasAndHostLinkMap();
Map<String, String> storageConnectionInfoMap =
getStorageConnectionInfoMap();
Path result = createTempDirectory().toPath();
@@ -168,6 +152,32 @@ public final class ShardingSphereProxyEmbeddedContainer
implements EmbeddedITCon
return result;
}
+ private Map<String, String> getStorageConnectionInfoMap() {
+ Map<String, String> result = new HashMap<>();
+ for (Startable each : dependencies) {
+ if (each instanceof NativeStorageContainer) {
+
result.putAll(getStorageConnectionInfoMap((NativeStorageContainer) each));
+ }
+ }
+ result.put("username: " + StorageContainerConstants.OPERATION_USER,
"username: " + E2ETestEnvironment.getInstance().getNativeStorageUsername());
+ result.put("password: " +
StorageContainerConstants.OPERATION_PASSWORD, "password: " +
E2ETestEnvironment.getInstance().getNativeStoragePassword());
+ return result;
+ }
+
+ private Map<String, String> getStorageConnectionInfoMap(final
NativeStorageContainer container) {
+ return container.getNetworkAliases().stream().collect(Collectors.toMap(
+ each -> each + ":" + container.getExposedPort(), each ->
E2ETestEnvironment.getInstance().getNativeStorageHost() + ":" +
E2ETestEnvironment.getInstance().getNativeStoragePort()));
+ }
+
+ private File createTempDirectory() {
+ try {
+ Path result = SystemUtils.IS_OS_MAC ?
Files.createTempDirectory(Paths.get(OS_MAC_TMP_DIR),
E2E_PROXY_CONFIG_TMP_DIR_PREFIX) :
Files.createTempDirectory(E2E_PROXY_CONFIG_TMP_DIR_PREFIX);
+ return result.toFile();
+ } catch (final IOException ex) {
+ return new File(E2E_PROXY_CONFIG_TMP_DIR_PREFIX +
Base58.randomString(5));
+ }
+ }
+
private void writeDirectoryToTempFile(final String originalKey, final File
file,
final Map<String, String>
aliasAndHostLinkMap, final Map<String, String> storageConnectionInfoMap, final
Path tempDirectory) throws IOException {
for (File each : file.listFiles()) {
@@ -196,30 +206,20 @@ public final class ShardingSphereProxyEmbeddedContainer
implements EmbeddedITCon
}
}
- private Map<String, String> getStorageConnectionInfoMap() {
- Map<String, String> result = new HashMap<>();
- for (Startable each : dependencies) {
- if (each instanceof NativeStorageContainer) {
-
result.putAll(getStorageConnectionInfoMap((NativeStorageContainer) each));
- }
+ @Override
+ public DataSource getTargetDataSource(final String serverLists) {
+ DataSource dataSource = targetDataSourceProvider.get();
+ if (null == dataSource) {
+ DataSourceEnvironment dataSourceEnvironment =
DatabaseTypedSPILoader.getService(DataSourceEnvironment.class, databaseType);
+
targetDataSourceProvider.set(StorageContainerUtils.generateDataSource(dataSourceEnvironment.getURL(
+ "127.0.0.1", 3307, config.getProxyDataSourceName()),
ProxyContainerConstants.USER, ProxyContainerConstants.PASSWORD, 2));
}
- result.put("username: " + StorageContainerConstants.OPERATION_USER,
"username: " + E2ETestEnvironment.getInstance().getNativeStorageUsername());
- result.put("password: " +
StorageContainerConstants.OPERATION_PASSWORD, "password: " +
E2ETestEnvironment.getInstance().getNativeStoragePassword());
- return result;
- }
-
- private Map<String, String> getStorageConnectionInfoMap(final
NativeStorageContainer container) {
- return container.getNetworkAliases().stream().collect(Collectors.toMap(
- each -> each + ":" + container.getExposedPort(), each ->
E2ETestEnvironment.getInstance().getNativeStorageHost() + ":" +
E2ETestEnvironment.getInstance().getNativeStoragePort()));
+ return targetDataSourceProvider.get();
}
- private File createTempDirectory() {
- try {
- Path result = SystemUtils.IS_OS_MAC ?
Files.createTempDirectory(Paths.get(OS_MAC_TMP_DIR),
E2E_PROXY_CONFIG_TMP_DIR_PREFIX) :
Files.createTempDirectory(E2E_PROXY_CONFIG_TMP_DIR_PREFIX);
- return result.toFile();
- } catch (final IOException ex) {
- return new File(E2E_PROXY_CONFIG_TMP_DIR_PREFIX +
Base58.randomString(5));
- }
+ @Override
+ public String getAbbreviation() {
+ return "proxy";
}
@Override