From a495cecf46ddbb53d6d97f4b581c4fde5972588f Mon Sep 17 00:00:00 2001 From: emeroad Date: Thu, 23 Jun 2022 18:35:50 +0900 Subject: [PATCH] [#8965] Apply SharedTestLifeCycle to ElasticSearch --- .../plugin/elasticsearch/ESServer.java | 44 +++++++++++++ .../elasticsearch/ElasticsearchITBase.java | 59 +++++------------- .../ElasticsearchIT_7_16_x_IT.java | 11 ++-- .../plugin/elasticsearch/ESServer.java | 43 +++++++++++++ .../elasticsearch/ElasticsearchITBase.java | 61 +++++-------------- .../ElasticsearchIT_6_0_x_IT.java | 8 ++- .../ElasticsearchIT_6_4_x_IT.java | 8 ++- .../ElasticsearchIT_7_0_x_IT.java | 7 ++- 8 files changed, 136 insertions(+), 105 deletions(-) create mode 100644 plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ESServer.java create mode 100644 plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ESServer.java diff --git a/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ESServer.java b/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ESServer.java new file mode 100644 index 000000000000..baebc15ce1af --- /dev/null +++ b/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ESServer.java @@ -0,0 +1,44 @@ +package com.navercorp.pinpoint.plugin.elasticsearch; + +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.elasticsearch.ElasticsearchContainer; + +import java.util.Properties; + +public class ESServer implements SharedTestLifeCycle { + private final Logger logger = LogManager.getLogger(getClass()); + + public ElasticsearchContainer elasticsearchContainer; + + public ESServer() { + } + + @Override + public Properties beforeAll() { + Assume.assumeTrue("Docker not enabled", DockerClientFactory.instance().isDockerAvailable()); + logger.info("ElasticsearchContainer start"); + + elasticsearchContainer = ESServerContainerFactory.newESServerContainerFactory(logger.getName()); + elasticsearchContainer.start(); + + Properties properties = new Properties(); + + Integer port = elasticsearchContainer.getMappedPort(ESServerContainerFactory.DEFAULT_PORT); + properties.setProperty("PORT", port.toString()); + + return properties; + } + + + @Override + public void afterAll() { + logger.info("ElasticsearchContainer stop"); + if (elasticsearchContainer != null) { + elasticsearchContainer.stop(); + } + } +} diff --git a/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchITBase.java b/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchITBase.java index 68adc411ad13..c5dd9a921638 100644 --- a/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchITBase.java +++ b/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchITBase.java @@ -15,13 +15,11 @@ * limitations under the License. */ -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.Assume; -import org.testcontainers.DockerClientFactory; -import org.testcontainers.elasticsearch.ElasticsearchContainer; + +import java.util.Properties; /** * @author Roy Kim @@ -31,54 +29,25 @@ public abstract class ElasticsearchITBase { protected static final Logger logger = LogManager.getLogger(ElasticsearchITBase.class); - public static ElasticsearchContainer elasticsearchContainer; - - protected static int SERVER_PORT; - protected static String SERVER_HOST; - protected static String ELASTICSEARCH_ADDRESS; - - public static int getServerPort() { - return SERVER_PORT; - } - - public static void setServerPort(int serverPort) { - SERVER_PORT = serverPort; - } - - public static String getServerHost() { - return SERVER_HOST; - } + protected static int ES_PORT; - public static void setServerHost(String serverHost) { - SERVER_HOST = serverHost; + public String getEsHost() { + return "127.0.0.1"; } - public static String getElasticsearchAddress() { - return ELASTICSEARCH_ADDRESS; + public int getEsPort() { + return ES_PORT; } - public static void setElasticsearchAddress(String elasticsearchAddress) { - ELASTICSEARCH_ADDRESS = elasticsearchAddress; + public String getEsAddress() { + return getEsHost() + ":" + ES_PORT; } - @BeforeSharedClass - public static void sharedSetUp() { - Assume.assumeTrue("Docker not enabled", DockerClientFactory.instance().isDockerAvailable()); - - elasticsearchContainer = ESServerContainerFactory.newESServerContainerFactory(logger.getName()); - elasticsearchContainer.start(); - - setServerPort(elasticsearchContainer.getMappedPort(ESServerContainerFactory.DEFAULT_PORT)); - setServerHost(elasticsearchContainer.getHost()); - setElasticsearchAddress(elasticsearchContainer.getHttpHostAddress()); - - } + @SharedTestBeforeAllResult + public static void setBeforeAllResult(Properties beforeAllResult) { + logger.info("ElasticsearchContainer properties:{}", beforeAllResult); - @AfterSharedClass - public static void sharedTearDown() { - if (elasticsearchContainer != null) { - elasticsearchContainer.stop(); - } + ES_PORT = Integer.parseInt(beforeAllResult.getProperty("PORT")); } } diff --git a/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_7_16_x_IT.java b/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_7_16_x_IT.java index 3e5d03366778..367cd4f2acf3 100644 --- a/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_7_16_x_IT.java +++ b/plugins-it/elasticsearch-7.16-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_7_16_x_IT.java @@ -25,6 +25,7 @@ import com.navercorp.pinpoint.test.plugin.JvmVersion; import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; @@ -43,18 +44,18 @@ @RunWith(PinpointPluginTestSuite.class) @PinpointAgent(AgentPath.PATH) -@Dependency({"org.elasticsearch.client:elasticsearch-rest-high-level-client:[7.16.0,7.max]", +@Dependency({"org.elasticsearch.client:elasticsearch-rest-high-level-client:[7.16.0]", TestcontainersOption.ELASTICSEARCH}) @JvmVersion(8) +@SharedTestLifeCycleClass(ESServer.class) public class ElasticsearchIT_7_16_x_IT extends ElasticsearchITBase { - private static RestHighLevelClient restHighLevelClient; + private RestHighLevelClient restHighLevelClient; @Before public void setup() { restHighLevelClient = new RestHighLevelClient( - RestClient.builder( - new HttpHost(getServerHost(), getServerPort(), "http"))); + RestClient.builder(new HttpHost(getEsHost(), getEsPort(), "http"))); } @After @@ -94,7 +95,7 @@ private void testIndexV70UP(PluginTestVerifier verifier) throws IOException { throw new AssertionError(e); } - verifier.verifyTrace(event(ElasticsearchConstants.ELASTICSEARCH_EXECUTOR.getName(), index, null, ELASTICSEARCH_ADDRESS, "ElasticSearch" + verifier.verifyTrace(event(ElasticsearchConstants.ELASTICSEARCH_EXECUTOR.getName(), index, null, getEsAddress(), "ElasticSearch" , new ExpectedAnnotation(ElasticsearchConstants.ARGS_DSL_ANNOTATION_KEY.getName(), indexRequest.toString()) )); } diff --git a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ESServer.java b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ESServer.java new file mode 100644 index 000000000000..294327368cbf --- /dev/null +++ b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ESServer.java @@ -0,0 +1,43 @@ +package com.navercorp.pinpoint.plugin.elasticsearch; + +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.elasticsearch.ElasticsearchContainer; + +import java.util.Properties; + +public class ESServer implements SharedTestLifeCycle { + private final Logger logger = LogManager.getLogger(getClass()); + + public ElasticsearchContainer elasticsearchContainer; + + public ESServer() { + } + + @Override + public Properties beforeAll() { + Assume.assumeTrue("Docker not enabled", DockerClientFactory.instance().isDockerAvailable()); + logger.info("ElasticsearchContainer start"); + + elasticsearchContainer = ESServerContainerFactory.newESServerContainerFactory(logger.getName()); + elasticsearchContainer.start(); + + Properties properties = new Properties(); + + Integer port = elasticsearchContainer.getMappedPort(ESServerContainerFactory.DEFAULT_PORT); + properties.setProperty("PORT", port.toString()); + return properties; + } + + + @Override + public void afterAll() { + logger.info("ElasticsearchContainer stop"); + if (elasticsearchContainer != null) { + elasticsearchContainer.stop(); + } + } +} diff --git a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchITBase.java b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchITBase.java index c63cb18bbb56..c5dd9a921638 100644 --- a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchITBase.java +++ b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchITBase.java @@ -15,13 +15,11 @@ * limitations under the License. */ -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.Assume; -import org.testcontainers.DockerClientFactory; -import org.testcontainers.elasticsearch.ElasticsearchContainer; + +import java.util.Properties; /** * @author Roy Kim @@ -31,56 +29,25 @@ public abstract class ElasticsearchITBase { protected static final Logger logger = LogManager.getLogger(ElasticsearchITBase.class); - public static ElasticsearchContainer elasticsearchContainer; - - - protected static int SERVER_PORT; - protected static String SERVER_HOST; - protected static String ELASTICSEARCH_ADDRESS; - - public static int getServerPort() { - return SERVER_PORT; - } - - public static void setServerPort(int serverPort) { - SERVER_PORT = serverPort; - } - - public static String getServerHost() { - return SERVER_HOST; - } + protected static int ES_PORT; - public static void setServerHost(String serverHost) { - SERVER_HOST = serverHost; + public String getEsHost() { + return "127.0.0.1"; } - public static String getElasticsearchAddress() { - return ELASTICSEARCH_ADDRESS; + public int getEsPort() { + return ES_PORT; } - public static void setElasticsearchAddress(String elasticsearchAddress) { - ELASTICSEARCH_ADDRESS = elasticsearchAddress; + public String getEsAddress() { + return getEsHost() + ":" + ES_PORT; } - @BeforeSharedClass - public static void sharedSetUp() { - Assume.assumeTrue("Docker not enabled", DockerClientFactory.instance().isDockerAvailable()); - - elasticsearchContainer = ESServerContainerFactory.newESServerContainerFactory(logger.getName()); - elasticsearchContainer.start(); - - setServerPort(elasticsearchContainer.getMappedPort(ESServerContainerFactory.DEFAULT_PORT)); - setServerHost(elasticsearchContainer.getHost()); - setElasticsearchAddress(elasticsearchContainer.getHttpHostAddress()); + @SharedTestBeforeAllResult + public static void setBeforeAllResult(Properties beforeAllResult) { + logger.info("ElasticsearchContainer properties:{}", beforeAllResult); + ES_PORT = Integer.parseInt(beforeAllResult.getProperty("PORT")); } - @AfterSharedClass - public static void sharedTearDown() { - if (elasticsearchContainer != null) { - elasticsearchContainer.stop(); - } - } - - } diff --git a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_6_0_x_IT.java b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_6_0_x_IT.java index ae9234c70c85..3868e345fa66 100644 --- a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_6_0_x_IT.java +++ b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_6_0_x_IT.java @@ -24,6 +24,7 @@ import com.navercorp.pinpoint.test.plugin.JvmVersion; import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.apache.http.Header; import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; @@ -46,15 +47,16 @@ @Dependency({"org.elasticsearch.client:elasticsearch-rest-high-level-client:[6.0.0,6.3.0)", TestcontainersOption.ELASTICSEARCH}) @JvmVersion(8) +@SharedTestLifeCycleClass(ESServer.class) public class ElasticsearchIT_6_0_x_IT extends ElasticsearchITBase { - private static RestHighLevelClient restHighLevelClient; + private RestHighLevelClient restHighLevelClient; @Before public void setup() { restHighLevelClient = new RestHighLevelClient( RestClient.builder( - new HttpHost(getServerHost(), getServerPort(), "http"))); + new HttpHost(getEsHost(), getEsPort(), "http"))); } @After @@ -110,7 +112,7 @@ private void testIndexV60UP(PluginTestVerifier verifier) throws IOException { throw new AssertionError(e); } - verifier.verifyTrace(event(ElasticsearchConstants.ELASTICSEARCH_EXECUTOR.getName(), index, null, getElasticsearchAddress(), "ElasticSearch" + verifier.verifyTrace(event(ElasticsearchConstants.ELASTICSEARCH_EXECUTOR.getName(), index, null, getEsAddress(), "ElasticSearch" , new ExpectedAnnotation(ElasticsearchConstants.ARGS_DSL_ANNOTATION_KEY.getName(), indexRequest.toString()) )); } diff --git a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_6_4_x_IT.java b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_6_4_x_IT.java index 4dd1361b55f9..49d78e41b622 100644 --- a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_6_4_x_IT.java +++ b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_6_4_x_IT.java @@ -24,6 +24,7 @@ import com.navercorp.pinpoint.test.plugin.JvmVersion; import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; @@ -45,7 +46,8 @@ @Dependency({"org.elasticsearch.client:elasticsearch-rest-high-level-client:[6.4.0,6.9.9)", TestcontainersOption.ELASTICSEARCH}) @JvmVersion(8) -public class ElasticsearchIT_6_4_x_IT extends ElasticsearchITBase { +@SharedTestLifeCycleClass(ESServer.class) +public class ElasticsearchIT_6_4_x_IT extends ElasticsearchITBase { private static RestHighLevelClient restHighLevelClient; @@ -53,7 +55,7 @@ public class ElasticsearchIT_6_4_x_IT extends ElasticsearchITBase { public void setup() { restHighLevelClient = new RestHighLevelClient( RestClient.builder( - new HttpHost(getServerHost(), getServerPort(), "http"))); + new HttpHost(getEsHost(), getEsPort(), "http"))); } @After @@ -91,7 +93,7 @@ private void testIndexV64UP(PluginTestVerifier verifier) throws IOException { throw new AssertionError(e); } - verifier.verifyTrace(event(ElasticsearchConstants.ELASTICSEARCH_EXECUTOR.getName(), index, null, getElasticsearchAddress(), "ElasticSearch" + verifier.verifyTrace(event(ElasticsearchConstants.ELASTICSEARCH_EXECUTOR.getName(), index, null, getEsAddress(), "ElasticSearch" , new ExpectedAnnotation(ElasticsearchConstants.ARGS_DSL_ANNOTATION_KEY.getName(), indexRequest.toString()) )); } diff --git a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_7_0_x_IT.java b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_7_0_x_IT.java index 19d3fba3b6f5..134f524f14d3 100644 --- a/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_7_0_x_IT.java +++ b/plugins-it/elasticsearch-it/src/test/java/com/navercorp/pinpoint/plugin/elasticsearch/ElasticsearchIT_7_0_x_IT.java @@ -24,6 +24,7 @@ import com.navercorp.pinpoint.test.plugin.JvmVersion; import com.navercorp.pinpoint.test.plugin.PinpointAgent; import com.navercorp.pinpoint.test.plugin.PinpointPluginTestSuite; +import com.navercorp.pinpoint.test.plugin.shared.SharedTestLifeCycleClass; import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; @@ -45,6 +46,7 @@ @Dependency({"org.elasticsearch.client:elasticsearch-rest-high-level-client:[7.0.0,7.16.0)", TestcontainersOption.ELASTICSEARCH}) @JvmVersion(8) +@SharedTestLifeCycleClass(ESServer.class) public class ElasticsearchIT_7_0_x_IT extends ElasticsearchITBase { private static RestHighLevelClient restHighLevelClient; @@ -53,7 +55,7 @@ public class ElasticsearchIT_7_0_x_IT extends ElasticsearchITBase { public void setup() { restHighLevelClient = new RestHighLevelClient( RestClient.builder( - new HttpHost(getServerHost(), getServerPort(), "http"))); + new HttpHost(getEsHost(), getEsPort(), "http"))); } @After @@ -63,6 +65,7 @@ public void tearDown() throws IOException { } } + @Test public void testHighLevelClient() throws Exception { @@ -93,7 +96,7 @@ private void testIndexV70UP(PluginTestVerifier verifier) throws IOException { throw new AssertionError(e); } - verifier.verifyTrace(event(ElasticsearchConstants.ELASTICSEARCH_EXECUTOR.getName(), index, null, getElasticsearchAddress(), "ElasticSearch" + verifier.verifyTrace(event(ElasticsearchConstants.ELASTICSEARCH_EXECUTOR.getName(), index, null, getEsAddress(), "ElasticSearch" , new ExpectedAnnotation(ElasticsearchConstants.ARGS_DSL_ANNOTATION_KEY.getName(), indexRequest.toString()) )); }