From a977881f8c9725e9a37e1239f33607f6d6485a6d Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Tue, 20 Feb 2024 16:29:10 -0800 Subject: [PATCH 01/43] add base test --- wrapper/src/test/build.gradle.kts | 2 +- .../container/tests/TopologyQueryTests.java | 94 +++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index 22217f77d..3f80202a6 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.*") + filter.includeTestsMatching("integration.container.tests.BasicConnectivityTests.test_WrapperConnection") } diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java new file mode 100644 index 000000000..4c2debfa9 --- /dev/null +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -0,0 +1,94 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed 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 integration.container.tests; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import integration.DriverHelper; +import integration.TestEnvironmentFeatures; +import integration.container.ConnectionStringHelper; +import integration.container.TestDriver; +import integration.container.TestDriverProvider; +import integration.container.TestEnvironment; +import integration.container.condition.DisableOnTestFeature; +import integration.util.AuroraTestUtility; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.List; +import java.util.Properties; +import java.util.concurrent.TimeUnit; +import java.util.logging.Logger; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.extension.ExtendWith; +import software.amazon.awssdk.regions.Region; + +@TestMethodOrder(MethodOrderer.MethodName.class) +@DisableOnTestFeature({ + TestEnvironmentFeatures.PERFORMANCE, + TestEnvironmentFeatures.RUN_HIBERNATE_TESTS_ONLY, + TestEnvironmentFeatures.RUN_AUTOSCALING_TESTS_ONLY}) +public class TopologyQueryTests { + private static final Logger LOGGER = Logger.getLogger(BasicConnectivityTests.class.getName()); + private static final String CONNECTION_STRING = "jdbc:aws-wrapper:postgresql://atlas-postgres-2-instance-4.czygpppufgy4.us-east-2.rds.amazonaws.com:5432/test"; + protected static final AuroraTestUtility auroraUtil = + new AuroraTestUtility(TestEnvironment.getCurrent().getInfo().getAuroraRegion()); + + @TestTemplate + @ExtendWith(TestDriverProvider.class) + public void testConnection(TestDriver testDriver) throws SQLException { + LOGGER.info(testDriver.toString()); + + final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); + DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); + DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); + + String url = + ConnectionStringHelper.getWrapperUrl( + testDriver, + TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getHost(), + TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getPort(), + TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); + LOGGER.finest("Connecting to " + url); + + final Connection conn = DriverManager.getConnection(url, props); + assertTrue(conn.isValid(5)); +// List res = auroraUtil.getAuroraInstanceIds(); + Statement stmt = conn.createStatement(); + stmt.executeQuery("select 1"); + ResultSet rs = stmt.getResultSet(); + rs.next(); + assertEquals(1, rs.getInt(1)); + + conn.close(); + } +} From afe5167985286ea85a6d5419dfe483c62d00e271 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Tue, 27 Feb 2024 11:24:15 -0800 Subject: [PATCH 02/43] add topology tests and change access to private topology queries --- .../jdbc/dialect/AuroraMysqlDialect.java | 2 +- .../amazon/jdbc/dialect/AuroraPgDialect.java | 2 +- .../RdsMultiAzDbClusterMysqlDialect.java | 2 +- .../dialect/RdsMultiAzDbClusterPgDialect.java | 2 +- .../container/tests/TopologyQueryTests.java | 146 ++++++++++++++++-- 5 files changed, 138 insertions(+), 16 deletions(-) diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java index fd9b85a07..b80d0f11e 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java @@ -26,7 +26,7 @@ public class AuroraMysqlDialect extends MysqlDialect { - private static final String TOPOLOGY_QUERY = + public static final String TOPOLOGY_QUERY = "SELECT SERVER_ID, CASE WHEN SESSION_ID = 'MASTER_SESSION_ID' THEN TRUE ELSE FALSE END, " + "CPU, REPLICA_LAG_IN_MILLISECONDS, LAST_UPDATE_TIMESTAMP " + "FROM information_schema.replica_host_status " diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java index 098440a9f..1fa41d5ef 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java @@ -37,7 +37,7 @@ public class AuroraPgDialect extends PgDialect { private static final String topologySql = "SELECT 1 FROM aurora_replica_status() LIMIT 1"; - private static final String TOPOLOGY_QUERY = + public static final String TOPOLOGY_QUERY = "SELECT SERVER_ID, CASE WHEN SESSION_ID = 'MASTER_SESSION_ID' THEN TRUE ELSE FALSE END, " + "CPU, COALESCE(REPLICA_LAG_IN_MSEC, 0), LAST_UPDATE_TIMESTAMP " + "FROM aurora_replica_status() " diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java index 4d3e5ca05..06338f049 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java @@ -29,7 +29,7 @@ public class RdsMultiAzDbClusterMysqlDialect extends MysqlDialect { - private static final String TOPOLOGY_QUERY = "SELECT id, endpoint, port FROM mysql.rds_topology"; + public static final String TOPOLOGY_QUERY = "SELECT id, endpoint, port FROM mysql.rds_topology"; private static final String TOPOLOGY_TABLE_EXIST_QUERY = "SELECT 1 AS tmp FROM information_schema.tables WHERE" diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java index 215a07619..cba6780b3 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java @@ -30,7 +30,7 @@ public class RdsMultiAzDbClusterPgDialect extends PgDialect { private static MultiAzDbClusterPgExceptionHandler exceptionHandler; - private static final String TOPOLOGY_QUERY = + public static final String TOPOLOGY_QUERY = "SELECT id, endpoint, port FROM rds_tools.show_topology('aws_jdbc_driver-" + DriverInfo.DRIVER_VERSION + "')"; private static final String WRITER_NODE_FUNC_EXIST_QUERY = diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 4c2debfa9..77fedb123 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -26,36 +26,39 @@ import integration.container.TestDriverProvider; import integration.container.TestEnvironment; import integration.container.condition.DisableOnTestFeature; -import integration.util.AuroraTestUtility; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Properties; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; -import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.MethodOrderer.MethodName; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; import org.junit.jupiter.api.extension.ExtendWith; -import software.amazon.awssdk.regions.Region; +import software.amazon.jdbc.dialect.AuroraMysqlDialect; +import software.amazon.jdbc.dialect.AuroraPgDialect; +import software.amazon.jdbc.dialect.RdsMultiAzDbClusterMysqlDialect; +import software.amazon.jdbc.dialect.RdsMultiAzDbClusterPgDialect; -@TestMethodOrder(MethodOrderer.MethodName.class) +@TestMethodOrder(MethodName.class) @DisableOnTestFeature({ TestEnvironmentFeatures.PERFORMANCE, TestEnvironmentFeatures.RUN_HIBERNATE_TESTS_ONLY, TestEnvironmentFeatures.RUN_AUTOSCALING_TESTS_ONLY}) public class TopologyQueryTests { private static final Logger LOGGER = Logger.getLogger(BasicConnectivityTests.class.getName()); - private static final String CONNECTION_STRING = "jdbc:aws-wrapper:postgresql://atlas-postgres-2-instance-4.czygpppufgy4.us-east-2.rds.amazonaws.com:5432/test"; - protected static final AuroraTestUtility auroraUtil = - new AuroraTestUtility(TestEnvironment.getCurrent().getInfo().getAuroraRegion()); @TestTemplate @ExtendWith(TestDriverProvider.class) - public void testConnection(TestDriver testDriver) throws SQLException { + public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); @@ -80,15 +83,134 @@ public void testConnection(TestDriver testDriver) throws SQLException { TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); + String query = null; + if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { + query = AuroraPgDialect.TOPOLOGY_QUERY; + } else { + query = AuroraMysqlDialect.TOPOLOGY_QUERY; + } + + final Connection conn = DriverManager.getConnection(url, props); + assertTrue(conn.isValid(5)); + Statement stmt = conn.createStatement(); + stmt.executeQuery(query); + ResultSet rs = stmt.getResultSet(); + int cols = rs.getMetaData().getColumnCount(); + List columnTypes = new ArrayList<>(); + List expectedTypes = Arrays.asList( + "VARCHAR", + "BIGINT", + "DOUBLE", + "DOUBLE", + "DATETIME" + ); + for (int i = 1; i <= cols; i++) { + columnTypes.add(rs.getMetaData().getColumnTypeName(i)); + } + assertEquals(columnTypes, expectedTypes); + conn.close(); + } + + @TestTemplate + @ExtendWith(TestDriverProvider.class) + public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, ParseException { + LOGGER.info(testDriver.toString()); + + final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); + DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); + DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); + + String url = + ConnectionStringHelper.getWrapperUrl( + testDriver, + TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getHost(), + TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getPort(), + TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); + LOGGER.finest("Connecting to " + url); + + String query = null; + if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { + query = AuroraPgDialect.TOPOLOGY_QUERY; + } else { + query = AuroraMysqlDialect.TOPOLOGY_QUERY; + } + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + final Connection conn = DriverManager.getConnection(url, props); assertTrue(conn.isValid(5)); -// List res = auroraUtil.getAuroraInstanceIds(); Statement stmt = conn.createStatement(); - stmt.executeQuery("select 1"); + stmt.executeQuery(query); ResultSet rs = stmt.getResultSet(); - rs.next(); - assertEquals(1, rs.getInt(1)); + while (rs.next()) { + format.parse(rs.getString("LAST_UPDATE_TIMESTAMP")); + } + + conn.close(); + } + + @TestTemplate + @ExtendWith(TestDriverProvider.class) + public void rdsTestTypes(TestDriver testDriver) throws SQLException { + LOGGER.info(testDriver.toString()); + + final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); + DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); + DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); + + String url = + ConnectionStringHelper.getWrapperUrl( + testDriver, + TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getHost(), + TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getPort(), + TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); + LOGGER.finest("Connecting to " + url); + + String query = null; + if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { + query = RdsMultiAzDbClusterPgDialect.TOPOLOGY_QUERY; + } else { + query = RdsMultiAzDbClusterMysqlDialect.TOPOLOGY_QUERY; + } + + final Connection conn = DriverManager.getConnection(url, props); + assertTrue(conn.isValid(5)); + Statement stmt = conn.createStatement(); + stmt.executeQuery(query); + ResultSet rs = stmt.getResultSet(); + int cols = rs.getMetaData().getColumnCount(); + List columnTypes = new ArrayList<>(); + List expectedTypes = Arrays.asList( + "VARCHAR", + "VARCHAR", + "BIGINT" + ); + for (int i = 1; i <= cols; i++) { + columnTypes.add(rs.getMetaData().getColumnTypeName(i)); + LOGGER.fine(rs.getMetaData().getColumnTypeName(i)); + } + assertEquals(columnTypes, expectedTypes); conn.close(); } } From 694c36b87c91f35b0f11811f23d16886db7d404c Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Tue, 27 Feb 2024 12:00:26 -0800 Subject: [PATCH 03/43] update expected types in rds test --- .../integration/container/tests/TopologyQueryTests.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 77fedb123..c54f398c6 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -202,13 +202,12 @@ public void rdsTestTypes(TestDriver testDriver) throws SQLException { int cols = rs.getMetaData().getColumnCount(); List columnTypes = new ArrayList<>(); List expectedTypes = Arrays.asList( - "VARCHAR", - "VARCHAR", - "BIGINT" + "text", + "text", + "int4" ); for (int i = 1; i <= cols; i++) { columnTypes.add(rs.getMetaData().getColumnTypeName(i)); - LOGGER.fine(rs.getMetaData().getColumnTypeName(i)); } assertEquals(columnTypes, expectedTypes); conn.close(); From 65e3e5020074043e32a4226d71fd1cb4d77e80d3 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Tue, 27 Feb 2024 14:20:03 -0800 Subject: [PATCH 04/43] disable unsupported test --- .../container/tests/TopologyQueryTests.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index c54f398c6..7d1ee001f 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -39,6 +39,7 @@ import java.util.Properties; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.MethodOrderer.MethodName; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; @@ -162,6 +163,8 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars @TestTemplate @ExtendWith(TestDriverProvider.class) + @Disabled + // Disabled due to RDS integration tests not being supported yet public void rdsTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); @@ -186,12 +189,22 @@ public void rdsTestTypes(TestDriver testDriver) throws SQLException { .getPort(), TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); - + List expectedTypes; String query = null; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { query = RdsMultiAzDbClusterPgDialect.TOPOLOGY_QUERY; + expectedTypes = Arrays.asList( + "text", + "text", + "int4" + ); } else { query = RdsMultiAzDbClusterMysqlDialect.TOPOLOGY_QUERY; + expectedTypes = Arrays.asList( + "INT", + "VARCHAR", + "INT" + ); } final Connection conn = DriverManager.getConnection(url, props); @@ -201,11 +214,7 @@ public void rdsTestTypes(TestDriver testDriver) throws SQLException { ResultSet rs = stmt.getResultSet(); int cols = rs.getMetaData().getColumnCount(); List columnTypes = new ArrayList<>(); - List expectedTypes = Arrays.asList( - "text", - "text", - "int4" - ); + for (int i = 1; i <= cols; i++) { columnTypes.add(rs.getMetaData().getColumnTypeName(i)); } From e7f5ea6142061bfdaedc8b8e111d6855430c796a Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Tue, 27 Feb 2024 15:09:06 -0800 Subject: [PATCH 05/43] remove change from gradle --- wrapper/src/test/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index 3f80202a6..22217f77d 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.BasicConnectivityTests.test_WrapperConnection") + filter.includeTestsMatching("integration.container.tests.*") } From bea16356038cd07e837f6abcd1a88ad5bfb424af Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Wed, 28 Feb 2024 10:47:15 -0800 Subject: [PATCH 06/43] remove docker from tests --- .../container/tests/TopologyQueryTests.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 7d1ee001f..9a64cf068 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -19,6 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import integration.DatabaseEngineDeployment; import integration.DriverHelper; import integration.TestEnvironmentFeatures; import integration.container.ConnectionStringHelper; @@ -43,6 +44,7 @@ import org.junit.jupiter.api.MethodOrderer.MethodName; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.condition.DisabledIf; import org.junit.jupiter.api.extension.ExtendWith; import software.amazon.jdbc.dialect.AuroraMysqlDialect; import software.amazon.jdbc.dialect.AuroraPgDialect; @@ -62,6 +64,12 @@ public class TopologyQueryTests { public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); + // Topology queries fail on docker containers, can't test topology + if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() + == DatabaseEngineDeployment.DOCKER) { + return; + } + final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); @@ -117,6 +125,12 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, ParseException { LOGGER.info(testDriver.toString()); + // Topology queries fail on docker containers, can't test topology + if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() + == DatabaseEngineDeployment.DOCKER) { + return; + } + final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); @@ -168,6 +182,12 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars public void rdsTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); + // Topology queries fail on docker containers, can't test topology + if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() + == DatabaseEngineDeployment.DOCKER) { + return; + } + final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); From ee23e30378d896ec3a6a7ff0904b93ed8f5d84e5 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Wed, 28 Feb 2024 11:27:25 -0800 Subject: [PATCH 07/43] fix timestamp test --- .../container/tests/TopologyQueryTests.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 9a64cf068..729daca92 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -17,6 +17,7 @@ package integration.container.tests; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import integration.DatabaseEngineDeployment; @@ -36,6 +37,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Properties; import java.util.concurrent.TimeUnit; @@ -64,7 +66,7 @@ public class TopologyQueryTests { public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); - // Topology queries fail on docker containers, can't test topology + // Topology queries fail on docker containers, can't test topology for them if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() == DatabaseEngineDeployment.DOCKER) { return; @@ -125,7 +127,7 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, ParseException { LOGGER.info(testDriver.toString()); - // Topology queries fail on docker containers, can't test topology + // Topology queries fail on docker containers, can't test topology for them if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() == DatabaseEngineDeployment.DOCKER) { return; @@ -168,8 +170,10 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars stmt.executeQuery(query); ResultSet rs = stmt.getResultSet(); + Date date; while (rs.next()) { - format.parse(rs.getString("LAST_UPDATE_TIMESTAMP")); + date = format.parse(rs.getString("LAST_UPDATE_TIMESTAMP")); + assertNotNull(date); } conn.close(); @@ -182,7 +186,7 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars public void rdsTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); - // Topology queries fail on docker containers, can't test topology + // Topology queries fail on docker containers, can't test topology for them if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() == DatabaseEngineDeployment.DOCKER) { return; From 82d0685707b76d64ccc2dc5a14dd167ae132e553 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Wed, 28 Feb 2024 13:12:42 -0800 Subject: [PATCH 08/43] try renaming --- .../container/tests/TopologyQueryTests.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 729daca92..9b6b1e2fd 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -46,7 +46,6 @@ import org.junit.jupiter.api.MethodOrderer.MethodName; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; -import org.junit.jupiter.api.condition.DisabledIf; import org.junit.jupiter.api.extension.ExtendWith; import software.amazon.jdbc.dialect.AuroraMysqlDialect; import software.amazon.jdbc.dialect.AuroraPgDialect; @@ -63,14 +62,14 @@ public class TopologyQueryTests { @TestTemplate @ExtendWith(TestDriverProvider.class) - public void auroraTestTypes(TestDriver testDriver) throws SQLException { + public void test_AuroraTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); // Topology queries fail on docker containers, can't test topology for them - if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.DOCKER) { - return; - } +// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.DOCKER) { +// return; +// } final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); From 32678e0809d8fccbb75999b93d58713ec03d0688 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Wed, 28 Feb 2024 13:13:54 -0800 Subject: [PATCH 09/43] Revert "try renaming" This reverts commit 13e4c52d635c06645fc1c4f36197d6700405bf17. --- .../container/tests/TopologyQueryTests.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 9b6b1e2fd..729daca92 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -46,6 +46,7 @@ import org.junit.jupiter.api.MethodOrderer.MethodName; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.condition.DisabledIf; import org.junit.jupiter.api.extension.ExtendWith; import software.amazon.jdbc.dialect.AuroraMysqlDialect; import software.amazon.jdbc.dialect.AuroraPgDialect; @@ -62,14 +63,14 @@ public class TopologyQueryTests { @TestTemplate @ExtendWith(TestDriverProvider.class) - public void test_AuroraTypes(TestDriver testDriver) throws SQLException { + public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); // Topology queries fail on docker containers, can't test topology for them -// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.DOCKER) { -// return; -// } + if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() + == DatabaseEngineDeployment.DOCKER) { + return; + } final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); From cc7ee0614c8c064c784f25dc4437d9821133157e Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Wed, 28 Feb 2024 13:54:50 -0800 Subject: [PATCH 10/43] change scope of tests --- wrapper/src/test/build.gradle.kts | 2 +- .../java/integration/container/tests/TopologyQueryTests.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index 22217f77d..bc7159012 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.*") + filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.*") } diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 729daca92..c73ceb5fa 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -172,7 +172,7 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars Date date; while (rs.next()) { - date = format.parse(rs.getString("LAST_UPDATE_TIMESTAMP")); + date = format.parse(rs.getString(5)); assertNotNull(date); } From b356f63bf61ffa2dd0c7807694e9e991392ba18c Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Wed, 28 Feb 2024 14:26:10 -0800 Subject: [PATCH 11/43] add check for aurora/rds --- .../container/tests/TopologyQueryTests.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index c73ceb5fa..cf6dd5f56 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -67,8 +67,11 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); // Topology queries fail on docker containers, can't test topology for them + // Also skip RDS, this is for Aurora if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.DOCKER) { + == DatabaseEngineDeployment.DOCKER + || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() + == DatabaseEngineDeployment.RDS) { return; } @@ -128,8 +131,11 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars LOGGER.info(testDriver.toString()); // Topology queries fail on docker containers, can't test topology for them + // Also skip RDS, this is for Aurora if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.DOCKER) { + == DatabaseEngineDeployment.DOCKER + || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() + == DatabaseEngineDeployment.RDS) { return; } @@ -188,7 +194,9 @@ public void rdsTestTypes(TestDriver testDriver) throws SQLException { // Topology queries fail on docker containers, can't test topology for them if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.DOCKER) { + == DatabaseEngineDeployment.DOCKER + || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() + == DatabaseEngineDeployment.AURORA) { return; } From 9001d9f1cce7cc18c9877550cbacd2b00d0a5b93 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Wed, 28 Feb 2024 16:40:37 -0800 Subject: [PATCH 12/43] testing again --- .../container/tests/TopologyQueryTests.java | 66 +++++++++++-------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index cf6dd5f56..eac8ef704 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -28,6 +28,7 @@ import integration.container.TestDriverProvider; import integration.container.TestEnvironment; import integration.container.condition.DisableOnTestFeature; +import integration.container.condition.EnableOnDatabaseEngineDeployment; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; @@ -40,6 +41,7 @@ import java.util.Date; import java.util.List; import java.util.Properties; +import java.util.TimeZone; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; import org.junit.jupiter.api.Disabled; @@ -59,21 +61,22 @@ TestEnvironmentFeatures.RUN_HIBERNATE_TESTS_ONLY, TestEnvironmentFeatures.RUN_AUTOSCALING_TESTS_ONLY}) public class TopologyQueryTests { - private static final Logger LOGGER = Logger.getLogger(BasicConnectivityTests.class.getName()); + private static final Logger LOGGER = Logger.getLogger(TopologyQueryTests.class.getName()); @TestTemplate + @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) @ExtendWith(TestDriverProvider.class) public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); - + List expectedTypes; // Topology queries fail on docker containers, can't test topology for them // Also skip RDS, this is for Aurora - if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.DOCKER - || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.RDS) { - return; - } +// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.DOCKER +// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.RDS) { +// return; +// } final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); @@ -100,8 +103,22 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { String query = null; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { query = AuroraPgDialect.TOPOLOGY_QUERY; + expectedTypes = Arrays.asList( + "text", + "bool", + "float4", + "float4", + "timestamptz" + ); } else { query = AuroraMysqlDialect.TOPOLOGY_QUERY; + expectedTypes = Arrays.asList( + "VARCHAR", + "BIGINT", + "DOUBLE", + "DOUBLE", + "DATETIME" + ); } final Connection conn = DriverManager.getConnection(url, props); @@ -111,33 +128,27 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { ResultSet rs = stmt.getResultSet(); int cols = rs.getMetaData().getColumnCount(); List columnTypes = new ArrayList<>(); - List expectedTypes = Arrays.asList( - "VARCHAR", - "BIGINT", - "DOUBLE", - "DOUBLE", - "DATETIME" - ); for (int i = 1; i <= cols; i++) { columnTypes.add(rs.getMetaData().getColumnTypeName(i)); } - assertEquals(columnTypes, expectedTypes); + assertEquals(expectedTypes, columnTypes); conn.close(); } @TestTemplate @ExtendWith(TestDriverProvider.class) + @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, ParseException { LOGGER.info(testDriver.toString()); // Topology queries fail on docker containers, can't test topology for them // Also skip RDS, this is for Aurora - if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.DOCKER - || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.RDS) { - return; - } +// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.DOCKER +// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.RDS) { +// return; +// } final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); @@ -162,14 +173,16 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars LOGGER.finest("Connecting to " + url); String query = null; + SimpleDateFormat format; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { query = AuroraPgDialect.TOPOLOGY_QUERY; + format = new SimpleDateFormat("yyy-MM-dd HH:mm:ssX"); + format.setTimeZone(TimeZone.getTimeZone("GMT")); } else { query = AuroraMysqlDialect.TOPOLOGY_QUERY; + format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); } - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); - final Connection conn = DriverManager.getConnection(url, props); assertTrue(conn.isValid(5)); Statement stmt = conn.createStatement(); @@ -187,8 +200,9 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars @TestTemplate @ExtendWith(TestDriverProvider.class) + @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.RDS) @Disabled - // Disabled due to RDS integration tests not being supported yet + // TODO: Disabled due to RDS integration tests not being supported yet public void rdsTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); @@ -250,7 +264,7 @@ public void rdsTestTypes(TestDriver testDriver) throws SQLException { for (int i = 1; i <= cols; i++) { columnTypes.add(rs.getMetaData().getColumnTypeName(i)); } - assertEquals(columnTypes, expectedTypes); + assertEquals(expectedTypes, columnTypes); conn.close(); } } From ae00e64abbeab18d164dd53bf38471cbcd5871d5 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 09:24:51 -0800 Subject: [PATCH 13/43] try other than writer instance --- .../container/tests/TopologyQueryTests.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index eac8ef704..311a55976 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -161,13 +161,13 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars .getInfo() .getDatabaseInfo() .getInstances() - .get(0) + .get(1) .getHost(), TestEnvironment.getCurrent() .getInfo() .getDatabaseInfo() .getInstances() - .get(0) + .get(1) .getPort(), TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); @@ -207,12 +207,12 @@ public void rdsTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); // Topology queries fail on docker containers, can't test topology for them - if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.DOCKER - || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() - == DatabaseEngineDeployment.AURORA) { - return; - } +// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.DOCKER +// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.AURORA) { +// return; +// } final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); From c728df667dc043127eb71e9877d9c9565f0476e9 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 09:44:25 -0800 Subject: [PATCH 14/43] revert: try other than writer instance --- .../java/integration/container/tests/TopologyQueryTests.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 311a55976..3b7216ef1 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -161,13 +161,13 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars .getInfo() .getDatabaseInfo() .getInstances() - .get(1) + .get(0) .getHost(), TestEnvironment.getCurrent() .getInfo() .getDatabaseInfo() .getInstances() - .get(1) + .get(0) .getPort(), TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); From 4025f3aaed07207fe15d6bc4585b57a8c900eff9 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 09:51:52 -0800 Subject: [PATCH 15/43] remove timestamp test and change back test scope --- wrapper/src/test/build.gradle.kts | 2 +- .../container/tests/TopologyQueryTests.java | 79 ------------------- 2 files changed, 1 insertion(+), 80 deletions(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index bc7159012..22217f77d 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.*") + filter.includeTestsMatching("integration.container.tests.*") } diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 3b7216ef1..5908f296b 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -69,14 +69,6 @@ public class TopologyQueryTests { public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); List expectedTypes; - // Topology queries fail on docker containers, can't test topology for them - // Also skip RDS, this is for Aurora -// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.DOCKER -// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.RDS) { -// return; -// } final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); @@ -135,69 +127,6 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { conn.close(); } - @TestTemplate - @ExtendWith(TestDriverProvider.class) - @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) - public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, ParseException { - LOGGER.info(testDriver.toString()); - - // Topology queries fail on docker containers, can't test topology for them - // Also skip RDS, this is for Aurora -// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.DOCKER -// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.RDS) { -// return; -// } - - final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); - DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); - DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); - - String url = - ConnectionStringHelper.getWrapperUrl( - testDriver, - TestEnvironment.getCurrent() - .getInfo() - .getDatabaseInfo() - .getInstances() - .get(0) - .getHost(), - TestEnvironment.getCurrent() - .getInfo() - .getDatabaseInfo() - .getInstances() - .get(0) - .getPort(), - TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); - LOGGER.finest("Connecting to " + url); - - String query = null; - SimpleDateFormat format; - if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { - query = AuroraPgDialect.TOPOLOGY_QUERY; - format = new SimpleDateFormat("yyy-MM-dd HH:mm:ssX"); - format.setTimeZone(TimeZone.getTimeZone("GMT")); - } else { - query = AuroraMysqlDialect.TOPOLOGY_QUERY; - format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); - } - - final Connection conn = DriverManager.getConnection(url, props); - assertTrue(conn.isValid(5)); - Statement stmt = conn.createStatement(); - stmt.executeQuery(query); - ResultSet rs = stmt.getResultSet(); - - Date date; - while (rs.next()) { - date = format.parse(rs.getString(5)); - assertNotNull(date); - } - - conn.close(); - } - @TestTemplate @ExtendWith(TestDriverProvider.class) @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.RDS) @@ -206,14 +135,6 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars public void rdsTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); - // Topology queries fail on docker containers, can't test topology for them -// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.DOCKER -// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.AURORA) { -// return; -// } - final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); From 66249f6eec58c5d966ebd33c0f5f2ca8da63f9a9 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 09:55:54 -0800 Subject: [PATCH 16/43] remove unused imports --- .../integration/container/tests/TopologyQueryTests.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 5908f296b..539b8c4c3 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -17,7 +17,6 @@ package integration.container.tests; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import integration.DatabaseEngineDeployment; @@ -34,21 +33,16 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.List; import java.util.Properties; -import java.util.TimeZone; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.MethodOrderer.MethodName; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; -import org.junit.jupiter.api.condition.DisabledIf; import org.junit.jupiter.api.extension.ExtendWith; import software.amazon.jdbc.dialect.AuroraMysqlDialect; import software.amazon.jdbc.dialect.AuroraPgDialect; From 0830cf8973afd392b7434b1d83a4f017f950f6a4 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 10:09:54 -0800 Subject: [PATCH 17/43] Revert "remove timestamp test and change back test scope" This reverts commit cd8722c1d759dffb4074eacd053e109e98be56f0. --- wrapper/src/test/build.gradle.kts | 2 +- .../container/tests/TopologyQueryTests.java | 79 +++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index 22217f77d..bc7159012 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.*") + filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.*") } diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 539b8c4c3..48eab9837 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -63,6 +63,14 @@ public class TopologyQueryTests { public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); List expectedTypes; + // Topology queries fail on docker containers, can't test topology for them + // Also skip RDS, this is for Aurora +// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.DOCKER +// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.RDS) { +// return; +// } final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); @@ -121,6 +129,69 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { conn.close(); } + @TestTemplate + @ExtendWith(TestDriverProvider.class) + @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) + public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, ParseException { + LOGGER.info(testDriver.toString()); + + // Topology queries fail on docker containers, can't test topology for them + // Also skip RDS, this is for Aurora +// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.DOCKER +// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.RDS) { +// return; +// } + + final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); + DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); + DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); + + String url = + ConnectionStringHelper.getWrapperUrl( + testDriver, + TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getHost(), + TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getPort(), + TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); + LOGGER.finest("Connecting to " + url); + + String query = null; + SimpleDateFormat format; + if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { + query = AuroraPgDialect.TOPOLOGY_QUERY; + format = new SimpleDateFormat("yyy-MM-dd HH:mm:ssX"); + format.setTimeZone(TimeZone.getTimeZone("GMT")); + } else { + query = AuroraMysqlDialect.TOPOLOGY_QUERY; + format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + } + + final Connection conn = DriverManager.getConnection(url, props); + assertTrue(conn.isValid(5)); + Statement stmt = conn.createStatement(); + stmt.executeQuery(query); + ResultSet rs = stmt.getResultSet(); + + Date date; + while (rs.next()) { + date = format.parse(rs.getString(5)); + assertNotNull(date); + } + + conn.close(); + } + @TestTemplate @ExtendWith(TestDriverProvider.class) @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.RDS) @@ -129,6 +200,14 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { public void rdsTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); + // Topology queries fail on docker containers, can't test topology for them +// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.DOCKER +// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() +// == DatabaseEngineDeployment.AURORA) { +// return; +// } + final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); From 33cae6c64111a8aee426e37a27dddcd2a5d605cb Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 10:10:07 -0800 Subject: [PATCH 18/43] Revert "remove unused imports" This reverts commit 8d726ef84e602e98a97d2447f51e52b6176e543c. --- .../integration/container/tests/TopologyQueryTests.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 48eab9837..3b7216ef1 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -17,6 +17,7 @@ package integration.container.tests; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import integration.DatabaseEngineDeployment; @@ -33,16 +34,21 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Properties; +import java.util.TimeZone; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.MethodOrderer.MethodName; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.condition.DisabledIf; import org.junit.jupiter.api.extension.ExtendWith; import software.amazon.jdbc.dialect.AuroraMysqlDialect; import software.amazon.jdbc.dialect.AuroraPgDialect; From e3cb6f66516598f6024f898a64044a87b321c419 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 10:11:07 -0800 Subject: [PATCH 19/43] enable on min two instances --- .../container/tests/TopologyQueryTests.java | 31 +++---------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 3b7216ef1..65455ff50 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -29,6 +29,7 @@ import integration.container.TestEnvironment; import integration.container.condition.DisableOnTestFeature; import integration.container.condition.EnableOnDatabaseEngineDeployment; +import integration.container.condition.EnableOnNumOfInstances; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; @@ -69,14 +70,6 @@ public class TopologyQueryTests { public void auroraTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); List expectedTypes; - // Topology queries fail on docker containers, can't test topology for them - // Also skip RDS, this is for Aurora -// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.DOCKER -// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.RDS) { -// return; -// } final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); @@ -138,18 +131,10 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { @TestTemplate @ExtendWith(TestDriverProvider.class) @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) + @EnableOnNumOfInstances(min = 2) public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, ParseException { LOGGER.info(testDriver.toString()); - // Topology queries fail on docker containers, can't test topology for them - // Also skip RDS, this is for Aurora -// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.DOCKER -// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.RDS) { -// return; -// } - final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); @@ -161,13 +146,13 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars .getInfo() .getDatabaseInfo() .getInstances() - .get(0) + .get(1) .getHost(), TestEnvironment.getCurrent() .getInfo() .getDatabaseInfo() .getInstances() - .get(0) + .get(1) .getPort(), TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); @@ -206,14 +191,6 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars public void rdsTestTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); - // Topology queries fail on docker containers, can't test topology for them -// if (TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.DOCKER -// || TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngineDeployment() -// == DatabaseEngineDeployment.AURORA) { -// return; -// } - final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); From 90e53666ffb4bc8e73c6ffde5853a45176eb5a35 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 13:16:23 -0800 Subject: [PATCH 20/43] add function for updating instance --- .../container/tests/TopologyQueryTests.java | 13 ++++++++++++- .../integration/util/AuroraTestUtility.java | 17 +++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 65455ff50..089cdab80 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -30,6 +30,7 @@ import integration.container.condition.DisableOnTestFeature; import integration.container.condition.EnableOnDatabaseEngineDeployment; import integration.container.condition.EnableOnNumOfInstances; +import integration.util.AuroraTestUtility; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; @@ -49,8 +50,9 @@ import org.junit.jupiter.api.MethodOrderer.MethodName; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; -import org.junit.jupiter.api.condition.DisabledIf; import org.junit.jupiter.api.extension.ExtendWith; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.rds.RdsClient; import software.amazon.jdbc.dialect.AuroraMysqlDialect; import software.amazon.jdbc.dialect.AuroraPgDialect; import software.amazon.jdbc.dialect.RdsMultiAzDbClusterMysqlDialect; @@ -157,6 +159,15 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); + String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo().getAuroraClusterName(); + Region region = Region.of(TestEnvironment.getCurrent().getInfo().getAuroraRegion()); + String caCertificateIdentifier = TestEnvironment.getCurrent().getInfo().getAuroraRegion(); + RdsClient client = RdsClient.builder() + .region(region) + .build(); + AuroraTestUtility.updateInstance(client, dbInstanceIdentifier, caCertificateIdentifier); + client.close(); + String query = null; SimpleDateFormat format; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index 8c9e38440..8a9fe2fff 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -80,6 +80,9 @@ import software.amazon.awssdk.services.rds.model.DescribeDbInstancesResponse; import software.amazon.awssdk.services.rds.model.FailoverDbClusterResponse; import software.amazon.awssdk.services.rds.model.Filter; +import software.amazon.awssdk.services.rds.model.ModifyDbInstanceRequest; +import software.amazon.awssdk.services.rds.model.ModifyDbInstanceResponse; +import software.amazon.awssdk.services.rds.model.RdsException; import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.awssdk.services.rds.waiters.RdsWaiter; import software.amazon.jdbc.util.StringUtils; @@ -958,4 +961,18 @@ public String getLTSVersion(String engine) { } throw new RuntimeException("Failed to find LTS version"); } + + public static void updateInstance(RdsClient client, String dbInstanceIdentifier, String caCertificateIdentifier) { + try { + ModifyDbInstanceRequest modifyDbInstanceRequest = ModifyDbInstanceRequest.builder() + .dbInstanceIdentifier(dbInstanceIdentifier) + .publiclyAccessible(true) + .applyImmediately(true) + .caCertificateIdentifier("rds-ca-rsa4096-g1") + .build(); + ModifyDbInstanceResponse modifyDbInstanceResponse = client.modifyDBInstance(modifyDbInstanceRequest); + } catch (RdsException e) { + LOGGER.finer(e.getLocalizedMessage()); + } + } } From f5e5c69c8da9883839410fb12c7edfdc129d58be Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 13:21:29 -0800 Subject: [PATCH 21/43] fix bug with instance id --- .../java/integration/container/tests/TopologyQueryTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 089cdab80..5354a3188 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -159,7 +159,7 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); - String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo().getAuroraClusterName(); + String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getInstances().get(0).getInstanceId(); Region region = Region.of(TestEnvironment.getCurrent().getInfo().getAuroraRegion()); String caCertificateIdentifier = TestEnvironment.getCurrent().getInfo().getAuroraRegion(); RdsClient client = RdsClient.builder() From 5ee6c573e4ed2723edcb52611d656808de1ed8b2 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 14:10:23 -0800 Subject: [PATCH 22/43] skipping first row --- wrapper/src/test/build.gradle.kts | 2 +- .../container/tests/TopologyQueryTests.java | 20 +++++++++++++++---- .../integration/util/AuroraTestUtility.java | 5 +++-- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index bc7159012..29b4e1ea1 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.*") + filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.auroraTestTimestamp") } diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 5354a3188..34275c8eb 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -159,13 +159,23 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); - String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getInstances().get(0).getInstanceId(); - Region region = Region.of(TestEnvironment.getCurrent().getInfo().getAuroraRegion()); - String caCertificateIdentifier = TestEnvironment.getCurrent().getInfo().getAuroraRegion(); + String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo() + .getDatabaseInfo() + .getInstances() + .get(0) + .getInstanceId(); + Region region = Region.of(TestEnvironment.getCurrent() + .getInfo() + .getAuroraRegion()); + String masterUserPassword = TestEnvironment.getCurrent() + .getInfo() + .getDatabaseInfo() + .getPassword(); + RdsClient client = RdsClient.builder() .region(region) .build(); - AuroraTestUtility.updateInstance(client, dbInstanceIdentifier, caCertificateIdentifier); + AuroraTestUtility.updateInstance(client, dbInstanceIdentifier, masterUserPassword); client.close(); String query = null; @@ -186,6 +196,8 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars ResultSet rs = stmt.getResultSet(); Date date; + // Skip the first row, empty timestamp + rs.next(); while (rs.next()) { date = format.parse(rs.getString(5)); assertNotNull(date); diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index 8a9fe2fff..24dc369db 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -962,15 +962,16 @@ public String getLTSVersion(String engine) { throw new RuntimeException("Failed to find LTS version"); } - public static void updateInstance(RdsClient client, String dbInstanceIdentifier, String caCertificateIdentifier) { + public static void updateInstance(RdsClient client, String dbInstanceIdentifier, String masterUserPassword) { try { ModifyDbInstanceRequest modifyDbInstanceRequest = ModifyDbInstanceRequest.builder() .dbInstanceIdentifier(dbInstanceIdentifier) .publiclyAccessible(true) .applyImmediately(true) .caCertificateIdentifier("rds-ca-rsa4096-g1") + .masterUserPassword(masterUserPassword) .build(); - ModifyDbInstanceResponse modifyDbInstanceResponse = client.modifyDBInstance(modifyDbInstanceRequest); + client.modifyDBInstance(modifyDbInstanceRequest); } catch (RdsException e) { LOGGER.finer(e.getLocalizedMessage()); } From 03d71d823f8173b5be99b70443712880282e6269 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 14:32:16 -0800 Subject: [PATCH 23/43] change test scope --- wrapper/src/test/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index 29b4e1ea1..bc7159012 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.auroraTestTimestamp") + filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.*") } From df4ebd48fb2194fa7aba28206da29653c83c53b9 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Thu, 29 Feb 2024 15:30:18 -0800 Subject: [PATCH 24/43] add null check --- .../container/tests/TopologyQueryTests.java | 16 +++++++--------- .../java/integration/util/AuroraTestUtility.java | 3 +-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 34275c8eb..96553168c 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -167,15 +167,11 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars Region region = Region.of(TestEnvironment.getCurrent() .getInfo() .getAuroraRegion()); - String masterUserPassword = TestEnvironment.getCurrent() - .getInfo() - .getDatabaseInfo() - .getPassword(); RdsClient client = RdsClient.builder() .region(region) .build(); - AuroraTestUtility.updateInstance(client, dbInstanceIdentifier, masterUserPassword); + AuroraTestUtility.updateInstance(client, dbInstanceIdentifier); client.close(); String query = null; @@ -195,13 +191,15 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars stmt.executeQuery(query); ResultSet rs = stmt.getResultSet(); - Date date; + Date date = null; // Skip the first row, empty timestamp - rs.next(); while (rs.next()) { - date = format.parse(rs.getString(5)); - assertNotNull(date); + if (rs.getString(5) != null) { + date = format.parse(rs.getString(5)); + assertNotNull(date); + } } + assertNotNull(date); conn.close(); } diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index 24dc369db..5f1cc05e5 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -962,14 +962,13 @@ public String getLTSVersion(String engine) { throw new RuntimeException("Failed to find LTS version"); } - public static void updateInstance(RdsClient client, String dbInstanceIdentifier, String masterUserPassword) { + public static void updateInstance(RdsClient client, String dbInstanceIdentifier) { try { ModifyDbInstanceRequest modifyDbInstanceRequest = ModifyDbInstanceRequest.builder() .dbInstanceIdentifier(dbInstanceIdentifier) .publiclyAccessible(true) .applyImmediately(true) .caCertificateIdentifier("rds-ca-rsa4096-g1") - .masterUserPassword(masterUserPassword) .build(); client.modifyDBInstance(modifyDbInstanceRequest); } catch (RdsException e) { From 03eb786ffad867b8e243b8bf399af7aa051f186e Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 09:35:52 -0800 Subject: [PATCH 25/43] clean up code --- .../container/tests/TopologyQueryTests.java | 14 ++++++++------ .../java/integration/util/AuroraTestUtility.java | 7 +++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 96553168c..ef9a4056d 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -65,11 +65,12 @@ TestEnvironmentFeatures.RUN_AUTOSCALING_TESTS_ONLY}) public class TopologyQueryTests { private static final Logger LOGGER = Logger.getLogger(TopologyQueryTests.class.getName()); + private AuroraTestUtility util = new AuroraTestUtility(); @TestTemplate @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) @ExtendWith(TestDriverProvider.class) - public void auroraTestTypes(TestDriver testDriver) throws SQLException { + public void testAuroraTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); List expectedTypes; @@ -134,7 +135,7 @@ public void auroraTestTypes(TestDriver testDriver) throws SQLException { @ExtendWith(TestDriverProvider.class) @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) @EnableOnNumOfInstances(min = 2) - public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, ParseException { + public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, ParseException { LOGGER.info(testDriver.toString()); final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); @@ -159,6 +160,7 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); + // Update cluster to get non-null timestamp String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo() .getDatabaseInfo() .getInstances() @@ -171,7 +173,8 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars RdsClient client = RdsClient.builder() .region(region) .build(); - AuroraTestUtility.updateInstance(client, dbInstanceIdentifier); + util.updateInstanceCertificateIdentifier( + dbInstanceIdentifier, "rds-ca-rsa4096-g1"); client.close(); String query = null; @@ -192,7 +195,6 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars ResultSet rs = stmt.getResultSet(); Date date = null; - // Skip the first row, empty timestamp while (rs.next()) { if (rs.getString(5) != null) { date = format.parse(rs.getString(5)); @@ -209,7 +211,7 @@ public void auroraTestTimestamp(TestDriver testDriver) throws SQLException, Pars @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.RDS) @Disabled // TODO: Disabled due to RDS integration tests not being supported yet - public void rdsTestTypes(TestDriver testDriver) throws SQLException { + public void testRdsTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); @@ -245,7 +247,7 @@ public void rdsTestTypes(TestDriver testDriver) throws SQLException { } else { query = RdsMultiAzDbClusterMysqlDialect.TOPOLOGY_QUERY; expectedTypes = Arrays.asList( - "INT", + "VARCHAR", "VARCHAR", "INT" ); diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index 5f1cc05e5..d2328dbdb 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -81,7 +81,6 @@ import software.amazon.awssdk.services.rds.model.FailoverDbClusterResponse; import software.amazon.awssdk.services.rds.model.Filter; import software.amazon.awssdk.services.rds.model.ModifyDbInstanceRequest; -import software.amazon.awssdk.services.rds.model.ModifyDbInstanceResponse; import software.amazon.awssdk.services.rds.model.RdsException; import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.awssdk.services.rds.waiters.RdsWaiter; @@ -962,15 +961,15 @@ public String getLTSVersion(String engine) { throw new RuntimeException("Failed to find LTS version"); } - public static void updateInstance(RdsClient client, String dbInstanceIdentifier) { + public void updateInstanceCertificateIdentifier(String dbInstanceIdentifier, String certificateIdentifier) { try { ModifyDbInstanceRequest modifyDbInstanceRequest = ModifyDbInstanceRequest.builder() .dbInstanceIdentifier(dbInstanceIdentifier) .publiclyAccessible(true) .applyImmediately(true) - .caCertificateIdentifier("rds-ca-rsa4096-g1") + .caCertificateIdentifier(certificateIdentifier) .build(); - client.modifyDBInstance(modifyDbInstanceRequest); + rdsClient.modifyDBInstance(modifyDbInstanceRequest); } catch (RdsException e) { LOGGER.finer(e.getLocalizedMessage()); } From 90b47d62f3891eece659948bf36b6ae2aff8f280 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 10:15:34 -0800 Subject: [PATCH 26/43] change test scope back to normal --- wrapper/src/test/build.gradle.kts | 2 +- .../src/test/java/integration/util/AuroraTestUtility.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index bc7159012..22217f77d 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.*") + filter.includeTestsMatching("integration.container.tests.*") } diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index d2328dbdb..1d3f4d768 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -961,7 +961,8 @@ public String getLTSVersion(String engine) { throw new RuntimeException("Failed to find LTS version"); } - public void updateInstanceCertificateIdentifier(String dbInstanceIdentifier, String certificateIdentifier) { + public void updateInstanceCertificateIdentifier( + String dbInstanceIdentifier, String certificateIdentifier) { try { ModifyDbInstanceRequest modifyDbInstanceRequest = ModifyDbInstanceRequest.builder() .dbInstanceIdentifier(dbInstanceIdentifier) @@ -970,8 +971,9 @@ public void updateInstanceCertificateIdentifier(String dbInstanceIdentifier, Str .caCertificateIdentifier(certificateIdentifier) .build(); rdsClient.modifyDBInstance(modifyDbInstanceRequest); - } catch (RdsException e) { - LOGGER.finer(e.getLocalizedMessage()); + } catch (Exception e) { + LOGGER.finest("Error updating certificate identifier on " + + dbInstanceIdentifier + ": " + e.getMessage()); } } } From d617b72b1a3d265742c64d5c0018e9ec96215e3e Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 10:17:31 -0800 Subject: [PATCH 27/43] remove import --- wrapper/src/test/java/integration/util/AuroraTestUtility.java | 1 - 1 file changed, 1 deletion(-) diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index 1d3f4d768..310d359e4 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -81,7 +81,6 @@ import software.amazon.awssdk.services.rds.model.FailoverDbClusterResponse; import software.amazon.awssdk.services.rds.model.Filter; import software.amazon.awssdk.services.rds.model.ModifyDbInstanceRequest; -import software.amazon.awssdk.services.rds.model.RdsException; import software.amazon.awssdk.services.rds.model.Tag; import software.amazon.awssdk.services.rds.waiters.RdsWaiter; import software.amazon.jdbc.util.StringUtils; From 09496af5e90343f7792eee26d907dfa7f914e6cb Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 10:31:35 -0800 Subject: [PATCH 28/43] clarify code --- .../java/integration/container/tests/TopologyQueryTests.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index ef9a4056d..b10ecc18a 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -142,6 +142,7 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars DriverHelper.setConnectTimeout(testDriver, props, 10, TimeUnit.SECONDS); DriverHelper.setSocketTimeout(testDriver, props, 10, TimeUnit.SECONDS); + // Get second instance since first one has null timestamps String url = ConnectionStringHelper.getWrapperUrl( testDriver, @@ -173,6 +174,7 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars RdsClient client = RdsClient.builder() .region(region) .build(); + // Update the cluster to force timestamp to appear util.updateInstanceCertificateIdentifier( dbInstanceIdentifier, "rds-ca-rsa4096-g1"); client.close(); From 9562e11cb3255e420215966cf88ed186df3430fa Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 11:32:44 -0800 Subject: [PATCH 29/43] remove duplicate comment --- .../java/integration/container/tests/TopologyQueryTests.java | 1 - 1 file changed, 1 deletion(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index b10ecc18a..a3ff324e0 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -161,7 +161,6 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); - // Update cluster to get non-null timestamp String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo() .getDatabaseInfo() .getInstances() From 53237a1ef4aec7255eba3d08a15b4e6d1a79b067 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 11:33:17 -0800 Subject: [PATCH 30/43] add final --- .../java/integration/container/tests/TopologyQueryTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index a3ff324e0..a6a9ed77e 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -65,7 +65,7 @@ TestEnvironmentFeatures.RUN_AUTOSCALING_TESTS_ONLY}) public class TopologyQueryTests { private static final Logger LOGGER = Logger.getLogger(TopologyQueryTests.class.getName()); - private AuroraTestUtility util = new AuroraTestUtility(); + private final AuroraTestUtility util = new AuroraTestUtility(); @TestTemplate @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) From 6f4ded82832133d66207708108dd7de4e3a36f44 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 11:46:04 -0800 Subject: [PATCH 31/43] rename function --- .../java/integration/container/tests/TopologyQueryTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index a6a9ed77e..2c64b9e48 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -212,7 +212,7 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.RDS) @Disabled // TODO: Disabled due to RDS integration tests not being supported yet - public void testRdsTypes(TestDriver testDriver) throws SQLException { + public void testRdsMultiAzTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); final Properties props = ConnectionStringHelper.getDefaultPropertiesWithNoPlugins(); From c22a97fa803b03c0006839b22d8127ba7aae9e43 Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 11:47:04 -0800 Subject: [PATCH 32/43] update comment --- .../java/integration/container/tests/TopologyQueryTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 2c64b9e48..27455ee7d 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -211,7 +211,7 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars @ExtendWith(TestDriverProvider.class) @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.RDS) @Disabled - // TODO: Disabled due to RDS integration tests not being supported yet + // TODO: Disabled due to RdsMultiAz integration tests not being supported yet public void testRdsMultiAzTypes(TestDriver testDriver) throws SQLException { LOGGER.info(testDriver.toString()); From 65174ef17fcadcb7f3e907498ecd20a15f9d77ee Mon Sep 17 00:00:00 2001 From: jasonli-improving Date: Fri, 1 Mar 2024 15:30:33 -0800 Subject: [PATCH 33/43] use getters instead of changing fields to public --- .../amazon/jdbc/dialect/AuroraMysqlDialect.java | 6 +++++- .../amazon/jdbc/dialect/AuroraPgDialect.java | 6 +++++- .../dialect/RdsMultiAzDbClusterMysqlDialect.java | 6 +++++- .../jdbc/dialect/RdsMultiAzDbClusterPgDialect.java | 6 +++++- .../container/tests/TopologyQueryTests.java | 12 ++++++------ 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java index b80d0f11e..d35a757c2 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java @@ -26,7 +26,7 @@ public class AuroraMysqlDialect extends MysqlDialect { - public static final String TOPOLOGY_QUERY = + private static final String TOPOLOGY_QUERY = "SELECT SERVER_ID, CASE WHEN SESSION_ID = 'MASTER_SESSION_ID' THEN TRUE ELSE FALSE END, " + "CPU, REPLICA_LAG_IN_MILLISECONDS, LAST_UPDATE_TIMESTAMP " + "FROM information_schema.replica_host_status " @@ -83,4 +83,8 @@ public HostListProviderSupplier getHostListProvider() { NODE_ID_QUERY, IS_READER_QUERY); } + + public static String getTopologyQuery() { + return TOPOLOGY_QUERY; + } } diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java index 1fa41d5ef..dc0de5adb 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java @@ -37,7 +37,7 @@ public class AuroraPgDialect extends PgDialect { private static final String topologySql = "SELECT 1 FROM aurora_replica_status() LIMIT 1"; - public static final String TOPOLOGY_QUERY = + private static final String TOPOLOGY_QUERY = "SELECT SERVER_ID, CASE WHEN SESSION_ID = 'MASTER_SESSION_ID' THEN TRUE ELSE FALSE END, " + "CPU, COALESCE(REPLICA_LAG_IN_MSEC, 0), LAST_UPDATE_TIMESTAMP " + "FROM aurora_replica_status() " @@ -127,4 +127,8 @@ public HostListProviderSupplier getHostListProvider() { NODE_ID_QUERY, IS_READER_QUERY); } + + public static String getTopologyQuery() { + return TOPOLOGY_QUERY; + } } diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java index 06338f049..5a33dafa1 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java @@ -29,7 +29,7 @@ public class RdsMultiAzDbClusterMysqlDialect extends MysqlDialect { - public static final String TOPOLOGY_QUERY = "SELECT id, endpoint, port FROM mysql.rds_topology"; + private static final String TOPOLOGY_QUERY = "SELECT id, endpoint, port FROM mysql.rds_topology"; private static final String TOPOLOGY_TABLE_EXIST_QUERY = "SELECT 1 AS tmp FROM information_schema.tables WHERE" @@ -109,4 +109,8 @@ public void prepareConnectProperties( ? connectionAttributes : connectProperties.getProperty("connectionAttributes") + "," + connectionAttributes); } + + public static String getTopologyQuery() { + return TOPOLOGY_QUERY; + } } diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java index cba6780b3..0f58384a1 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java @@ -30,7 +30,7 @@ public class RdsMultiAzDbClusterPgDialect extends PgDialect { private static MultiAzDbClusterPgExceptionHandler exceptionHandler; - public static final String TOPOLOGY_QUERY = + private static final String TOPOLOGY_QUERY = "SELECT id, endpoint, port FROM rds_tools.show_topology('aws_jdbc_driver-" + DriverInfo.DRIVER_VERSION + "')"; private static final String WRITER_NODE_FUNC_EXIST_QUERY = @@ -109,4 +109,8 @@ public HostListProviderSupplier getHostListProvider() { FETCH_WRITER_NODE_QUERY, FETCH_WRITER_NODE_QUERY_COLUMN_NAME); } + + public static String getTopologyQuery() { + return TOPOLOGY_QUERY; + } } diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 27455ee7d..c33ae693f 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -98,7 +98,7 @@ public void testAuroraTypes(TestDriver testDriver) throws SQLException { String query = null; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { - query = AuroraPgDialect.TOPOLOGY_QUERY; + query = AuroraPgDialect.getTopologyQuery(); expectedTypes = Arrays.asList( "text", "bool", @@ -107,7 +107,7 @@ public void testAuroraTypes(TestDriver testDriver) throws SQLException { "timestamptz" ); } else { - query = AuroraMysqlDialect.TOPOLOGY_QUERY; + query = AuroraMysqlDialect.getTopologyQuery(); expectedTypes = Arrays.asList( "VARCHAR", "BIGINT", @@ -181,11 +181,11 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars String query = null; SimpleDateFormat format; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { - query = AuroraPgDialect.TOPOLOGY_QUERY; + query = AuroraPgDialect.getTopologyQuery(); format = new SimpleDateFormat("yyy-MM-dd HH:mm:ssX"); format.setTimeZone(TimeZone.getTimeZone("GMT")); } else { - query = AuroraMysqlDialect.TOPOLOGY_QUERY; + query = AuroraMysqlDialect.getTopologyQuery(); format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); } @@ -239,14 +239,14 @@ public void testRdsMultiAzTypes(TestDriver testDriver) throws SQLException { List expectedTypes; String query = null; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { - query = RdsMultiAzDbClusterPgDialect.TOPOLOGY_QUERY; + query = RdsMultiAzDbClusterPgDialect.getTopologyQuery(); expectedTypes = Arrays.asList( "text", "text", "int4" ); } else { - query = RdsMultiAzDbClusterMysqlDialect.TOPOLOGY_QUERY; + query = RdsMultiAzDbClusterMysqlDialect.getTopologyQuery(); expectedTypes = Arrays.asList( "VARCHAR", "VARCHAR", From 0edb182b67d845119c1c61846b3ca95beb5c8c08 Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Wed, 6 Mar 2024 14:01:46 -0800 Subject: [PATCH 34/43] test fails if update certificate throws exception --- .../integration/container/tests/TopologyQueryTests.java | 6 ++++-- .../src/test/java/integration/util/AuroraTestUtility.java | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index c33ae693f..5415a0f70 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -16,6 +16,7 @@ package integration.container.tests; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -174,8 +175,9 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars .region(region) .build(); // Update the cluster to force timestamp to appear - util.updateInstanceCertificateIdentifier( - dbInstanceIdentifier, "rds-ca-rsa4096-g1"); + assertDoesNotThrow(() -> util.updateInstanceCertificateIdentifier( + dbInstanceIdentifier, "rds-ca-rsa4096-g1")); + client.close(); String query = null; diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index 310d359e4..30c26a29a 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -973,6 +973,7 @@ public void updateInstanceCertificateIdentifier( } catch (Exception e) { LOGGER.finest("Error updating certificate identifier on " + dbInstanceIdentifier + ": " + e.getMessage()); + throw e; } } } From 83ed69d5db08b76f10b97c3f6239c7e6da255da2 Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Wed, 13 Mar 2024 15:13:57 -0700 Subject: [PATCH 35/43] missing bracket from merge --- .../container/tests/TopologyQueryTests.java | 11 ----------- .../test/java/integration/util/AuroraTestUtility.java | 2 -- 2 files changed, 13 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 5415a0f70..754cdfaf9 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -52,8 +52,6 @@ import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.TestTemplate; import org.junit.jupiter.api.extension.ExtendWith; -import software.amazon.awssdk.regions.Region; -import software.amazon.awssdk.services.rds.RdsClient; import software.amazon.jdbc.dialect.AuroraMysqlDialect; import software.amazon.jdbc.dialect.AuroraPgDialect; import software.amazon.jdbc.dialect.RdsMultiAzDbClusterMysqlDialect; @@ -167,19 +165,10 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars .getInstances() .get(0) .getInstanceId(); - Region region = Region.of(TestEnvironment.getCurrent() - .getInfo() - .getAuroraRegion()); - - RdsClient client = RdsClient.builder() - .region(region) - .build(); // Update the cluster to force timestamp to appear assertDoesNotThrow(() -> util.updateInstanceCertificateIdentifier( dbInstanceIdentifier, "rds-ca-rsa4096-g1")); - client.close(); - String query = null; SimpleDateFormat format; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index 30c26a29a..770bbed53 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -39,8 +39,6 @@ import java.sql.Statement; import java.time.Duration; import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Optional; From 2681ddf9d40d171fa05b5b656120c47d379a9b73 Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Tue, 26 Mar 2024 10:01:43 -0700 Subject: [PATCH 36/43] changes from review --- .../jdbc/dialect/AuroraMysqlDialect.java | 2 +- .../amazon/jdbc/dialect/AuroraPgDialect.java | 2 +- .../RdsMultiAzDbClusterMysqlDialect.java | 2 +- .../dialect/RdsMultiAzDbClusterPgDialect.java | 2 +- .../hostlistprovider/RdsHostListProvider.java | 4 ++-- .../container/tests/TopologyQueryTests.java | 24 ++++++++++++------- 6 files changed, 21 insertions(+), 15 deletions(-) diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java index d35a757c2..dc5b55d0a 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraMysqlDialect.java @@ -84,7 +84,7 @@ public HostListProviderSupplier getHostListProvider() { IS_READER_QUERY); } - public static String getTopologyQuery() { + public String getTopologyQuery() { return TOPOLOGY_QUERY; } } diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java index dc0de5adb..111e58ab6 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java @@ -128,7 +128,7 @@ public HostListProviderSupplier getHostListProvider() { IS_READER_QUERY); } - public static String getTopologyQuery() { + public String getTopologyQuery() { return TOPOLOGY_QUERY; } } diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java index 5a33dafa1..aeceb7bfe 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterMysqlDialect.java @@ -110,7 +110,7 @@ public void prepareConnectProperties( : connectProperties.getProperty("connectionAttributes") + "," + connectionAttributes); } - public static String getTopologyQuery() { + public String getTopologyQuery() { return TOPOLOGY_QUERY; } } diff --git a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java index 0f58384a1..2e06356e1 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java +++ b/wrapper/src/main/java/software/amazon/jdbc/dialect/RdsMultiAzDbClusterPgDialect.java @@ -110,7 +110,7 @@ public HostListProviderSupplier getHostListProvider() { FETCH_WRITER_NODE_QUERY_COLUMN_NAME); } - public static String getTopologyQuery() { + public String getTopologyQuery() { return TOPOLOGY_QUERY; } } diff --git a/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/RdsHostListProvider.java b/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/RdsHostListProvider.java index 6f0e6900b..b232862c7 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/RdsHostListProvider.java +++ b/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/RdsHostListProvider.java @@ -423,6 +423,7 @@ private HostSpec createHost(final ResultSet resultSet) throws SQLException { // According to the topology query the result set // should contain 4 columns: node ID, 1/0 (writer/reader), CPU utilization, node lag in time. String hostName = resultSet.getString(1); + hostName = hostName == null ? "?" : hostName; final boolean isWriter = resultSet.getBoolean(2); final float cpuUtilization = resultSet.getFloat(3); final float nodeLag = resultSet.getFloat(4); @@ -439,8 +440,7 @@ private HostSpec createHost(final ResultSet resultSet) throws SQLException { return createHost(hostName, isWriter, weight, lastUpdateTime); } - private HostSpec createHost(String host, final boolean isWriter, final long weight, final Timestamp lastUpdateTime) { - host = host == null ? "?" : host; + private HostSpec createHost(String host, final boolean isWriter, final long weight, final @Nullable Timestamp lastUpdateTime) { final String endpoint = getHostEndpoint(host); final int port = this.clusterInstanceTemplate.isPortSpecified() ? this.clusterInstanceTemplate.getPort() diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 754cdfaf9..1fabbe34f 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -54,6 +54,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import software.amazon.jdbc.dialect.AuroraMysqlDialect; import software.amazon.jdbc.dialect.AuroraPgDialect; +import software.amazon.jdbc.dialect.Dialect; import software.amazon.jdbc.dialect.RdsMultiAzDbClusterMysqlDialect; import software.amazon.jdbc.dialect.RdsMultiAzDbClusterPgDialect; @@ -65,6 +66,7 @@ public class TopologyQueryTests { private static final Logger LOGGER = Logger.getLogger(TopologyQueryTests.class.getName()); private final AuroraTestUtility util = new AuroraTestUtility(); + private String query = null; @TestTemplate @EnableOnDatabaseEngineDeployment(DatabaseEngineDeployment.AURORA) @@ -95,9 +97,9 @@ public void testAuroraTypes(TestDriver testDriver) throws SQLException { TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); - String query = null; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { - query = AuroraPgDialect.getTopologyQuery(); + AuroraPgDialect dialect = new AuroraPgDialect(); + query = dialect.getTopologyQuery(); expectedTypes = Arrays.asList( "text", "bool", @@ -106,7 +108,8 @@ public void testAuroraTypes(TestDriver testDriver) throws SQLException { "timestamptz" ); } else { - query = AuroraMysqlDialect.getTopologyQuery(); + AuroraMysqlDialect dialect = new AuroraMysqlDialect(); + query = dialect.getTopologyQuery(); expectedTypes = Arrays.asList( "VARCHAR", "BIGINT", @@ -169,14 +172,15 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars assertDoesNotThrow(() -> util.updateInstanceCertificateIdentifier( dbInstanceIdentifier, "rds-ca-rsa4096-g1")); - String query = null; SimpleDateFormat format; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { - query = AuroraPgDialect.getTopologyQuery(); + AuroraPgDialect dialect = new AuroraPgDialect(); + query = dialect.getTopologyQuery(); format = new SimpleDateFormat("yyy-MM-dd HH:mm:ssX"); format.setTimeZone(TimeZone.getTimeZone("GMT")); } else { - query = AuroraMysqlDialect.getTopologyQuery(); + AuroraMysqlDialect dialect = new AuroraMysqlDialect(); + query = dialect.getTopologyQuery(); format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); } @@ -227,17 +231,19 @@ public void testRdsMultiAzTypes(TestDriver testDriver) throws SQLException { .getPort(), TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); + List expectedTypes; - String query = null; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { - query = RdsMultiAzDbClusterPgDialect.getTopologyQuery(); + RdsMultiAzDbClusterPgDialect dialect = new RdsMultiAzDbClusterPgDialect(); + query = dialect.getTopologyQuery(); expectedTypes = Arrays.asList( "text", "text", "int4" ); } else { - query = RdsMultiAzDbClusterMysqlDialect.getTopologyQuery(); + RdsMultiAzDbClusterMysqlDialect dialect = new RdsMultiAzDbClusterMysqlDialect(); + query = dialect.getTopologyQuery(); expectedTypes = Arrays.asList( "VARCHAR", "VARCHAR", From 5fb7f9f0a785d64c54b7cbede583433bb477a019 Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Tue, 26 Mar 2024 12:03:17 -0700 Subject: [PATCH 37/43] reduce line length --- .../amazon/jdbc/hostlistprovider/RdsHostListProvider.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/RdsHostListProvider.java b/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/RdsHostListProvider.java index b232862c7..4acb7da30 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/RdsHostListProvider.java +++ b/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/RdsHostListProvider.java @@ -440,7 +440,11 @@ private HostSpec createHost(final ResultSet resultSet) throws SQLException { return createHost(hostName, isWriter, weight, lastUpdateTime); } - private HostSpec createHost(String host, final boolean isWriter, final long weight, final @Nullable Timestamp lastUpdateTime) { + private HostSpec createHost( + String host, + final boolean isWriter, + final long weight, + final @Nullable Timestamp lastUpdateTime) { final String endpoint = getHostEndpoint(host); final int port = this.clusterInstanceTemplate.isPortSpecified() ? this.clusterInstanceTemplate.getPort() From 93895c3f73e97a0b3c2762efa0f6342edd21b4c3 Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Tue, 26 Mar 2024 13:31:28 -0700 Subject: [PATCH 38/43] testing scope --- wrapper/src/test/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index 22217f77d..929e596f0 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.*") + filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.testAuroraTypes") } From 8c8e6679c7294c75072e5a9dcbe09b7f44bd6fc2 Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Tue, 26 Mar 2024 14:15:47 -0700 Subject: [PATCH 39/43] Revert "testing scope" This reverts commit 93895c3f73e97a0b3c2762efa0f6342edd21b4c3. --- wrapper/src/test/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index 929e596f0..22217f77d 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.testAuroraTypes") + filter.includeTestsMatching("integration.container.tests.*") } From e094029d332f81b4a86f6aa8bac5b53d31affd85 Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Tue, 26 Mar 2024 14:56:09 -0700 Subject: [PATCH 40/43] test --- wrapper/src/test/build.gradle.kts | 2 +- .../container/tests/TopologyQueryTests.java | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index 22217f77d..d9416f9ba 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.*") + filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.testAuroraTimestamp") } diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 1fabbe34f..222aeb700 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import integration.DatabaseEngine; import integration.DatabaseEngineDeployment; import integration.DriverHelper; import integration.TestEnvironmentFeatures; @@ -95,6 +96,12 @@ public void testAuroraTypes(TestDriver testDriver) throws SQLException { .get(0) .getPort(), TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); + + if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.MARIADB + && TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngine() == DatabaseEngine.MYSQL) { + props.setProperty("permitMysqlScheme", "1"); + } + LOGGER.finest("Connecting to " + url); if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { @@ -163,14 +170,19 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); + if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.MARIADB + && TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngine() == DatabaseEngine.MYSQL) { + props.setProperty("permitMysqlScheme", "1"); + } + String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo() .getDatabaseInfo() .getInstances() .get(0) .getInstanceId(); // Update the cluster to force timestamp to appear - assertDoesNotThrow(() -> util.updateInstanceCertificateIdentifier( - dbInstanceIdentifier, "rds-ca-rsa4096-g1")); +// assertDoesNotThrow(() -> util.updateInstanceCertificateIdentifier( +// dbInstanceIdentifier, "rds-ca-rsa4096-g1")); SimpleDateFormat format; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { @@ -232,6 +244,11 @@ public void testRdsMultiAzTypes(TestDriver testDriver) throws SQLException { TestEnvironment.getCurrent().getInfo().getDatabaseInfo().getDefaultDbName()); LOGGER.finest("Connecting to " + url); + if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.MARIADB + && TestEnvironment.getCurrent().getInfo().getRequest().getDatabaseEngine() == DatabaseEngine.MYSQL) { + props.setProperty("permitMysqlScheme", "1"); + } + List expectedTypes; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { RdsMultiAzDbClusterPgDialect dialect = new RdsMultiAzDbClusterPgDialect(); From 89efa7e38d6341a0246cdcbd3dedeff71e42042a Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Tue, 26 Mar 2024 15:18:01 -0700 Subject: [PATCH 41/43] test --- wrapper/src/test/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index d9416f9ba..bc7159012 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.testAuroraTimestamp") + filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.*") } From adb82b32bf3c09bcb4a7d702566fe862bf0db0ae Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Tue, 26 Mar 2024 16:08:25 -0700 Subject: [PATCH 42/43] updating instance not required for timestamp --- .../container/tests/TopologyQueryTests.java | 10 ---------- .../integration/util/AuroraTestUtility.java | 17 ----------------- 2 files changed, 27 deletions(-) diff --git a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java index 222aeb700..01d84e141 100644 --- a/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java +++ b/wrapper/src/test/java/integration/container/tests/TopologyQueryTests.java @@ -66,7 +66,6 @@ TestEnvironmentFeatures.RUN_AUTOSCALING_TESTS_ONLY}) public class TopologyQueryTests { private static final Logger LOGGER = Logger.getLogger(TopologyQueryTests.class.getName()); - private final AuroraTestUtility util = new AuroraTestUtility(); private String query = null; @TestTemplate @@ -175,15 +174,6 @@ public void testAuroraTimestamp(TestDriver testDriver) throws SQLException, Pars props.setProperty("permitMysqlScheme", "1"); } - String dbInstanceIdentifier = TestEnvironment.getCurrent().getInfo() - .getDatabaseInfo() - .getInstances() - .get(0) - .getInstanceId(); - // Update the cluster to force timestamp to appear -// assertDoesNotThrow(() -> util.updateInstanceCertificateIdentifier( -// dbInstanceIdentifier, "rds-ca-rsa4096-g1")); - SimpleDateFormat format; if (TestEnvironment.getCurrent().getCurrentDriver() == TestDriver.PG) { AuroraPgDialect dialect = new AuroraPgDialect(); diff --git a/wrapper/src/test/java/integration/util/AuroraTestUtility.java b/wrapper/src/test/java/integration/util/AuroraTestUtility.java index 770bbed53..58668b9d4 100644 --- a/wrapper/src/test/java/integration/util/AuroraTestUtility.java +++ b/wrapper/src/test/java/integration/util/AuroraTestUtility.java @@ -957,21 +957,4 @@ public String getLTSVersion(String engine) { } throw new RuntimeException("Failed to find LTS version"); } - - public void updateInstanceCertificateIdentifier( - String dbInstanceIdentifier, String certificateIdentifier) { - try { - ModifyDbInstanceRequest modifyDbInstanceRequest = ModifyDbInstanceRequest.builder() - .dbInstanceIdentifier(dbInstanceIdentifier) - .publiclyAccessible(true) - .applyImmediately(true) - .caCertificateIdentifier(certificateIdentifier) - .build(); - rdsClient.modifyDBInstance(modifyDbInstanceRequest); - } catch (Exception e) { - LOGGER.finest("Error updating certificate identifier on " - + dbInstanceIdentifier + ": " + e.getMessage()); - throw e; - } - } } From 06ba1bd6bcc82f3b1cdeb558bab3873cc1b73829 Mon Sep 17 00:00:00 2001 From: jasonlamz Date: Wed, 27 Mar 2024 09:37:13 -0700 Subject: [PATCH 43/43] revert scope --- wrapper/src/test/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper/src/test/build.gradle.kts b/wrapper/src/test/build.gradle.kts index bc7159012..22217f77d 100644 --- a/wrapper/src/test/build.gradle.kts +++ b/wrapper/src/test/build.gradle.kts @@ -99,5 +99,5 @@ tasks.register("in-container") { // modify below filter to select specific integration tests // see https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html - filter.includeTestsMatching("integration.container.tests.TopologyQueryTests.*") + filter.includeTestsMatching("integration.container.tests.*") }