From 63f02643734326ad478208fbe0a764165a1dd76e Mon Sep 17 00:00:00 2001 From: diego Date: Wed, 2 Nov 2022 13:15:54 +0100 Subject: [PATCH] [misc] skip test with `FLUSH PRIVILEGES` with MySQL server 8.0.31 that broke server public key retrieval afterwhile --- .../org/mariadb/jdbc/integration/Common.java | 6 +++++ .../jdbc/integration/ConnectionTest.java | 6 +++++ .../integration/CredentialPluginTest.java | 3 +++ .../jdbc/integration/DataSourceTest.java | 3 +++ .../jdbc/integration/PoolDataSourceTest.java | 3 +++ .../integration/PooledConnectionTest.java | 3 +++ .../integration/Sha256AuthenticationTest.java | 25 ++++++++++++++++++- .../org/mariadb/jdbc/integration/SslTest.java | 2 ++ 8 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/mariadb/jdbc/integration/Common.java b/src/test/java/org/mariadb/jdbc/integration/Common.java index d37e56b86..6b9e5cf93 100644 --- a/src/test/java/org/mariadb/jdbc/integration/Common.java +++ b/src/test/java/org/mariadb/jdbc/integration/Common.java @@ -119,6 +119,12 @@ public static boolean minVersion(int major, int minor, int patch) { return sharedConn.getContext().getVersion().versionGreaterOrEqual(major, minor, patch); } + public static boolean exactVersion(int major, int minor, int patch) { + return sharedConn.getContext().getVersion().getMajorVersion() == major + && sharedConn.getContext().getVersion().getMinorVersion() == minor + && sharedConn.getContext().getVersion().getPatchVersion() == patch; + } + public static Connection createCon() throws SQLException { return (Connection) DriverManager.getConnection(mDefUrl); } diff --git a/src/test/java/org/mariadb/jdbc/integration/ConnectionTest.java b/src/test/java/org/mariadb/jdbc/integration/ConnectionTest.java index cfcf53ec9..7f6a005cf 100644 --- a/src/test/java/org/mariadb/jdbc/integration/ConnectionTest.java +++ b/src/test/java/org/mariadb/jdbc/integration/ConnectionTest.java @@ -862,6 +862,9 @@ public void pamAuthPlugin() throws Throwable { } stmt.execute("CREATE USER '" + pamUser + "'@'%' IDENTIFIED VIA pam USING 'mariadb'"); stmt.execute("GRANT SELECT ON *.* TO '" + pamUser + "'@'%' IDENTIFIED VIA pam"); + + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); stmt.execute("FLUSH PRIVILEGES"); int testPort = port; @@ -993,8 +996,11 @@ public void localSocket() throws Exception { stmt.execute("CREATE USER testSocket IDENTIFIED BY 'heyPassw!µ20§rd'"); stmt.execute("GRANT SELECT on *.* to testSocket IDENTIFIED BY 'heyPassw!µ20§rd'"); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); stmt.execute("FLUSH PRIVILEGES"); + String url = String.format( "jdbc:mariadb:///%s?user=testSocket&password=heyPassw!µ20§rd&localSocket=%s&tcpAbortiveClose&tcpKeepAlive", diff --git a/src/test/java/org/mariadb/jdbc/integration/CredentialPluginTest.java b/src/test/java/org/mariadb/jdbc/integration/CredentialPluginTest.java index bc32aca20..9e46af2ca 100644 --- a/src/test/java/org/mariadb/jdbc/integration/CredentialPluginTest.java +++ b/src/test/java/org/mariadb/jdbc/integration/CredentialPluginTest.java @@ -50,7 +50,10 @@ public static void beforeTest() throws SQLException { stmt.execute("CREATE USER 'identityUser'@'%' IDENTIFIED BY '!Passw0rd3Works'"); stmt.execute("GRANT SELECT ON " + sharedConn.getCatalog() + ".* TO 'identityUser'@'%'"); } + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); stmt.execute("FLUSH PRIVILEGES"); + } /** diff --git a/src/test/java/org/mariadb/jdbc/integration/DataSourceTest.java b/src/test/java/org/mariadb/jdbc/integration/DataSourceTest.java index 47f74bb02..7dcdf1bb7 100644 --- a/src/test/java/org/mariadb/jdbc/integration/DataSourceTest.java +++ b/src/test/java/org/mariadb/jdbc/integration/DataSourceTest.java @@ -150,8 +150,11 @@ public void switchUser() throws SQLException { + sharedConn.getCatalog() + ".* TO 'dsUser'@'%' IDENTIFIED BY 'MySup8%rPassw@ord'"); } + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); stmt.execute("FLUSH PRIVILEGES"); + DataSource ds = new MariaDbDataSource(mDefUrl + "&allowPublicKeyRetrieval"); try (Connection con1 = ds.getConnection()) { try (Connection con2 = ds.getConnection("dsUser", "MySup8%rPassw@ord")) { diff --git a/src/test/java/org/mariadb/jdbc/integration/PoolDataSourceTest.java b/src/test/java/org/mariadb/jdbc/integration/PoolDataSourceTest.java index e9248d5dc..896936c7e 100644 --- a/src/test/java/org/mariadb/jdbc/integration/PoolDataSourceTest.java +++ b/src/test/java/org/mariadb/jdbc/integration/PoolDataSourceTest.java @@ -53,7 +53,10 @@ public static void beforeClassDataSourceTest() throws SQLException { stmt.execute( "CREATE TABLE testResetRollback(id int not null primary key auto_increment, test varchar(20))"); stmt.execute("FLUSH TABLES"); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); stmt.execute("FLUSH PRIVILEGES"); + } @AfterAll diff --git a/src/test/java/org/mariadb/jdbc/integration/PooledConnectionTest.java b/src/test/java/org/mariadb/jdbc/integration/PooledConnectionTest.java index 99ffd8777..f211f5fda 100644 --- a/src/test/java/org/mariadb/jdbc/integration/PooledConnectionTest.java +++ b/src/test/java/org/mariadb/jdbc/integration/PooledConnectionTest.java @@ -240,8 +240,11 @@ public void testPooledConnectionStatementError() throws Exception { + sharedConn.getCatalog() + ".* TO 'dsUser'@'%' IDENTIFIED BY 'MySup8%rPassw@ord'"); } + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); stmt.execute("FLUSH PRIVILEGES"); + ConnectionPoolDataSource ds = new MariaDbDataSource(mDefUrl); PooledConnection pc = ds.getPooledConnection("dsUser", "MySup8%rPassw@ord"); MyEventListener listener = new MyEventListener(); diff --git a/src/test/java/org/mariadb/jdbc/integration/Sha256AuthenticationTest.java b/src/test/java/org/mariadb/jdbc/integration/Sha256AuthenticationTest.java index 7ac1981ac..da9904150 100644 --- a/src/test/java/org/mariadb/jdbc/integration/Sha256AuthenticationTest.java +++ b/src/test/java/org/mariadb/jdbc/integration/Sha256AuthenticationTest.java @@ -77,7 +77,10 @@ public static void init() throws Exception { stmt.execute("GRANT ALL PRIVILEGES ON *.* TO 'cachingSha256User2'@'%'"); stmt.execute("GRANT ALL PRIVILEGES ON *.* TO 'cachingSha256User3'@'%'"); stmt.execute("GRANT ALL PRIVILEGES ON *.* TO 'cachingSha256User4'@'%'"); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); stmt.execute("FLUSH PRIVILEGES"); + } private static String checkFileExists(String path) throws IOException { @@ -106,7 +109,13 @@ public void nativePassword() throws Exception { stmt.execute( "CREATE USER tmpUser@'%' IDENTIFIED WITH mysql_native_password BY '!Passw0rd3Works'"); stmt.execute("grant all on `" + sharedConn.getCatalog() + "`.* TO tmpUser@'%'"); - stmt.execute("FLUSH PRIVILEGES"); // reset cache + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); + + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); + stmt.execute("FLUSH PRIVILEGES"); + try (Connection con = createCon("user=tmpUser&password=!Passw0rd3Works")) { con.isValid(1); } @@ -121,7 +130,10 @@ public void nativePassword() throws Exception { public void cachingSha256Empty() throws Exception { Assumptions.assumeTrue( !isWindows() && !isMariaDBServer() && rsaPublicKey != null && minVersion(8, 0, 0)); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); sharedConn.createStatement().execute("FLUSH PRIVILEGES"); // reset cache + try (Connection con = createCon("user=cachingSha256User2&allowPublicKeyRetrieval&password=")) { con.isValid(1); } @@ -131,7 +143,10 @@ public void cachingSha256Empty() throws Exception { public void wrongRsaPath() throws Exception { Assumptions.assumeTrue( !isWindows() && !isMariaDBServer() && rsaPublicKey != null && minVersion(8, 0, 0)); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); sharedConn.createStatement().execute("FLUSH PRIVILEGES"); // reset cache + File tempFile = File.createTempFile("log", ".tmp"); Common.assertThrowsContains( SQLException.class, @@ -146,6 +161,8 @@ public void wrongRsaPath() throws Exception { @Test public void cachingSha256Allow() throws Exception { Assumptions.assumeTrue(!isMariaDBServer() && rsaPublicKey != null && minVersion(8, 0, 0)); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); sharedConn.createStatement().execute("FLUSH PRIVILEGES"); // reset cache try (Connection con = createCon("user=cachingSha256User3&allowPublicKeyRetrieval&password=!Passw0rd3Works")) { @@ -156,6 +173,8 @@ public void cachingSha256Allow() throws Exception { @Test public void cachingSha256PluginTest() throws Exception { Assumptions.assumeTrue(!isMariaDBServer() && rsaPublicKey != null && minVersion(8, 0, 0)); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); sharedConn.createStatement().execute("FLUSH PRIVILEGES"); // reset cache try (Connection con = @@ -192,6 +211,8 @@ public void cachingSha256PluginTest() throws Exception { @Test public void cachingSha256PluginTestWithoutServerRsaKey() throws Exception { Assumptions.assumeTrue(!isWindows() && minVersion(8, 0, 0)); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); sharedConn.createStatement().execute("FLUSH PRIVILEGES"); // reset cache try (Connection con = createCon("user=cachingSha256User&password=!Passw0rd3Works&allowPublicKeyRetrieval")) { @@ -202,6 +223,8 @@ public void cachingSha256PluginTestWithoutServerRsaKey() throws Exception { @Test public void cachingSha256PluginTestException() throws Exception { Assumptions.assumeTrue(!isMariaDBServer() && minVersion(8, 0, 0)); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); sharedConn.createStatement().execute("FLUSH PRIVILEGES"); // reset cache Common.assertThrowsContains( diff --git a/src/test/java/org/mariadb/jdbc/integration/SslTest.java b/src/test/java/org/mariadb/jdbc/integration/SslTest.java index b059ca48a..d10eeee12 100644 --- a/src/test/java/org/mariadb/jdbc/integration/SslTest.java +++ b/src/test/java/org/mariadb/jdbc/integration/SslTest.java @@ -44,6 +44,8 @@ public static void beforeAll2() throws SQLException { createSslUser("mutualAuthUser", "REQUIRE X509"); Statement stmt = sharedConn.createStatement(); + //mysql 8.0.31 broken public key retrieval, so avoid FLUSHING for now + Assumptions.assumeTrue(!isMariaDBServer() && !exactVersion(8, 0 ,31)); stmt.execute("FLUSH PRIVILEGES"); sslPort = System.getenv("TEST_MAXSCALE_TLS_PORT") == null