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