From ee26bb04ead3becb04d7e538b035231f760d0063 Mon Sep 17 00:00:00 2001 From: Fedor Dudinskiy Date: Mon, 22 May 2023 11:15:59 +0200 Subject: [PATCH] Prepare test suite to work with podman 1. Tag all tests, which are incompatible with podman 2. Add workarounds, if applicable --- README.md | 1 + .../test/java/io/quarkus/ts/docker/DockerBuildIT.java | 2 ++ .../messaging/kafka/ConfluentKafkaAvroGroupIdIT.java | 1 + .../ts/messaging/kafka/ConfluentKafkaAvroIT.java | 3 +++ .../quarkus/ts/sqldb/compatibility/DB2DatabaseIT.java | 1 + .../io/quarkus/ts/sqldb/sqlapp/DB2DatabaseIT.java | 1 + .../DevModeMariadbDevServicesUserExperienceIT.java | 11 +++++++++-- .../DevModeMssqlDevServicesUserExperienceIT.java | 11 +++++++++-- .../DevModeMysqlDevServiceUserExperienceIT.java | 11 +++++++++-- .../DevModeOracleDevServiceUserExperienceIT.java | 7 +++++++ .../DevModePostgresqlDevServiceUserExperienceIT.java | 7 +++++++ 11 files changed, 50 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f7f035a26b..99b6471fd7 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,7 @@ The suite uses `org.junit.jupiter.api.Tag` annotation to group similar tests tog - `use-quarkus-openshift-extension`: tests use `quarkus-openshift` extension to deploy the app - `serverless`: use Openshift Serverless to deploy the app - `quarkus-cli`: tests use Quarkus CLI, which needs to be installed ( see https://quarkus.io/guides/cli-tooling for details) +- `podman-incompatible`: tests, which require Docker as a container engine and are not compatible with Podman. ## Running against Red Hat build of Quarkus diff --git a/docker-build/src/test/java/io/quarkus/ts/docker/DockerBuildIT.java b/docker-build/src/test/java/io/quarkus/ts/docker/DockerBuildIT.java index cfcaff5e9d..7a10517606 100644 --- a/docker-build/src/test/java/io/quarkus/ts/docker/DockerBuildIT.java +++ b/docker-build/src/test/java/io/quarkus/ts/docker/DockerBuildIT.java @@ -5,6 +5,7 @@ import java.util.Objects; import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import com.github.dockerjava.api.model.Image; @@ -13,6 +14,7 @@ import io.quarkus.test.utils.DockerUtils; @QuarkusScenario +@Tag("podman-incompatible") //TODO: https://github.com/quarkusio/quarkus/issues/28721 public class DockerBuildIT { private static final String DOCKER_IMG_NAME = "hello-world-app"; diff --git a/messaging/kafka-confluent-avro-reactive-messaging/src/test/java/io/quarkus/ts/messaging/kafka/ConfluentKafkaAvroGroupIdIT.java b/messaging/kafka-confluent-avro-reactive-messaging/src/test/java/io/quarkus/ts/messaging/kafka/ConfluentKafkaAvroGroupIdIT.java index afae575502..d69efee498 100644 --- a/messaging/kafka-confluent-avro-reactive-messaging/src/test/java/io/quarkus/ts/messaging/kafka/ConfluentKafkaAvroGroupIdIT.java +++ b/messaging/kafka-confluent-avro-reactive-messaging/src/test/java/io/quarkus/ts/messaging/kafka/ConfluentKafkaAvroGroupIdIT.java @@ -11,6 +11,7 @@ @Tag("QUARKUS-1089") @QuarkusScenario +@Tag("podman-incompatible") //todo create an issue public class ConfluentKafkaAvroGroupIdIT extends BaseKafkaAvroGroupIdIT { @KafkaContainer(vendor = KafkaVendor.CONFLUENT, withRegistry = true) diff --git a/messaging/kafka-confluent-avro-reactive-messaging/src/test/java/io/quarkus/ts/messaging/kafka/ConfluentKafkaAvroIT.java b/messaging/kafka-confluent-avro-reactive-messaging/src/test/java/io/quarkus/ts/messaging/kafka/ConfluentKafkaAvroIT.java index 740b47734c..b19b99948a 100644 --- a/messaging/kafka-confluent-avro-reactive-messaging/src/test/java/io/quarkus/ts/messaging/kafka/ConfluentKafkaAvroIT.java +++ b/messaging/kafka-confluent-avro-reactive-messaging/src/test/java/io/quarkus/ts/messaging/kafka/ConfluentKafkaAvroIT.java @@ -1,5 +1,7 @@ package io.quarkus.ts.messaging.kafka; +import org.junit.jupiter.api.Tag; + import io.quarkus.test.bootstrap.KafkaService; import io.quarkus.test.bootstrap.RestService; import io.quarkus.test.scenarios.QuarkusScenario; @@ -8,6 +10,7 @@ import io.quarkus.test.services.containers.model.KafkaVendor; @QuarkusScenario +@Tag("podman-incompatible") //todo create an issue public class ConfluentKafkaAvroIT extends BaseKafkaAvroIT { @KafkaContainer(vendor = KafkaVendor.CONFLUENT, withRegistry = true) diff --git a/sql-db/sql-app-compatibility/src/test/java/io/quarkus/ts/sqldb/compatibility/DB2DatabaseIT.java b/sql-db/sql-app-compatibility/src/test/java/io/quarkus/ts/sqldb/compatibility/DB2DatabaseIT.java index 1a8c45358b..f52168ede7 100644 --- a/sql-db/sql-app-compatibility/src/test/java/io/quarkus/ts/sqldb/compatibility/DB2DatabaseIT.java +++ b/sql-db/sql-app-compatibility/src/test/java/io/quarkus/ts/sqldb/compatibility/DB2DatabaseIT.java @@ -12,6 +12,7 @@ @QuarkusScenario @DisabledOnNative(reason = "Compatibility mode check in JVM mode is enough for this DB") @Tag("fips-incompatible") // Reported in https://github.com/IBM/Db2/issues/43 +@Tag("podman-incompatible") //TODO https://github.com/containers/podman/issues/16432 public class DB2DatabaseIT extends AbstractSqlDatabaseIT { @Container(image = "${db2.image}", port = 50000, expectedLog = "Setup has completed") diff --git a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DB2DatabaseIT.java b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DB2DatabaseIT.java index c452dc4d7c..8b8de1f3e1 100644 --- a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DB2DatabaseIT.java +++ b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DB2DatabaseIT.java @@ -10,6 +10,7 @@ @QuarkusScenario @Tag("fips-incompatible") // Reported in https://github.com/IBM/Db2/issues/43 +@Tag("podman-incompatible") //TODO: https://github.com/containers/podman/issues/16432 public class DB2DatabaseIT extends AbstractSqlDatabaseIT { @Container(image = "${db2.image}", port = 50000, expectedLog = "Setup has completed") diff --git a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMariadbDevServicesUserExperienceIT.java b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMariadbDevServicesUserExperienceIT.java index 3951eb70d0..e05b799e2d 100644 --- a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMariadbDevServicesUserExperienceIT.java +++ b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMariadbDevServicesUserExperienceIT.java @@ -1,5 +1,6 @@ package io.quarkus.ts.sqldb.sqlapp; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -37,9 +38,15 @@ public void verifyIfUserIsInformedAboutMariadbDevServicePulling() { @Test public void verifyMysqlImage() { - Image postgresImg = DockerUtils.getImage(MARIA_DB_NAME, MARIA_DB_VERSION); - Assertions.assertFalse(postgresImg.getId().isEmpty(), String.format("%s:%s not found. " + + Image image = DockerUtils.getImage(MARIA_DB_NAME, MARIA_DB_VERSION); + Assertions.assertFalse(image.getId().isEmpty(), String.format("%s:%s not found. " + "Notice that user set his own custom image by 'quarkus.datasource.devservices.image-name' property", MARIA_DB_NAME, MARIA_DB_VERSION)); } + + @AfterAll + //TODO workaround for podman 4.4.1 on rhel. Without it, *next* test (eg MariaDBDatabaseIT) fails with "broken pipe" + public static void clear() { + DockerUtils.removeImage(MARIA_DB_NAME, MARIA_DB_VERSION); + } } diff --git a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMssqlDevServicesUserExperienceIT.java b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMssqlDevServicesUserExperienceIT.java index 6110ec4760..67efb8aff3 100644 --- a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMssqlDevServicesUserExperienceIT.java +++ b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMssqlDevServicesUserExperienceIT.java @@ -1,5 +1,6 @@ package io.quarkus.ts.sqldb.sqlapp; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -38,9 +39,15 @@ public void verifyIfUserIsInformedAboutMssqlDevServicePulling() { @Test public void verifyMssqlImage() { - Image postgresImg = DockerUtils.getImage(MSSQL_NAME, MSSQL_VERSION); - Assertions.assertFalse(postgresImg.getId().isEmpty(), String.format("%s:%s not found. " + + Image image = DockerUtils.getImage(MSSQL_NAME, MSSQL_VERSION); + Assertions.assertFalse(image.getId().isEmpty(), String.format("%s:%s not found. " + "Notice that user set his own custom image by 'quarkus.datasource.devservices.image-name' property", MSSQL_NAME, MSSQL_VERSION)); } + + @AfterAll + //TODO workaround for podman 4.4.1 on rhel. Without it, *next* test (eg MariaDBDatabaseIT) fails with "broken pipe" + public static void clear() { + DockerUtils.removeImage(MSSQL_NAME, MSSQL_VERSION); + } } diff --git a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMysqlDevServiceUserExperienceIT.java b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMysqlDevServiceUserExperienceIT.java index a2a9bcebff..eb9d822a1a 100644 --- a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMysqlDevServiceUserExperienceIT.java +++ b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeMysqlDevServiceUserExperienceIT.java @@ -3,6 +3,7 @@ import static io.quarkus.ts.sqldb.sqlapp.DbUtil.getImageName; import static io.quarkus.ts.sqldb.sqlapp.DbUtil.getImageVersion; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -40,9 +41,15 @@ public void verifyIfUserIsInformedAboutMysqlDevServicePulling() { @Test public void verifyMysqlImage() { - Image postgresImg = DockerUtils.getImage(MYSQL_NAME, MYSQL_VERSION); - Assertions.assertFalse(postgresImg.getId().isEmpty(), String.format("%s:%s not found. " + + Image image = DockerUtils.getImage(MYSQL_NAME, MYSQL_VERSION); + Assertions.assertFalse(image.getId().isEmpty(), String.format("%s:%s not found. " + "Notice that user set his own custom image by 'quarkus.datasource.devservices.image-name' property", MYSQL_NAME, MYSQL_VERSION)); } + + @AfterAll + //TODO workaround for podman 4.4.1 on rhel. Without it, *next* test (eg MariaDBDatabaseIT) fails with "broken pipe" + public static void clear() { + DockerUtils.removeImage(MYSQL_NAME, MYSQL_VERSION); + } } diff --git a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeOracleDevServiceUserExperienceIT.java b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeOracleDevServiceUserExperienceIT.java index f2e9532d8f..7655be7d20 100644 --- a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeOracleDevServiceUserExperienceIT.java +++ b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModeOracleDevServiceUserExperienceIT.java @@ -3,6 +3,7 @@ import static io.quarkus.ts.sqldb.sqlapp.DbUtil.getImageName; import static io.quarkus.ts.sqldb.sqlapp.DbUtil.getImageVersion; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -43,4 +44,10 @@ public void verifyOracleImage() { "Notice that user set his own custom image by 'quarkus.datasource.devservices.image-name' property", ORACLE_NAME, ORACLE_VERSION)); } + + @AfterAll + //TODO workaround for podman 4.4.1 on rhel. Without it, *next* test (eg MariaDBDatabaseIT) fails with "broken pipe" + public static void clear() { + DockerUtils.removeImage(ORACLE_NAME, ORACLE_VERSION); + } } diff --git a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModePostgresqlDevServiceUserExperienceIT.java b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModePostgresqlDevServiceUserExperienceIT.java index 60a5552ad4..3e077a0829 100644 --- a/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModePostgresqlDevServiceUserExperienceIT.java +++ b/sql-db/sql-app/src/test/java/io/quarkus/ts/sqldb/sqlapp/DevModePostgresqlDevServiceUserExperienceIT.java @@ -3,6 +3,7 @@ import static io.quarkus.ts.sqldb.sqlapp.DbUtil.getImageName; import static io.quarkus.ts.sqldb.sqlapp.DbUtil.getImageVersion; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -48,4 +49,10 @@ public void verifyPostgresqlImage() { "Notice that user set his own custom image by 'quarkus.datasource.devservices.image-name' property", POSTGRES_NAME, POSTGRESQL_VERSION)); } + + @AfterAll + //TODO workaround for podman 4.4.1 on rhel. Without it, *next* test (eg MariaDBDatabaseIT) fails with "broken pipe" + public static void clear() { + DockerUtils.removeImage(POSTGRES_NAME, POSTGRESQL_VERSION); + } }