
com.playtika.testcontainer.elasticsearch.ElasticSearchContainerFactory Maven / Gradle / Ivy
The newest version!
package com.playtika.testcontainer.elasticsearch;
import com.playtika.testcontainer.common.utils.ContainerUtils;
import com.playtika.testcontainer.elasticsearch.rest.CreateIndex;
import com.playtika.testcontainer.elasticsearch.rest.WaitForGreenStatus;
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
import org.testcontainers.containers.wait.strategy.WaitAllStrategy;
import org.testcontainers.containers.wait.strategy.WaitStrategy;
import org.testcontainers.elasticsearch.ElasticsearchContainer;
class ElasticSearchContainerFactory {
static ElasticsearchContainer create(ElasticSearchProperties properties) {
return new ElasticsearchContainer(ContainerUtils.getDockerImageName(properties))
.withExposedPorts(properties.httpPort, properties.transportPort)
.withEnv("cluster.name", properties.getClusterName())
.withEnv("discovery.type", "single-node")
.withEnv("xpack.security.enabled", "false")
.withEnv("ES_JAVA_OPTS", getJavaOpts(properties))
.waitingFor(getCompositeWaitStrategy(properties));
}
private static String getJavaOpts(ElasticSearchProperties properties) {
return "-Xms" + properties.getClusterRamMb() + "m -Xmx" + properties.getClusterRamMb() + "m";
}
private static WaitStrategy getCompositeWaitStrategy(ElasticSearchProperties properties) {
WaitAllStrategy strategy = new WaitAllStrategy()
.withStrategy(new HostPortWaitStrategy());
properties.indices.forEach(index -> strategy.withStrategy(new CreateIndex(properties, index)));
return strategy
.withStrategy(new WaitForGreenStatus(properties))
.withStartupTimeout(properties.getTimeoutDuration());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy