This is an automated email from the ASF dual-hosted git repository.

panjuan 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 2339b6e  Add GovernanceContainer (#15374)
2339b6e is described below

commit 2339b6ec7bfd7be6eaba0c3ea7e0589869b4b0fa
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Feb 12 13:03:24 2022 +0800

    Add GovernanceContainer (#15374)
---
 ...eperContainer.java => GovernanceContainer.java} | 12 ++++----
 ...tainer.java => GovernanceContainerFactory.java} | 32 ++++++++++++----------
 .../governance/{ => impl}/ZookeeperContainer.java  | 12 +++-----
 .../compose/mode/ClusterComposedContainer.java     | 17 ++++++------
 4 files changed, 36 insertions(+), 37 deletions(-)

diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/GovernanceContainer.java
similarity index 80%
copy from 
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
copy to 
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/GovernanceContainer.java
index d2a5d9e..e57f392 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/GovernanceContainer.java
@@ -21,12 +21,12 @@ import 
org.apache.shardingsphere.test.integration.framework.container.atomic.Sha
 import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
 
 /**
- * Zookeeper container.
+ * Governance container.
  */
-public final class ZookeeperContainer extends ShardingSphereContainer {
+public abstract class GovernanceContainer extends ShardingSphereContainer {
     
-    public ZookeeperContainer() {
-        super("zookeeper", "zookeeper:3.6.2", false);
+    public GovernanceContainer(final String name, final String 
dockerImageName, final boolean isFakedContainer) {
+        super(name, dockerImageName, isFakedContainer);
         setWaitStrategy(new 
LogMessageWaitStrategy().withRegEx(".*PrepRequestProcessor \\(sid:[0-9]+\\) 
started.*"));
     }
     
@@ -35,7 +35,5 @@ public final class ZookeeperContainer extends 
ShardingSphereContainer {
      *
      * @return server list
      */
-    public String getServerLists() {
-        return getHost() + ":" + getMappedPort(2181);
-    }
+    public abstract String getServerLists();
 }
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/GovernanceContainerFactory.java
similarity index 56%
copy from 
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
copy to 
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/GovernanceContainerFactory.java
index d2a5d9e..754e1f4 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/GovernanceContainerFactory.java
@@ -17,25 +17,29 @@
 
 package 
org.apache.shardingsphere.test.integration.framework.container.atomic.governance;
 
-import 
org.apache.shardingsphere.test.integration.framework.container.atomic.ShardingSphereContainer;
-import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.test.integration.framework.container.atomic.governance.impl.ZookeeperContainer;
 
 /**
- * Zookeeper container.
+ * Governance container factory.
  */
-public final class ZookeeperContainer extends ShardingSphereContainer {
-    
-    public ZookeeperContainer() {
-        super("zookeeper", "zookeeper:3.6.2", false);
-        setWaitStrategy(new 
LogMessageWaitStrategy().withRegEx(".*PrepRequestProcessor \\(sid:[0-9]+\\) 
started.*"));
-    }
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class GovernanceContainerFactory {
     
     /**
-     * Get server list.
-     *
-     * @return server list
+     * Create new instance of governance container.
+     * 
+     * @param type governance center type
+     * @return new instance of governance container
      */
-    public String getServerLists() {
-        return getHost() + ":" + getMappedPort(2181);
+    @SuppressWarnings("SwitchStatementWithTooFewBranches")
+    public static GovernanceContainer newInstance(final String type) {
+        switch (type) {
+            case "ZooKeeper":
+                return new ZookeeperContainer();
+            default:
+                throw new RuntimeException(String.format("Governance center 
[%s] is unknown.", type));
+        }
     }
 }
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/impl/ZookeeperContainer.java
similarity index 86%
rename from 
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
rename to 
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/impl/ZookeeperContainer.java
index d2a5d9e..50333d2 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/ZookeeperContainer.java
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/atomic/governance/impl/ZookeeperContainer.java
@@ -15,26 +15,22 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.integration.framework.container.atomic.governance;
+package 
org.apache.shardingsphere.test.integration.framework.container.atomic.governance.impl;
 
-import 
org.apache.shardingsphere.test.integration.framework.container.atomic.ShardingSphereContainer;
+import 
org.apache.shardingsphere.test.integration.framework.container.atomic.governance.GovernanceContainer;
 import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
 
 /**
  * Zookeeper container.
  */
-public final class ZookeeperContainer extends ShardingSphereContainer {
+public final class ZookeeperContainer extends GovernanceContainer {
     
     public ZookeeperContainer() {
         super("zookeeper", "zookeeper:3.6.2", false);
         setWaitStrategy(new 
LogMessageWaitStrategy().withRegEx(".*PrepRequestProcessor \\(sid:[0-9]+\\) 
started.*"));
     }
     
-    /**
-     * Get server list.
-     *
-     * @return server list
-     */
+    @Override
     public String getServerLists() {
         return getHost() + ":" + getMappedPort(2181);
     }
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/ClusterComposedContainer.java
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/ClusterComposedContainer.java
index 549e7ef..573fcf4 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/ClusterComposedContainer.java
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/framework/container/compose/mode/ClusterComposedContainer.java
@@ -22,7 +22,8 @@ import 
org.apache.shardingsphere.test.integration.framework.container.atomic.Sha
 import 
org.apache.shardingsphere.test.integration.framework.container.atomic.adapter.AdapterContainer;
 import 
org.apache.shardingsphere.test.integration.framework.container.atomic.adapter.AdapterContainerFactory;
 import 
org.apache.shardingsphere.test.integration.framework.container.atomic.adapter.impl.ShardingSphereProxyContainer;
-import 
org.apache.shardingsphere.test.integration.framework.container.atomic.governance.ZookeeperContainer;
+import 
org.apache.shardingsphere.test.integration.framework.container.atomic.governance.GovernanceContainer;
+import 
org.apache.shardingsphere.test.integration.framework.container.atomic.governance.GovernanceContainerFactory;
 import 
org.apache.shardingsphere.test.integration.framework.container.atomic.storage.StorageContainer;
 import 
org.apache.shardingsphere.test.integration.framework.container.atomic.storage.StorageContainerFactory;
 import 
org.apache.shardingsphere.test.integration.framework.container.compose.ComposedContainer;
@@ -45,7 +46,7 @@ public final class ClusterComposedContainer implements 
ComposedContainer {
     
     private final AdapterContainer adapterContainerForReader;
     
-    private final ZookeeperContainer zookeeperContainer;
+    private final GovernanceContainer governanceContainer;
     
     public ClusterComposedContainer(final String testSuiteName, final 
ParameterizedArray parameterizedArray) {
         containers = new ShardingSphereContainers(testSuiteName, 
parameterizedArray.getScenario());
@@ -54,22 +55,22 @@ public final class ClusterComposedContainer implements 
ComposedContainer {
         adapterContainer = 
containers.registerContainer(AdapterContainerFactory.newInstance(
                 parameterizedArray.getAdapter(), 
parameterizedArray.getDatabaseType(), parameterizedArray.getScenario()), 
parameterizedArray.getAdapter());
         // TODO support other types of governance
-        zookeeperContainer = containers.registerContainer(new 
ZookeeperContainer(), "zk");
+        governanceContainer = 
containers.registerContainer(GovernanceContainerFactory.newInstance("ZooKeeper"),
 "zk");
         if ("proxy".equals(parameterizedArray.getAdapter())) {
             adapterContainerForReader = containers.registerContainer(
                     new ShardingSphereProxyContainer("ShardingSphere-Proxy-1", 
parameterizedArray.getDatabaseType(), parameterizedArray.getScenario()), 
"ShardingSphere-Proxy-1");
-            adapterContainerForReader.dependsOn(storageContainer, 
zookeeperContainer);
+            adapterContainerForReader.dependsOn(storageContainer, 
governanceContainer);
         } else {
             adapterContainerForReader = containers.registerContainer(
                     
AdapterContainerFactory.newInstance(parameterizedArray.getAdapter(), 
parameterizedArray.getDatabaseType(), parameterizedArray.getScenario()), 
parameterizedArray.getAdapter());
-            adapterContainerForReader.dependsOn(storageContainer, 
zookeeperContainer);
+            adapterContainerForReader.dependsOn(storageContainer, 
governanceContainer);
         }
-        adapterContainer.dependsOn(storageContainer, zookeeperContainer);
+        adapterContainer.dependsOn(storageContainer, governanceContainer);
     }
     
     @Override
     public DataSource getClientDataSource() {
-        return 
adapterContainer.getClientDataSource(zookeeperContainer.getServerLists());
+        return 
adapterContainer.getClientDataSource(governanceContainer.getServerLists());
     }
     
     /**
@@ -78,6 +79,6 @@ public final class ClusterComposedContainer implements 
ComposedContainer {
      * @return another client data source
      */
     public DataSource getAnotherClientDataSource() {
-        return 
adapterContainerForReader.getAnotherClientDataSource(zookeeperContainer.getServerLists());
+        return 
adapterContainerForReader.getAnotherClientDataSource(governanceContainer.getServerLists());
     }
 }

Reply via email to