From 4c73bb13daa0241a3956a30b451edda10f79dde6 Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Wed, 20 Dec 2023 14:34:33 -0500 Subject: [PATCH] DRIVERS-2799: Use more permissive top-level runOnRequirements (#1484) * DRIVERS-2799: Use more permissive top-level runOnRequirements This avoids unintentionally skipping tests. Previously, some tests were never run on sharded clusters. * Add RetryableWriteError error label via failCommand fail point This ensures the unified test is consistent with the legacy test from which it was derived. Additionally, it makes the test resilient to possible changes in DRIVERS-1641. This inconsistency dates back to e4808b84f804f8b08293dcd51ce107e10a40589f. --- .../tests/unified/bulkWrite-serverErrors.json | 22 ++++-------- .../tests/unified/bulkWrite-serverErrors.yml | 9 ++--- .../tests/unified/insertOne-serverErrors.json | 22 ++++-------- .../tests/unified/insertOne-serverErrors.yml | 9 ++--- .../valid-pass/poc-retryable-writes.json | 35 ++++++++++++++----- .../tests/valid-pass/poc-retryable-writes.yml | 10 +++--- 6 files changed, 53 insertions(+), 54 deletions(-) diff --git a/source/retryable-writes/tests/unified/bulkWrite-serverErrors.json b/source/retryable-writes/tests/unified/bulkWrite-serverErrors.json index aed210ec29..835dab7875 100644 --- a/source/retryable-writes/tests/unified/bulkWrite-serverErrors.json +++ b/source/retryable-writes/tests/unified/bulkWrite-serverErrors.json @@ -3,10 +3,16 @@ "schemaVersion": "1.0", "runOnRequirements": [ { - "minServerVersion": "3.6", + "minServerVersion": "4.0", "topologies": [ "replicaset" ] + }, + { + "minServerVersion": "4.1.7", + "topologies": [ + "sharded" + ] } ], "createEntities": [ @@ -53,20 +59,6 @@ "tests": [ { "description": "BulkWrite succeeds after retryable writeConcernError in first batch", - "runOnRequirements": [ - { - "minServerVersion": "4.0", - "topologies": [ - "replicaset" - ] - }, - { - "minServerVersion": "4.1.7", - "topologies": [ - "sharded" - ] - } - ], "operations": [ { "name": "failPoint", diff --git a/source/retryable-writes/tests/unified/bulkWrite-serverErrors.yml b/source/retryable-writes/tests/unified/bulkWrite-serverErrors.yml index dc664ab76b..7d1375793e 100644 --- a/source/retryable-writes/tests/unified/bulkWrite-serverErrors.yml +++ b/source/retryable-writes/tests/unified/bulkWrite-serverErrors.yml @@ -3,8 +3,10 @@ description: "retryable-writes bulkWrite serverErrors" schemaVersion: "1.0" runOnRequirements: - - minServerVersion: "3.6" + - minServerVersion: "4.0" topologies: [ replicaset ] + - minServerVersion: "4.1.7" + topologies: [ sharded ] createEntities: - client: @@ -29,11 +31,6 @@ initialData: tests: - description: "BulkWrite succeeds after retryable writeConcernError in first batch" - runOnRequirements: - - minServerVersion: "4.0" - topologies: [ replicaset ] - - minServerVersion: "4.1.7" - topologies: [ sharded ] operations: - name: failPoint object: testRunner diff --git a/source/retryable-writes/tests/unified/insertOne-serverErrors.json b/source/retryable-writes/tests/unified/insertOne-serverErrors.json index a87f451695..aef30fda2e 100644 --- a/source/retryable-writes/tests/unified/insertOne-serverErrors.json +++ b/source/retryable-writes/tests/unified/insertOne-serverErrors.json @@ -3,10 +3,16 @@ "schemaVersion": "1.0", "runOnRequirements": [ { - "minServerVersion": "3.6", + "minServerVersion": "4.0", "topologies": [ "replicaset" ] + }, + { + "minServerVersion": "4.1.7", + "topologies": [ + "sharded" + ] } ], "createEntities": [ @@ -53,20 +59,6 @@ "tests": [ { "description": "InsertOne succeeds after retryable writeConcernError", - "runOnRequirements": [ - { - "minServerVersion": "4.0", - "topologies": [ - "replicaset" - ] - }, - { - "minServerVersion": "4.1.7", - "topologies": [ - "sharded" - ] - } - ], "operations": [ { "name": "failPoint", diff --git a/source/retryable-writes/tests/unified/insertOne-serverErrors.yml b/source/retryable-writes/tests/unified/insertOne-serverErrors.yml index 689328818b..231569fb0d 100644 --- a/source/retryable-writes/tests/unified/insertOne-serverErrors.yml +++ b/source/retryable-writes/tests/unified/insertOne-serverErrors.yml @@ -3,8 +3,10 @@ description: "retryable-writes insertOne serverErrors" schemaVersion: "1.0" runOnRequirements: - - minServerVersion: "3.6" + - minServerVersion: "4.0" topologies: [ replicaset ] + - minServerVersion: "4.1.7" + topologies: [ sharded ] createEntities: - client: @@ -29,11 +31,6 @@ initialData: tests: - description: "InsertOne succeeds after retryable writeConcernError" - runOnRequirements: - - minServerVersion: "4.0" - topologies: [ replicaset ] - - minServerVersion: "4.1.7" - topologies: [ sharded ] operations: - name: failPoint object: testRunner diff --git a/source/unified-test-format/tests/valid-pass/poc-retryable-writes.json b/source/unified-test-format/tests/valid-pass/poc-retryable-writes.json index da72b7f277..f9aa164bcc 100644 --- a/source/unified-test-format/tests/valid-pass/poc-retryable-writes.json +++ b/source/unified-test-format/tests/valid-pass/poc-retryable-writes.json @@ -1,14 +1,6 @@ { "description": "poc-retryable-writes", "schemaVersion": "1.0", - "runOnRequirements": [ - { - "minServerVersion": "3.6", - "topologies": [ - "replicaset" - ] - } - ], "createEntities": [ { "client": { @@ -79,6 +71,14 @@ "tests": [ { "description": "FindOneAndUpdate is committed on first attempt", + "runOnRequirements": [ + { + "minServerVersion": "3.6", + "topologies": [ + "replicaset" + ] + } + ], "operations": [ { "name": "failPoint", @@ -132,6 +132,14 @@ }, { "description": "FindOneAndUpdate is not committed on first attempt", + "runOnRequirements": [ + { + "minServerVersion": "3.6", + "topologies": [ + "replicaset" + ] + } + ], "operations": [ { "name": "failPoint", @@ -188,6 +196,14 @@ }, { "description": "FindOneAndUpdate is never committed", + "runOnRequirements": [ + { + "minServerVersion": "3.6", + "topologies": [ + "replicaset" + ] + } + ], "operations": [ { "name": "failPoint", @@ -433,6 +449,9 @@ "failCommands": [ "insert" ], + "errorLabels": [ + "RetryableWriteError" + ], "writeConcernError": { "code": 91, "errmsg": "Replication is being shut down" diff --git a/source/unified-test-format/tests/valid-pass/poc-retryable-writes.yml b/source/unified-test-format/tests/valid-pass/poc-retryable-writes.yml index 012c41a4ba..258043764a 100644 --- a/source/unified-test-format/tests/valid-pass/poc-retryable-writes.yml +++ b/source/unified-test-format/tests/valid-pass/poc-retryable-writes.yml @@ -2,10 +2,6 @@ description: "poc-retryable-writes" schemaVersion: "1.0" -runOnRequirements: - - minServerVersion: "3.6" - topologies: [ replicaset ] - createEntities: - client: id: &client0 client0 @@ -42,6 +38,9 @@ initialData: tests: - description: "FindOneAndUpdate is committed on first attempt" + runOnRequirements: &onPrimaryTransactionalWrite_requirements + - minServerVersion: "3.6" + topologies: [ replicaset ] operations: - name: failPoint object: testRunner @@ -65,6 +64,7 @@ tests: - { _id: 2, x: 22 } - description: "FindOneAndUpdate is not committed on first attempt" + runOnRequirements: *onPrimaryTransactionalWrite_requirements operations: - name: failPoint object: testRunner @@ -89,6 +89,7 @@ tests: - { _id: 2, x: 22 } - description: "FindOneAndUpdate is never committed" + runOnRequirements: *onPrimaryTransactionalWrite_requirements operations: - name: failPoint object: testRunner @@ -190,6 +191,7 @@ tests: mode: { times: 2 } data: failCommands: [ insert ] + errorLabels: [ RetryableWriteError ] writeConcernError: code: 91 # ShutdownInProgress errmsg: "Replication is being shut down"