Skip to content

Commit

Permalink
[#8965] Apply SharedTestLifeCycle to ElasticSearch
Browse files Browse the repository at this point in the history
  • Loading branch information
emeroad committed Jun 23, 2022
1 parent 944ea53 commit a495cec
Show file tree
Hide file tree
Showing 8 changed files with 136 additions and 105 deletions.
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -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())
));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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();
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -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())
));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -45,15 +46,16 @@
@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;

@Before
public void setup() {
restHighLevelClient = new RestHighLevelClient(
RestClient.builder(
new HttpHost(getServerHost(), getServerPort(), "http")));
new HttpHost(getEsHost(), getEsPort(), "http")));
}

@After
Expand Down Expand Up @@ -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())
));
}
Expand Down
Loading

0 comments on commit a495cec

Please sign in to comment.