You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by GitBox <gi...@apache.org> on 2022/08/14 15:45:33 UTC

[GitHub] [shardingsphere] terrymanu commented on a diff in pull request #20169: Refacor : refacor the storage configration as the proxy config style

terrymanu commented on code in PR #20169:
URL: https://github.com/apache/shardingsphere/pull/20169#discussion_r945307078


##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/StorageContainerConfiguration.java:
##########
@@ -36,12 +36,12 @@ public interface StorageContainerConfiguration {
      * 
      * @return docker container environments
      */
-    Map<String, String> getEnvs();
+    Map<String, String> getContainerEnvs();

Review Comment:
   Please do not use abbreviation in method name



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/adapter/config/AdaptorContainerConfiguration.java:
##########
@@ -25,8 +25,8 @@
 /**
  * Adaptor container configuration.
  */
-@RequiredArgsConstructor
 @Getter
+@RequiredArgsConstructor

Review Comment:
   Please do not change the original codes if unnecessary.



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/opengauss/OpenGaussContainerConfiguration.java:
##########
@@ -17,27 +17,22 @@
 
 package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.opengauss;
 
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableMap;
 
 import java.util.Map;
 
-public class DefaultOpenGaussContainerConfiguration implements StorageContainerConfiguration {
+/**
+ * OpenGauss container configuration.
+ */
+@Getter
+@RequiredArgsConstructor

Review Comment:
   Constructor annotation should in the front of field annotation



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/mysql/MySQLContainerConfigurationFactory.java:
##########
@@ -17,32 +17,43 @@
 
 package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.mysql;
 
-import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-public class DefaultMySQLContainerConfiguration implements StorageContainerConfiguration {
+/**
+ * MySQL container configuration factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class MySQLContainerConfigurationFactory {
+    
+    /**
+     * Create new instance of mysql container configuration.
+     * 
+     * @return created instance
+     */
+    public static MySQLContainerConfiguration newInstance() {
+        return new MySQLContainerConfiguration(getCommands(), getContainerEnvs(), getMountedResources());
+    }
     
-    @Override
-    public String[] getCommands() {
+    private static String[] getCommands() {
         // TODO need auto set server-id by generator, now always set server-id to 1
         String[] commands = new String[1];
         commands[0] = "--server-id=1";
         return commands;
     }
     
-    @Override
-    public Map<String, String> getEnvs() {
+    private static Map<String, String> getContainerEnvs() {

Review Comment:
   Please do not use abbreviation in method name



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/mysql/MySQLContainerConfigurationFactory.java:
##########
@@ -17,32 +17,43 @@
 
 package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.mysql;
 
-import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-public class DefaultMySQLContainerConfiguration implements StorageContainerConfiguration {
+/**
+ * MySQL container configuration factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class MySQLContainerConfigurationFactory {
+    
+    /**
+     * Create new instance of mysql container configuration.
+     * 
+     * @return created instance
+     */
+    public static MySQLContainerConfiguration newInstance() {
+        return new MySQLContainerConfiguration(getCommands(), getContainerEnvs(), getMountedResources());
+    }
     
-    @Override
-    public String[] getCommands() {
+    private static String[] getCommands() {
         // TODO need auto set server-id by generator, now always set server-id to 1
         String[] commands = new String[1];
         commands[0] = "--server-id=1";
         return commands;
     }
     
-    @Override
-    public Map<String, String> getEnvs() {
+    private static Map<String, String> getContainerEnvs() {
         Map<String, String> result = new HashMap<>();

Review Comment:
   Miss init capacity



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/postgresql/PostgreSQLContainerConfigurationFactory.java:
##########
@@ -17,27 +17,37 @@
 
 package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.postgresql;
 
-import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
-
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import java.util.Collections;
 import java.util.Map;
 
-public class DefaultPostgreSQLContainerConfiguration implements StorageContainerConfiguration {
+/**
+ * PostgreSQL container configuration factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class PostgreSQLContainerConfigurationFactory {
+    
+    /**
+     * Create new instance of postgresql container configuration.
+     * 
+     * @return created instance
+     */
+    public static PostgreSQLContainerConfiguration newInstance() {
+        return new PostgreSQLContainerConfiguration(getCommands(), getContainerEnvs(), getMountedResources());
+    }
     
-    @Override
-    public String[] getCommands() {
+    private static String[] getCommands() {
         String[] commands = new String[1];
         commands[0] = "-c config_file=/etc/postgresql/postgresql.conf";
         return commands;
     }
     
-    @Override
-    public Map<String, String> getEnvs() {
+    private static Map<String, String> getContainerEnvs() {

Review Comment:
   Please do not use abbreviation in method name



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/mysql/MySQLContainerConfiguration.java:
##########
@@ -15,31 +15,24 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.integration.data.pipeline.framework.container.config.storage.impl.mysql;
+package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.mysql;
 
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
-import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.mysql.DefaultMySQLContainerConfiguration;
 
-import java.util.Collections;
 import java.util.Map;
 
 /**
- * Scaling mysql container configuration.
+ * MySQL container configuration.
  */
-public final class ScalingMySQLContainerConfiguration implements StorageContainerConfiguration {
+@Getter
+@RequiredArgsConstructor
+public final class MySQLContainerConfiguration implements StorageContainerConfiguration {

Review Comment:
   Is the class necessary, how about use same StorageContainerConfiguration?



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/StorageContainerConfigurationFactory.java:
##########
@@ -15,43 +15,36 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.container.config;
+package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
-import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.mysql.DefaultMySQLContainerConfiguration;
-import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.opengauss.DefaultOpenGaussContainerConfiguration;
-import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.postgresql.DefaultPostgreSQLContainerConfiguration;
+import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.mysql.MySQLContainerConfigurationFactory;
+import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.opengauss.OpenGaussContainerConfigurationFactory;
+import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.postgresql.PostgreSQLContainerConfigurationFactory;
 
 /**
- * Suite storage container configuration factory.
+ * Storage container configuration factory.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SuiteStorageContainerConfigurationFactory {
+public final class StorageContainerConfigurationFactory {
     
     /**
      * Create new instance of storage container configuration.
-     *
+     * 
      * @param databaseType database type
-     * @param scenario scenario
      * @return created instance
      */
-    public static StorageContainerConfiguration newInstance(final DatabaseType databaseType, final String scenario) {
+    public static StorageContainerConfiguration newInstance(final DatabaseType databaseType) {
         switch (databaseType.getType()) {
             case "MySQL":
-                if ("default".equalsIgnoreCase(scenario)) {
-                    return new DefaultMySQLContainerConfiguration();
-                }
-                return new DefaultMySQLContainerConfiguration();
+                return MySQLContainerConfigurationFactory.newInstance();
             case "PostgreSQL":
-                if ("default".equalsIgnoreCase(scenario)) {
-                    return new DefaultPostgreSQLContainerConfiguration();
-                }
-                return new DefaultPostgreSQLContainerConfiguration();
+                return PostgreSQLContainerConfigurationFactory.newInstance();
             case "openGauss":
-                return new DefaultOpenGaussContainerConfiguration();
+                return OpenGaussContainerConfigurationFactory.newInstance();
             case "H2":
                 return null;

Review Comment:
   Why is null here?



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/opengauss/OpenGaussContainerConfiguration.java:
##########
@@ -17,27 +17,22 @@
 
 package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.opengauss;
 
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableMap;
 
 import java.util.Map;
 
-public class DefaultOpenGaussContainerConfiguration implements StorageContainerConfiguration {
+/**
+ * OpenGauss container configuration.
+ */
+@Getter
+@RequiredArgsConstructor
+public final class OpenGaussContainerConfiguration implements StorageContainerConfiguration {

Review Comment:
   I think this class is unnecessary too, please consider about merge it into StorageContainerConfiguration



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/postgresql/PostgreSQLContainerConfiguration.java:
##########
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.postgresql;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
+
+import java.util.Map;
+
+/**
+ * PostgreSQL container configuration.
+ */
+@Getter
+@RequiredArgsConstructor
+public final class PostgreSQLContainerConfiguration implements StorageContainerConfiguration {

Review Comment:
   Unnecessary class too



##########
shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-env/src/test/java/org/apache/shardingsphere/test/integration/env/container/atomic/storage/config/impl/postgresql/PostgreSQLContainerConfigurationFactory.java:
##########
@@ -17,27 +17,37 @@
 
 package org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.impl.postgresql;
 
-import org.apache.shardingsphere.test.integration.env.container.atomic.storage.config.StorageContainerConfiguration;
-
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import java.util.Collections;
 import java.util.Map;
 
-public class DefaultPostgreSQLContainerConfiguration implements StorageContainerConfiguration {
+/**
+ * PostgreSQL container configuration factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class PostgreSQLContainerConfigurationFactory {
+    
+    /**
+     * Create new instance of postgresql container configuration.
+     * 
+     * @return created instance
+     */
+    public static PostgreSQLContainerConfiguration newInstance() {
+        return new PostgreSQLContainerConfiguration(getCommands(), getContainerEnvs(), getMountedResources());
+    }
     
-    @Override
-    public String[] getCommands() {
+    private static String[] getCommands() {
         String[] commands = new String[1];
         commands[0] = "-c config_file=/etc/postgresql/postgresql.conf";
         return commands;

Review Comment:
   Return value should name as `result`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org