You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by do...@apache.org on 2021/02/05 05:33:34 UTC

[shardingsphere] branch master updated: Rename EmbeddedDatabaseResource to EmbeddedDatabase (#9339)

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

dongzonglei 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 fb83702  Rename EmbeddedDatabaseResource to EmbeddedDatabase (#9339)
fb83702 is described below

commit fb83702945ce39679276efb4df37eb9e5fa98fb6
Author: Liang Zhang <te...@163.com>
AuthorDate: Fri Feb 5 13:33:07 2021 +0800

    Rename EmbeddedDatabaseResource to EmbeddedDatabase (#9339)
    
    * Remove useless codes
    
    * Add EmbeddedDatabaseResourceFactory
    
    * Rename EmbeddedDatabase
---
 .../test/integration/env/EnvironmentPath.java      |  2 +-
 .../env/IntegrationTestEnvironment.java            |  4 +-
 .../env/database/DatabaseEnvironmentManager.java   | 59 +++++++---------------
 .../EmbeddedDatabase.java}                         | 10 ++--
 .../EmbeddedDatabaseDistributionProperties.java    |  2 +-
 .../database/embedded/EmbeddedDatabaseFactory.java | 46 +++++++++++++++++
 .../type/MySQLEmbeddedDatabase.java}               | 10 ++--
 7 files changed, 77 insertions(+), 56 deletions(-)

diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/EnvironmentPath.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/EnvironmentPath.java
index 540a1b2..32fe23b 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/EnvironmentPath.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/EnvironmentPath.java
@@ -42,7 +42,7 @@ public final class EnvironmentPath {
     private static final String RULES_CONFIG_FILE = "rules.yaml";
     
     private static final String AUTHORITY_FILE = "authority.xml";
-
+    
     /**
      * Assert scenario directory existed.
      * 
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/IntegrationTestEnvironment.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/IntegrationTestEnvironment.java
index db1835d..430c50b 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/IntegrationTestEnvironment.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/IntegrationTestEnvironment.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.test.integration.env.database.DatabaseEnvironmentManager;
-import org.apache.shardingsphere.test.integration.env.database.EmbeddedDatabaseDistributionProperties;
+import org.apache.shardingsphere.test.integration.env.database.embedded.EmbeddedDatabaseDistributionProperties;
 import org.apache.shardingsphere.test.integration.env.datasource.DataSourceEnvironment;
 import org.apache.shardingsphere.test.integration.env.props.DatabaseScenarioProperties;
 import org.apache.shardingsphere.test.integration.env.props.EnvironmentProperties;
@@ -139,7 +139,7 @@ public final class IntegrationTestEnvironment {
     private void createEmbeddedDatabases(final DatabaseType databaseType,
                                          final Map<String, DataSourceEnvironment> dataSourceEnvs, final EmbeddedDatabaseDistributionProperties embeddedDatabaseProps) {
         for (Entry<String, DataSourceEnvironment> entry : dataSourceEnvs.entrySet()) {
-            DatabaseEnvironmentManager.createEmbeddedDatabaseResource(databaseType, entry.getKey(), embeddedDatabaseProps, entry.getValue().getPort());
+            DatabaseEnvironmentManager.createEmbeddedDatabase(databaseType, entry.getKey(), embeddedDatabaseProps, entry.getValue().getPort());
         }
     }
     
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/DatabaseEnvironmentManager.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/DatabaseEnvironmentManager.java
index c57cdea..bcccc91 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/DatabaseEnvironmentManager.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/DatabaseEnvironmentManager.java
@@ -21,10 +21,11 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.test.integration.env.EnvironmentPath;
 import org.apache.shardingsphere.test.integration.env.IntegrationTestEnvironment;
-import org.apache.shardingsphere.test.integration.env.database.type.MySQLEmbeddedDatabaseResource;
+import org.apache.shardingsphere.test.integration.env.database.embedded.EmbeddedDatabaseDistributionProperties;
+import org.apache.shardingsphere.test.integration.env.database.embedded.EmbeddedDatabase;
+import org.apache.shardingsphere.test.integration.env.database.embedded.EmbeddedDatabaseFactory;
 import org.apache.shardingsphere.test.integration.env.datasource.builder.ActualDataSourceBuilder;
 import org.h2.tools.RunScript;
 
@@ -37,18 +38,18 @@ import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Collection;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
 /**
- * Schema environment manager.
+ * Database environment manager.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class DatabaseEnvironmentManager {
     
-    private static final ConcurrentMap<String, EmbeddedDatabaseResource> DATABASE_RESOURCE_CACHE = new ConcurrentHashMap<>();
+    private static final Map<String, EmbeddedDatabase> EMBEDDED_DATABASES_CACHE = new ConcurrentHashMap<>();
     
     private static final Lock DATABASE_RESOURCE_LOCK = new ReentrantLock();
     
@@ -114,56 +115,30 @@ public final class DatabaseEnvironmentManager {
     }
     
     /**
-     * Create embedded database resource.
+     * Create embedded database.
      *
      * @param databaseType database type
      * @param scenario scenario
      * @param embeddedDatabaseProps embedded database distribution properties
      * @param port port
      */
-    public static void createEmbeddedDatabaseResource(final DatabaseType databaseType, final String scenario, final EmbeddedDatabaseDistributionProperties embeddedDatabaseProps, final int port) {
-        if (null == databaseType) {
-            return;
-        }
-        String databaseTypeName = databaseType.getName();
-        String embeddedDatabaseResourceKey = String.join("_", databaseTypeName, scenario);
-        EmbeddedDatabaseResource embeddedDatabaseResource = DATABASE_RESOURCE_CACHE.get(embeddedDatabaseResourceKey);
-        if (null != embeddedDatabaseResource) {
+    public static void createEmbeddedDatabase(final DatabaseType databaseType, final String scenario, final EmbeddedDatabaseDistributionProperties embeddedDatabaseProps, final int port) {
+        String embeddedDatabaseKey = String.join("_", databaseType.getName(), scenario);
+        EmbeddedDatabase embeddedDatabase = EMBEDDED_DATABASES_CACHE.get(embeddedDatabaseKey);
+        if (null != embeddedDatabase) {
             return;
         }
+        DATABASE_RESOURCE_LOCK.lock();
         try {
-            DATABASE_RESOURCE_LOCK.lock();
-            embeddedDatabaseResource = DATABASE_RESOURCE_CACHE.get(embeddedDatabaseResourceKey);
-            if (null != embeddedDatabaseResource) {
+            embeddedDatabase = EMBEDDED_DATABASES_CACHE.get(embeddedDatabaseKey);
+            if (null != embeddedDatabase) {
                 return;
             }
-            if (databaseType instanceof MySQLDatabaseType) {
-                embeddedDatabaseResource = new MySQLEmbeddedDatabaseResource(embeddedDatabaseProps, port);
-            } else {
-                // TODO return default database resource
-                embeddedDatabaseResource = new EmbeddedDatabaseResource() {
-                    
-                    @Override
-                    public void start() {
-                    }
-                    
-                    @Override
-                    public void stop() {
-                    }
-                };
-            }
-            embeddedDatabaseResource.start();
-            DATABASE_RESOURCE_CACHE.put(embeddedDatabaseResourceKey, embeddedDatabaseResource);
+            embeddedDatabase = EmbeddedDatabaseFactory.newInstance(databaseType, embeddedDatabaseProps, port);
+            embeddedDatabase.start();
+            EMBEDDED_DATABASES_CACHE.put(embeddedDatabaseKey, embeddedDatabase);
         } finally {
             DATABASE_RESOURCE_LOCK.unlock();
         }
     }
-    
-    /**
-     * Drop embedded database resource.
-     */
-    public static void dropEmbeddedDatabaseResource() {
-        DATABASE_RESOURCE_CACHE.values().forEach(EmbeddedDatabaseResource::stop);
-        DATABASE_RESOURCE_CACHE.clear();
-    }
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/EmbeddedDatabaseResource.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabase.java
similarity index 80%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/EmbeddedDatabaseResource.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabase.java
index e01cfb7..50d645b 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/EmbeddedDatabaseResource.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabase.java
@@ -15,20 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.env.database;
+package org.apache.shardingsphere.test.integration.env.database.embedded;
 
 /**
- * Embedded database resource.
+ * Embedded database.
  */
-public interface EmbeddedDatabaseResource {
+public interface EmbeddedDatabase {
     
     /**
-     * Start embedded database resource.
+     * Start embedded database.
      */
     void start();
     
     /**
-     * Stop embedded database resource.
+     * Stop embedded database.
      */
     void stop();
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/EmbeddedDatabaseDistributionProperties.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabaseDistributionProperties.java
similarity index 96%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/EmbeddedDatabaseDistributionProperties.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabaseDistributionProperties.java
index 07299df..5980210 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/EmbeddedDatabaseDistributionProperties.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabaseDistributionProperties.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.env.database;
+package org.apache.shardingsphere.test.integration.env.database.embedded;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabaseFactory.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabaseFactory.java
new file mode 100644
index 0000000..a9face2
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/EmbeddedDatabaseFactory.java
@@ -0,0 +1,46 @@
+/*
+ * 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.database.embedded;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.test.integration.env.database.embedded.type.MySQLEmbeddedDatabase;
+
+/**
+ * Embedded database factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class EmbeddedDatabaseFactory {
+    
+    /**
+     * Create new instance of embedded database.
+     * 
+     * @param databaseType database type
+     * @param embeddedDatabaseProps embedded database properties
+     * @param port database access port
+     * @return instance of embedded database
+     */
+    public static EmbeddedDatabase newInstance(final DatabaseType databaseType, final EmbeddedDatabaseDistributionProperties embeddedDatabaseProps, final int port) {
+        if (databaseType instanceof MySQLDatabaseType) {
+            return new MySQLEmbeddedDatabase(embeddedDatabaseProps, port);
+        }
+        throw new UnsupportedOperationException(String.format("Unsupported embedded database type: `%s`", databaseType.getName()));
+    }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/type/MySQLEmbeddedDatabaseResource.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/type/MySQLEmbeddedDatabase.java
similarity index 88%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/type/MySQLEmbeddedDatabaseResource.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/type/MySQLEmbeddedDatabase.java
index af59375..a256dcb 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/type/MySQLEmbeddedDatabaseResource.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/java/org/apache/shardingsphere/test/integration/env/database/embedded/type/MySQLEmbeddedDatabase.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.integration.env.database.type;
+package org.apache.shardingsphere.test.integration.env.database.embedded.type;
 
 import com.wix.mysql.EmbeddedMysql;
 import com.wix.mysql.config.Charset;
@@ -25,16 +25,16 @@ import com.wix.mysql.distribution.Version;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
-import org.apache.shardingsphere.test.integration.env.database.EmbeddedDatabaseDistributionProperties;
-import org.apache.shardingsphere.test.integration.env.database.EmbeddedDatabaseResource;
+import org.apache.shardingsphere.test.integration.env.database.embedded.EmbeddedDatabaseDistributionProperties;
+import org.apache.shardingsphere.test.integration.env.database.embedded.EmbeddedDatabase;
 
 import java.io.File;
 
 /**
- * Embedded database resource for MySQL.
+ * Embedded database for MySQL.
  */
 @RequiredArgsConstructor
-public final class MySQLEmbeddedDatabaseResource implements EmbeddedDatabaseResource {
+public final class MySQLEmbeddedDatabase implements EmbeddedDatabase {
     
     private final EmbeddedDatabaseDistributionProperties embeddedDatabaseProps;