From e80c66461bd57cec645bf3add58e609481386b12 Mon Sep 17 00:00:00 2001 From: Valentin Kovalenko Date: Thu, 6 Jun 2024 14:24:32 -0600 Subject: [PATCH] Migrate `com.mongodb.client.unified.UnifiedTest` and all its descendants/users to JUnit 5 JAVA-5495 --- build.gradle | 2 +- .../client/coroutine/UnifiedCrudTest.kt | 23 +-- .../kotlin/client/coroutine/UnifiedTest.kt | 11 +- .../mongodb/kotlin/client/UnifiedCrudTest.kt | 23 +-- .../com/mongodb/kotlin/client/UnifiedTest.kt | 11 +- .../client/unified/ChangeStreamsTest.java | 43 +++-- .../unified/ClientSideEncryptionTest.java | 19 +- .../unified/CollectionManagementTest.java | 19 +- .../client/unified/CommandLoggingTest.java | 19 +- .../client/unified/CommandMonitoringTest.java | 19 +- .../unified/ConnectionPoolLoggingTest.java | 22 +-- .../client/unified/IndexManagmentTest.java | 19 +- .../client/unified/LoadBalancerTest.java | 41 +++-- .../unified/ServerSelectionLoggingTest.java | 17 +- .../client/unified/SessionsTest.java | 16 +- .../client/unified/UnifiedCrudTest.java | 20 +-- .../client/unified/UnifiedGridFSTest.java | 18 +- .../unified/UnifiedReactiveStreamsTest.java | 12 +- .../unified/UnifiedRetryableReadsTest.java | 43 +++-- .../unified/UnifiedRetryableWritesTest.java | 20 +-- ...ifiedServerDiscoveryAndMonitoringTest.java | 25 +-- .../unified/UnifiedTransactionsTest.java | 18 +- .../unified/UnifiedWriteConcernTest.java | 15 +- .../client/unified/VersionedApiTest.java | 17 +- .../client/unified/ChangeStreamsTest.java | 17 +- .../unified/ClientSideEncryptionTest.java | 19 +- .../unified/CollectionManagementTest.java | 19 +- .../client/unified/CommandLoggingTest.java | 22 +-- .../client/unified/CommandMonitoringTest.java | 22 +-- .../unified/ConnectionPoolLoggingTest.java | 21 +-- .../client/unified/IndexManagmentTest.java | 19 +- .../client/unified/LoadBalancerTest.java | 18 +- .../unified/ServerSelectionLoggingTest.java | 17 +- .../mongodb/client/unified/SessionsTest.java | 17 +- .../unified/UnifiedAtlasDataLakeTest.java | 20 +-- .../client/unified/UnifiedAuthTest.java | 16 +- .../client/unified/UnifiedCrudTest.java | 31 ++-- .../client/unified/UnifiedGridFSTest.java | 22 +-- .../unified/UnifiedRetryableReadsTest.java | 20 +-- .../unified/UnifiedRetryableWritesTest.java | 22 +-- ...ifiedServerDiscoveryAndMonitoringTest.java | 36 ++-- .../client/unified/UnifiedSyncTest.java | 12 +- .../mongodb/client/unified/UnifiedTest.java | 168 +++++++++++------- .../unified/UnifiedTestFailureValidator.java | 66 ++++--- .../client/unified/UnifiedTestValidator.java | 31 +--- .../unified/UnifiedTransactionsTest.java | 18 +- .../unified/UnifiedWriteConcernTest.java | 15 +- .../client/unified/VersionedApiTest.java | 18 +- ...WithTransactionHelperTransactionsTest.java | 16 +- .../mongodb/workload/WorkloadExecutor.java | 28 ++- 50 files changed, 468 insertions(+), 754 deletions(-) diff --git a/build.gradle b/build.gradle index 2ba15e3daf8..14dc9fcb1ff 100644 --- a/build.gradle +++ b/build.gradle @@ -57,7 +57,7 @@ ext { awsSdkV1Version = '1.12.337' mongoCryptVersion = '1.8.0' projectReactorVersion = '2022.0.0' - junitBomVersion = '5.8.2' + junitBomVersion = '5.10.2' logbackVersion = '1.3.14' gitVersion = getGitVersion() } diff --git a/driver-kotlin-coroutine/src/integration/kotlin/com/mongodb/kotlin/client/coroutine/UnifiedCrudTest.kt b/driver-kotlin-coroutine/src/integration/kotlin/com/mongodb/kotlin/client/coroutine/UnifiedCrudTest.kt index 15e3a9b7b65..47e1ea6a781 100644 --- a/driver-kotlin-coroutine/src/integration/kotlin/com/mongodb/kotlin/client/coroutine/UnifiedCrudTest.kt +++ b/driver-kotlin-coroutine/src/integration/kotlin/com/mongodb/kotlin/client/coroutine/UnifiedCrudTest.kt @@ -15,32 +15,21 @@ */ package com.mongodb.kotlin.client.coroutine -import com.mongodb.client.unified.UnifiedCrudTest.customSkips +import com.mongodb.client.unified.UnifiedCrudTest.doSkips import java.io.IOException import java.net.URISyntaxException -import org.bson.BsonArray -import org.bson.BsonDocument -import org.junit.runners.Parameterized +import org.junit.jupiter.params.provider.Arguments -internal class UnifiedCrudTest( - fileDescription: String?, - testDescription: String, - schemaVersion: String, - runOnRequirements: BsonArray?, - entitiesArray: BsonArray, - initialData: BsonArray, - definition: BsonDocument -) : UnifiedTest(fileDescription, schemaVersion, runOnRequirements, entitiesArray, initialData, definition) { +internal class UnifiedCrudTest() : UnifiedTest() { - init { - customSkips(fileDescription, testDescription) + override fun skips(fileDescription: String, testDescription: String) { + doSkips(fileDescription, testDescription) } companion object { @JvmStatic - @Parameterized.Parameters(name = "{0}: {1}") @Throws(URISyntaxException::class, IOException::class) - fun data(): Collection?>? { + fun data(): Collection? { return getTestData("unified-test-format/crud") } } diff --git a/driver-kotlin-coroutine/src/integration/kotlin/com/mongodb/kotlin/client/coroutine/UnifiedTest.kt b/driver-kotlin-coroutine/src/integration/kotlin/com/mongodb/kotlin/client/coroutine/UnifiedTest.kt index b8eb32da0f5..b027b3946c5 100644 --- a/driver-kotlin-coroutine/src/integration/kotlin/com/mongodb/kotlin/client/coroutine/UnifiedTest.kt +++ b/driver-kotlin-coroutine/src/integration/kotlin/com/mongodb/kotlin/client/coroutine/UnifiedTest.kt @@ -23,17 +23,8 @@ import com.mongodb.client.gridfs.GridFSBucket import com.mongodb.client.unified.UnifiedTest as JUnifiedTest import com.mongodb.client.vault.ClientEncryption import com.mongodb.kotlin.client.coroutine.syncadapter.SyncMongoClient -import org.bson.BsonArray -import org.bson.BsonDocument -internal abstract class UnifiedTest( - fileDescription: String?, - schemaVersion: String, - runOnRequirements: BsonArray?, - entitiesArray: BsonArray, - initialData: BsonArray, - definition: BsonDocument -) : JUnifiedTest(fileDescription, schemaVersion, runOnRequirements, entitiesArray, initialData, definition) { +internal abstract class UnifiedTest() : JUnifiedTest() { override fun createMongoClient(settings: MongoClientSettings): JMongoClient = SyncMongoClient(MongoClient.create(settings)) diff --git a/driver-kotlin-sync/src/integration/kotlin/com/mongodb/kotlin/client/UnifiedCrudTest.kt b/driver-kotlin-sync/src/integration/kotlin/com/mongodb/kotlin/client/UnifiedCrudTest.kt index 143d8410479..55d77d42e7b 100644 --- a/driver-kotlin-sync/src/integration/kotlin/com/mongodb/kotlin/client/UnifiedCrudTest.kt +++ b/driver-kotlin-sync/src/integration/kotlin/com/mongodb/kotlin/client/UnifiedCrudTest.kt @@ -15,32 +15,21 @@ */ package com.mongodb.kotlin.client -import com.mongodb.client.unified.UnifiedCrudTest.customSkips +import com.mongodb.client.unified.UnifiedCrudTest.doSkips import java.io.IOException import java.net.URISyntaxException -import org.bson.BsonArray -import org.bson.BsonDocument -import org.junit.runners.Parameterized +import org.junit.jupiter.params.provider.Arguments -internal class UnifiedCrudTest( - fileDescription: String?, - testDescription: String, - schemaVersion: String, - runOnRequirements: BsonArray?, - entitiesArray: BsonArray, - initialData: BsonArray, - definition: BsonDocument -) : UnifiedTest(fileDescription, schemaVersion, runOnRequirements, entitiesArray, initialData, definition) { +internal class UnifiedCrudTest() : UnifiedTest() { - init { - customSkips(fileDescription, testDescription) + override fun skips(fileDescription: String, testDescription: String) { + doSkips(fileDescription, testDescription) } companion object { @JvmStatic - @Parameterized.Parameters(name = "{0}: {1}") @Throws(URISyntaxException::class, IOException::class) - fun data(): Collection?>? { + fun data(): Collection? { return getTestData("unified-test-format/crud") } } diff --git a/driver-kotlin-sync/src/integration/kotlin/com/mongodb/kotlin/client/UnifiedTest.kt b/driver-kotlin-sync/src/integration/kotlin/com/mongodb/kotlin/client/UnifiedTest.kt index 99a56849d7c..4f4726bbb6f 100644 --- a/driver-kotlin-sync/src/integration/kotlin/com/mongodb/kotlin/client/UnifiedTest.kt +++ b/driver-kotlin-sync/src/integration/kotlin/com/mongodb/kotlin/client/UnifiedTest.kt @@ -23,17 +23,8 @@ import com.mongodb.client.gridfs.GridFSBucket import com.mongodb.client.unified.UnifiedTest as JUnifiedTest import com.mongodb.client.vault.ClientEncryption import com.mongodb.kotlin.client.syncadapter.SyncMongoClient -import org.bson.BsonArray -import org.bson.BsonDocument -internal abstract class UnifiedTest( - fileDescription: String?, - schemaVersion: String, - runOnRequirements: BsonArray?, - entitiesArray: BsonArray, - initialData: BsonArray, - definition: BsonDocument -) : JUnifiedTest(fileDescription, schemaVersion, runOnRequirements, entitiesArray, initialData, definition) { +internal abstract class UnifiedTest() : JUnifiedTest() { override fun createMongoClient(settings: MongoClientSettings): JMongoClient = SyncMongoClient(MongoClient.create(settings)) diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ChangeStreamsTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ChangeStreamsTest.java index f1b3c435b4b..5a48dc343af 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ChangeStreamsTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ChangeStreamsTest.java @@ -19,8 +19,9 @@ import com.mongodb.lang.Nullable; import org.bson.BsonArray; import org.bson.BsonDocument; -import org.junit.After; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; @@ -32,9 +33,9 @@ import static com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient.disableWaitForBatchCursorCreation; import static com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient.enableSleepAfterCursorOpen; import static com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient.enableWaitForBatchCursorCreation; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public final class ChangeStreamsTest extends UnifiedReactiveStreamsTest { +final class ChangeStreamsTest extends UnifiedReactiveStreamsTest { private static final List ERROR_REQUIRED_FROM_CHANGE_STREAM_INITIALIZATION_TESTS = Arrays.asList( @@ -54,32 +55,44 @@ public final class ChangeStreamsTest extends UnifiedReactiveStreamsTest { + "but instead depend on a server error" ); - - public ChangeStreamsTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - + @Override + protected void skips(final String fileDescription, final String testDescription) { assumeFalse(ERROR_REQUIRED_FROM_CHANGE_STREAM_INITIALIZATION_TESTS.contains(testDescription)); assumeFalse(EVENT_SENSITIVE_TESTS.contains(testDescription)); + } + @BeforeEach + @Override + public void setUp(@Nullable final String fileDescription, + @Nullable final String testDescription, + final String schemaVersion, + @Nullable final BsonArray runOnRequirements, + final BsonArray entitiesArray, + final BsonArray initialData, + final BsonDocument definition) { + super.setUp( + fileDescription, + testDescription, + schemaVersion, + runOnRequirements, + entitiesArray, + initialData, + definition); enableSleepAfterCursorOpen(256); - if (REQUIRES_BATCH_CURSOR_CREATION_WAITING.contains(testDescription)) { enableWaitForBatchCursorCreation(); } } - @After + @AfterEach + @Override public void cleanUp() { super.cleanUp(); disableSleep(); disableWaitForBatchCursorCreation(); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/change-streams"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ClientSideEncryptionTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ClientSideEncryptionTest.java index ae176a66142..8169a300e0e 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ClientSideEncryptionTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ClientSideEncryptionTest.java @@ -16,27 +16,14 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class ClientSideEncryptionTest extends UnifiedReactiveStreamsTest { - public ClientSideEncryptionTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class ClientSideEncryptionTest extends UnifiedReactiveStreamsTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/client-side-encryption"); } - } - diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CollectionManagementTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CollectionManagementTest.java index 9cac1ed1492..593bcc7fd9e 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CollectionManagementTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CollectionManagementTest.java @@ -16,28 +16,21 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class CollectionManagementTest extends UnifiedReactiveStreamsTest { - public CollectionManagementTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class CollectionManagementTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { assumeFalse(testDescription.equals("modifyCollection to changeStreamPreAndPostImages enabled")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/collection-management"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CommandLoggingTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CommandLoggingTest.java index 5b794b1d636..eed17b8ec33 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CommandLoggingTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CommandLoggingTest.java @@ -16,30 +16,23 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class CommandLoggingTest extends UnifiedReactiveStreamsTest { - public CommandLoggingTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class CommandLoggingTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { // The driver has a hack where getLastError command is executed as part of the handshake in order to get a connectionId // even when the hello command response doesn't contain it. assumeFalse(fileDescription.equals("pre-42-server-connection-id")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/command-logging"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CommandMonitoringTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CommandMonitoringTest.java index 0208293be93..c47777d1709 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CommandMonitoringTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/CommandMonitoringTest.java @@ -16,30 +16,23 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class CommandMonitoringTest extends UnifiedReactiveStreamsTest { - public CommandMonitoringTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class CommandMonitoringTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { // The driver has a hack where getLastError command is executed as part of the handshake in order to get a connectionId // even when the hello command response doesn't contain it. assumeFalse(fileDescription.equals("pre-42-server-connection-id")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/command-monitoring"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ConnectionPoolLoggingTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ConnectionPoolLoggingTest.java index 65d9bd4d1fa..5a6ee9474c1 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ConnectionPoolLoggingTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ConnectionPoolLoggingTest.java @@ -16,33 +16,23 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class ConnectionPoolLoggingTest extends UnifiedReactiveStreamsTest { - - - public ConnectionPoolLoggingTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class ConnectionPoolLoggingTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { // The implementation of the functionality related to clearing the connection pool before closing the connection // will be carried out once the specification is finalized and ready. assumeFalse(testDescription.equals("Connection checkout fails due to error establishing connection")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/connection-monitoring-and-pooling/logging"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/IndexManagmentTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/IndexManagmentTest.java index 3cb29d47aeb..931a53dba40 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/IndexManagmentTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/IndexManagmentTest.java @@ -16,27 +16,14 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class IndexManagmentTest extends UnifiedReactiveStreamsTest { - - public IndexManagmentTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class IndexManagmentTest extends UnifiedReactiveStreamsTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/index-management"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/LoadBalancerTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/LoadBalancerTest.java index 1438c194c4a..ff57a6afff1 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/LoadBalancerTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/LoadBalancerTest.java @@ -19,8 +19,9 @@ import com.mongodb.lang.Nullable; import org.bson.BsonArray; import org.bson.BsonDocument; -import org.junit.After; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; @@ -31,9 +32,9 @@ import static com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient.disableSleep; import static com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient.enableSleepAfterCursorClose; import static com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient.enableSleepAfterCursorOpen; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class LoadBalancerTest extends UnifiedReactiveStreamsTest { +final class LoadBalancerTest extends UnifiedReactiveStreamsTest { private static final List CURSOR_OPEN_TIMING_SENSITIVE_TESTS = Arrays.asList( @@ -52,11 +53,8 @@ public class LoadBalancerTest extends UnifiedReactiveStreamsTest { "pinned connections are returned after a network error during a killCursors request", "a connection can be shared by a transaction and a cursor"); - public LoadBalancerTest(final String fileDescription, - final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(fileDescription, schemaVersion, runOnRequirements, entities, initialData, definition); + @Override + protected void skips(final String fileDescription, final String testDescription) { // Reactive streams driver can't implement these tests because the underlying cursor is closed on error, which // breaks assumption in the tests that closing the cursor is something that happens under user control assumeFalse(testDescription.equals("pinned connections are not returned after an network error during getMore")); @@ -64,7 +62,26 @@ public LoadBalancerTest(final String fileDescription, // Reactive streams driver can't implement this test because there is no way to tell that a change stream cursor // that has not yet received any results has even initiated the change stream assumeFalse(testDescription.equals("change streams pin to a connection")); + } + @Override + @BeforeEach + public void setUp( + @Nullable final String fileDescription, + @Nullable final String testDescription, + final String schemaVersion, + @Nullable final BsonArray runOnRequirements, + final BsonArray entitiesArray, + final BsonArray initialData, + final BsonDocument definition) { + super.setUp( + fileDescription, + testDescription, + schemaVersion, + runOnRequirements, + entitiesArray, + initialData, + definition); if (CURSOR_OPEN_TIMING_SENSITIVE_TESTS.contains(testDescription)) { enableSleepAfterCursorOpen(256); } @@ -74,14 +91,14 @@ public LoadBalancerTest(final String fileDescription, } } - @After + @Override + @AfterEach public void cleanUp() { super.cleanUp(); disableSleep(); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/load-balancers"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ServerSelectionLoggingTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ServerSelectionLoggingTest.java index 433329def96..d78522fb75c 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ServerSelectionLoggingTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/ServerSelectionLoggingTest.java @@ -16,25 +16,14 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public final class ServerSelectionLoggingTest extends UnifiedReactiveStreamsTest { - public ServerSelectionLoggingTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class ServerSelectionLoggingTest extends UnifiedReactiveStreamsTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/server-selection/logging"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/SessionsTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/SessionsTest.java index e07856e8daf..81cd47637a0 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/SessionsTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/SessionsTest.java @@ -16,24 +16,14 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class SessionsTest extends UnifiedReactiveStreamsTest { - public SessionsTest(@SuppressWarnings("unused") final String fileDescription, @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class SessionsTest extends UnifiedReactiveStreamsTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/sessions"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedCrudTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedCrudTest.java index ea1ad44d6fd..e3154d351aa 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedCrudTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedCrudTest.java @@ -16,27 +16,21 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static com.mongodb.client.unified.UnifiedCrudTest.customSkips; +import static com.mongodb.client.unified.UnifiedCrudTest.doSkips; -public class UnifiedCrudTest extends UnifiedReactiveStreamsTest { - public UnifiedCrudTest(final String fileDescription, final String testDescription, final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - customSkips(fileDescription, testDescription); +final class UnifiedCrudTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { + doSkips(fileDescription, testDescription); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/crud"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedGridFSTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedGridFSTest.java index 0df4df51f8c..6a8eba3e96c 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedGridFSTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedGridFSTest.java @@ -16,30 +16,24 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedGridFSTest extends UnifiedReactiveStreamsTest { - public UnifiedGridFSTest(@SuppressWarnings("unused") final String fileDescription, final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class UnifiedGridFSTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { // contentType is deprecated in GridFS spec, and 4.x Java driver no longer support it, so skipping this test assumeFalse(testDescription.equals("upload when contentType is provided")); // Re-enable when JAVA-4214 is fixed assumeFalse(testDescription.equals("delete when files entry does not exist and there are orphaned chunks")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/gridfs"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedReactiveStreamsTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedReactiveStreamsTest.java index d4f079bd410..d0c0844bbc8 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedReactiveStreamsTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedReactiveStreamsTest.java @@ -23,7 +23,6 @@ import com.mongodb.client.gridfs.GridFSBucket; import com.mongodb.client.unified.UnifiedTest; import com.mongodb.client.vault.ClientEncryption; -import com.mongodb.lang.Nullable; import com.mongodb.reactivestreams.client.MongoClients; import com.mongodb.reactivestreams.client.gridfs.GridFSBuckets; import com.mongodb.reactivestreams.client.internal.vault.ClientEncryptionImpl; @@ -31,18 +30,9 @@ import com.mongodb.reactivestreams.client.syncadapter.SyncGridFSBucket; import com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient; import com.mongodb.reactivestreams.client.syncadapter.SyncMongoDatabase; -import org.bson.BsonArray; -import org.bson.BsonDocument; public abstract class UnifiedReactiveStreamsTest extends UnifiedTest { - public UnifiedReactiveStreamsTest(@Nullable final String fileDescription, final String schemaVersion, final BsonArray runOnRequirements, - final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - super(fileDescription, schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - } - - public UnifiedReactiveStreamsTest(final String schemaVersion, final BsonArray runOnRequirements, - final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - this(null, schemaVersion, runOnRequirements, entitiesArray, initialData, definition); + protected UnifiedReactiveStreamsTest() { } @Override diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedRetryableReadsTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedRetryableReadsTest.java index 540cb0673bb..d7f3df0f34a 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedRetryableReadsTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedRetryableReadsTest.java @@ -16,24 +16,45 @@ package com.mongodb.reactivestreams.client.unified; +import com.mongodb.lang.Nullable; import org.bson.BsonArray; import org.bson.BsonDocument; -import org.junit.After; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static com.mongodb.client.unified.UnifiedRetryableReadsTest.customSkips; +import static com.mongodb.client.unified.UnifiedRetryableReadsTest.doSkips; import static com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient.disableWaitForBatchCursorCreation; import static com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient.enableWaitForBatchCursorCreation; -public class UnifiedRetryableReadsTest extends UnifiedReactiveStreamsTest { - public UnifiedRetryableReadsTest(final String fileDescription, final String testDescription, final String schemaVersion, - final BsonArray runOnRequirements, final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - customSkips(fileDescription, testDescription); +final class UnifiedRetryableReadsTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { + doSkips(fileDescription, testDescription); + } + + @Override + @BeforeEach + public void setUp( + final String fileDescription, + final String testDescription, + final String schemaVersion, + @Nullable final BsonArray runOnRequirements, + final BsonArray entitiesArray, + final BsonArray initialData, + final BsonDocument definition) { + super.setUp( + fileDescription, + testDescription, + schemaVersion, + runOnRequirements, + entitiesArray, + initialData, + definition); if (fileDescription.startsWith("changeStreams") || testDescription.contains("ChangeStream")) { // Several reactive change stream tests fail if we don't block waiting for batch cursor creation. enableWaitForBatchCursorCreation(); @@ -42,14 +63,14 @@ public UnifiedRetryableReadsTest(final String fileDescription, final String test } } - @After + @Override + @AfterEach public void cleanUp() { super.cleanUp(); disableWaitForBatchCursorCreation(); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/retryable-reads"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedRetryableWritesTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedRetryableWritesTest.java index 10900adbd51..182ead20c22 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedRetryableWritesTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedRetryableWritesTest.java @@ -16,27 +16,21 @@ package com.mongodb.reactivestreams.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static com.mongodb.client.unified.UnifiedRetryableWritesTest.customSkips; +import static com.mongodb.client.unified.UnifiedRetryableWritesTest.doSkips; -public class UnifiedRetryableWritesTest extends UnifiedReactiveStreamsTest { - public UnifiedRetryableWritesTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, final BsonArray runOnRequirements, final BsonArray entitiesArray, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - customSkips(testDescription); +final class UnifiedRetryableWritesTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { + doSkips(testDescription); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/retryable-writes"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedServerDiscoveryAndMonitoringTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedServerDiscoveryAndMonitoringTest.java index b32137abd4a..5b12ba14de9 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedServerDiscoveryAndMonitoringTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedServerDiscoveryAndMonitoringTest.java @@ -16,32 +16,19 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.Before; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class UnifiedServerDiscoveryAndMonitoringTest extends UnifiedReactiveStreamsTest { - public UnifiedServerDiscoveryAndMonitoringTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class UnifiedServerDiscoveryAndMonitoringTest extends UnifiedReactiveStreamsTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/server-discovery-and-monitoring"); } - @Before - public void before() { - com.mongodb.client.unified.UnifiedServerDiscoveryAndMonitoringTest.skipTests(getDefinition()); + @Override + protected void skips(final String fileDescription, final String testDescription) { + com.mongodb.client.unified.UnifiedServerDiscoveryAndMonitoringTest.doSkips(getDefinition()); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedTransactionsTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedTransactionsTest.java index aed99bd8d70..18a92f8eee8 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedTransactionsTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedTransactionsTest.java @@ -16,9 +16,7 @@ package com.mongodb.reactivestreams.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; @@ -26,14 +24,11 @@ import static com.mongodb.ClusterFixture.isSharded; import static com.mongodb.ClusterFixture.serverVersionLessThan; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedTransactionsTest extends UnifiedReactiveStreamsTest { - public UnifiedTransactionsTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, final BsonArray runOnRequirements, final BsonArray entitiesArray, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); +final class UnifiedTransactionsTest extends UnifiedReactiveStreamsTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { assumeFalse(fileDescription.equals("count")); if (serverVersionLessThan(4, 4) && isSharded()) { assumeFalse(fileDescription.equals("pin-mongos") && testDescription.equals("distinct")); @@ -43,8 +38,7 @@ public UnifiedTransactionsTest(@SuppressWarnings("unused") final String fileDesc } } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/transactions"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedWriteConcernTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedWriteConcernTest.java index 7aff8e0437b..3b7fa4afb00 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedWriteConcernTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/UnifiedWriteConcernTest.java @@ -16,23 +16,14 @@ package com.mongodb.reactivestreams.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class UnifiedWriteConcernTest extends UnifiedReactiveStreamsTest { - public UnifiedWriteConcernTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, final String schemaVersion, final BsonArray runOnRequirements, - final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class UnifiedWriteConcernTest extends UnifiedReactiveStreamsTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/write-concern"); } } diff --git a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/VersionedApiTest.java b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/VersionedApiTest.java index b93ac19afd0..5a0d4b69dcd 100644 --- a/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/VersionedApiTest.java +++ b/driver-reactive-streams/src/test/functional/com/mongodb/reactivestreams/client/unified/VersionedApiTest.java @@ -16,25 +16,14 @@ package com.mongodb.reactivestreams.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class VersionedApiTest extends UnifiedReactiveStreamsTest { - public VersionedApiTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class VersionedApiTest extends UnifiedReactiveStreamsTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("versioned-api"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/ChangeStreamsTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/ChangeStreamsTest.java index ac8bda66f84..d07429fa479 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/ChangeStreamsTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/ChangeStreamsTest.java @@ -16,25 +16,14 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public final class ChangeStreamsTest extends UnifiedSyncTest { - public ChangeStreamsTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class ChangeStreamsTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/change-streams"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/ClientSideEncryptionTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/ClientSideEncryptionTest.java index 7840335f056..bbb232386dd 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/ClientSideEncryptionTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/ClientSideEncryptionTest.java @@ -16,27 +16,14 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class ClientSideEncryptionTest extends UnifiedSyncTest { - public ClientSideEncryptionTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class ClientSideEncryptionTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/client-side-encryption"); } } - diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/CollectionManagementTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/CollectionManagementTest.java index 672a09c5546..cbc371c1913 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/CollectionManagementTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/CollectionManagementTest.java @@ -16,28 +16,21 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class CollectionManagementTest extends UnifiedSyncTest { - public CollectionManagementTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class CollectionManagementTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { assumeFalse(testDescription.equals("modifyCollection to changeStreamPreAndPostImages enabled")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/collection-management"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/CommandLoggingTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/CommandLoggingTest.java index 7baf06c7c96..02fbae2fd40 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/CommandLoggingTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/CommandLoggingTest.java @@ -16,35 +16,25 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; import static com.mongodb.ClusterFixture.isServerlessTest; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class CommandLoggingTest extends UnifiedSyncTest { - - - public CommandLoggingTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class CommandLoggingTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { assumeFalse(isServerlessTest()); // The driver has a hack where getLastError command is executed as part of the handshake in order to get a connectionId // even when the hello command response doesn't contain it. assumeFalse(fileDescription.equals("pre-42-server-connection-id")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/command-logging"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/CommandMonitoringTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/CommandMonitoringTest.java index 6a02669ac22..345639fba60 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/CommandMonitoringTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/CommandMonitoringTest.java @@ -16,35 +16,25 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; import static com.mongodb.ClusterFixture.isServerlessTest; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class CommandMonitoringTest extends UnifiedSyncTest { - - - public CommandMonitoringTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class CommandMonitoringTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { assumeFalse(isServerlessTest()); // The driver has a hack where getLastError command is executed as part of the handshake in order to get a connectionId // even when the hello command response doesn't contain it. assumeFalse(fileDescription.equals("pre-42-server-connection-id")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/command-monitoring"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/ConnectionPoolLoggingTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/ConnectionPoolLoggingTest.java index 62e81674653..8d34eb0a1fa 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/ConnectionPoolLoggingTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/ConnectionPoolLoggingTest.java @@ -16,32 +16,23 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class ConnectionPoolLoggingTest extends UnifiedSyncTest { - - public ConnectionPoolLoggingTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class ConnectionPoolLoggingTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { // The implementation of the functionality related to clearing the connection pool before closing the connection // will be carried out once the specification is finalized and ready. assumeFalse(testDescription.equals("Connection checkout fails due to error establishing connection")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/connection-monitoring-and-pooling/logging"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/IndexManagmentTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/IndexManagmentTest.java index 3fdb04d3116..382c5edb3a4 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/IndexManagmentTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/IndexManagmentTest.java @@ -16,27 +16,14 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class IndexManagmentTest extends UnifiedSyncTest { - - public IndexManagmentTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class IndexManagmentTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/index-management"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/LoadBalancerTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/LoadBalancerTest.java index 891297bd364..eb70f5da4cf 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/LoadBalancerTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/LoadBalancerTest.java @@ -16,26 +16,14 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class LoadBalancerTest extends UnifiedSyncTest { - - public LoadBalancerTest(final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(fileDescription, schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class LoadBalancerTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/load-balancers"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/ServerSelectionLoggingTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/ServerSelectionLoggingTest.java index 4ce99fb76a8..2e932ba975f 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/ServerSelectionLoggingTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/ServerSelectionLoggingTest.java @@ -16,25 +16,14 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public final class ServerSelectionLoggingTest extends UnifiedSyncTest { - public ServerSelectionLoggingTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class ServerSelectionLoggingTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/server-selection/logging"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/SessionsTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/SessionsTest.java index 3a607407138..33d851a38c9 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/SessionsTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/SessionsTest.java @@ -16,25 +16,14 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class SessionsTest extends UnifiedSyncTest { - - public SessionsTest(@SuppressWarnings("unused") final String fileDescription, @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class SessionsTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/sessions"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedAtlasDataLakeTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedAtlasDataLakeTest.java index 9bc43e5f25d..7b3183f0fee 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedAtlasDataLakeTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedAtlasDataLakeTest.java @@ -16,30 +16,22 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; import static com.mongodb.ClusterFixture.isDataLakeTest; -import static org.junit.Assume.assumeTrue; +import static org.junit.jupiter.api.Assumptions.assumeTrue; -public class UnifiedAtlasDataLakeTest extends UnifiedSyncTest { - - public UnifiedAtlasDataLakeTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, final String schemaVersion, - @Nullable final BsonArray runOnRequirements, final BsonArray entities, final BsonArray initialData, - final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class UnifiedAtlasDataLakeTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { assumeTrue(isDataLakeTest()); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/atlas-data-lake-testing"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedAuthTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedAuthTest.java index f94977f2546..0471a9600c6 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedAuthTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedAuthTest.java @@ -16,24 +16,14 @@ package com.mongodb.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class UnifiedAuthTest extends UnifiedSyncTest { - public UnifiedAuthTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, final BsonArray runOnRequirements, final BsonArray entitiesArray, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class UnifiedAuthTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/auth"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedCrudTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedCrudTest.java index 410c6b9e0e9..5c494452823 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedCrudTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedCrudTest.java @@ -16,10 +16,7 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; @@ -27,19 +24,10 @@ import static com.mongodb.ClusterFixture.isDiscoverableReplicaSet; import static com.mongodb.ClusterFixture.serverVersionAtLeast; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedCrudTest extends UnifiedSyncTest { - - public UnifiedCrudTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - customSkips(fileDescription, testDescription); - } - - public static void customSkips(final String fileDescription, final String testDescription) { +public final class UnifiedCrudTest extends UnifiedSyncTest { + public static void doSkips(final String fileDescription, final String testDescription) { assumeFalse(testDescription.equals("Deprecated count with empty collection")); assumeFalse(testDescription.equals("Deprecated count with collation")); assumeFalse(testDescription.equals("Deprecated count without a filter")); @@ -57,7 +45,12 @@ public static void customSkips(final String fileDescription, final String testDe } } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + @Override + protected void skips(final String fileDescription, final String testDescription) { + doSkips(fileDescription, testDescription); + } + + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/crud"); - }} + } +} diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedGridFSTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedGridFSTest.java index 5f0dfb36bb9..0413e2c0c0c 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedGridFSTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedGridFSTest.java @@ -16,28 +16,22 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedGridFSTest extends UnifiedSyncTest { - - public UnifiedGridFSTest(@SuppressWarnings("unused") final String fileDescription, final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); +final class UnifiedGridFSTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { // contentType is deprecated in GridFS spec, and 4.x Java driver no longer support it, so skipping this test assumeFalse(testDescription.equals("upload when contentType is provided")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/gridfs"); - }} + } +} diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedRetryableReadsTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedRetryableReadsTest.java index 4d50fd54577..62712eaab0e 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedRetryableReadsTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedRetryableReadsTest.java @@ -16,24 +16,21 @@ package com.mongodb.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedRetryableReadsTest extends UnifiedSyncTest { - public UnifiedRetryableReadsTest(final String fileDescription, final String testDescription, final String schemaVersion, - final BsonArray runOnRequirements, final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - customSkips(fileDescription, testDescription); +public final class UnifiedRetryableReadsTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { + doSkips(fileDescription, testDescription); } - public static void customSkips(final String fileDescription, @SuppressWarnings("unused") final String testDescription) { + public static void doSkips(final String fileDescription, @SuppressWarnings("unused") final String testDescription) { // Skipped because driver removed the deprecated count methods assumeFalse(fileDescription.equals("count")); assumeFalse(fileDescription.equals("count-serverErrors")); @@ -44,8 +41,7 @@ public static void customSkips(final String fileDescription, @SuppressWarnings(" assumeFalse(fileDescription.equals("listCollectionObjects-serverErrors")); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/retryable-reads"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedRetryableWritesTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedRetryableWritesTest.java index 210295a30e6..794a027ebaf 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedRetryableWritesTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedRetryableWritesTest.java @@ -16,9 +16,7 @@ package com.mongodb.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; @@ -27,18 +25,15 @@ import static com.mongodb.ClusterFixture.isDiscoverableReplicaSet; import static com.mongodb.ClusterFixture.isSharded; import static com.mongodb.ClusterFixture.serverVersionLessThan; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedRetryableWritesTest extends UnifiedSyncTest { - public UnifiedRetryableWritesTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, final BsonArray runOnRequirements, final BsonArray entitiesArray, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - customSkips(testDescription); +public final class UnifiedRetryableWritesTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { + doSkips(testDescription); } - public static void customSkips(final String description) { + public static void doSkips(final String description) { if (isSharded() && serverVersionLessThan(5, 0)) { assumeFalse(description.contains("succeeds after WriteConcernError")); assumeFalse(description.contains("succeeds after retryable writeConcernError")); @@ -48,8 +43,7 @@ public static void customSkips(final String description) { } } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/retryable-writes"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedServerDiscoveryAndMonitoringTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedServerDiscoveryAndMonitoringTest.java index 7f2b4bce607..c384a50967e 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedServerDiscoveryAndMonitoringTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedServerDiscoveryAndMonitoringTest.java @@ -16,43 +16,31 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; import org.bson.BsonDocument; import org.bson.BsonString; -import org.junit.Before; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedServerDiscoveryAndMonitoringTest extends UnifiedSyncTest { - - public UnifiedServerDiscoveryAndMonitoringTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +public final class UnifiedServerDiscoveryAndMonitoringTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/server-discovery-and-monitoring"); } - @Before - public void before() { - skipTests(getDefinition()); + @Override + protected void skips(final String fileDescription, final String testDescription) { + doSkips(getDefinition()); } - public static void skipTests(final BsonDocument definition) { + public static void doSkips(final BsonDocument definition) { String description = definition.getString("description", new BsonString("")).getValue(); - assumeFalse("Skipping because our server monitoring events behave differently for now", - description.equals("connect with serverMonitoringMode=auto >=4.4")); - assumeFalse("Skipping because our server monitoring events behave differently for now", - description.equals("connect with serverMonitoringMode=stream >=4.4")); + assumeFalse(description.equals("connect with serverMonitoringMode=auto >=4.4"), + "Skipping because our server monitoring events behave differently for now"); + assumeFalse(description.equals("connect with serverMonitoringMode=stream >=4.4"), + "Skipping because our server monitoring events behave differently for now"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedSyncTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedSyncTest.java index 5e7a0e4ddc4..37db7cfe907 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedSyncTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedSyncTest.java @@ -25,19 +25,9 @@ import com.mongodb.client.gridfs.GridFSBuckets; import com.mongodb.client.internal.ClientEncryptionImpl; import com.mongodb.client.vault.ClientEncryption; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; public abstract class UnifiedSyncTest extends UnifiedTest { - public UnifiedSyncTest(@Nullable final String fileDescription, final String schemaVersion, final BsonArray runOnRequirements, - final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - super(fileDescription, schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - } - - public UnifiedSyncTest(final String schemaVersion, final BsonArray runOnRequirements, - final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - this(null, schemaVersion, runOnRequirements, entitiesArray, initialData, definition); + protected UnifiedSyncTest() { } @Override diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java index 46e47757ff6..e88abd6669f 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java @@ -41,6 +41,7 @@ import com.mongodb.internal.connection.TestConnectionPoolListener; import com.mongodb.lang.NonNull; import com.mongodb.lang.Nullable; +import com.mongodb.test.AfterBeforeParameterResolver; import org.bson.BsonArray; import org.bson.BsonBoolean; import org.bson.BsonDocument; @@ -49,12 +50,13 @@ import org.bson.BsonString; import org.bson.BsonValue; import org.bson.codecs.BsonDocumentCodec; -import org.junit.After; -import org.junit.AssumptionViolatedException; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.opentest4j.TestAbortedException; import java.io.File; import java.io.IOException; @@ -80,35 +82,36 @@ import static com.mongodb.client.unified.RunOnRequirementsMatcher.runOnRequirementsMet; import static java.util.Collections.singletonList; import static java.util.stream.Collectors.toList; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.junit.Assume.assumeTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import static org.junit.jupiter.api.Assumptions.assumeTrue; import static util.JsonPoweredTestHelper.getTestDocument; import static util.JsonPoweredTestHelper.getTestFiles; -@RunWith(Parameterized.class) +@ExtendWith(AfterBeforeParameterResolver.class) public abstract class UnifiedTest { private static final Set PRESTART_POOL_ASYNC_WORK_MANAGER_FILE_DESCRIPTIONS = Collections.singleton( "wait queue timeout errors include details about checked out connections"); @Nullable - private final String fileDescription; - private final String schemaVersion; - private final BsonArray runOnRequirements; - private final BsonArray entitiesArray; - private final BsonArray initialData; - private final BsonDocument definition; - private final Entities entities = new Entities(); - private final UnifiedCrudHelper crudHelper; - private final UnifiedGridFSHelper gridFSHelper = new UnifiedGridFSHelper(entities); - private final UnifiedClientEncryptionHelper clientEncryptionHelper = new UnifiedClientEncryptionHelper(entities); - private final List failPoints = new ArrayList<>(); - private final UnifiedTestContext rootContext = new UnifiedTestContext(); + private String fileDescription; + private String schemaVersion; + @Nullable + private BsonArray runOnRequirements; + private BsonArray entitiesArray; + private BsonArray initialData; + private BsonDocument definition; + private Entities entities; + private UnifiedCrudHelper crudHelper; + private UnifiedGridFSHelper gridFSHelper; + private UnifiedClientEncryptionHelper clientEncryptionHelper; + private List failPoints; + private UnifiedTestContext rootContext; private boolean ignoreExtraEvents; private BsonDocument startingClusterTime; @@ -140,16 +143,7 @@ LogMatcher getLogMatcher() { } } - public UnifiedTest(@Nullable final String fileDescription, final String schemaVersion, @Nullable final BsonArray runOnRequirements, - final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - this.fileDescription = fileDescription; - this.schemaVersion = schemaVersion; - this.runOnRequirements = runOnRequirements; - this.entitiesArray = entitiesArray; - this.initialData = initialData; - this.definition = definition; - this.rootContext.getAssertionContext().push(ContextElement.ofTest(definition)); - crudHelper = new UnifiedCrudHelper(entities, definition.getString("description").getValue()); + protected UnifiedTest() { } protected void ignoreExtraEvents() { @@ -161,8 +155,8 @@ public Entities getEntities() { } @NonNull - protected static Collection getTestData(final String directory) throws URISyntaxException, IOException { - List data = new ArrayList<>(); + protected static Collection getTestData(final String directory) throws URISyntaxException, IOException { + List data = new ArrayList<>(); for (File file : getTestFiles("/" + directory + "/")) { BsonDocument fileDocument = getTestDocument(file); @@ -174,15 +168,15 @@ protected static Collection getTestData(final String directory) throws } @NonNull - private static Object[] createTestData(final BsonDocument fileDocument, final BsonDocument testDocument) { - return new Object[]{ + private static Arguments createTestData(final BsonDocument fileDocument, final BsonDocument testDocument) { + return Arguments.of( fileDocument.getString("description").getValue(), testDocument.getString("description").getValue(), fileDocument.getString("schemaVersion").getValue(), fileDocument.getArray("runOnRequirements", null), fileDocument.getArray("createEntities", new BsonArray()), fileDocument.getArray("initialData", new BsonArray()), - testDocument}; + testDocument); } protected BsonDocument getDefinition() { @@ -195,9 +189,31 @@ protected BsonDocument getDefinition() { protected abstract ClientEncryption createClientEncryption(MongoClient keyVaultClient, ClientEncryptionSettings clientEncryptionSettings); - @Before - public void setUp() { - assertTrue(String.format("Unsupported schema version %s", schemaVersion), + @BeforeEach + public void setUp( + @Nullable final String fileDescription, + @Nullable final String testDescription, + final String schemaVersion, + @Nullable final BsonArray runOnRequirements, + final BsonArray entitiesArray, + final BsonArray initialData, + final BsonDocument definition) { + this.fileDescription = fileDescription; + this.schemaVersion = schemaVersion; + this.runOnRequirements = runOnRequirements; + this.entitiesArray = entitiesArray; + this.initialData = initialData; + this.definition = definition; + entities = new Entities(); + crudHelper = new UnifiedCrudHelper(entities, definition.getString("description").getValue()); + gridFSHelper = new UnifiedGridFSHelper(entities); + clientEncryptionHelper = new UnifiedClientEncryptionHelper(entities); + failPoints = new ArrayList<>(); + rootContext = new UnifiedTestContext(); + rootContext.getAssertionContext().push(ContextElement.ofTest(definition)); + ignoreExtraEvents = false; + skips(fileDescription, testDescription); + assertTrue( schemaVersion.equals("1.0") || schemaVersion.equals("1.1") || schemaVersion.equals("1.2") @@ -217,18 +233,19 @@ public void setUp() { || schemaVersion.equals("1.16") || schemaVersion.equals("1.17") || schemaVersion.equals("1.18") - || schemaVersion.equals("1.19")); + || schemaVersion.equals("1.19"), + String.format("Unsupported schema version %s", schemaVersion)); if (runOnRequirements != null) { - assumeTrue("Run-on requirements not met", - runOnRequirementsMet(runOnRequirements, getMongoClientSettings(), getServerVersion())); + assumeTrue(runOnRequirementsMet(runOnRequirements, getMongoClientSettings(), getServerVersion()), + "Run-on requirements not met"); } if (definition.containsKey("runOnRequirements")) { - assumeTrue("Run-on requirements not met", - runOnRequirementsMet(definition.getArray("runOnRequirements", new BsonArray()), getMongoClientSettings(), - getServerVersion())); + assumeTrue(runOnRequirementsMet(definition.getArray("runOnRequirements", new BsonArray()), getMongoClientSettings(), + getServerVersion()), + "Run-on requirements not met"); } if (definition.containsKey("skipReason")) { - throw new AssumptionViolatedException(definition.getString("skipReason").getValue()); + throw new TestAbortedException(definition.getString("skipReason").getValue()); } if (!isDataLakeTest()) { @@ -244,7 +261,7 @@ public void setUp() { this::createClientEncryption); } - @After + @AfterEach public void cleanUp() { for (FailPoint failPoint : failPoints) { failPoint.disableFailPoint(); @@ -252,8 +269,23 @@ public void cleanUp() { entities.close(); } - @Test - public void shouldPassAllOutcomes() { + /** + * This method is called once per {@link #setUp(String, String, String, BsonArray, BsonArray, BsonArray, BsonDocument)}, + * unless {@link #setUp(String, String, String, BsonArray, BsonArray, BsonArray, BsonDocument)} fails unexpectedly. + */ + protected void skips(final String fileDescription, final String testDescription) { + } + + @ParameterizedTest(name = "{0}: {1}") + @MethodSource("data") + public void shouldPassAllOutcomes( + @Nullable final String fileDescription, + @Nullable final String testDescription, + final String schemaVersion, + @Nullable final BsonArray runOnRequirements, + final BsonArray entitiesArray, + final BsonArray initialData, + final BsonDocument definition) { BsonArray operations = definition.getArray("operations"); for (int i = 0; i < operations.size(); i++) { BsonValue cur = operations.get(i); @@ -326,7 +358,7 @@ private void assertOutcome(final UnifiedTestContext context) { List expectedOutcome = curDocument.getArray("documents").stream().map(BsonValue::asDocument).collect(toList()); List actualOutcome = new CollectionHelper<>(new BsonDocumentCodec(), namespace).find(); context.getAssertionContext().push(ContextElement.ofOutcome(namespace, expectedOutcome, actualOutcome)); - assertEquals(context.getAssertionContext().getMessage("Outcomes are not equal"), expectedOutcome, actualOutcome); + assertEquals(expectedOutcome, actualOutcome, context.getAssertionContext().getMessage("Outcomes are not equal")); context.getAssertionContext().pop(); } } @@ -350,16 +382,16 @@ private static void assertOperationResult(final UnifiedTestContext context, fina context.getAssertionContext().push(ContextElement.ofCompletedOperation(operation, result, operationIndex)); if (!operation.getBoolean("ignoreResultAndError", BsonBoolean.FALSE).getValue()) { if (operation.containsKey("expectResult")) { - assertNull(context.getAssertionContext().getMessage("The operation expects a result but an exception occurred"), - result.getException()); + assertNull(result.getException(), + context.getAssertionContext().getMessage("The operation expects a result but an exception occurred")); context.getValueMatcher().assertValuesMatch(operation.get("expectResult"), result.getResult()); } else if (operation.containsKey("expectError")) { - assertNotNull(context.getAssertionContext().getMessage("The operation expects an error but no exception was thrown"), - result.getException()); + assertNotNull(result.getException(), + context.getAssertionContext().getMessage("The operation expects an error but no exception was thrown")); context.getErrorMatcher().assertErrorsMatch(operation.getDocument("expectError"), result.getException()); } else { - assertNull(context.getAssertionContext().getMessage("The operation expects no error but an exception occurred"), - result.getException()); + assertNull(result.getException(), + context.getAssertionContext().getMessage("The operation expects no error but an exception occurred")); } } context.getAssertionContext().pop(); @@ -776,8 +808,8 @@ private OperationResult executeAssertTopologyType(final UnifiedTestContext conte context.getAssertionContext().push(ContextElement.ofTopologyType(expectedTopologyType)); - assertEquals(context.getAssertionContext().getMessage("Unexpected topology type"), getClusterType(expectedTopologyType), - clusterDescription.getType()); + assertEquals(getClusterType(expectedTopologyType), clusterDescription.getType(), + context.getAssertionContext().getMessage("Unexpected topology type")); context.getAssertionContext().pop(); return OperationResult.NONE; @@ -860,8 +892,8 @@ private OperationResult executeAssertSessionPinniness(final BsonDocument operati private OperationResult executeAssertNumberConnectionsCheckedOut(final UnifiedTestContext context, final BsonDocument operation) { TestConnectionPoolListener listener = entities.getConnectionPoolListener( operation.getDocument("arguments").getString("client").getValue()); - assertEquals(context.getAssertionContext().getMessage("Number of checked out connections must match expected"), - operation.getDocument("arguments").getNumber("connections").intValue(), listener.getNumConnectionsCheckedOut()); + assertEquals(operation.getDocument("arguments").getNumber("connections").intValue(), listener.getNumConnectionsCheckedOut(), + context.getAssertionContext().getMessage("Number of checked out connections must match expected")); return OperationResult.NONE; } @@ -883,9 +915,9 @@ private OperationResult executeAssertLsidOnLastTwoCommands(final BsonDocument op BsonDocument expected = ((CommandStartedEvent) events.get(0)).getCommand().getDocument("lsid"); BsonDocument actual = ((CommandStartedEvent) events.get(1)).getCommand().getDocument("lsid"); if (same) { - assertEquals(eventsJson, expected, actual); + assertEquals(expected, actual, eventsJson); } else { - assertNotEquals(eventsJson, expected, actual); + assertNotEquals(expected, actual, eventsJson); } return OperationResult.NONE; } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestFailureValidator.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestFailureValidator.java index 0e397b7af38..2694ee8066e 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestFailureValidator.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestFailureValidator.java @@ -19,49 +19,73 @@ import com.mongodb.lang.Nullable; import org.bson.BsonArray; import org.bson.BsonDocument; -import org.junit.Before; -import org.junit.Test; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotNull; -public class UnifiedTestFailureValidator extends UnifiedSyncTest { +final class UnifiedTestFailureValidator extends UnifiedSyncTest { private Throwable exception; - public UnifiedTestFailureValidator(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Before - public void setUp() { + @Override + @BeforeEach + public void setUp( + @Nullable final String fileDescription, + @Nullable final String testDescription, + final String schemaVersion, + @Nullable final BsonArray runOnRequirements, + final BsonArray entitiesArray, + final BsonArray initialData, + final BsonDocument definition) { try { - super.setUp(); + super.setUp( + fileDescription, + testDescription, + schemaVersion, + runOnRequirements, + entitiesArray, + initialData, + definition); } catch (AssertionError | Exception e) { exception = e; } } - @Test - public void shouldPassAllOutcomes() { + @Override + @ParameterizedTest + @MethodSource("data") + public void shouldPassAllOutcomes( + @Nullable final String fileDescription, + @Nullable final String testDescription, + final String schemaVersion, + @Nullable final BsonArray runOnRequirements, + final BsonArray entitiesArray, + final BsonArray initialData, + final BsonDocument definition) { if (exception == null) { try { - super.shouldPassAllOutcomes(); + super.shouldPassAllOutcomes( + fileDescription, + testDescription, + schemaVersion, + runOnRequirements, + entitiesArray, + initialData, + definition); } catch (AssertionError | Exception e) { exception = e; } } - assertNotNull("Expected exception but not was thrown", exception); + assertNotNull(exception, "Expected exception but not was thrown"); } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/valid-fail"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestValidator.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestValidator.java index eaf9ebe3395..ecb04294bf8 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestValidator.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTestValidator.java @@ -16,37 +16,24 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.Before; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; import static com.mongodb.ClusterFixture.serverVersionLessThan; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedTestValidator extends UnifiedSyncTest { - public UnifiedTestValidator(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - assumeFalse("MongoDB releases prior to 4.4 incorrectly add errorLabels as a field within the writeConcernError document " - + "instead of as a top-level field. Rather than handle that in code, we skip the test on older server versions.", - testDescription.equals("InsertOne fails after multiple retryable writeConcernErrors") && serverVersionLessThan(4, 4)); +final class UnifiedTestValidator extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { + assumeFalse(testDescription.equals("InsertOne fails after multiple retryable writeConcernErrors") && serverVersionLessThan(4, 4), + "MongoDB releases prior to 4.4 incorrectly add errorLabels as a field within the writeConcernError document " + + "instead of as a top-level field. Rather than handle that in code, we skip the test on older server versions."); } - @Before - public void setUp() { - super.setUp(); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/valid-pass"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTransactionsTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTransactionsTest.java index 270c52600d1..5acf74cd972 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTransactionsTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTransactionsTest.java @@ -16,9 +16,7 @@ package com.mongodb.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; @@ -26,14 +24,11 @@ import static com.mongodb.ClusterFixture.isSharded; import static com.mongodb.ClusterFixture.serverVersionLessThan; -import static org.junit.Assume.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeFalse; -public class UnifiedTransactionsTest extends UnifiedSyncTest { - public UnifiedTransactionsTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, final BsonArray runOnRequirements, final BsonArray entitiesArray, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); +final class UnifiedTransactionsTest extends UnifiedSyncTest { + @Override + protected void skips(final String fileDescription, final String testDescription) { assumeFalse(fileDescription.equals("count")); if (serverVersionLessThan(4, 4) && isSharded()) { assumeFalse(fileDescription.equals("pin-mongos") && testDescription.equals("distinct")); @@ -43,8 +38,7 @@ public UnifiedTransactionsTest(@SuppressWarnings("unused") final String fileDesc } } - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/transactions"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedWriteConcernTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedWriteConcernTest.java index 77da717f086..4d1a5a2f854 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedWriteConcernTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedWriteConcernTest.java @@ -16,23 +16,14 @@ package com.mongodb.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class UnifiedWriteConcernTest extends UnifiedSyncTest { - public UnifiedWriteConcernTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, final String schemaVersion, final BsonArray runOnRequirements, - final BsonArray entitiesArray, final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class UnifiedWriteConcernTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/write-concern"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/VersionedApiTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/VersionedApiTest.java index 81a20662f38..e9ccd4d1cd4 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/VersionedApiTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/VersionedApiTest.java @@ -16,26 +16,14 @@ package com.mongodb.client.unified; -import com.mongodb.lang.Nullable; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class VersionedApiTest extends UnifiedSyncTest { - - public VersionedApiTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, @Nullable final BsonArray runOnRequirements, final BsonArray entities, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entities, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class VersionedApiTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("versioned-api"); } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/WithTransactionHelperTransactionsTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/WithTransactionHelperTransactionsTest.java index dff641068e4..d9fb4c9b4df 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/WithTransactionHelperTransactionsTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/WithTransactionHelperTransactionsTest.java @@ -16,24 +16,14 @@ package com.mongodb.client.unified; -import org.bson.BsonArray; -import org.bson.BsonDocument; -import org.junit.runners.Parameterized; +import org.junit.jupiter.params.provider.Arguments; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; -public class WithTransactionHelperTransactionsTest extends UnifiedSyncTest { - public WithTransactionHelperTransactionsTest(@SuppressWarnings("unused") final String fileDescription, - @SuppressWarnings("unused") final String testDescription, - final String schemaVersion, final BsonArray runOnRequirements, final BsonArray entitiesArray, - final BsonArray initialData, final BsonDocument definition) { - super(schemaVersion, runOnRequirements, entitiesArray, initialData, definition); - } - - @Parameterized.Parameters(name = "{0}: {1}") - public static Collection data() throws URISyntaxException, IOException { +final class WithTransactionHelperTransactionsTest extends UnifiedSyncTest { + private static Collection data() throws URISyntaxException, IOException { return getTestData("unified-test-format/transactions-convenient-api"); } } diff --git a/driver-workload-executor/src/main/com/mongodb/workload/WorkloadExecutor.java b/driver-workload-executor/src/main/com/mongodb/workload/WorkloadExecutor.java index 1f0e17cfed2..88248e13ca3 100644 --- a/driver-workload-executor/src/main/com/mongodb/workload/WorkloadExecutor.java +++ b/driver-workload-executor/src/main/com/mongodb/workload/WorkloadExecutor.java @@ -85,12 +85,7 @@ public static void main(String[] args) throws IOException { } BsonDocument testDocument = testArray.get(0).asDocument(); - UnifiedTest unifiedTest = new UnifiedSyncTest(fileDocument.getString("schemaVersion").getValue(), - fileDocument.getArray("runOnRequirements", null), - fileDocument.getArray("createEntities", new BsonArray()), - fileDocument.getArray("initialData", new BsonArray()), - testDocument) { - + UnifiedTest unifiedTest = new UnifiedSyncTest() { @Override protected boolean terminateLoop() { return terminateLoop; @@ -98,8 +93,25 @@ protected boolean terminateLoop() { }; try { - unifiedTest.setUp(); - unifiedTest.shouldPassAllOutcomes(); + String schemaVersion = fileDocument.getString("schemaVersion").getValue(); + BsonArray runOnRequirements = fileDocument.getArray("runOnRequirements", null); + BsonArray createEntities = fileDocument.getArray("createEntities", new BsonArray()); + BsonArray initialData = fileDocument.getArray("initialData", new BsonArray()); + unifiedTest.setUp(null, + null, + schemaVersion, + runOnRequirements, + createEntities, + initialData, + testDocument); + unifiedTest.shouldPassAllOutcomes( + null, + null, + schemaVersion, + runOnRequirements, + createEntities, + initialData, + testDocument); Entities entities = unifiedTest.getEntities(); long iterationCount = -1;