From db6e5c069a32c6af5264c7a60044bf3ad93000d7 Mon Sep 17 00:00:00 2001 From: Justin Lee Date: Wed, 8 Jun 2022 12:37:13 -0400 Subject: [PATCH] Enable dev services for all named mongodb-client connections fixes #25278 --- .../deployment/DevServicesMongoProcessor.java | 42 +++++++------------ integration-tests/mongodb-client/pom.xml | 26 +++++++++--- .../io/quarkus/it/mongodb/BookResource.java | 30 ++++++++++++- .../src/main/resources/application.properties | 5 ++- 4 files changed, 68 insertions(+), 35 deletions(-) diff --git a/extensions/mongodb-client/deployment/src/main/java/io/quarkus/mongodb/deployment/DevServicesMongoProcessor.java b/extensions/mongodb-client/deployment/src/main/java/io/quarkus/mongodb/deployment/DevServicesMongoProcessor.java index a4829e429bd99..bf069c50c0fc7 100644 --- a/extensions/mongodb-client/deployment/src/main/java/io/quarkus/mongodb/deployment/DevServicesMongoProcessor.java +++ b/extensions/mongodb-client/deployment/src/main/java/io/quarkus/mongodb/deployment/DevServicesMongoProcessor.java @@ -62,14 +62,6 @@ public List startMongo(List currentCapturedProperties = captureProperties(connectionNames, mongoClientBuildTimeConfig); @@ -93,26 +85,24 @@ public List startMongo(List newDevServices = new ArrayList<>(mongoConnections.size()); - // TODO: we need to go through each connection - String connectionName = connectionNames.get(0); - RunningDevService devService; - StartupLogCompressor compressor = new StartupLogCompressor( - (launchMode.isTest() ? "(test) " : "") + "Mongo Dev Services Starting:", consoleInstalledBuildItem, - loggingSetupBuildItem); - try { - devService = startMongo(dockerStatusBuildItem, connectionName, currentCapturedProperties.get(connectionName), - !devServicesSharedNetworkBuildItem.isEmpty(), globalDevServicesConfig.timeout); - if (devService == null) { + for (String connectionName : connectionNames) { + RunningDevService devService; + StartupLogCompressor compressor = new StartupLogCompressor( + (launchMode.isTest() ? "(test) " : "") + "Mongo Dev Services Starting:", consoleInstalledBuildItem, + loggingSetupBuildItem); + try { + devService = startMongo(dockerStatusBuildItem, connectionName, currentCapturedProperties.get(connectionName), + !devServicesSharedNetworkBuildItem.isEmpty(), globalDevServicesConfig.timeout); + if (devService == null) { + compressor.closeAndDumpCaptured(); + } else { + compressor.close(); + newDevServices.add(devService); + } + } catch (Throwable t) { compressor.closeAndDumpCaptured(); - } else { - compressor.close(); + throw new RuntimeException(t); } - } catch (Throwable t) { - compressor.closeAndDumpCaptured(); - throw new RuntimeException(t); - } - if (devService != null) { - newDevServices.add(devService); } if (first) { diff --git a/integration-tests/mongodb-client/pom.xml b/integration-tests/mongodb-client/pom.xml index 82960b4f2ffdf..26ff0728475b1 100644 --- a/integration-tests/mongodb-client/pom.xml +++ b/integration-tests/mongodb-client/pom.xml @@ -100,12 +100,6 @@ - - maven-failsafe-plugin - - true - - io.quarkus quarkus-maven-plugin @@ -120,5 +114,25 @@ + + + no-windows + + + windows + + + + + + maven-failsafe-plugin + + true + + + + + + diff --git a/integration-tests/mongodb-client/src/main/java/io/quarkus/it/mongodb/BookResource.java b/integration-tests/mongodb-client/src/main/java/io/quarkus/it/mongodb/BookResource.java index ef33391ac8869..c0a0f3be966ca 100644 --- a/integration-tests/mongodb-client/src/main/java/io/quarkus/it/mongodb/BookResource.java +++ b/integration-tests/mongodb-client/src/main/java/io/quarkus/it/mongodb/BookResource.java @@ -9,10 +9,12 @@ import javax.ws.rs.*; import javax.ws.rs.core.Response; +import com.mongodb.WriteConcern; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; +import io.quarkus.mongodb.MongoClientName; import io.smallrye.common.annotation.Blocking; @Path("/books") @@ -20,18 +22,38 @@ public class BookResource { @Inject + @MongoClientName("parameter-injection") MongoClient client; + @Inject + @MongoClientName("dev-services") + MongoClient devServiced; + @Inject + @MongoClientName("dev-services2") + MongoClient devServiced2; + private MongoCollection getCollection() { return client.getDatabase("books").getCollection("my-collection", Book.class); } + private MongoCollection getServicedCollection() { + return devServiced.getDatabase("books").getCollection("my-collection", Book.class); + } + + private MongoCollection getServiced2Collection() { + return devServiced.getDatabase("books").getCollection("my-collection", Book.class); + } + @GET public List getBooks() { FindIterable iterable = getCollection().find(); List books = new ArrayList<>(); - for (Book doc : iterable) { - books.add(doc); + WriteConcern writeConcern = client.getDatabase("temp").getWriteConcern(); + // force a test failure if we're not getting the correct, and correctly configured named mongodb client + if (Boolean.TRUE.equals(writeConcern.getJournal())) { + for (Book doc : iterable) { + books.add(doc); + } } return books; } @@ -39,12 +61,16 @@ public List getBooks() { @POST public Response addBook(Book book) { getCollection().insertOne(book); + getServicedCollection().insertOne(book); + getServiced2Collection().insertOne(book); return Response.accepted().build(); } @GET @Path("/{author}") public List getBooksByAuthor(@PathParam("author") String author) { + getServicedCollection().find(eq("author", author)); + getServiced2Collection().find(eq("author", author)); FindIterable iterable = getCollection().find(eq("author", author)); List books = new ArrayList<>(); for (Book doc : iterable) { diff --git a/integration-tests/mongodb-client/src/main/resources/application.properties b/integration-tests/mongodb-client/src/main/resources/application.properties index b530bed6af062..7a4459055e559 100644 --- a/integration-tests/mongodb-client/src/main/resources/application.properties +++ b/integration-tests/mongodb-client/src/main/resources/application.properties @@ -1,4 +1,7 @@ quarkus.mongodb.connection-string=mongodb://localhost:27017 quarkus.mongodb.write-concern.journal=false quarkus.mongodb.parameter-injection.connection-string=mongodb://localhost:27017 -quarkus.mongodb.parameter-injection.write-concern.journal=false \ No newline at end of file +quarkus.mongodb.parameter-injection.write-concern.journal=true + +quarkus.mongodb.dev-services.write-concern.journal=false +quarkus.mongodb.dev-services2.write-concern.journal=false