Skip to content

Commit 3837077

Browse files
authored
Use SPI to handle StorageContainerConfigurationOption (#36576)
1 parent 04e8a91 commit 3837077

File tree

16 files changed

+77
-81
lines changed

16 files changed

+77
-81
lines changed

test/e2e/agent/engine/src/test/java/org/apache/shardingsphere/test/e2e/agent/engine/env/AgentE2ETestEnvironment.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import lombok.Getter;
2323
import lombok.NoArgsConstructor;
2424
import lombok.extern.slf4j.Slf4j;
25+
import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
2526
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
2627
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
2728
import org.apache.shardingsphere.test.e2e.agent.engine.container.ShardingSphereJdbcAgentContainer;
@@ -38,7 +39,7 @@
3839
import org.apache.shardingsphere.test.e2e.env.container.atomic.enums.AdapterType;
3940
import org.apache.shardingsphere.test.e2e.env.container.atomic.governance.GovernanceContainer;
4041
import org.apache.shardingsphere.test.e2e.env.container.atomic.governance.GovernanceContainerFactory;
41-
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOptionFactory;
42+
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOption;
4243
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.type.docker.DockerStorageContainer;
4344
import org.awaitility.Awaitility;
4445
import org.testcontainers.containers.output.OutputFrame;
@@ -115,7 +116,8 @@ private void createProxyEnvironment(final DockerITContainer agentPluginContainer
115116
containers = new ITContainers();
116117
ShardingSphereProxyClusterContainer proxyContainer = new ShardingSphereProxyClusterContainer(databaseType, getAdaptorContainerConfiguration());
117118
proxyContainer.withLogConsumer(testConfig.isLogEnabled() ? this::collectLogs : null);
118-
DockerStorageContainer storageContainer = new DockerStorageContainer(databaseType, imageConfig.getMysqlImage(), StorageContainerConfigurationOptionFactory.newInstance(databaseType), null);
119+
DockerStorageContainer storageContainer = new DockerStorageContainer(
120+
databaseType, imageConfig.getMysqlImage(), DatabaseTypedSPILoader.getService(StorageContainerConfigurationOption.class, databaseType), null);
119121
proxyContainer.dependsOn(storageContainer);
120122
containers.registerContainer(storageContainer);
121123
GovernanceContainer governanceContainer = GovernanceContainerFactory.newInstance("ZooKeeper");
@@ -146,7 +148,8 @@ private AdaptorContainerConfiguration getAdaptorContainerConfiguration() {
146148

147149
private void createJDBCEnvironment(final DockerITContainer agentPluginContainer) {
148150
containers = new ITContainers();
149-
DockerStorageContainer storageContainer = new DockerStorageContainer(databaseType, imageConfig.getMysqlImage(), StorageContainerConfigurationOptionFactory.newInstance(databaseType), null);
151+
DockerStorageContainer storageContainer = new DockerStorageContainer(
152+
databaseType, imageConfig.getMysqlImage(), DatabaseTypedSPILoader.getService(StorageContainerConfigurationOption.class, databaseType), null);
150153
ShardingSphereJdbcAgentContainer jdbcAgentContainer = new ShardingSphereJdbcAgentContainer(
151154
imageConfig.getJdbcProjectImage(), testConfig.getPluginType(), testConfig.isLogEnabled() ? this::collectLogs : null);
152155
jdbcAgentContainer.dependsOn(storageContainer);

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/StorageContainerConfigurationOption.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option;
1919

20+
import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPI;
21+
2022
import java.util.Collection;
2123
import java.util.List;
2224
import java.util.Map;
@@ -25,7 +27,7 @@
2527
/**
2628
* Storage container configuration option.
2729
*/
28-
public interface StorageContainerConfigurationOption {
30+
public interface StorageContainerConfigurationOption extends DatabaseTypedSPI {
2931

3032
/**
3133
* Get container port.

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/StorageContainerConfigurationOptionFactory.java

Lines changed: 0 additions & 60 deletions
This file was deleted.

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/HiveStorageContainerConfigurationOption.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,9 @@ public Optional<String> getDefaultDatabaseName(final int majorVersion) {
8484
public long getStartupTimeoutSeconds() {
8585
return 180L;
8686
}
87+
88+
@Override
89+
public String getDatabaseType() {
90+
return "Hive";
91+
}
8792
}

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/MariaDBStorageContainerConfigurationOption.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,9 @@ public Optional<String> getDefaultDatabaseName(final int majorVersion) {
8484
public long getStartupTimeoutSeconds() {
8585
return 120L;
8686
}
87+
88+
@Override
89+
public String getDatabaseType() {
90+
return "MariaDB";
91+
}
8792
}

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/MySQLStorageContainerConfigurationOption.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,9 @@ public Optional<String> getDefaultDatabaseName(final int majorVersion) {
9090
public long getStartupTimeoutSeconds() {
9191
return 120L;
9292
}
93+
94+
@Override
95+
public String getDatabaseType() {
96+
return "MySQL";
97+
}
9398
}

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/OpenGaussStorageContainerConfigurationOption.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,9 @@ public Optional<String> getDefaultDatabaseName(final int majorVersion) {
8181
public long getStartupTimeoutSeconds() {
8282
return 120L;
8383
}
84+
85+
@Override
86+
public String getDatabaseType() {
87+
return "openGauss";
88+
}
8489
}

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/option/dialect/PostgreSQLStorageContainerConfigurationOption.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import java.util.Optional;
2929

3030
/**
31-
* Storage container configuration option for PostgreSQL.
31+
* Storage container configuration option for PostgreSQL.
3232
*/
3333
public final class PostgreSQLStorageContainerConfigurationOption implements StorageContainerConfigurationOption {
3434

@@ -84,4 +84,9 @@ public Optional<String> getDefaultDatabaseName(final int majorVersion) {
8484
public long getStartupTimeoutSeconds() {
8585
return 120L;
8686
}
87+
88+
@Override
89+
public String getDatabaseType() {
90+
return "PostgreSQL";
91+
}
8792
}

test/e2e/env/src/test/java/org/apache/shardingsphere/test/e2e/env/container/atomic/storage/type/natived/NativeStorageContainer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919

2020
import lombok.Getter;
2121
import lombok.Setter;
22+
import org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
2223
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
2324
import org.apache.shardingsphere.test.e2e.env.container.atomic.constants.StorageContainerConstants;
2425
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.StorageContainer;
2526
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.mount.MountSQLResourceGenerator;
2627
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOption;
27-
import org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.StorageContainerConfigurationOptionFactory;
2828
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.SQLScriptUtils;
2929
import org.apache.shardingsphere.test.e2e.env.container.atomic.util.StorageContainerUtils;
3030
import org.apache.shardingsphere.test.e2e.env.runtime.DataSourceEnvironment;
@@ -65,7 +65,7 @@ public final class NativeStorageContainer implements StorageContainer {
6565
public NativeStorageContainer(final DatabaseType databaseType, final String scenario) {
6666
this.databaseType = databaseType;
6767
this.scenario = scenario;
68-
option = StorageContainerConfigurationOptionFactory.newInstance(databaseType);
68+
option = DatabaseTypedSPILoader.findService(StorageContainerConfigurationOption.class, databaseType).orElse(null);
6969
initDatabase();
7070
actualDataSourceMap = createDataSourceMap(Type.ACTUAL);
7171
expectedDataSourceMap = createDataSourceMap(Type.EXPECTED);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#
2+
# Licensed to the Apache Software Foundation (ASF) under one or more
3+
# contributor license agreements. See the NOTICE file distributed with
4+
# this work for additional information regarding copyright ownership.
5+
# The ASF licenses this file to You under the Apache License, Version 2.0
6+
# (the "License"); you may not use this file except in compliance with
7+
# the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
#
17+
18+
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.dialect.MySQLStorageContainerConfigurationOption
19+
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.dialect.PostgreSQLStorageContainerConfigurationOption
20+
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.dialect.MariaDBStorageContainerConfigurationOption
21+
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.dialect.OpenGaussStorageContainerConfigurationOption
22+
org.apache.shardingsphere.test.e2e.env.container.atomic.storage.option.dialect.HiveStorageContainerConfigurationOption

0 commit comments

Comments
 (0)