From f963fb91d49db7ec54f1310a33bb3da0be3a89ae Mon Sep 17 00:00:00 2001 From: emeroad Date: Fri, 24 Jun 2022 10:12:13 +0900 Subject: [PATCH] [#8965] Apply SharedTestLifeCycle to MariaDB --- .../pinpoint/plugin/jdbc/MariaDBServer.java | 54 ++++++++++++++++ .../plugin/jdbc/MariaDB_1_3_x_IT.java | 8 ++- .../jdbc/MariaDB_1_4_x_to_1_6_0_IT.java | 2 + .../jdbc/MariaDB_1_6_x_to_1_8_0_IT.java | 2 + .../jdbc/MariaDB_1_8_0_to_2_0_0_IT.java | 2 + .../jdbc/MariaDB_2_0_1_to_2_4_0_IT.java | 2 + .../plugin/jdbc/MariaDB_2_4_x_IT.java | 2 + .../pinpoint/plugin/jdbc/MariaDB_IT_Base.java | 62 +++---------------- 8 files changed, 80 insertions(+), 54 deletions(-) create mode 100644 plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDBServer.java diff --git a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDBServer.java b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDBServer.java new file mode 100644 index 000000000000..ffbb970bb4db --- /dev/null +++ b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDBServer.java @@ -0,0 +1,54 @@ +package com.navercorp.pinpoint.plugin.jdbc; + +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycle; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.Assume; +import org.testcontainers.DockerClientFactory; +import org.testcontainers.containers.MariaDBContainer; +import org.testcontainers.containers.output.OutputFrame; + +import java.util.Properties; +import java.util.function.Consumer; + +public class MariaDBServer implements SharedTestLifeCycle { + private final Logger logger = LogManager.getLogger(getClass()); + private MariaDBContainer mariaDB; + + public static final String DATABASE_NAME = "test"; + public static final String USERNAME = "root"; + public static final String PASSWORD = ""; + + @Override + public Properties beforeAll() { + Assume.assumeTrue("Docker not enabled", DockerClientFactory.instance().isDockerAvailable()); + + mariaDB = new MariaDBContainer(); + mariaDB.withLogConsumer(new Consumer() { + @Override + public void accept(OutputFrame outputFrame) { + logger.info(outputFrame.getUtf8String()); + } + }); + mariaDB.withDatabaseName(DATABASE_NAME); + mariaDB.withUsername(USERNAME); + mariaDB.withPassword(PASSWORD); + mariaDB.withInitScript("jdbc/mariadb/init.sql"); +// mariaDB.withUrlParam("noAccessToProcedureBodies", "true"); + mariaDB.start(); + + int port = mariaDB.getMappedPort(3306); + Properties properties = new Properties(); + properties.setProperty("JDBC_URL", mariaDB.getJdbcUrl()); + properties.setProperty("URL", mariaDB.getHost() + ":" + port); + + return properties; + } + + @Override + public void afterAll() { + if (mariaDB != null) { + mariaDB.stop(); + } + } +} diff --git a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_3_x_IT.java b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_3_x_IT.java index df50fd5fd01e..c1408822af62 100644 --- a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_3_x_IT.java +++ b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_3_x_IT.java @@ -23,7 +23,6 @@ import com.navercorp.pinpoint.pluginit.jdbc.JDBCDriverClass; import com.navercorp.pinpoint.pluginit.jdbc.JDBCTestConstants; import com.navercorp.pinpoint.pluginit.utils.AgentPath; - import com.navercorp.pinpoint.pluginit.utils.TestcontainersOption; import com.navercorp.pinpoint.test.plugin.Dependency; import com.navercorp.pinpoint.test.plugin.ImportPlugin; @@ -31,12 +30,16 @@ import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointLogLocationConfig; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.junit.Test; import org.junit.runner.RunWith; import java.lang.reflect.Method; -import static com.navercorp.pinpoint.bootstrap.plugin.test.Expectations.*; +import static com.navercorp.pinpoint.bootstrap.plugin.test.Expectations.args; +import static com.navercorp.pinpoint.bootstrap.plugin.test.Expectations.cachedArgs; +import static com.navercorp.pinpoint.bootstrap.plugin.test.Expectations.event; +import static com.navercorp.pinpoint.bootstrap.plugin.test.Expectations.sql; /** * @author HyunGil Jeong @@ -48,6 +51,7 @@ @ImportPlugin("com.navercorp.pinpoint:pinpoint-mariadb-jdbc-driver-plugin") @Dependency({"org.mariadb.jdbc:mariadb-java-client:[1.3.0,1.3.max]", JDBCTestConstants.VERSION, TestcontainersOption.TEST_CONTAINER, TestcontainersOption.MARIADB}) +@SharedTestLifeCycleClass(MariaDBServer.class) public class MariaDB_1_3_x_IT extends MariaDB_IT_Base { // see CallableParameterMetaData#queryMetaInfos diff --git a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_4_x_to_1_6_0_IT.java b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_4_x_to_1_6_0_IT.java index 77ec65bfab19..44095442c41a 100644 --- a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_4_x_to_1_6_0_IT.java +++ b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_4_x_to_1_6_0_IT.java @@ -30,6 +30,7 @@ import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointLogLocationConfig; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -50,6 +51,7 @@ @ImportPlugin("com.navercorp.pinpoint:pinpoint-mariadb-jdbc-driver-plugin") @Dependency({ "org.mariadb.jdbc:mariadb-java-client:[1.4.min,1.6.min)", JDBCTestConstants.VERSION, TestcontainersOption.TEST_CONTAINER, TestcontainersOption.MARIADB}) +@SharedTestLifeCycleClass(MariaDBServer.class) public class MariaDB_1_4_x_to_1_6_0_IT extends MariaDB_IT_Base { // see CallableParameterMetaData#queryMetaInfos diff --git a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_6_x_to_1_8_0_IT.java b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_6_x_to_1_8_0_IT.java index 39900a6e529d..04c0c9c5db37 100644 --- a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_6_x_to_1_8_0_IT.java +++ b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_6_x_to_1_8_0_IT.java @@ -30,6 +30,7 @@ import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointLogLocationConfig; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -62,6 +63,7 @@ @ImportPlugin("com.navercorp.pinpoint:pinpoint-mariadb-jdbc-driver-plugin") @Dependency({ "org.mariadb.jdbc:mariadb-java-client:[1.6.0,1.8.0)", JDBCTestConstants.VERSION, TestcontainersOption.TEST_CONTAINER, TestcontainersOption.MARIADB}) +@SharedTestLifeCycleClass(MariaDBServer.class) public class MariaDB_1_6_x_to_1_8_0_IT extends MariaDB_IT_Base { // see CallableParameterMetaData#queryMetaInfos diff --git a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_8_0_to_2_0_0_IT.java b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_8_0_to_2_0_0_IT.java index 5cae163fdece..143204493827 100644 --- a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_8_0_to_2_0_0_IT.java +++ b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_1_8_0_to_2_0_0_IT.java @@ -30,6 +30,7 @@ import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointLogLocationConfig; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -57,6 +58,7 @@ @ImportPlugin("com.navercorp.pinpoint:pinpoint-mariadb-jdbc-driver-plugin") @Dependency({ "org.mariadb.jdbc:mariadb-java-client:[1.8.0,2.min)", JDBCTestConstants.VERSION, TestcontainersOption.TEST_CONTAINER, TestcontainersOption.MARIADB}) +@SharedTestLifeCycleClass(MariaDBServer.class) public class MariaDB_1_8_0_to_2_0_0_IT extends MariaDB_IT_Base { // see CallableParameterMetaData#queryMetaInfos diff --git a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_2_0_1_to_2_4_0_IT.java b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_2_0_1_to_2_4_0_IT.java index 3ccf8c7e3676..5f46cdda4c78 100644 --- a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_2_0_1_to_2_4_0_IT.java +++ b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_2_0_1_to_2_4_0_IT.java @@ -31,6 +31,7 @@ import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointLogLocationConfig; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -51,6 +52,7 @@ @ImportPlugin("com.navercorp.pinpoint:pinpoint-mariadb-jdbc-driver-plugin") @Dependency({ "org.mariadb.jdbc:mariadb-java-client:[2.0.1,2.4.min)", JDBCTestConstants.VERSION, TestcontainersOption.TEST_CONTAINER, TestcontainersOption.MARIADB}) +@SharedTestLifeCycleClass(MariaDBServer.class) public class MariaDB_2_0_1_to_2_4_0_IT extends MariaDB_IT_Base { // see CallableParameterMetaData#queryMetaInfos diff --git a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_2_4_x_IT.java b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_2_4_x_IT.java index 9639c9dd804d..d81f6016462e 100644 --- a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_2_4_x_IT.java +++ b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_2_4_x_IT.java @@ -30,6 +30,7 @@ import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointLogLocationConfig; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -58,6 +59,7 @@ @Dependency({ "org.mariadb.jdbc:mariadb-java-client:[2.4.0,2.max)", JDBCTestConstants.VERSION, TestcontainersOption.TEST_CONTAINER, TestcontainersOption.MARIADB}) @ImportPlugin("com.navercorp.pinpoint:pinpoint-mariadb-jdbc-driver-plugin") +@SharedTestLifeCycleClass(MariaDBServer.class) public class MariaDB_2_4_x_IT extends MariaDB_IT_Base { // see CallableParameterMetaData#queryMetaInfos diff --git a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_IT_Base.java b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_IT_Base.java index 2f7cc876e8f8..5a3768eb4172 100644 --- a/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_IT_Base.java +++ b/plugins-it/mariadb-jdbc-it/src/test/java/com/navercorp/pinpoint/plugin/jdbc/MariaDB_IT_Base.java @@ -19,17 +19,11 @@ import com.navercorp.pinpoint.pluginit.jdbc.DriverManagerUtils; import com.navercorp.pinpoint.pluginit.jdbc.DriverProperties; import com.navercorp.pinpoint.pluginit.jdbc.JDBCDriverClass; -import com.navercorp.pinpoint.test.plugin.shared.AfterSharedClass; -import com.navercorp.pinpoint.test.plugin.shared.BeforeSharedClass; - +import com.navercorp.pinpoint.test.plugin.shared.SharedTestBeforeAllResult; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.After; -import org.junit.Assume; import org.junit.Before; -import org.testcontainers.DockerClientFactory; -import org.testcontainers.containers.MariaDBContainer; -import org.testcontainers.containers.output.OutputFrame; import java.sql.CallableStatement; import java.sql.Connection; @@ -40,7 +34,7 @@ import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; -import java.util.function.Consumer; +import java.util.Properties; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -50,7 +44,7 @@ */ public abstract class MariaDB_IT_Base { private static final Logger logger = LogManager.getLogger(MariaDB_IT_Base.class); - protected static final String DATABASE_NAME = "test"; + protected static final String DATABASE_NAME = MariaDBServer.DATABASE_NAME; // for Statement protected static final String STATEMENT_QUERY = "SELECT count(1) FROM playground"; @@ -66,64 +60,28 @@ public abstract class MariaDB_IT_Base { protected static final int CALLABLE_STATMENT_OUTPUT_PARAM_TYPE = Types.INTEGER; protected static DriverProperties driverProperties; -// @Rule - public static MariaDBContainer mariaDB = new MariaDBContainer(); - protected static final String USERNAME = "root"; - protected static final String PASSWORD = ""; + protected static final String USERNAME = MariaDBServer.USERNAME; + protected static final String PASSWORD = MariaDBServer.PASSWORD; protected static final String DB_TYPE = "MARIADB"; protected static final String DB_EXECUTE_QUERY = "MARIADB_EXECUTE_QUERY"; - // ---------- For @BeforeSharedClass, @AfterSharedClass // - // for shared test' protected static String JDBC_URL; protected static String URL; - public static String getJdbcUrl() { + public String getJdbcUrl() { return JDBC_URL; } - public static void setJdbcUrl(String jdbcUrl) { - JDBC_URL = jdbcUrl; - } - public static String getURL() { return URL; } - public static void setURL(String URL) { - MariaDB_IT_Base.URL = URL; - } - // ---------- // - - @BeforeSharedClass - public static void sharedSetUp() throws Exception { - Assume.assumeTrue("Docker not enabled", DockerClientFactory.instance().isDockerAvailable()); - - mariaDB.withLogConsumer(new Consumer() { - @Override - public void accept(OutputFrame outputFrame) { - logger.info(outputFrame.getUtf8String()); - } - }); - mariaDB.withDatabaseName(DATABASE_NAME); - mariaDB.withUsername(USERNAME); - mariaDB.withPassword(PASSWORD); - mariaDB.withInitScript("jdbc/mariadb/init.sql"); -// mariaDB.withUrlParam("noAccessToProcedureBodies", "true"); - mariaDB.start(); - - setJdbcUrl(mariaDB.getJdbcUrl()); - int port = mariaDB.getMappedPort(3306); - setURL(mariaDB.getHost() + ":" + port); - } - - @AfterSharedClass - public static void sharedTearDown() throws Exception { - if (mariaDB != null) { - mariaDB.stop(); - } + @SharedTestBeforeAllResult + public static void setBeforeAllResult(Properties beforeAllResult) { + JDBC_URL = beforeAllResult.getProperty("JDBC_URL"); + URL = beforeAllResult.getProperty("URL"); } abstract JDBCDriverClass getJDBCDriverClass();