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 06644a3b6e1 Add more test cases for DatabaseType test (#18922)
06644a3b6e1 is described below
commit 06644a3b6e1df0767b1ef676209fc55133d7a974
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 7 14:06:53 2022 +0800
Add more test cases for DatabaseType test (#18922)
* Refactor DatabaseTypeEngineTest
* Add DatabaseTypeTest
* Refactor MariaDBDatabaseTypeTest
* Refactor H2DatabaseTypeTest
* Refactor OracleDatabaseTypeTest
* Refactor PostgreSQLDatabaseTypeTest
* Refactor SQL92DatabaseTypeTest
* Refactor SQLServerDatabaseTypeTest
---
.../database/type/dialect/OracleDatabaseType.java | 1 -
.../database/type/DatabaseTypeEngineTest.java | 36 +++++++----------
.../database/type/dialect/DatabaseTypeTest.java | 44 ++++++++++++++++++++
.../database/type/dialect/H2DatabaseTypeTest.java | 34 +++++++---------
.../type/dialect/MariaDBDatabaseTypeTest.java | 33 ++++++---------
.../type/dialect/MySQLDatabaseTypeTest.java | 29 +++----------
.../type/dialect/OracleDatabaseTypeTest.java | 32 +++++++++++----
.../type/dialect/PostgreSQLDatabaseTypeTest.java | 47 +++++++++++++++-------
.../type/dialect/SQL92DatabaseTypeTest.java | 33 +++++----------
.../type/dialect/SQLServerDatabaseTypeTest.java | 26 +++++-------
10 files changed, 171 insertions(+), 144 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OracleDatabaseType.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OracleDatabaseType.java
index a17525925ba..33d095762d4 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OracleDatabaseType.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/dialect/OracleDatabaseType.java
@@ -53,7 +53,6 @@ public final class OracleDatabaseType implements DatabaseType
{
return Optional.empty();
}
- @SuppressWarnings("ReturnOfNull")
@Override
public String getSchema(final Connection connection) {
try {
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngineTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngineTest.java
index 0b76e55aa0e..f03f1ea0df9 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngineTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngineTest.java
@@ -25,6 +25,7 @@ import
org.apache.shardingsphere.infra.database.type.dialect.MariaDBDatabaseType
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
import org.apache.shardingsphere.infra.fixture.FixtureRuleConfiguration;
+import org.apache.shardingsphere.test.mock.MockedDataSource;
import org.junit.Test;
import javax.sql.DataSource;
@@ -122,37 +123,30 @@ public final class DatabaseTypeEngineTest {
}
private DataSource mockDataSource(final DatabaseType databaseType) throws
SQLException {
- DataSource result = mock(DataSource.class);
Connection connection = mock(Connection.class, RETURNS_DEEP_STUBS);
- when(result.getConnection()).thenReturn(connection);
- String url;
+
when(connection.getMetaData().getURL()).thenReturn(getURL(databaseType));
+ return new MockedDataSource(connection);
+ }
+
+ private String getURL(final DatabaseType databaseType) {
switch (databaseType.getType()) {
case "H2":
- url =
"jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL";
- break;
+ return
"jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL";
case "MariaDB":
- url = "jdbc:mariadb://localhost:3306/test";
- break;
+ return "jdbc:mariadb://localhost:3306/test";
case "MySQL":
- url = "jdbc:mysql://localhost:3306/test";
- break;
- case "Oracle":
- url = "jdbc:oracle:oci:@127.0.0.1/test";
- break;
+ return "jdbc:mysql://localhost:3306/test";
case "PostgreSQL":
- url = "jdbc:postgresql://localhost:5432/test";
- break;
- case "SQL92":
- url = "jdbc:jtds:sqlserver://127.0.0.1;DatabaseName=test";
- break;
+ return "jdbc:postgresql://localhost:5432/test";
case "SQLServer":
- url = "jdbc:microsoft:sqlserver://127.0.0.1;DatabaseName=test";
- break;
+ return
"jdbc:microsoft:sqlserver://127.0.0.1;DatabaseName=test";
+ case "Oracle":
+ return "jdbc:oracle:oci:@127.0.0.1/test";
+ case "SQL92":
+ return "jdbc:jtds:sqlserver://127.0.0.1;DatabaseName=test";
default:
throw new IllegalStateException("Unexpected value: " +
databaseType.getType());
}
- when(connection.getMetaData().getURL()).thenReturn(url);
- return result;
}
@Test
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/DatabaseTypeTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/DatabaseTypeTest.java
new file mode 100644
index 00000000000..2c5d7e59f2e
--- /dev/null
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/DatabaseTypeTest.java
@@ -0,0 +1,44 @@
+/*
+ * 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.infra.database.type.dialect;
+
+import org.apache.shardingsphere.infra.fixture.FixtureDatabaseType;
+import org.junit.Test;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public final class DatabaseTypeTest {
+
+ @Test
+ public void assertGetSchema() throws SQLException {
+ Connection connection = mock(Connection.class);
+ when(connection.getSchema()).thenReturn("ds");
+ assertThat(new FixtureDatabaseType().getSchema(connection), is("ds"));
+ }
+
+ @Test
+ public void assertFormatTableNamePattern() {
+ assertThat(new FixtureDatabaseType().formatTableNamePattern("tbl"),
is("tbl"));
+ }
+}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/H2DatabaseTypeTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/H2DatabaseTypeTest.java
index b8d8e603f94..83485be2fac 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/H2DatabaseTypeTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/H2DatabaseTypeTest.java
@@ -21,21 +21,19 @@ import
org.apache.shardingsphere.infra.database.metadata.dialect.H2DataSourceMet
import org.apache.shardingsphere.sql.parser.sql.common.constant.QuoteCharacter;
import org.junit.Test;
-import java.sql.Connection;
-import java.sql.SQLException;
import java.util.Collections;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.junit.Assert.assertTrue;
public final class H2DatabaseTypeTest {
@Test
- public void assertGetName() {
- assertThat(new H2DatabaseType().getType(), is("H2"));
+ public void assertGetQuoteCharacter() {
+ assertThat(new H2DatabaseType().getQuoteCharacter(),
is(QuoteCharacter.QUOTE));
}
@Test
@@ -45,31 +43,27 @@ public final class H2DatabaseTypeTest {
@Test
public void assertGetDataSourceMetaData() {
- assertThat(new
H2DatabaseType().getDataSourceMetaData("jdbc:h2:~:primary_ds_0", "sa"),
instanceOf(H2DataSourceMetaData.class));
- assertThat(new
H2DatabaseType().getDataSourceMetaData("jdbc:h2:mem:primary_ds_0", "sa"),
instanceOf(H2DataSourceMetaData.class));
+ assertThat(new
H2DatabaseType().getDataSourceMetaData("jdbc:h2:~:foo_ds", "sa"),
instanceOf(H2DataSourceMetaData.class));
+ assertThat(new
H2DatabaseType().getDataSourceMetaData("jdbc:h2:mem:foo_ds", "sa"),
instanceOf(H2DataSourceMetaData.class));
}
@Test
- public void assertGetTrunkDatabaseType() {
- assertThat(new H2DatabaseType().getTrunkDatabaseType().getType(),
is("MySQL"));
+ public void assertGetDataSourceClassName() {
+ assertThat(new H2DatabaseType().getDataSourceClassName(),
is(Optional.of("org.h2.jdbcx.JdbcDataSource")));
}
@Test
- public void assertGetSchema() throws SQLException {
- Connection connection = mock(Connection.class);
- when(connection.getSchema()).thenReturn("ds");
- assertThat(new H2DatabaseType().getSchema(connection), is("ds"));
+ public void assertGetTrunkDatabaseType() {
+ assertThat(new H2DatabaseType().getTrunkDatabaseType().getType(),
is("MySQL"));
}
@Test
- public void assertFormatTableNamePattern() {
- assertThat(new H2DatabaseType().formatTableNamePattern("tbl"),
is("tbl"));
+ public void assertGetSystemDatabaseSchemaMap() {
+ assertTrue(new
H2DatabaseType().getSystemDatabaseSchemaMap().isEmpty());
}
@Test
- public void assertGetQuoteCharacter() {
- QuoteCharacter actual = new H2DatabaseType().getQuoteCharacter();
- assertThat(actual.getStartDelimiter(), is("\""));
- assertThat(actual.getEndDelimiter(), is("\""));
+ public void assertGetSystemSchemas() {
+ assertTrue(new H2DatabaseType().getSystemSchemas().isEmpty());
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/MariaDBDatabaseTypeTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/MariaDBDatabaseTypeTest.java
index 0610bd43497..fa55543131e 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/MariaDBDatabaseTypeTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/MariaDBDatabaseTypeTest.java
@@ -21,21 +21,19 @@ import
org.apache.shardingsphere.infra.database.metadata.dialect.MariaDBDataSour
import org.apache.shardingsphere.sql.parser.sql.common.constant.QuoteCharacter;
import org.junit.Test;
-import java.sql.Connection;
-import java.sql.SQLException;
import java.util.Collections;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.junit.Assert.assertTrue;
public final class MariaDBDatabaseTypeTest {
@Test
- public void assertGetName() {
- assertThat(new MariaDBDatabaseType().getType(), is("MariaDB"));
+ public void assertGetQuoteCharacter() {
+ assertThat(new MariaDBDatabaseType().getQuoteCharacter(),
is(QuoteCharacter.BACK_QUOTE));
}
@Test
@@ -45,31 +43,26 @@ public final class MariaDBDatabaseTypeTest {
@Test
public void assertGetDataSourceMetaData() {
- assertThat(new
MariaDBDatabaseType().getDataSourceMetaData("jdbc:mysql://localhost:3306/demo_ds_0",
"root"), instanceOf(MariaDBDataSourceMetaData.class));
- assertThat(new
MariaDBDatabaseType().getDataSourceMetaData("jdbc:mariadb://localhost:3306/demo_ds_0",
"root"), instanceOf(MariaDBDataSourceMetaData.class));
+ assertThat(new
MariaDBDatabaseType().getDataSourceMetaData("jdbc:mariadb://localhost:3306/foo_ds",
"root"), instanceOf(MariaDBDataSourceMetaData.class));
}
@Test
- public void assertGetTrunkDatabaseType() {
- assertThat(new MariaDBDatabaseType().getTrunkDatabaseType().getType(),
is("MySQL"));
+ public void assertGetDataSourceClassName() {
+ assertThat(new MariaDBDatabaseType().getDataSourceClassName(),
is(Optional.of("org.mariadb.jdbc.MariaDbDataSource")));
}
@Test
- public void assertGetSchema() throws SQLException {
- Connection connection = mock(Connection.class);
- when(connection.getSchema()).thenReturn("ds");
- assertThat(new MariaDBDatabaseType().getSchema(connection), is("ds"));
+ public void assertGetTrunkDatabaseType() {
+ assertThat(new MariaDBDatabaseType().getTrunkDatabaseType().getType(),
is("MySQL"));
}
@Test
- public void assertFormatTableNamePattern() {
- assertThat(new MariaDBDatabaseType().formatTableNamePattern("tbl"),
is("tbl"));
+ public void assertGetSystemDatabaseSchemaMap() {
+ assertTrue(new
MariaDBDatabaseType().getSystemDatabaseSchemaMap().isEmpty());
}
@Test
- public void assertGetQuoteCharacter() {
- QuoteCharacter actual = new MariaDBDatabaseType().getQuoteCharacter();
- assertThat(actual.getStartDelimiter(), is("`"));
- assertThat(actual.getEndDelimiter(), is("`"));
+ public void assertGetSystemSchemas() {
+ assertTrue(new MariaDBDatabaseType().getSystemSchemas().isEmpty());
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/MySQLDatabaseTypeTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/MySQLDatabaseTypeTest.java
index 31154acc66a..eb897f26046 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/MySQLDatabaseTypeTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/MySQLDatabaseTypeTest.java
@@ -21,23 +21,20 @@ import
org.apache.shardingsphere.infra.database.metadata.dialect.MySQLDataSource
import org.apache.shardingsphere.sql.parser.sql.common.constant.QuoteCharacter;
import org.junit.Test;
-import java.sql.Connection;
-import java.sql.SQLException;
import java.util.Arrays;
import java.util.HashSet;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
public final class MySQLDatabaseTypeTest {
@Test
- public void assertGetName() {
- assertThat(new MySQLDatabaseType().getType(), is("MySQL"));
+ public void assertGetQuoteCharacter() {
+ assertThat(new MySQLDatabaseType().getQuoteCharacter(),
is(QuoteCharacter.BACK_QUOTE));
}
@Test
@@ -47,26 +44,12 @@ public final class MySQLDatabaseTypeTest {
@Test
public void assertGetDataSourceMetaData() {
- assertThat(new
MySQLDatabaseType().getDataSourceMetaData("jdbc:mysql://127.0.0.1/ds", "root"),
instanceOf(MySQLDataSourceMetaData.class));
- }
-
- @Test
- public void assertGetSchema() throws SQLException {
- Connection connection = mock(Connection.class);
- when(connection.getSchema()).thenReturn("ds");
- assertThat(new MySQLDatabaseType().getSchema(connection), is("ds"));
+ assertThat(new
MySQLDatabaseType().getDataSourceMetaData("jdbc:mysql://127.0.0.1/foo_ds",
"root"), instanceOf(MySQLDataSourceMetaData.class));
}
@Test
- public void assertFormatTableNamePattern() {
- assertThat(new MySQLDatabaseType().formatTableNamePattern("tbl"),
is("tbl"));
- }
-
- @Test
- public void assertGetQuoteCharacter() {
- QuoteCharacter actual = new MySQLDatabaseType().getQuoteCharacter();
- assertThat(actual.getStartDelimiter(), is("`"));
- assertThat(actual.getEndDelimiter(), is("`"));
+ public void assertGetDataSourceClassName() {
+ assertThat(new MySQLDatabaseType().getDataSourceClassName(),
is(Optional.of("com.mysql.jdbc.jdbc2.optional.MysqlDataSource")));
}
@Test
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/OracleDatabaseTypeTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/OracleDatabaseTypeTest.java
index 83530a6a0b6..2025223702e 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/OracleDatabaseTypeTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/OracleDatabaseTypeTest.java
@@ -24,10 +24,13 @@ import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collections;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -35,8 +38,8 @@ import static org.mockito.Mockito.when;
public final class OracleDatabaseTypeTest {
@Test
- public void assertGetName() {
- assertThat(new OracleDatabaseType().getType(), is("Oracle"));
+ public void assertGetQuoteCharacter() {
+ assertThat(new OracleDatabaseType().getQuoteCharacter(),
is(QuoteCharacter.QUOTE));
}
@Test
@@ -46,7 +49,12 @@ public final class OracleDatabaseTypeTest {
@Test
public void assertOracleDataSourceMetaData() {
- assertThat(new
OracleDatabaseType().getDataSourceMetaData("jdbc:oracle:oci:@127.0.0.1/ds_0",
"scott"), instanceOf(OracleDataSourceMetaData.class));
+ assertThat(new
OracleDatabaseType().getDataSourceMetaData("jdbc:oracle:oci:@127.0.0.1/foo_ds",
"scott"), instanceOf(OracleDataSourceMetaData.class));
+ }
+
+ @Test
+ public void assertGetDataSourceClassName() {
+ assertThat(new OracleDatabaseType().getDataSourceClassName(),
is(Optional.empty()));
}
@Test
@@ -56,15 +64,25 @@ public final class OracleDatabaseTypeTest {
assertThat(new OracleDatabaseType().getSchema(connection),
is("SCOTT"));
}
+ @Test
+ public void assertGetSchemaIfExceptionThrown() throws SQLException {
+ Connection connection = mock(Connection.class, RETURNS_DEEP_STUBS);
+
when(connection.getMetaData().getUserName()).thenThrow(SQLException.class);
+ assertNull(new OracleDatabaseType().getSchema(connection));
+ }
+
@Test
public void assertFormatTableNamePattern() {
assertThat(new OracleDatabaseType().formatTableNamePattern("tbl"),
is("TBL"));
}
@Test
- public void assertGetQuoteCharacter() {
- QuoteCharacter actual = new OracleDatabaseType().getQuoteCharacter();
- assertThat(actual.getStartDelimiter(), is("\""));
- assertThat(actual.getEndDelimiter(), is("\""));
+ public void assertGetSystemDatabases() {
+ assertTrue(new
OracleDatabaseType().getSystemDatabaseSchemaMap().isEmpty());
+ }
+
+ @Test
+ public void assertGetSystemSchemas() {
+ assertTrue(new OracleDatabaseType().getSystemSchemas().isEmpty());
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/PostgreSQLDatabaseTypeTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/PostgreSQLDatabaseTypeTest.java
index aec636b1542..4a841e1dd47 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/PostgreSQLDatabaseTypeTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/PostgreSQLDatabaseTypeTest.java
@@ -19,26 +19,29 @@ package
org.apache.shardingsphere.infra.database.type.dialect;
import
org.apache.shardingsphere.infra.database.metadata.dialect.PostgreSQLDataSourceMetaData;
import org.apache.shardingsphere.sql.parser.sql.common.constant.QuoteCharacter;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.CommitStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.RollbackStatement;
import org.junit.Test;
-import java.sql.Connection;
import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
public final class PostgreSQLDatabaseTypeTest {
@Test
- public void assertGetName() {
- assertThat(new PostgreSQLDatabaseType().getType(), is("PostgreSQL"));
+ public void assertGetQuoteCharacter() {
+ assertThat(new PostgreSQLDatabaseType().getQuoteCharacter(),
is(QuoteCharacter.QUOTE));
}
@Test
@@ -52,22 +55,28 @@ public final class PostgreSQLDatabaseTypeTest {
}
@Test
- public void assertGetSchema() throws SQLException {
- Connection connection = mock(Connection.class);
- when(connection.getSchema()).thenReturn("ds");
- assertThat(new PostgreSQLDatabaseType().getSchema(connection),
is("ds"));
+ public void assertGetDataSourceClassName() {
+ assertThat(new PostgreSQLDatabaseType().getDataSourceClassName(),
is(Optional.of("org.postgresql.ds.PGSimpleDataSource")));
}
@Test
- public void assertFormatTableNamePattern() {
- assertThat(new PostgreSQLDatabaseType().formatTableNamePattern("tbl"),
is("tbl"));
+ public void assertHandleRollbackOnlyForNotRollbackOnly() throws
SQLException {
+ new PostgreSQLDatabaseType().handleRollbackOnly(false,
mock(CommitStatement.class));
}
@Test
- public void assertGetQuoteCharacter() {
- QuoteCharacter actual = new
PostgreSQLDatabaseType().getQuoteCharacter();
- assertThat(actual.getStartDelimiter(), is("\""));
- assertThat(actual.getEndDelimiter(), is("\""));
+ public void assertHandleRollbackOnlyForRollbackOnlyAndCommitStatement()
throws SQLException {
+ new PostgreSQLDatabaseType().handleRollbackOnly(true,
mock(CommitStatement.class));
+ }
+
+ @Test
+ public void assertHandleRollbackOnlyForRollbackOnlyAndRollbackStatement()
throws SQLException {
+ new PostgreSQLDatabaseType().handleRollbackOnly(true,
mock(RollbackStatement.class));
+ }
+
+ @Test(expected = SQLFeatureNotSupportedException.class)
+ public void assertHandleRollbackOnlyForRollbackOnlyAndNotTCLStatement()
throws SQLException {
+ new PostgreSQLDatabaseType().handleRollbackOnly(true,
mock(SelectStatement.class));
}
@Test
@@ -79,4 +88,14 @@ public final class PostgreSQLDatabaseTypeTest {
public void assertGetSystemSchemas() {
assertThat(new PostgreSQLDatabaseType().getSystemSchemas(), is(new
HashSet<>(Arrays.asList("information_schema", "pg_catalog"))));
}
+
+ @Test
+ public void assertIsSchemaAvailable() {
+ assertTrue(new PostgreSQLDatabaseType().isSchemaAvailable());
+ }
+
+ @Test
+ public void assertGetDefaultSchema() {
+ assertThat(new PostgreSQLDatabaseType().getDefaultSchema(),
is("public"));
+ }
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/SQL92DatabaseTypeTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/SQL92DatabaseTypeTest.java
index 376089ce8bd..cc6a2d18a75 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/SQL92DatabaseTypeTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/SQL92DatabaseTypeTest.java
@@ -21,21 +21,19 @@ import
org.apache.shardingsphere.infra.database.metadata.dialect.SQL92DataSource
import org.apache.shardingsphere.sql.parser.sql.common.constant.QuoteCharacter;
import org.junit.Test;
-import java.sql.Connection;
-import java.sql.SQLException;
import java.util.Collections;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.junit.Assert.assertTrue;
public final class SQL92DatabaseTypeTest {
@Test
- public void assertGetName() {
- assertThat(new SQL92DatabaseType().getType(), is("SQL92"));
+ public void assertGetQuoteCharacter() {
+ assertThat(new SQL92DatabaseType().getQuoteCharacter(),
is(QuoteCharacter.QUOTE));
}
@Test
@@ -45,30 +43,21 @@ public final class SQL92DatabaseTypeTest {
@Test
public void assertGetDataSourceMetaData() {
- assertThat(new
SQL92DatabaseType().getDataSourceMetaData("jdbc:h2:mem:primary_ds_0", "sa"),
instanceOf(SQL92DataSourceMetaData.class));
- assertThat(new
SQL92DatabaseType().getDataSourceMetaData("jdbc:mariadb://localhost:3306/demo_ds_0",
"sa"), instanceOf(SQL92DataSourceMetaData.class));
- assertThat(new
SQL92DatabaseType().getDataSourceMetaData("jdbc:mysql://127.0.0.1/demo_ds_0",
"root"), instanceOf(SQL92DataSourceMetaData.class));
- assertThat(new
SQL92DatabaseType().getDataSourceMetaData("jdbc:postgresql://localhost:5432/demo_ds_0",
"postgres"), instanceOf(SQL92DataSourceMetaData.class));
- assertThat(new
SQL92DatabaseType().getDataSourceMetaData("jdbc:oracle:oci:@127.0.0.1/demo_ds_0",
"scott"), instanceOf(SQL92DataSourceMetaData.class));
- assertThat(new
SQL92DatabaseType().getDataSourceMetaData("jdbc:microsoft:sqlserver://127.0.0.1;DatabaseName=ds_0",
"sa"), instanceOf(SQL92DataSourceMetaData.class));
+ assertThat(new SQL92DatabaseType().getDataSourceMetaData("jdbc:xxx",
"root"), instanceOf(SQL92DataSourceMetaData.class));
}
@Test
- public void assertGetSchema() throws SQLException {
- Connection connection = mock(Connection.class);
- when(connection.getSchema()).thenReturn("ds");
- assertThat(new SQL92DatabaseType().getSchema(connection), is("ds"));
+ public void assertGetDataSourceClassName() {
+ assertThat(new SQL92DatabaseType().getDataSourceClassName(),
is(Optional.empty()));
}
@Test
- public void assertFormatTableNamePattern() {
- assertThat(new SQL92DatabaseType().formatTableNamePattern("tbl"),
is("tbl"));
+ public void assertGetSystemDatabases() {
+ assertTrue(new
SQL92DatabaseType().getSystemDatabaseSchemaMap().isEmpty());
}
@Test
- public void assertGetQuoteCharacter() {
- QuoteCharacter actual = new SQL92DatabaseType().getQuoteCharacter();
- assertThat(actual.getStartDelimiter(), is("\""));
- assertThat(actual.getEndDelimiter(), is("\""));
+ public void assertGetSystemSchemas() {
+ assertTrue(new SQL92DatabaseType().getSystemSchemas().isEmpty());
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/SQLServerDatabaseTypeTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/SQLServerDatabaseTypeTest.java
index 4668a816a2e..061c7b33f8f 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/SQLServerDatabaseTypeTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/dialect/SQLServerDatabaseTypeTest.java
@@ -21,21 +21,19 @@ import
org.apache.shardingsphere.infra.database.metadata.dialect.SQLServerDataSo
import org.apache.shardingsphere.sql.parser.sql.common.constant.QuoteCharacter;
import org.junit.Test;
-import java.sql.Connection;
-import java.sql.SQLException;
import java.util.Arrays;
+import java.util.Optional;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.junit.Assert.assertTrue;
public final class SQLServerDatabaseTypeTest {
@Test
- public void assertGetName() {
- assertThat(new SQLServerDatabaseType().getType(), is("SQLServer"));
+ public void assertGetQuoteCharacter() {
+ assertThat(new SQLServerDatabaseType().getQuoteCharacter(),
is(QuoteCharacter.BRACKETS));
}
@Test
@@ -50,21 +48,17 @@ public final class SQLServerDatabaseTypeTest {
}
@Test
- public void assertGetSchema() throws SQLException {
- Connection connection = mock(Connection.class);
- when(connection.getSchema()).thenReturn("ds");
- assertThat(new SQLServerDatabaseType().getSchema(connection),
is("ds"));
+ public void assertGetDataSourceClassName() {
+ assertThat(new SQLServerDatabaseType().getDataSourceClassName(),
is(Optional.of("com.microsoft.sqlserver.jdbc.SQLServerDataSource")));
}
@Test
- public void assertFormatTableNamePattern() {
- assertThat(new SQLServerDatabaseType().formatTableNamePattern("tbl"),
is("tbl"));
+ public void assertGetSystemDatabases() {
+ assertTrue(new
SQLServerDatabaseType().getSystemDatabaseSchemaMap().isEmpty());
}
@Test
- public void assertGetQuoteCharacter() {
- QuoteCharacter actual = new
SQLServerDatabaseType().getQuoteCharacter();
- assertThat(actual.getStartDelimiter(), is("["));
- assertThat(actual.getEndDelimiter(), is("]"));
+ public void assertGetSystemSchemas() {
+ assertTrue(new SQLServerDatabaseType().getSystemSchemas().isEmpty());
}
}