This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch quarkus-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 66cdfb4235588a2f4356a73219a4906c2be504e8 Author: James Netherton <[email protected]> AuthorDate: Mon Mar 23 12:58:50 2026 +0000 Upgrade Quarkus to 3.35.0.CR1 --- .../storage/blob/it/AzureStorageBlobResource.java | 17 +++++ .../storage/blob/it/AzureStorageBlobTest.java | 28 -------- .../common/it/mongodb/DebeziumMongodbTest.java | 56 ++-------------- .../it/mongodb/DebeziumMongodbTestResource.java | 26 ++++++++ .../common/it/postgres/DebeziumOracleTest.java | 19 +----- .../it/postgres/DebeziumOracleTestResource.java | 28 +++++++- .../common/it/postgres/DebeziumPostgresTest.java | 22 +------ .../it/postgres/DebeziumPostgresTestResource.java | 45 ++++++++++++- .../quarkus/component/mongodb/it/MongoDbTest.java | 28 +------- .../test/support/mongodb/MongoDbTestResource.java | 24 +++++-- .../component/arangodb/it/ArangodbTest.java | 27 +------- .../arangodb/it/ArangodbTestResource.java | 27 +++++++- .../camel/quarkus/component/jira/it/JiraTest.java | 75 +++------------------- .../component/jira/it/JiraTestResource.java | 43 ++++++++++++- .../quarkus/component/jpa/it/JpaResource.java | 14 ++++ .../quarkus/component/jpa/it/JpaTestBase.java | 22 +------ .../camel/quarkus/component/kudu/it/KuduTest.java | 27 +------- .../component/kudu/it/KuduTestResource.java | 17 ++++- .../camel/quarkus/component/mail/MailTest.java | 30 +-------- .../quarkus/component/mail/MailTestResource.java | 42 ++++++++++++ .../component/olingo4/it/OdataTestResource.java | 36 +++++++++++ .../quarkus/component/olingo4/it/Olingo4Test.java | 45 +++---------- .../replication/slot/it/PgReplicationSlotTest.java | 36 +---------- .../slot/it/PgReplicationSlotTestResource.java | 38 ++++++++++- .../component/pinecone/it/PineconeTest.java | 9 +-- .../pinecone/it/PineconeTestResource.java | 13 +++- pom.xml | 2 +- 27 files changed, 390 insertions(+), 406 deletions(-) diff --git a/integration-test-groups/azure/azure-storage-blob/src/main/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobResource.java b/integration-test-groups/azure/azure-storage-blob/src/main/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobResource.java index 156af66d5d..c0a012a339 100644 --- a/integration-test-groups/azure/azure-storage-blob/src/main/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobResource.java +++ b/integration-test-groups/azure/azure-storage-blob/src/main/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobResource.java @@ -35,6 +35,7 @@ import com.azure.core.http.rest.PagedIterable; import com.azure.core.implementation.ReflectiveInvoker; import com.azure.core.implementation.http.UnexpectedExceptionInformation; import com.azure.core.implementation.http.rest.ResponseExceptionConstructorCache; +import com.azure.storage.blob.BlobServiceClient; import com.azure.storage.blob.changefeed.models.BlobChangefeedEvent; import com.azure.storage.blob.changefeed.models.BlobChangefeedEventType; import com.azure.storage.blob.implementation.models.BlobStorageExceptionInternal; @@ -47,7 +48,9 @@ import com.azure.storage.blob.models.BlockListType; import com.azure.storage.blob.models.PageRange; import com.azure.storage.blob.models.PageRangeItem; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; import jakarta.inject.Inject; +import jakarta.inject.Named; import jakarta.json.Json; import jakarta.json.JsonArrayBuilder; import jakarta.json.JsonObject; @@ -72,6 +75,8 @@ import org.apache.camel.Processor; import org.apache.camel.ProducerTemplate; import org.apache.camel.component.azure.storage.blob.BlobBlock; import org.apache.camel.component.azure.storage.blob.BlobConstants; +import org.apache.camel.impl.event.CamelContextStartedEvent; +import org.apache.camel.impl.event.CamelContextStoppedEvent; import org.apache.camel.quarkus.core.util.FileUtils; import org.eclipse.microprofile.config.inject.ConfigProperty; @@ -94,6 +99,18 @@ public class AzureStorageBlobResource { @ConfigProperty(name = "azure.blob.container.name") public String azureBlobContainerName; + @Inject + @Named("azureBlobServiceClient") + BlobServiceClient client; + + void onCamelContextStarted(@Observes CamelContextStartedEvent event) { + client.createBlobContainer(azureBlobContainerName); + } + + void onCamelContextStopped(@Observes CamelContextStoppedEvent event) { + client.deleteBlobContainer(azureBlobContainerName); + } + @Path("/blob/create") @POST @Consumes(MediaType.TEXT_PLAIN) diff --git a/integration-test-groups/azure/azure-storage-blob/src/test/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobTest.java b/integration-test-groups/azure/azure-storage-blob/src/test/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobTest.java index ec7f2f59a9..d34d6b4c6c 100644 --- a/integration-test-groups/azure/azure-storage-blob/src/test/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobTest.java +++ b/integration-test-groups/azure/azure-storage-blob/src/test/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobTest.java @@ -39,10 +39,7 @@ import org.apache.camel.quarkus.test.EnabledIf; import org.apache.camel.quarkus.test.mock.backend.MockBackendDisabled; import org.apache.camel.quarkus.test.support.azure.AzureStorageTestResource; import org.awaitility.Awaitility; -import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import static org.hamcrest.Matchers.anyOf; @@ -57,33 +54,8 @@ import static org.junit.jupiter.api.Assertions.fail; @QuarkusTest @QuarkusTestResource(AzureStorageTestResource.class) class AzureStorageBlobTest { - private static final String BLOB_CONTENT = "Hello Camel Quarkus Azure Blob"; - @BeforeAll - static void beforeAll() { - final Config config = ConfigProvider.getConfig(); - String containerName = config.getValue("azure.blob.container.name", String.class); - int port = config.getValue("quarkus.http.test-port", int.class); - RestAssured.port = port; - RestAssured.given() - .queryParam("containerName", containerName) - .post("/azure-storage-blob/blob/container") - .then() - .statusCode(201); - } - - @AfterAll - static void afterAll() { - final Config config = ConfigProvider.getConfig(); - String containerName = config.getValue("azure.blob.container.name", String.class); - RestAssured.given() - .queryParam("containerName", containerName) - .delete("/azure-storage-blob/blob/container") - .then() - .statusCode(204); - } - @Test public void crud() { try { diff --git a/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTest.java b/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTest.java index 7ff47a7def..62998e8011 100644 --- a/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTest.java +++ b/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTest.java @@ -18,23 +18,14 @@ package org.apache.camel.quarkus.component.debezium.common.it.mongodb; import java.sql.Connection; import java.sql.SQLException; -import java.util.Optional; -import com.mongodb.client.MongoClient; -import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; import com.mongodb.client.result.DeleteResult; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTest; import org.apache.camel.quarkus.test.support.debezium.Type; import org.bson.Document; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -44,52 +35,17 @@ import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.fail; -import static org.junit.jupiter.api.Assumptions.assumeTrue; @QuarkusTest @QuarkusTestResource(value = DebeziumMongodbTestResource.class, restrictToAnnotatedClass = true) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) class DebeziumMongodbTest extends AbstractDebeziumTest { - private static MongoClient mongoClient; - - private static MongoCollection<Document> companies; + private MongoCollection<Document> collection; public DebeziumMongodbTest() { super(Type.mongodb); } - @BeforeAll - public static void setUp() throws SQLException { - Config config = ConfigProvider.getConfig(); - - final Optional<String> mongoUrl = config.getOptionalValue(Type.mongodb.getPropertyJdbc(), String.class); - - if (mongoUrl.isPresent()) { - mongoClient = MongoClients.create(mongoUrl.get()); - } else { - fail("Container is not running. Connection is not created."); - } - - assertNotNull(mongoClient, String.format("Can not create client for url '%s'.", mongoUrl.get())); - - MongoDatabase db = mongoClient.getDatabase("test"); - - companies = db.getCollection("companies"); - } - - @BeforeEach - public void before() { - assumeTrue(mongoClient != null); - } - - @AfterAll - public static void cleanUp() throws SQLException { - if (mongoClient != null) { - mongoClient.close(); - } - } - @Override protected Connection getConnection() { throw new IllegalStateException("Not used"); @@ -114,12 +70,12 @@ class DebeziumMongodbTest extends AbstractDebeziumTest { Document doc = new Document(); doc.put("name", name); doc.put("city", city); - companies.insertOne(doc); + collection.insertOne(doc); } @Override protected void isInitialized(String s) { - assertNotNull(mongoClient, s); + assertNotNull(collection, s); } @Test @@ -132,14 +88,14 @@ class DebeziumMongodbTest extends AbstractDebeziumTest { @Order(2) public void testUpdate() throws SQLException { Document doc = new Document().append("name", COMPANY_2).append("city", CITY_2); - companies.insertOne(doc); + collection.insertOne(doc); //validate that event is received receiveResponse(200, containsString(COMPANY_2)); Document searchQuery = new Document().append("name", COMPANY_2); Document updateQuery = new Document().append("$set", new Document().append("city", CITY_2 + "_changed")); - companies.updateMany(searchQuery, updateQuery); + collection.updateMany(searchQuery, updateQuery); //validate that event for create is in queue receiveResponse(200, containsString(CITY_2 + "_changed")); @@ -148,7 +104,7 @@ class DebeziumMongodbTest extends AbstractDebeziumTest { @Test @Order(3) public void testDelete() throws SQLException { - DeleteResult dr = companies.deleteMany(new Document().append("name", COMPANY_2)); + DeleteResult dr = collection.deleteMany(new Document().append("name", COMPANY_2)); assertEquals(1, dr.getDeletedCount(), "Only one company should be deleted."); //validate that event for delete is in queue diff --git a/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTestResource.java b/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTestResource.java index 544c1aca1b..2676f9b547 100644 --- a/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTestResource.java +++ b/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTestResource.java @@ -19,12 +19,17 @@ package org.apache.camel.quarkus.component.debezium.common.it.mongodb; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.util.Map; import java.util.Objects; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoCollection; import org.apache.camel.quarkus.test.AvailablePortFinder; import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTestResource; import org.apache.camel.quarkus.test.support.debezium.Type; import org.apache.commons.io.IOUtils; +import org.bson.Document; import org.eclipse.microprofile.config.ConfigProvider; import org.jboss.logging.Logger; import org.testcontainers.containers.Container; @@ -43,6 +48,8 @@ public class DebeziumMongodbTestResource extends AbstractDebeziumTestResource<Ge private static final String DB_INIT_SCRIPT = "/initMongodb.txt"; private static final int DB_PORT = AvailablePortFinder.getNextAvailable(); private static final String MONGO_IMAGE_NAME = ConfigProvider.getConfig().getValue("mongodb.container.image", String.class); + private MongoClient client; + private MongoCollection<Document> collection; public DebeziumMongodbTestResource() { super(Type.mongodb); @@ -50,6 +57,16 @@ public class DebeziumMongodbTestResource extends AbstractDebeziumTestResource<Ge private final Network net = Network.newNetwork(); + @Override + public Map<String, String> start() { + Map<String, String> config = super.start(); + + client = MongoClients.create(config.get(Type.mongodb.getPropertyJdbc())); + collection = client.getDatabase("test").getCollection("companies"); + + return config; + } + @Override protected GenericContainer<?> createContainer() { return new FixedHostPortGenericContainer<>(MONGO_IMAGE_NAME) @@ -68,8 +85,17 @@ public class DebeziumMongodbTestResource extends AbstractDebeziumTestResource<Ge execScriptInContainer(); } + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(collection, new TestInjector.MatchesType(MongoCollection.class)); + } + @Override public void stop() { + if (client != null) { + client.close(); + } + super.stop(); AvailablePortFinder.releaseReservedPorts(); } diff --git a/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTest.java b/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTest.java index 5275ff037a..df72b10b0b 100644 --- a/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTest.java +++ b/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTest.java @@ -17,17 +17,11 @@ package org.apache.camel.quarkus.component.debezium.common.it.postgres; import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTest; import org.apache.camel.quarkus.test.support.debezium.Type; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; -import org.jboss.logging.Logger; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.TestMethodOrder; @@ -37,25 +31,14 @@ import static org.hamcrest.Matchers.*; @QuarkusTestResource(value = DebeziumOracleTestResource.class, restrictToAnnotatedClass = true) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) class DebeziumOracleTest extends AbstractDebeziumTest { - private static final Logger LOG = Logger.getLogger(DebeziumOracleTest.class); - - private static Connection connection; + private Connection connection; public DebeziumOracleTest() { super(Type.oracle); } - @BeforeAll - public static void setUp() throws SQLException { - Config config = ConfigProvider.getConfig(); - final String jdbcUrl = config.getValue(Type.oracle.getPropertyJdbc(), String.class); - connection = DriverManager.getConnection(jdbcUrl, DebeziumOracleTestResource.DB_USERNAME, - DebeziumOracleTestResource.DB_PASSWORD); - } - @Override protected Connection getConnection() { return connection; } - } diff --git a/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTestResource.java b/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTestResource.java index eb0032ebdd..ce19470569 100644 --- a/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTestResource.java +++ b/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTestResource.java @@ -20,6 +20,9 @@ package org.apache.camel.quarkus.component.debezium.common.it.postgres; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; import java.util.Map; import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTestResource; @@ -41,6 +44,7 @@ public class DebeziumOracleTestResource extends AbstractDebeziumTestResource<Gen String.class); private static final int DB_PORT = 1521; private Path historyFile; + private Connection connection; public DebeziumOracleTestResource() { super(Type.oracle); @@ -72,8 +76,14 @@ public class DebeziumOracleTestResource extends AbstractDebeziumTestResource<Gen properties = super.start(); historyFile = Files.createTempFile(getClass().getSimpleName() + "-history-file-", ""); properties.put(DebeziumOracleResource.PROPERTY_DB_HISTORY_FILE, historyFile.toString()); + + connection = DriverManager.getConnection( + properties.get(Type.oracle.getPropertyJdbc()), + DebeziumOracleTestResource.DB_USERNAME, + DebeziumOracleTestResource.DB_PASSWORD); + return properties; - } catch (IOException e) { + } catch (IOException | SQLException e) { throw new RuntimeException(e); } catch (Exception e) { LOG.warn("Container startup failed", e); @@ -82,7 +92,6 @@ public class DebeziumOracleTestResource extends AbstractDebeziumTestResource<Gen LOG.warn("Giving up starting {} - max container startup attempts reached", ORACLE_IMAGE); throw e; } - try { Thread.sleep(5000); } catch (InterruptedException ex) { @@ -94,8 +103,21 @@ public class DebeziumOracleTestResource extends AbstractDebeziumTestResource<Gen throw new IllegalStateException("Could not start container for " + ORACLE_IMAGE); } + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(connection, new TestInjector.MatchesType(Connection.class)); + } + @Override public void stop() { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + LOG.warn("Failed to close database connection", e); + } + } + super.stop(); try { @@ -103,7 +125,7 @@ public class DebeziumOracleTestResource extends AbstractDebeziumTestResource<Gen Files.deleteIfExists(historyFile); } } catch (Exception e) { - // ignored + LOG.warn("Failed deleting history file: {}", historyFile, e); } } diff --git a/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTest.java b/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTest.java index 402c201b0d..e399d92b3e 100644 --- a/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTest.java +++ b/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTest.java @@ -17,18 +17,12 @@ package org.apache.camel.quarkus.component.debezium.common.it.postgres; import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTest; import org.apache.camel.quarkus.test.support.debezium.Type; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -40,19 +34,12 @@ import static org.hamcrest.Matchers.*; @QuarkusTestResource(value = DebeziumPostgresTestResource.class, restrictToAnnotatedClass = true) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) class DebeziumPostgresTest extends AbstractDebeziumTest { - private static Connection connection; + private Connection connection; public DebeziumPostgresTest() { super(Type.postgres); } - @BeforeAll - public static void setUp() throws SQLException { - Config config = ConfigProvider.getConfig(); - final String jdbcUrl = config.getValue(Type.postgres.getPropertyJdbc(), String.class); - connection = DriverManager.getConnection(jdbcUrl); - } - @Test @Order(4) public void testAdditionalProperty() { @@ -63,13 +50,6 @@ class DebeziumPostgresTest extends AbstractDebeziumTest { .body("'database.connectionTimeZone'", is("CET")); } - @AfterAll - public static void cleanUp() throws SQLException { - if (connection != null) { - connection.close(); - } - } - @Override protected Connection getConnection() { return connection; diff --git a/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTestResource.java b/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTestResource.java index c3c99c1941..c8c1d0d13b 100644 --- a/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTestResource.java +++ b/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTestResource.java @@ -17,24 +17,53 @@ package org.apache.camel.quarkus.component.debezium.common.it.postgres; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Map; + import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTestResource; import org.apache.camel.quarkus.test.support.debezium.Type; import org.eclipse.microprofile.config.ConfigProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.testcontainers.postgresql.PostgreSQLContainer; import org.testcontainers.utility.DockerImageName; public class DebeziumPostgresTestResource extends AbstractDebeziumTestResource<PostgreSQLContainer> { - - public static final String DB_USERNAME = "postgres"; public static final String DB_PASSWORD = "changeit"; private static final String POSTGRES_IMAGE = ConfigProvider.getConfig().getValue("postgres-debezium.container.image", String.class); private static final int DB_PORT = 5432; + private Connection connection; + private static final Logger LOG = LoggerFactory.getLogger(DebeziumPostgresTestResource.class); + public static final String DB_USERNAME = "postgres"; public DebeziumPostgresTestResource() { super(Type.postgres); } + @Override + public Map<String, String> start() { + Map<String, String> config = super.start(); + + try { + connection = DriverManager.getConnection( + config.get(Type.postgres.getPropertyJdbc()), + DB_USERNAME, + DB_PASSWORD); + } catch (SQLException e) { + throw new RuntimeException(e); + } + + return config; + } + + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(connection, new TestInjector.MatchesType(Connection.class)); + } + @Override protected PostgreSQLContainer createContainer() { DockerImageName imageName = DockerImageName.parse(POSTGRES_IMAGE) @@ -67,4 +96,16 @@ public class DebeziumPostgresTestResource extends AbstractDebeziumTestResource<P protected int getPort() { return DB_PORT; } + + @Override + public void stop() { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + LOG.warn("Failed to close database connection", e); + } + } + super.stop(); + } } diff --git a/integration-test-groups/mongodb/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTest.java b/integration-test-groups/mongodb/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTest.java index 3dbc48b506..839c326401 100644 --- a/integration-test-groups/mongodb/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTest.java +++ b/integration-test-groups/mongodb/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTest.java @@ -16,13 +16,11 @@ */ package org.apache.camel.quarkus.component.mongodb.it; -import java.sql.SQLException; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import com.mongodb.client.MongoClient; -import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import io.quarkus.test.common.QuarkusTestResource; @@ -35,10 +33,7 @@ import org.apache.camel.quarkus.test.support.mongodb.MongoDbConstants; import org.apache.camel.quarkus.test.support.mongodb.MongoDbTestResource; import org.apache.camel.util.CollectionHelper; import org.bson.Document; -import org.eclipse.microprofile.config.ConfigProvider; import org.jboss.logging.Logger; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -54,30 +49,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue; @QuarkusTestResource(MongoDbTestResource.class) class MongoDbTest { private static final Logger LOG = Logger.getLogger(MongoDbTest.class); - public static final String MSG = "Hello Camel Quarkus Mongo DB"; - private static final String COLLECTION_OUTPUT_TYPE_DOCUMENT_LIST = "outputTypeDocumentList"; private static final String COLLECTION_OUTPUT_TYPE_DOCUMENT = "outputTypeDocument"; - - private static MongoClient mongoClient; - - private static MongoDatabase db; - - @BeforeAll - public static void setUp() throws SQLException { - final String mongoUrl = "mongodb://" + ConfigProvider.getConfig().getValue("quarkus.mongodb.hosts", String.class); - - mongoClient = MongoClients.create(mongoUrl); - db = mongoClient.getDatabase("test"); - } - - @AfterAll - public static void cleanUp() throws SQLException { - if (mongoClient != null) { - mongoClient.close(); - } - } + private MongoClient mongoClient; + private MongoDatabase db; @ParameterizedTest @ValueSource(strings = { MongoDbConstants.DEFAULT_MONGO_CLIENT_NAME, MongoDbConstants.NAMED_MONGO_CLIENT_NAME }) diff --git a/integration-tests-support/mongodb/src/main/java/org/apache/camel/quarkus/test/support/mongodb/MongoDbTestResource.java b/integration-tests-support/mongodb/src/main/java/org/apache/camel/quarkus/test/support/mongodb/MongoDbTestResource.java index 375343dad3..8382a68873 100644 --- a/integration-tests-support/mongodb/src/main/java/org/apache/camel/quarkus/test/support/mongodb/MongoDbTestResource.java +++ b/integration-tests-support/mongodb/src/main/java/org/apache/camel/quarkus/test/support/mongodb/MongoDbTestResource.java @@ -45,6 +45,8 @@ public class MongoDbTestResource implements QuarkusTestResourceLifecycleManager private static final String PRIVATE_HOST = "mongodb_private"; private GenericContainer container; + private MongoClient client; + private MongoDatabase db; @Override public Map<String, String> start() { @@ -62,18 +64,28 @@ public class MongoDbTestResource implements QuarkusTestResourceLifecycleManager setUpDb(); - String host = container.getHost() + ":" + container.getMappedPort(MONGODB_PORT).toString(); + String containerHost = container.getHost() + ":" + container.getMappedPort(MONGODB_PORT).toString(); + String mongoHost = "mongodb://" + containerHost; Map<String, String> config = new HashMap<>(); - config.put("quarkus.mongodb.hosts", host); - config.put("quarkus.mongodb." + MongoDbConstants.NAMED_MONGO_CLIENT_NAME + ".connection-string", - "mongodb://" + host); + config.put("quarkus.mongodb.hosts", containerHost); + config.put("quarkus.mongodb." + MongoDbConstants.NAMED_MONGO_CLIENT_NAME + ".connection-string", mongoHost); + + client = MongoClients.create(mongoHost); + db = client.getDatabase("test"); + return config; } catch (Exception e) { throw new RuntimeException(e); } } + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(client, new TestInjector.MatchesType(MongoClient.class)); + testInjector.injectIntoFields(db, new TestInjector.MatchesType(MongoDatabase.class)); + } + void setUpDb() { final String mongoUrl = "mongodb://" + container.getHost() + ":" + container.getMappedPort(MONGODB_PORT).toString(); @@ -113,6 +125,10 @@ public class MongoDbTestResource implements QuarkusTestResourceLifecycleManager @Override public void stop() { try { + if (client != null) { + client.close(); + } + if (container != null) { container.stop(); } diff --git a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java index aab9c737e8..ea97f923fd 100644 --- a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java +++ b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java @@ -17,16 +17,11 @@ package org.apache.camel.quarkus.component.arangodb.it; import com.arangodb.ArangoCollection; -import com.arangodb.ArangoDB; -import com.arangodb.ArangoDatabase; import com.arangodb.entity.BaseDocument; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.http.ContentType; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import static org.hamcrest.Matchers.both; @@ -36,10 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; @QuarkusTest @QuarkusTestResource(ArangodbTestResource.class) class ArangodbTest { - protected static final String DATABASE_NAME = "test"; - protected static final String COLLECTION_NAME = "camel"; - protected static ArangoDB arangoDb; - protected static ArangoCollection collection; + protected ArangoCollection collection; @Test public void testCreateGetDeleteDocument() { @@ -116,21 +108,4 @@ class ArangodbTest { .statusCode(200) .body(containsString("_key:keyBar2")); } - - @BeforeAll - public static void setup() { - String host = ConfigProvider.getConfig().getValue("camel.arangodb.host", String.class); - Integer port = ConfigProvider.getConfig().getValue("camel.arangodb.port", Integer.class); - arangoDb = new ArangoDB.Builder().host(host, port).build(); - arangoDb.createDatabase(DATABASE_NAME); - ArangoDatabase arangoDatabase = arangoDb.db(DATABASE_NAME); - arangoDatabase.createCollection(COLLECTION_NAME); - collection = arangoDatabase.collection(COLLECTION_NAME); - } - - @AfterAll - public static void teardown() { - arangoDb.shutdown(); - } - } diff --git a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTestResource.java b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTestResource.java index 03b57a2033..76cc0a7bc0 100644 --- a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTestResource.java +++ b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTestResource.java @@ -18,6 +18,9 @@ package org.apache.camel.quarkus.component.arangodb.it; import java.util.Map; +import com.arangodb.ArangoCollection; +import com.arangodb.ArangoDB; +import com.arangodb.ArangoDatabase; import com.github.dockerjava.api.model.Ulimit; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; import org.apache.camel.util.CollectionHelper; @@ -28,13 +31,16 @@ import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; public class ArangodbTestResource implements QuarkusTestResourceLifecycleManager { - + private static final String DATABASE_NAME = "test"; + private static final String COLLECTION_NAME = "camel"; private static final Logger LOGGER = LoggerFactory.getLogger(ArangodbTestResource.class); private GenericContainer<?> container; private static final String CONTAINER_NAME = "arango"; private static final String ARANGO_IMAGE = ConfigProvider.getConfig().getValue("arangodb.container.image", String.class); private static final String ARANGO_NO_AUTH = "ARANGO_NO_AUTH"; private static final Integer PORT_DEFAULT = 8529; + private ArangoDB arangoDb; + private ArangoCollection collection; @Override public Map<String, String> start() { @@ -49,19 +55,36 @@ public class ArangodbTestResource implements QuarkusTestResourceLifecycleManager container.start(); - return CollectionHelper.mapOf( + Map<String, String> config = CollectionHelper.mapOf( "camel.arangodb.port", container.getMappedPort(PORT_DEFAULT).toString(), "camel.arangodb.host", container.getHost()); + + arangoDb = new ArangoDB.Builder().host(container.getHost(), container.getMappedPort(PORT_DEFAULT)).build(); + arangoDb.createDatabase(DATABASE_NAME); + ArangoDatabase arangoDatabase = arangoDb.db(DATABASE_NAME); + arangoDatabase.createCollection(COLLECTION_NAME); + collection = arangoDatabase.collection(COLLECTION_NAME); + + return config; } catch (Exception e) { throw new RuntimeException(e); } } + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(collection, new TestInjector.MatchesType(ArangoCollection.class)); + } + @Override public void stop() { try { + if (arangoDb != null) { + arangoDb.shutdown(); + } + if (container != null) { container.stop(); } diff --git a/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java index f8c84045ed..faa9563a58 100644 --- a/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java +++ b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java @@ -16,14 +16,11 @@ */ package org.apache.camel.quarkus.component.jira.it; -import java.net.URI; import java.util.ArrayList; import java.util.List; -import java.util.Optional; import java.util.concurrent.TimeUnit; import com.atlassian.jira.rest.client.api.JiraRestClient; -import com.atlassian.jira.rest.client.api.JiraRestClientFactory; import com.atlassian.jira.rest.client.api.domain.Attachment; import com.atlassian.jira.rest.client.api.domain.BasicWatchers; import com.atlassian.jira.rest.client.api.domain.Issue; @@ -35,11 +32,6 @@ import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.path.json.JsonPath; -import org.apache.camel.component.jira.oauth.JiraOAuthAuthenticationHandler; -import org.apache.camel.component.jira.oauth.OAuthAsynchronousJiraRestClientFactory; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import static org.awaitility.Awaitility.await; @@ -59,36 +51,7 @@ public class JiraTest { private static final String ISSUE_SUMMARY = "Camel Quarkus Test Issue Summary"; private static final String ISSUE_TYPE = "Task"; private static final String UPDATED_ISSUE_SUMMARY = "Updated summary"; - private static JiraRestClient REST_CLIENT; - - @BeforeAll - public static void beforeAll() { - Config config = ConfigProvider.getConfig(); - String jiraUrl = config.getValue("camel.component.jira.jira-url", String.class); - Optional<String> username = config.getOptionalValue("camel.component.jira.username", String.class); - Optional<String> password = config.getOptionalValue("camel.component.jira.password", String.class); - Optional<String> accessToken = config.getOptionalValue("camel.component.jira.access-token", String.class); - Optional<String> consumerKey = config.getOptionalValue("camel.component.jira.consumer-key", String.class); - Optional<String> privateKey = config.getOptionalValue("camel.component.jira.private-key", String.class); - Optional<String> verificationCode = config.getOptionalValue("camel.component.jira.verification-code", String.class); - - JiraRestClientFactory factory = new OAuthAsynchronousJiraRestClientFactory(); - URI jiraServerUri = URI.create(jiraUrl); - if (username.isPresent() && password.isPresent()) { - REST_CLIENT = factory.createWithBasicHttpAuthentication(jiraServerUri, username.get(), password.get()); - } else if (accessToken.isPresent() && consumerKey.isPresent() && privateKey.isPresent() - && verificationCode.isPresent()) { - JiraOAuthAuthenticationHandler oAuthHandler = new JiraOAuthAuthenticationHandler( - consumerKey.get(), - verificationCode.get(), - privateKey.get(), - accessToken.get(), - jiraUrl); - REST_CLIENT = factory.create(jiraServerUri, oAuthHandler); - } else { - throw new IllegalStateException("Unable to create Jira client"); - } - } + private JiraRestClient client; @Test public void issueCrud() { @@ -250,14 +213,14 @@ public class JiraTest { // Verify attachment await().atMost(10, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> { - Issue issue = getClient().getIssueClient().getIssue(issueKey).claim(); + Issue issue = client.getIssueClient().getIssue(issueKey).claim(); assertNotNull(issue); Iterable<Attachment> iterable = issue.getAttachments(); return iterable != null && iterable.iterator().hasNext(); }); - Issue issue = getClient().getIssueClient().getIssue(issueKey).claim(); + Issue issue = client.getIssueClient().getIssue(issueKey).claim(); Attachment attachment = issue.getAttachments().iterator().next(); assertTrue(attachment.getFilename().startsWith("cq-jira")); } finally { @@ -271,7 +234,6 @@ public class JiraTest { String issueKey = createIssue(); try { // Unwatch issue - JiraRestClient client = getClient(); String username = client.getSessionClient().getCurrentSession().claim().getUsername(); RestAssured.given() .contentType(ContentType.TEXT) @@ -285,7 +247,7 @@ public class JiraTest { // Verify unwatch await().atMost(10, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> { - Issue issue = getClient().getIssueClient().getIssue(issueKey).claim(); + Issue issue = client.getIssueClient().getIssue(issueKey).claim(); assertNotNull(issue); BasicWatchers watchers = issue.getWatchers(); @@ -305,7 +267,7 @@ public class JiraTest { // Verify unwatch await().atMost(10, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> { - Issue issue = getClient().getIssueClient().getIssue(issueKey).claim(); + Issue issue = client.getIssueClient().getIssue(issueKey).claim(); assertNotNull(issue); BasicWatchers watchers = issue.getWatchers(); @@ -340,7 +302,7 @@ public class JiraTest { // Verify link await().atMost(10, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> { - Issue parent = getClient().getIssueClient().getIssue(parentKey).claim(); + Issue parent = client.getIssueClient().getIssue(parentKey).claim(); assertNotNull(parent); Iterable<IssueLink> issueLinks = parent.getIssueLinks(); @@ -373,7 +335,7 @@ public class JiraTest { // Verify logged work await().atMost(10, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> { - Issue issue = getClient().getIssueClient().getIssue(issueKey).claim(); + Issue issue = client.getIssueClient().getIssue(issueKey).claim(); assertNotNull(issue); Iterable<Worklog> workLogs = issue.getWorklogs(); @@ -394,7 +356,7 @@ public class JiraTest { // Create issue String issueKey = createIssue(); try { - Issue originalIssue = getClient().getIssueClient().getIssue(issueKey).claim(); + Issue originalIssue = client.getIssueClient().getIssue(issueKey).claim(); assertNotNull(originalIssue); Resolution originalResolution = originalIssue.getResolution(); @@ -418,7 +380,7 @@ public class JiraTest { // Verify issue workflow transition await().atMost(10, TimeUnit.SECONDS).pollDelay(1, TimeUnit.SECONDS).until(() -> { - Issue issue = getClient().getIssueClient().getIssue(issueKey).claim(); + Issue issue = client.getIssueClient().getIssue(issueKey).claim(); assertNotNull(issue); Resolution resolution = issue.getResolution(); @@ -451,28 +413,11 @@ public class JiraTest { private void deleteIssue(String issueKey) { try { - getClient().getIssueClient() + client.getIssueClient() .deleteIssue(issueKey, true) .claim(); } catch (Exception e) { // Ignore - issue may not exist } } - - private static JiraRestClient getClient() { - if (REST_CLIENT == null) { - Config config = ConfigProvider.getConfig(); - String jiraUrl = config.getValue("camel.component.jira.jira-url", String.class); - Optional<String> username = config.getOptionalValue("camel.component.jira.username", String.class); - Optional<String> password = config.getOptionalValue("camel.component.jira.password", String.class); - - JiraRestClientFactory factory = new OAuthAsynchronousJiraRestClientFactory(); - URI jiraServerUri = URI.create(jiraUrl); - if (username.isPresent() && password.isPresent()) { - return factory.createWithBasicHttpAuthentication(jiraServerUri, username.get(), password.get()); - } - throw new IllegalStateException("Unable to create Jira client"); - } - return REST_CLIENT; - } } diff --git a/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTestResource.java b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTestResource.java index 746eb80ec9..f17506b98e 100644 --- a/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTestResource.java +++ b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTestResource.java @@ -16,12 +16,17 @@ */ package org.apache.camel.quarkus.component.jira.it; +import java.net.URI; import java.util.Map; +import com.atlassian.jira.rest.client.api.JiraRestClient; +import com.atlassian.jira.rest.client.api.JiraRestClientFactory; +import org.apache.camel.component.jira.oauth.JiraOAuthAuthenticationHandler; +import org.apache.camel.component.jira.oauth.OAuthAsynchronousJiraRestClientFactory; import org.apache.camel.quarkus.test.wiremock.WireMockTestResourceLifecycleManager; +import org.apache.camel.util.ObjectHelper; public class JiraTestResource extends WireMockTestResourceLifecycleManager { - private static final String JIRA_ENV_URL = "JIRA_URL"; private static final String JIRA_ENV_USERNAME = "JIRA_USERNAME"; private static final String JIRA_ENV_PASSWORD = "JIRA_PASSWORD"; @@ -30,6 +35,7 @@ public class JiraTestResource extends WireMockTestResourceLifecycleManager { private static final String JIRA_ENV_OAUTH_CONSUMER_KEY = "JIRA_OAUTH_CONSUMER_KEY"; private static final String JIRA_ENV_OAUTH_PRIVATE_KEY = "JIRA_OAUTH_PRIVATE_KEY"; private static final String JIRA_ENV_OAUTH_VERIFICATION_CODE = "JIRA_OAUTH_VERIFICATION_CODE"; + private Map<String, String> options; @Override public Map<String, String> start() { @@ -52,9 +58,44 @@ public class JiraTestResource extends WireMockTestResourceLifecycleManager { options.put("camel.component.jira.password", envOrDefault(JIRA_ENV_PASSWORD, "tester123")); } + this.options = options; + return options; } + @Override + public void inject(TestInjector testInjector) { + if (options != null) { + String jiraUrl = options.get("camel.component.jira.jira-url"); + String username = options.get("camel.component.jira.username"); + String password = options.get("camel.component.jira.password"); + String accessToken = options.get("camel.component.jira.access-token"); + String consumerKey = options.get("camel.component.jira.consumer-key"); + String privateKey = options.get("camel.component.jira.private-key"); + String verificationCode = options.get("camel.component.jira.verification-code"); + + JiraRestClient client; + JiraRestClientFactory factory = new OAuthAsynchronousJiraRestClientFactory(); + URI jiraServerUri = URI.create(jiraUrl); + if (ObjectHelper.isNotEmpty(username) && ObjectHelper.isNotEmpty(password)) { + client = factory.createWithBasicHttpAuthentication(jiraServerUri, username, password); + } else if (ObjectHelper.isNotEmpty(accessToken) && ObjectHelper.isNotEmpty(consumerKey) + && ObjectHelper.isNotEmpty(privateKey) && ObjectHelper.isNotEmpty(verificationCode)) { + JiraOAuthAuthenticationHandler oAuthHandler = new JiraOAuthAuthenticationHandler( + consumerKey, + verificationCode, + privateKey, + accessToken, + jiraUrl); + client = factory.create(jiraServerUri, oAuthHandler); + } else { + throw new IllegalStateException("Unable to create Jira client"); + } + + testInjector.injectIntoFields(client, new TestInjector.MatchesType(JiraRestClient.class)); + } + } + @Override protected String getRecordTargetBaseUrl() { return envOrDefault(JIRA_ENV_URL, null); diff --git a/integration-tests/jpa/src/main/java/org/apache/camel/quarkus/component/jpa/it/JpaResource.java b/integration-tests/jpa/src/main/java/org/apache/camel/quarkus/component/jpa/it/JpaResource.java index 762934284c..5bbd999695 100644 --- a/integration-tests/jpa/src/main/java/org/apache/camel/quarkus/component/jpa/it/JpaResource.java +++ b/integration-tests/jpa/src/main/java/org/apache/camel/quarkus/component/jpa/it/JpaResource.java @@ -23,9 +23,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.Stream; import io.quarkus.arc.ClientProxy; import io.quarkus.arc.InjectableBean; +import jakarta.enterprise.event.Observes; import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.inject.Named; @@ -46,10 +48,12 @@ import org.apache.camel.ProducerTemplate; import org.apache.camel.component.jpa.JpaConstants; import org.apache.camel.component.jpa.JpaEndpoint; import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.impl.event.CamelContextStartedEvent; import org.apache.camel.quarkus.component.jpa.it.model.Fruit; @Path("/jpa") public class JpaResource { + public static final String[] FRUITS = new String[] { "Orange", "Lemon", "Plum" }; @Inject ProducerTemplate producerTemplate; @@ -57,6 +61,16 @@ public class JpaResource { @Inject CamelContext context; + void onInit(@Observes CamelContextStartedEvent event) { + if (!context.getRoutes().isEmpty()) { + Stream.of(FRUITS) + .map(Fruit::new) + .forEach(fruit -> { + producerTemplate.sendBody("direct:store", fruit); + }); + } + } + @Path("/fruit") @GET @Produces(MediaType.APPLICATION_JSON) diff --git a/integration-tests/jpa/src/test/java/org/apache/camel/quarkus/component/jpa/it/JpaTestBase.java b/integration-tests/jpa/src/test/java/org/apache/camel/quarkus/component/jpa/it/JpaTestBase.java index 461b47e697..29c745bce6 100644 --- a/integration-tests/jpa/src/test/java/org/apache/camel/quarkus/component/jpa/it/JpaTestBase.java +++ b/integration-tests/jpa/src/test/java/org/apache/camel/quarkus/component/jpa/it/JpaTestBase.java @@ -24,11 +24,9 @@ import io.restassured.http.ContentType; import jakarta.json.bind.Jsonb; import jakarta.json.bind.JsonbBuilder; import org.apache.camel.quarkus.component.jpa.it.model.Fruit; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import static org.apache.camel.quarkus.component.jpa.it.JpaResource.FRUITS; import static org.awaitility.Awaitility.await; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; @@ -38,24 +36,6 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; public class JpaTestBase { - - static final String[] FRUITS = new String[] { "Orange", "Lemon", "Plum" }; - - @BeforeAll - public static void storeFruits() { - final Config config = ConfigProvider.getConfig(); - int port = config.getValue("quarkus.http.test-port", int.class); - RestAssured.port = port; - for (String fruit : FRUITS) { - RestAssured.given() - .contentType(ContentType.JSON) - .body(JsonbBuilder.create().toJson(new Fruit(fruit))) - .post("/jpa/fruit") - .then() - .statusCode(201); - } - } - @Test public void testProducerQuery() { RestAssured.get("/jpa/fruit") diff --git a/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTest.java b/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTest.java index 4e0aad2f14..9d41c8315e 100644 --- a/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTest.java +++ b/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTest.java @@ -25,15 +25,10 @@ import io.restassured.http.ContentType; import org.apache.camel.quarkus.test.DisabledIfFipsMode; import org.apache.kudu.client.KuduClient; import org.apache.kudu.client.KuduException; -import org.eclipse.microprofile.config.ConfigProvider; -import org.jboss.logging.Logger; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static org.apache.camel.quarkus.component.kudu.it.KuduRoute.KUDU_AUTHORITY_CONFIG_KEY; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; @@ -41,27 +36,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals; @QuarkusTestResource(KuduTestResource.class) @QuarkusTest -@DisabledIfFipsMode // https://github.com/apache/camel-quarkus/issues/5700 +@DisabledIfFipsMode class KuduTest { - private static final Logger LOG = Logger.getLogger(KuduTest.class); - static KuduClient client; - - @BeforeAll - static void setup() { - String authority = ConfigProvider.getConfig().getValue(KUDU_AUTHORITY_CONFIG_KEY, String.class); - client = new KuduClient.KuduClientBuilder(authority).build(); - } - - @AfterAll - static void afterAll() { - if (client != null) { - try { - client.close(); - } catch (KuduException e) { - LOG.warn("Failed to close kudu client", e); - } - } - } + KuduClient client; @BeforeEach void beforeEach() throws KuduException { diff --git a/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTestResource.java b/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTestResource.java index 956635934d..8b376057e9 100644 --- a/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTestResource.java +++ b/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTestResource.java @@ -29,6 +29,7 @@ import com.github.dockerjava.api.model.HostConfig; import com.github.dockerjava.api.model.Ports; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; import org.apache.camel.util.CollectionHelper; +import org.apache.kudu.client.KuduClient; import org.eclipse.microprofile.config.ConfigProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,6 +56,7 @@ public class KuduTestResource implements QuarkusTestResourceLifecycleManager { private GenericContainer<?> masterContainer; private GenericContainer<?> tabletContainer; + private KuduClient client; @Override public Map<String, String> start() { @@ -121,13 +123,24 @@ public class KuduTestResource implements QuarkusTestResourceLifecycleManager { + tabletContainer.getMappedPort(KUDU_TABLET_HTTP_PORT); LOG.info("Kudu tablet server HTTP accessible at " + tServerHttpAuthority); - return CollectionHelper.mapOf( - KUDU_AUTHORITY_CONFIG_KEY, masterRpcAuthority); + Map<String, String> config = CollectionHelper.mapOf(KUDU_AUTHORITY_CONFIG_KEY, masterRpcAuthority); + + client = new KuduClient.KuduClientBuilder(masterRpcAuthority).build(); + + return config; + } + + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(client, new TestInjector.MatchesType(KuduClient.class)); } @Override public void stop() { try { + if (client != null) { + client.close(); + } if (masterContainer != null) { masterContainer.stop(); } diff --git a/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTest.java b/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTest.java index 24dd1a484f..4494e40b9b 100644 --- a/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTest.java +++ b/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTest.java @@ -20,7 +20,6 @@ import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Path; import java.util.Collections; import java.util.List; import java.util.Map; @@ -39,22 +38,18 @@ import io.smallrye.certs.junit5.Certificate; import jakarta.json.bind.JsonbBuilder; import org.apache.camel.ExchangePropertyKey; import org.apache.camel.ServiceStatus; +import org.apache.camel.quarkus.component.mail.MailTestResource.GreenMailClient; import org.apache.camel.quarkus.test.support.certificate.CertificatesUtil; import org.apache.camel.quarkus.test.support.certificate.TestCertificates; import org.awaitility.Awaitility; import org.eclipse.angus.mail.util.MailConnectException; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import static org.apache.camel.quarkus.component.mail.CamelRoute.EMAIL_ADDRESS; -import static org.apache.camel.quarkus.component.mail.CamelRoute.PASSWORD; -import static org.apache.camel.quarkus.component.mail.CamelRoute.USERNAME; import static org.hamcrest.Matchers.is; @TestCertificates(certificates = { @@ -80,31 +75,12 @@ public class MailTest { + "\r\n" + "Hello attachment!" + "${delimiter}--\r\n"; - - @BeforeAll - public static void beforeAll() { - // Configure users - Config config = ConfigProvider.getConfig(); - String userJson = String.format("{ \"email\": \"%s\", \"login\": \"%s\", \"password\": \"%s\"}", EMAIL_ADDRESS, - USERNAME, PASSWORD); - - RestAssured.given() - .contentType(ContentType.JSON) - .body(userJson) - .post("http://" + config.getValue("mail.host", String.class) + ":" - + config.getValue("mail.api.port", Integer.class) + "/api/user"); - } + private GreenMailClient client; @AfterEach public void afterEach() { // Clear mailboxes - Config config = ConfigProvider.getConfig(); - RestAssured.given() - .post("http://" + config.getValue("mail.host", String.class) + ":" - + config.getValue("mail.api.port", Integer.class) + "/api/mail/purge") - .then() - .statusCode(200) - .body("message", is("Purged mails")); + client.purgeMail(); RestAssured.get("/mail/stopConsumers") .then() diff --git a/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTestResource.java b/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTestResource.java index a8e6675b79..03c20f5493 100644 --- a/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTestResource.java +++ b/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTestResource.java @@ -23,6 +23,8 @@ import java.util.HashMap; import java.util.Map; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; +import io.restassured.RestAssured; +import io.restassured.http.ContentType; import org.apache.camel.quarkus.test.support.certificate.CertificatesUtil; import org.eclipse.microprofile.config.ConfigProvider; import org.slf4j.Logger; @@ -32,6 +34,11 @@ import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.HttpWaitStrategy; import org.testcontainers.utility.MountableFile; +import static org.apache.camel.quarkus.component.mail.CamelRoute.EMAIL_ADDRESS; +import static org.apache.camel.quarkus.component.mail.CamelRoute.PASSWORD; +import static org.apache.camel.quarkus.component.mail.CamelRoute.USERNAME; +import static org.hamcrest.Matchers.is; + public class MailTestResource implements QuarkusTestResourceLifecycleManager { private static final Logger LOG = LoggerFactory.getLogger(MailTestResource.class); private static final String GREENMAIL_IMAGE_NAME = ConfigProvider.getConfig().getValue("greenmail.container.image", @@ -40,6 +47,7 @@ public class MailTestResource implements QuarkusTestResourceLifecycleManager { static final String KEYSTORE_PASSWORD = "changeit"; private GenericContainer<?> container; + private GreenMailClient client; @Override public Map<String, String> start() { @@ -64,9 +72,18 @@ public class MailTestResource implements QuarkusTestResourceLifecycleManager { options.put(optionName, mappedPort.toString()); } + client = new GreenMailClient( + "http://" + container.getHost() + ":" + container.getMappedPort(MailProtocol.API.getPort())); + client.createUsers(); + return options; } + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(client, new TestInjector.MatchesType(GreenMailClient.class)); + } + @Override public void stop() { if (container != null) { @@ -110,4 +127,29 @@ public class MailTestResource implements QuarkusTestResourceLifecycleManager { return ports; } } + + public static final class GreenMailClient { + private final String baseUrl; + + public GreenMailClient(String url) { + this.baseUrl = url; + } + + public void createUsers() { + String userJson = String.format("{ \"email\": \"%s\", \"login\": \"%s\", \"password\": \"%s\"}", EMAIL_ADDRESS, + USERNAME, PASSWORD); + RestAssured.given() + .contentType(ContentType.JSON) + .body(userJson) + .post(baseUrl + "/api/user"); + } + + public void purgeMail() { + RestAssured.given() + .post(baseUrl + "/api/mail/purge") + .then() + .statusCode(200) + .body("message", is("Purged mails")); + } + } } diff --git a/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/OdataTestResource.java b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/OdataTestResource.java index 0cc48f0bef..de38df60a9 100644 --- a/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/OdataTestResource.java +++ b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/OdataTestResource.java @@ -16,14 +16,23 @@ */ package org.apache.camel.quarkus.component.olingo4.it; +import java.io.IOException; import java.util.Map; import org.apache.camel.quarkus.test.wiremock.WireMockTestResourceLifecycleManager; import org.apache.camel.util.ObjectHelper; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.protocol.BasicHttpContext; +import org.apache.http.protocol.HttpContext; +import org.apache.http.protocol.HttpCoreContext; public class OdataTestResource extends WireMockTestResourceLifecycleManager { private static final String ODATA_API_BASE_URL = "https://services.odata.org/TripPinRESTierService"; private static final String ENV_ODATA_API_BASE_URL = "ODATA_API_BASE_URL"; + private OlingoSession session; @Override public Map<String, String> start() { @@ -36,9 +45,16 @@ public class OdataTestResource extends WireMockTestResourceLifecycleManager { configuration.put("olingo4.test.url", System.getenv(ENV_ODATA_API_BASE_URL)); } + session = new OlingoSession(configuration.get("olingo4.test.url")); + return configuration; } + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(session, new TestInjector.MatchesType(OlingoSession.class)); + } + @Override protected String getRecordTargetBaseUrl() { return ODATA_API_BASE_URL; @@ -54,4 +70,24 @@ public class OdataTestResource extends WireMockTestResourceLifecycleManager { // we are testing scenario where we delete record and then we want to verify it was deleted (which returns non success code) return false; } + + public static final class OlingoSession { + private String sessionId; + + public OlingoSession(String serviceUrl) { + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { + HttpGet httpGet = new HttpGet(serviceUrl); + HttpContext httpContext = new BasicHttpContext(); + httpClient.execute(httpGet, httpContext); + HttpUriRequest currentReq = (HttpUriRequest) httpContext.getAttribute(HttpCoreContext.HTTP_REQUEST); + sessionId = currentReq.getURI().getPath().split("/")[2]; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public String getSessionId() { + return sessionId; + } + } } diff --git a/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java index 0ed89fc9e8..4f6c3ba05b 100644 --- a/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java +++ b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java @@ -16,21 +16,11 @@ */ package org.apache.camel.quarkus.component.olingo4.it; -import java.io.IOException; - import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.http.ContentType; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpUriRequest; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.protocol.BasicHttpContext; -import org.apache.http.protocol.HttpContext; -import org.apache.http.protocol.HttpCoreContext; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.BeforeAll; +import org.apache.camel.quarkus.component.olingo4.it.OdataTestResource.OlingoSession; import org.junit.jupiter.api.Test; import static org.hamcrest.core.Is.is; @@ -38,20 +28,10 @@ import static org.hamcrest.core.Is.is; @QuarkusTest @QuarkusTestResource(OdataTestResource.class) class Olingo4Test { - - public static final String TEST_SERVICE_BASE_URL = ConfigProvider.getConfig().getValue("olingo4.test.url", String.class); - - private static String sessionId; - - @BeforeAll - public static void beforeAll() throws IOException { - // Use the same session id for each request to the demo Olingo4 Service - sessionId = getSession(); - } + private OlingoSession session; @Test public void testOlingo4CrudOperations() { - // Create Person person = new Person(); person.setUserName("lewisblack"); @@ -59,7 +39,7 @@ class Olingo4Test { person.setLastName("Black"); RestAssured.given() - .queryParam("sessionId", sessionId) + .queryParam("sessionId", session.getSessionId()) .contentType(ContentType.JSON) .body(person) .post("/olingo4/create") @@ -68,7 +48,7 @@ class Olingo4Test { // Read RestAssured.given() - .queryParam("sessionId", sessionId) + .queryParam("sessionId", session.getSessionId()) .body("msg") .get("/olingo4/read") .then() @@ -81,7 +61,7 @@ class Olingo4Test { person.setMiddleName("James"); RestAssured.given() - .queryParam("sessionId", sessionId) + .queryParam("sessionId", session.getSessionId()) .contentType(ContentType.JSON) .body(person) .patch("/olingo4/update") @@ -89,7 +69,7 @@ class Olingo4Test { .statusCode(204); RestAssured.given() - .queryParam("sessionId", sessionId) + .queryParam("sessionId", session.getSessionId()) .body("msg") .get("/olingo4/read") .then() @@ -100,25 +80,16 @@ class Olingo4Test { // Delete RestAssured.given() - .queryParam("sessionId", sessionId) + .queryParam("sessionId", session.getSessionId()) .delete("/olingo4/delete") .then() .statusCode(204); RestAssured.given() - .queryParam("sessionId", sessionId) + .queryParam("sessionId", session.getSessionId()) .body("msg") .get("/olingo4/read") .then() .statusCode(404); } - - private static String getSession() throws IOException { - CloseableHttpClient httpClient = HttpClients.createDefault(); - HttpGet httpGet = new HttpGet(TEST_SERVICE_BASE_URL); - HttpContext httpContext = new BasicHttpContext(); - httpClient.execute(httpGet, httpContext); - HttpUriRequest currentReq = (HttpUriRequest) httpContext.getAttribute(HttpCoreContext.HTTP_REQUEST); - return currentReq.getURI().getPath().split("/")[2]; - } } diff --git a/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java b/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java index 331ceaec7c..6e2f432acd 100644 --- a/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java +++ b/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java @@ -17,60 +17,26 @@ package org.apache.camel.quarkus.component.pg.replication.slot.it; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; -import java.util.Properties; import java.util.concurrent.TimeUnit; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.http.ContentType; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; -import static org.apache.camel.quarkus.component.pg.replication.slot.it.PgReplicationSlotRoute.PG_AUTHORITY_CFG_KEY; -import static org.apache.camel.quarkus.component.pg.replication.slot.it.PgReplicationSlotRoute.PG_DBNAME_CFG_KEY; -import static org.apache.camel.quarkus.component.pg.replication.slot.it.PgReplicationSlotRoute.PG_PASSRD_CFG_KEY; -import static org.apache.camel.quarkus.component.pg.replication.slot.it.PgReplicationSlotRoute.PG_USER_CFG_KEY; import static org.awaitility.Awaitility.await; import static org.junit.jupiter.api.Assertions.assertEquals; @QuarkusTestResource(PgReplicationSlotTestResource.class) @QuarkusTest class PgReplicationSlotTest { - - private static Connection connection; - - @BeforeAll - public static void setUp() throws SQLException { - String authority = ConfigProvider.getConfig().getValue(PG_AUTHORITY_CFG_KEY, String.class); - String dbName = ConfigProvider.getConfig().getValue(PG_DBNAME_CFG_KEY, String.class); - String user = ConfigProvider.getConfig().getValue(PG_USER_CFG_KEY, String.class); - String password = ConfigProvider.getConfig().getValue(PG_PASSRD_CFG_KEY, String.class); - - String url = String.format("jdbc:postgresql://%s/%s", authority, dbName); - Properties props = new Properties(); - props.setProperty("user", user); - props.setProperty("password", password); - - connection = DriverManager.getConnection(url, props); - try (Statement statement = connection.createStatement()) { - statement.execute("CREATE TABLE IF NOT EXISTS camel_test_table(id int);"); - } - } - - @AfterAll - public static void tearDown() throws SQLException { - connection.close(); - } + private Connection connection; @Test public void insertsShouldTriggerReplicationEvents() throws SQLException { - try (Statement statement = connection.createStatement()) { statement.execute("INSERT INTO camel_test_table(id) VALUES(1984);"); statement.execute("INSERT INTO camel_test_table(id) VALUES(1998);"); diff --git a/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTestResource.java b/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTestResource.java index 14a9d0e680..492322864e 100644 --- a/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTestResource.java +++ b/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTestResource.java @@ -17,7 +17,12 @@ package org.apache.camel.quarkus.component.pg.replication.slot.it; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; import java.util.Map; +import java.util.Properties; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; import org.eclipse.microprofile.config.ConfigProvider; @@ -42,6 +47,7 @@ public class PgReplicationSlotTestResource implements QuarkusTestResourceLifecyc private static final String POSTGRES_USER = "postgres-user"; private GenericContainer<?> pgContainer; + private Connection connection; @Override public Map<String, String> start() { @@ -54,20 +60,46 @@ public class PgReplicationSlotTestResource implements QuarkusTestResourceLifecyc // Print Postgres server connectivity information String pgAuthority = pgContainer.getHost() + ":" + pgContainer.getMappedPort(POSTGRES_PORT); - LOG.debug("Postgres database available at " + pgAuthority); + LOG.debug("Postgres database available at {}", pgAuthority); - return mapOf(PG_AUTHORITY_CFG_KEY, pgAuthority, PG_DBNAME_CFG_KEY, POSTGRES_DB_NAME, PG_USER_CFG_KEY, POSTGRES_USER, + Map<String, String> config = mapOf( + PG_AUTHORITY_CFG_KEY, pgAuthority, + PG_DBNAME_CFG_KEY, POSTGRES_DB_NAME, + PG_USER_CFG_KEY, POSTGRES_USER, PG_PASSRD_CFG_KEY, POSTGRES_PASSWORD); + + String url = String.format("jdbc:postgresql://%s/%s", pgAuthority, POSTGRES_DB_NAME); + Properties connectionProperties = new Properties(); + connectionProperties.setProperty("user", POSTGRES_USER); + connectionProperties.setProperty("password", POSTGRES_PASSWORD); + try { + connection = DriverManager.getConnection(url, connectionProperties); + try (Statement statement = connection.createStatement()) { + statement.execute("CREATE TABLE IF NOT EXISTS camel_test_table(id int);"); + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + + return config; + } + + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(connection, new TestInjector.MatchesType(Connection.class)); } @Override public void stop() { try { + if (connection != null) { + connection.close(); + } if (pgContainer != null) { pgContainer.stop(); } } catch (Exception ex) { - LOG.error("An issue occured while stopping the PgReplicationSlotTestResource", ex); + LOG.error("An issue occurred while stopping the PgReplicationSlotTestResource", ex); } } } diff --git a/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTest.java b/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTest.java index 2884e1be44..53138a0abc 100644 --- a/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTest.java +++ b/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTest.java @@ -24,11 +24,9 @@ import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.http.ContentType; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.openapitools.db_control.client.model.IndexModel; -import static org.apache.camel.quarkus.component.pinecone.it.PineconeResource.createPineconeClient; import static org.apache.camel.quarkus.component.pinecone.it.PineconeRoutes.INDEX_NAME; import static org.awaitility.Awaitility.await; import static org.hamcrest.Matchers.is; @@ -39,12 +37,7 @@ import static org.openapitools.db_control.client.model.IndexModelStatus.StateEnu @QuarkusTestResource(PineconeTestResource.class) @QuarkusTest class PineconeTest { - private static Pinecone pinecone; - - @BeforeAll - public static void beforeAll() { - pinecone = createPineconeClient(); - } + private Pinecone pinecone; @Test void serverlessIndex() { diff --git a/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTestResource.java b/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTestResource.java index b884ada52f..1bcf7f97ed 100644 --- a/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTestResource.java +++ b/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTestResource.java @@ -19,6 +19,7 @@ package org.apache.camel.quarkus.component.pinecone.it; import java.util.List; import java.util.Map; +import io.pinecone.clients.Pinecone; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; import org.apache.camel.util.CollectionHelper; import org.eclipse.microprofile.config.ConfigProvider; @@ -34,6 +35,7 @@ public class PineconeTestResource implements QuarkusTestResourceLifecycleManager private static final String PINECONE_IMAGE = ConfigProvider.getConfig().getValue("pinecone.container.image", String.class); private PineconeLocalContainer container; + private Pinecone pinecone; @Override public Map<String, String> start() { @@ -47,13 +49,22 @@ public class PineconeTestResource implements QuarkusTestResourceLifecycleManager container.start(); - return CollectionHelper.mapOf("pinecone.emulator.endpoint", container.getEndpoint()); + pinecone = new Pinecone.Builder("pclocal") + .withHost(container.getEndpoint()) + .withTlsEnabled(false) + .build(); + return CollectionHelper.mapOf("pinecone.emulator.endpoint", container.getEndpoint()); } catch (Exception e) { throw new RuntimeException(e); } } + @Override + public void inject(TestInjector testInjector) { + testInjector.injectIntoFields(pinecone, new TestInjector.MatchesType(Pinecone.class)); + } + @Override public void stop() { try { diff --git a/pom.xml b/pom.xml index b65fae18a6..1561c0cbb0 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ <quarkiverse-minio.version>3.8.6</quarkiverse-minio.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/minio/quarkus-minio-parent/ --> <quarkiverse-mybatis.version>2.4.2</quarkiverse-mybatis.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/mybatis/quarkus-mybatis-parent/ --> <quarkiverse-pooled-jms.version>2.10.0</quarkiverse-pooled-jms.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/messaginghub/quarkus-pooled-jms-parent/ --> - <quarkus.version>3.34.0</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ --> + <quarkus.version>999-SNAPSHOT</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ --> <quarkus-hazelcast-client.version>4.1.0</quarkus-hazelcast-client.version><!-- https://repo1.maven.org/maven2/com/hazelcast/quarkus-hazelcast-client-bom/ --> <quarkus-qpid-jms.version>2.12.0</quarkus-qpid-jms.version><!-- This should be in sync with quarkus-platform https://repo1.maven.org/maven2/org/amqphub/quarkus/quarkus-qpid-jms-bom/ -->
