
com.redis.testcontainers.junit.AbstractTestcontainersRedisTestBase Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testcontainers-redis-junit Show documentation
Show all versions of testcontainers-redis-junit Show documentation
"Testcontainers Redis :: JUnit Jupiter Extension"
package com.redis.testcontainers.junit;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.junit.jupiter.Testcontainers;
import com.redis.testcontainers.RedisServer;
/**
*
*
* @ParameterizedTest
* @RedisTestContextsSource
* void myTest(RedisTestContext redis) {
* ...
* }
*
*
* @author jruaux
*
*/
@Testcontainers
@TestInstance(Lifecycle.PER_CLASS)
public abstract class AbstractTestcontainersRedisTestBase {
private static final Logger log = LoggerFactory.getLogger(AbstractTestcontainersRedisTestBase.class);
private Map contexts = new LinkedHashMap<>();
protected abstract Collection redisServers();
protected Collection testRedisServers() {
return contexts.keySet();
}
@BeforeAll
protected void setup() {
Collection allRedisServers = redisServers();
Assumptions.assumeTrue(allRedisServers.stream().anyMatch(RedisServer::isEnabled));
for (RedisServer server : allRedisServers) {
if (server.isEnabled()) {
log.info("Starting container {}", server);
server.start();
contexts.put(server, new RedisTestContext(server));
} else {
log.info("Container {} disabled", server);
}
}
}
protected RedisTestContext removeRedisTestContext(RedisServer server) {
return contexts.remove(server);
}
private List contexts(Collection servers) {
List testContexts = new ArrayList<>();
for (RedisServer server : servers) {
if (contexts.containsKey(server)) {
testContexts.add(contexts.get(server));
}
}
return testContexts;
}
@BeforeEach
protected void flushAll() {
contexts.forEach((k, v) -> {
if (k.isEnabled()) {
v.sync().flushall();
Awaitility.await().until(() -> v.sync().dbsize() == 0);
}
});
}
@AfterAll
protected void teardown() {
contexts.forEach((k, v) -> {
v.close();
k.close();
});
contexts.clear();
}
public RedisTestContext getContext(RedisServer server) {
return contexts.get(server);
}
public List getAllContexts() {
return new ArrayList<>(contexts.values());
}
public List getTestContexts() {
return contexts(testRedisServers());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy