You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/10 20:48:30 UTC

[logging-log4j2] branch master updated: Clean up and bullet-proof H2 and HSQLDB tests.

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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/master by this push:
     new e67c981  Clean up and bullet-proof H2 and HSQLDB tests.
e67c981 is described below

commit e67c98141d6ebf4afeb20282f2b84895b28bc330
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Jan 10 15:48:26 2022 -0500

    Clean up and bullet-proof H2 and HSQLDB tests.
---
 .../PoolingDriverConnectionSourceTest.java         | 10 +++----
 log4j-jdbc/pom.xml                                 |  5 ++++
 .../{H2TestConstants.java => AbstractH2Test.java}  | 27 ++++++++++++-----
 ...va => DriverManagerH2ConnectionSourceTest.java} | 13 ++++----
 .../JdbcAppenderColumnMappingLiteralTest.java      |  1 +
 .../JdbcAppenderColumnMappingPatternTest.java      |  6 ++--
 .../appender/JdbcAppenderH2FactoryMethodTest.java  |  2 +-
 .../appender/JdbcAppenderHsqldbDataSourceTest.java |  3 +-
 .../JdbcAppenderHsqldbFactoryMethodTest.java       |  3 +-
 .../JdbcAppenderMapMessageDataSourceTest.java      | 18 +++++++++--
 .../log4j/jdbc/appender/JdbcH2TestHelper.java      | 35 ++++++++++++++++------
 11 files changed, 85 insertions(+), 38 deletions(-)

diff --git a/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/dbcp2/appender/PoolingDriverConnectionSourceTest.java b/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/dbcp2/appender/PoolingDriverConnectionSourceTest.java
index 518de89..96ea2df 100644
--- a/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/dbcp2/appender/PoolingDriverConnectionSourceTest.java
+++ b/log4j-jdbc-dbcp2/src/test/java/org/apache/logging/log4j/dbcp2/appender/PoolingDriverConnectionSourceTest.java
@@ -45,7 +45,7 @@ public class PoolingDriverConnectionSourceTest {
         };
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_IN_MEMORY)
             .setProperties(properties)
             .build();
         openAndClose(source);
@@ -61,7 +61,7 @@ public class PoolingDriverConnectionSourceTest {
         };
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_IN_MEMORY)
             .setProperties(properties)
             .setPoolName("MyPoolName")
             .build();
@@ -73,7 +73,7 @@ public class PoolingDriverConnectionSourceTest {
     public void testH2UserAndPassword() throws SQLException {
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_IN_MEMORY)
             .setUserName(JdbcH2TestHelper.USER_NAME.toCharArray())
             .setPassword(JdbcH2TestHelper.PASSWORD.toCharArray())
             .build();
@@ -84,7 +84,7 @@ public class PoolingDriverConnectionSourceTest {
     public void testH2UserPasswordAndPoolName() throws SQLException {
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_IN_MEMORY)
             .setUserName(JdbcH2TestHelper.USER_NAME.toCharArray())
             .setPassword(JdbcH2TestHelper.PASSWORD.toCharArray())
             .setPoolName("MyPoolName")
@@ -97,7 +97,7 @@ public class PoolingDriverConnectionSourceTest {
         PoolableConnectionFactoryConfig poolableConnectionFactoryConfig = PoolableConnectionFactoryConfig.newBuilder().setMaxConnLifetimeMillis(30000).build();
         // @formatter:off
         final PoolingDriverConnectionSource source = PoolingDriverConnectionSource.newPoolingDriverConnectionSourceBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_IN_MEMORY)
             .setUserName(JdbcH2TestHelper.USER_NAME.toCharArray())
             .setPassword(JdbcH2TestHelper.PASSWORD.toCharArray())
             .setPoolName("MyPoolName")
diff --git a/log4j-jdbc/pom.xml b/log4j-jdbc/pom.xml
index 806c0f8..e4f6334 100644
--- a/log4j-jdbc/pom.xml
+++ b/log4j-jdbc/pom.xml
@@ -100,6 +100,11 @@
       <artifactId>commons-logging</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/H2TestConstants.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractH2Test.java
similarity index 65%
rename from log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/H2TestConstants.java
rename to log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractH2Test.java
index 5b838a4..7e9e686 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/H2TestConstants.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractH2Test.java
@@ -16,17 +16,28 @@
  */
 package org.apache.logging.log4j.jdbc.appender;
 
-import org.apache.commons.lang3.SystemUtils;
+import java.io.IOException;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
 
 /**
- * Constants for testing H2.
+ * Abstracts H2 test clean up.
  */
-public class H2TestConstants {
+public abstract class AbstractH2Test {
+
+    @AfterClass
+    @BeforeClass
+    public static void classDeleteDir() throws IOException {
+        JdbcH2TestHelper.deleteDir();
+    }
 
-	public static final String JDBC_DRIVER_CLASS_NAME = "org.h2.Driver";
-	public static final String CONNECTION_STRING = "jdbc:h2:" + SystemUtils.JAVA_IO_TMPDIR
-			+ "/h2/h2_test0;TRACE_LEVEL_SYSTEM_OUT=0";
-	public static final char[] USER = null;
-	public static final char[] PASSWORD = null;
+    @After
+    @Before
+    public void deleteDir() throws IOException {
+        JdbcH2TestHelper.deleteDir();
+    }
 
 }
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DriverManagerConnectionSourceTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DriverManagerH2ConnectionSourceTest.java
similarity index 84%
rename from log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DriverManagerConnectionSourceTest.java
rename to log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DriverManagerH2ConnectionSourceTest.java
index ac72c6d..93dcac5 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DriverManagerConnectionSourceTest.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DriverManagerH2ConnectionSourceTest.java
@@ -21,23 +21,22 @@ import java.sql.Connection;
 import java.sql.SQLException;
 
 import org.apache.logging.log4j.core.config.Property;
-import org.apache.logging.log4j.jdbc.appender.DriverManagerConnectionSource;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class DriverManagerConnectionSourceTest {
+public class DriverManagerH2ConnectionSourceTest extends AbstractH2Test {
 
     @Test
     public void testH2Properties() throws SQLException {
-        Property[] properties = new Property[] {
+        final Property[] properties = new Property[] {
                 // @formatter:off
                 Property.createProperty("username", JdbcH2TestHelper.USER_NAME),
                 Property.createProperty("password", JdbcH2TestHelper.PASSWORD),
                 // @formatter:on
         };
         // @formatter:off
-        DriverManagerConnectionSource source = DriverManagerConnectionSource.newBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
+        final DriverManagerConnectionSource source = DriverManagerConnectionSource.newBuilder()
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_IN_MEMORY)
             .setProperties(properties)
             .build();
         // @formatter:on
@@ -49,8 +48,8 @@ public class DriverManagerConnectionSourceTest {
     @Test
     public void testH2UserAndPassword() throws SQLException {
         // @formatter:off
-        DriverManagerConnectionSource source = DriverManagerConnectionSource.newBuilder()
-            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_MEM)
+        final DriverManagerConnectionSource source = DriverManagerConnectionSource.newBuilder()
+            .setConnectionString(JdbcH2TestHelper.CONNECTION_STRING_IN_MEMORY)
             .setUserName(JdbcH2TestHelper.USER_NAME.toCharArray())
             .setPassword(JdbcH2TestHelper.PASSWORD.toCharArray())
             .build();
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderColumnMappingLiteralTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderColumnMappingLiteralTest.java
index 6b750fc..a7ad418 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderColumnMappingLiteralTest.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderColumnMappingLiteralTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.ResultSet;
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderColumnMappingPatternTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderColumnMappingPatternTest.java
index 0cb6e0b..5373e7d 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderColumnMappingPatternTest.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderColumnMappingPatternTest.java
@@ -35,7 +35,7 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.RuleChain;
 
-public class JdbcAppenderColumnMappingPatternTest {
+public class JdbcAppenderColumnMappingPatternTest extends AbstractH2Test {
 
 	@Rule
 	public final RuleChain rules;
@@ -43,8 +43,8 @@ public class JdbcAppenderColumnMappingPatternTest {
 
 	public JdbcAppenderColumnMappingPatternTest() {
 		this(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE_MEM,
-				"CREATE TABLE dsMappingLogEntry (id INTEGER IDENTITY, level VARCHAR(10), logger VARCHAR(255), message VARCHAR(1024), exception CLOB)",
-				"DROP TABLE dsMappingLogEntry"));
+				"CREATE TABLE dsMappingLogEntry (id INTEGER, level VARCHAR(10), logger VARCHAR(255), message VARCHAR(1024), exception CLOB)",
+				"DROP TABLE IF EXISTS dsMappingLogEntry"));
 	}
 
 	protected JdbcAppenderColumnMappingPatternTest(final JdbcRule jdbcRule) {
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderH2FactoryMethodTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderH2FactoryMethodTest.java
index 51f664b..e4e0af1 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderH2FactoryMethodTest.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderH2FactoryMethodTest.java
@@ -32,6 +32,6 @@ public class JdbcAppenderH2FactoryMethodTest extends AbstractJdbcAppenderFactory
     }
 
     public static Connection getConnection() throws SQLException {
-        return JdbcH2TestHelper.getConnectionMem();
+        return JdbcH2TestHelper.getConnectionInMemory();
     }
 }
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderHsqldbDataSourceTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderHsqldbDataSourceTest.java
index 32135eb..91d19f9 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderHsqldbDataSourceTest.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderHsqldbDataSourceTest.java
@@ -26,6 +26,7 @@ import org.apache.logging.log4j.jdbc.appender.AbstractConnectionSource;
  *
  */
 public class JdbcAppenderHsqldbDataSourceTest extends AbstractJdbcAppenderDataSourceTest {
+
     public JdbcAppenderHsqldbDataSourceTest() {
         super(new JdbcRule(
             new AbstractConnectionSource() {
@@ -38,7 +39,7 @@ public class JdbcAppenderHsqldbDataSourceTest extends AbstractJdbcAppenderDataSo
                 "id INTEGER IDENTITY, eventDate DATETIME, literalColumn VARCHAR(255), level VARCHAR(10), " +
                 "logger VARCHAR(255), message VARCHAR(1024), exception CLOB, anotherDate TIMESTAMP" +
                 ")",
-            "DROP TABLE dsLogEntry"
+            "DROP TABLE IF EXISTS dsLogEntry"
         ));
     }
 }
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderHsqldbFactoryMethodTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderHsqldbFactoryMethodTest.java
index 355fbea..1861acd 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderHsqldbFactoryMethodTest.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderHsqldbFactoryMethodTest.java
@@ -26,6 +26,7 @@ import org.apache.logging.log4j.jdbc.appender.AbstractConnectionSource;
  *
  */
 public class JdbcAppenderHsqldbFactoryMethodTest extends AbstractJdbcAppenderFactoryMethodTest {
+
     public JdbcAppenderHsqldbFactoryMethodTest() {
         super(new JdbcRule(
                 new AbstractConnectionSource() {
@@ -38,7 +39,7 @@ public class JdbcAppenderHsqldbFactoryMethodTest extends AbstractJdbcAppenderFac
                     "id INTEGER IDENTITY, eventDate DATETIME, literalColumn VARCHAR(255), level VARCHAR(10), " +
                     "logger VARCHAR(255), message VARCHAR(1024), exception CLOB, anotherDate TIMESTAMP" +
                     ")",
-                "DROP TABLE fmLogEntry"
+                "DROP TABLE IF EXISTS fmLogEntry"
             ),
             "hsqldb"
         );
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java
index af1f22e..ed04a68 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java
@@ -22,6 +22,7 @@ import static org.mockito.BDDMockito.given;
 import static org.mockito.Mockito.mock;
 
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -33,11 +34,12 @@ import javax.sql.DataSource;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.util.Throwables;
 import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.util.Throwables;
 import org.apache.logging.log4j.jndi.test.junit.JndiRule;
 import org.apache.logging.log4j.message.MapMessage;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
@@ -62,8 +64,8 @@ public class JdbcAppenderMapMessageDataSourceTest {
     public JdbcAppenderMapMessageDataSourceTest() {
         this(new JdbcRule(JdbcH2TestHelper.TEST_CONFIGURATION_SOURCE_MEM,
         // @formatter:off
-                "CREATE TABLE dsLogEntry (Id INTEGER IDENTITY, ColumnA VARCHAR(255), ColumnB VARCHAR(255))",
-                "DROP TABLE dsLogEntry"));
+                "CREATE TABLE dsLogEntry (Id INTEGER, ColumnA VARCHAR(255), ColumnB VARCHAR(255))",
+                "DROP TABLE IF EXISTS dsLogEntry"));
         // @formatter:on
     }
 
@@ -77,6 +79,16 @@ public class JdbcAppenderMapMessageDataSourceTest {
         this.jdbcRule = jdbcRule;
     }
 
+    @Before
+    public void afterEachDeleteDir() throws IOException {
+        JdbcH2TestHelper.deleteDir();
+    }
+
+    @Before
+    public void beforeEachDeleteDir() throws IOException {
+        JdbcH2TestHelper.deleteDir();
+    }
+
     private DataSource createMockDataSource() {
         try {
             final DataSource dataSource = mock(DataSource.class);
diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcH2TestHelper.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcH2TestHelper.java
index 94d4523..61269e0 100644
--- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcH2TestHelper.java
+++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcH2TestHelper.java
@@ -16,10 +16,14 @@
  */
 package org.apache.logging.log4j.jdbc.appender;
 
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 
+import org.apache.commons.io.file.PathUtils;
 import org.apache.commons.lang3.SystemUtils;
 
 public class JdbcH2TestHelper {
@@ -27,13 +31,12 @@ public class JdbcH2TestHelper {
     /**
      * A JDBC connection string for an H2 in-memory database.
      */
-    public static final String CONNECTION_STRING_MEM = "jdbc:h2:mem:Log4j";
+    public static final String CONNECTION_STRING_IN_MEMORY = "jdbc:h2:mem:Log4j";
 
     /**
      * A JDBC connection string for an H2 database in the Java temporary directory.
      */
-    static final String CONNECTION_STRING_TMPDIR = "jdbc:h2:" + SystemUtils.JAVA_IO_TMPDIR
-            + "/h2/test_log4j;TRACE_LEVEL_SYSTEM_OUT=0";
+    static final String CONNECTION_STRING_TEMP_DIR = "jdbc:h2:" + getH2Path() + ";TRACE_LEVEL_SYSTEM_OUT=0";
 
     public static final String USER_NAME = "sa";
     public static final String PASSWORD = "";
@@ -41,23 +44,37 @@ public class JdbcH2TestHelper {
     public static ConnectionSource TEST_CONFIGURATION_SOURCE_MEM = new AbstractConnectionSource() {
         @Override
         public Connection getConnection() throws SQLException {
-            return JdbcH2TestHelper.getConnectionMem();
+            return JdbcH2TestHelper.getConnectionInMemory();
         }
     };
 
     public static ConnectionSource TEST_CONFIGURATION_SOURCE_TMPDIR = new AbstractConnectionSource() {
         @Override
         public Connection getConnection() throws SQLException {
-            return JdbcH2TestHelper.getConnectionTmpDir();
+            return JdbcH2TestHelper.getConnectionTempDir();
         }
     };
 
-    public static Connection getConnectionMem() throws SQLException {
-        return DriverManager.getConnection(CONNECTION_STRING_MEM, USER_NAME, PASSWORD);
+    /** Directory used in configuration files and connection strings. */
+    static final String H2_TEST_RELATIVE_DIR = "h2/test_log4j";
+
+    static void deleteDir() throws IOException {
+        final Path resolve = getH2Path();
+        if (Files.exists(resolve)) {
+            PathUtils.deleteDirectory(resolve);
+        }
+    }
+
+    public static Connection getConnectionInMemory() throws SQLException {
+        return DriverManager.getConnection(CONNECTION_STRING_IN_MEMORY, USER_NAME, PASSWORD);
+    }
+
+    public static Connection getConnectionTempDir() throws SQLException {
+        return DriverManager.getConnection(CONNECTION_STRING_TEMP_DIR, USER_NAME, PASSWORD);
     }
 
-    public static Connection getConnectionTmpDir() throws SQLException {
-        return DriverManager.getConnection(CONNECTION_STRING_TMPDIR, USER_NAME, PASSWORD);
+    private static Path getH2Path() {
+        return SystemUtils.getJavaIoTmpDir().toPath().resolve(H2_TEST_RELATIVE_DIR).normalize();
     }
 
 }