diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3fda0319..06d3ded3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -32,15 +32,29 @@ jobs:
# Build & Test
- name: Build with Maven
run: mvn --batch-mode --no-transfer-progress install
+ env:
+ TEST_DATABASE: h2
- name: Run integration tests on PostgreSQL
- run: TEST_DATABASE=postgresql mvn --batch-mode --no-transfer-progress failsafe:integration-test failsafe:verify
+ run: mvn --batch-mode --no-transfer-progress failsafe:integration-test failsafe:verify
+ env:
+ TEST_DATABASE: postgresql
- name: Run integration tests on MySQL
- run: TEST_DATABASE=mysql mvn --batch-mode --no-transfer-progress failsafe:integration-test failsafe:verify
+ run: mvn --batch-mode --no-transfer-progress failsafe:integration-test failsafe:verify
+ env:
+ TEST_DATABASE: mysql
- name: Run integration tests on MariaDB
- run: TEST_DATABASE=mariadb mvn --batch-mode --no-transfer-progress failsafe:integration-test failsafe:verify
+ run: mvn --batch-mode --no-transfer-progress failsafe:integration-test failsafe:verify
+ env:
+ TEST_DATABASE: mariadb
+
+ - name: Run integration tests with Redis cache enabled
+ run: mvn --batch-mode --no-transfer-progress failsafe:integration-test failsafe:verify
+ env:
+ TEST_DATABASE: h2
+ REDIS: true
# Upload artifacts
- name: Upload JAR
diff --git a/commafeed-server/pom.xml b/commafeed-server/pom.xml
index be80b733..45ace398 100644
--- a/commafeed-server/pom.xml
+++ b/commafeed-server/pom.xml
@@ -23,6 +23,8 @@
8.4
11.4.2
+
+ 7.2
diff --git a/commafeed-server/src/test/java/com/commafeed/CommaFeedDropwizardAppExtension.java b/commafeed-server/src/test/java/com/commafeed/CommaFeedDropwizardAppExtension.java
index 332105ae..0cc7a0fb 100644
--- a/commafeed-server/src/test/java/com/commafeed/CommaFeedDropwizardAppExtension.java
+++ b/commafeed-server/src/test/java/com/commafeed/CommaFeedDropwizardAppExtension.java
@@ -12,19 +12,25 @@ import java.util.Properties;
import javax.sql.DataSource;
import org.mockserver.socket.PortFactory;
+import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.JdbcDatabaseContainer;
import org.testcontainers.containers.MariaDBContainer;
import org.testcontainers.containers.MySQLContainer;
import org.testcontainers.containers.PostgreSQLContainer;
+import org.testcontainers.utility.DockerImageName;
import com.codahale.metrics.MetricRegistry;
+import com.commafeed.CommaFeedConfiguration.CacheType;
import io.dropwizard.testing.ConfigOverride;
import io.dropwizard.testing.ResourceHelpers;
import io.dropwizard.testing.junit5.DropwizardAppExtension;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
public class CommaFeedDropwizardAppExtension extends DropwizardAppExtension {
private static final String TEST_DATABASE = System.getenv().getOrDefault("TEST_DATABASE", "h2");
+ private static final boolean REDIS_ENABLED = Boolean.parseBoolean(System.getenv().getOrDefault("REDIS", "false"));
private static final ConfigOverride[] CONFIG_OVERRIDES;
private static final List DROP_ALL_STATEMENTS;
@@ -32,7 +38,9 @@ public class CommaFeedDropwizardAppExtension extends DropwizardAppExtension overrides = new ArrayList<>();
overrides.add(ConfigOverride.config("server.applicationConnectors[0].port", String.valueOf(PortFactory.findFreePort())));
- DatabaseConfiguration config = buildConfiguration(TEST_DATABASE);
+ Properties imageNames = readProperties("/docker-images.properties");
+
+ DatabaseConfiguration config = buildConfiguration(TEST_DATABASE, imageNames.getProperty(TEST_DATABASE));
JdbcDatabaseContainer> container = config.container();
if (container != null) {
container.withDatabaseName("commafeed");
@@ -45,6 +53,16 @@ public class CommaFeedDropwizardAppExtension extends DropwizardAppExtension redis = new GenericContainer<>(DockerImageName.parse(imageNames.getProperty("redis")))
+ .withExposedPorts(6379);
+ redis.start();
+
+ overrides.add(ConfigOverride.config("app.cache", "redis"));
+ overrides.add(ConfigOverride.config("redis.host", redis.getHost()));
+ overrides.add(ConfigOverride.config("redis.port", redis.getMappedPort(6379).toString()));
+ }
+
CONFIG_OVERRIDES = overrides.toArray(new ConfigOverride[0]);
DROP_ALL_STATEMENTS = config.dropAllStatements();
}
@@ -53,15 +71,7 @@ public class CommaFeedDropwizardAppExtension extends DropwizardAppExtension container = new PostgreSQLContainer<>(imageName).withTmpFs(Map.of("/var/lib/postgresql/data", "rw"));
return new DatabaseConfiguration(container, List.of("DROP SCHEMA public CASCADE", "CREATE SCHEMA public"));
@@ -77,6 +87,16 @@ public class CommaFeedDropwizardAppExtension extends DropwizardAppExtension container, List dropAllStatements) {
diff --git a/commafeed-server/src/test/resources/docker-images.properties b/commafeed-server/src/test/resources/docker-images.properties
index c022ecd7..b40aa81e 100644
--- a/commafeed-server/src/test/resources/docker-images.properties
+++ b/commafeed-server/src/test/resources/docker-images.properties
@@ -1,3 +1,4 @@
postgresql=postgres:${postgresql.image.version}
mysql=mysql:${mysql.image.version}
mariadb=mariadb:${mariadb.image.version}
+redis=redis:${redis.image.version}
\ No newline at end of file