From e4d3345ee1a1e45c8c84abc47e1d2dfbd475b4e1 Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Mon, 18 Dec 2023 22:54:35 -0500 Subject: [PATCH 1/2] DRIVERS-2799: Use more permissive top-level runOnRequirements This avoids unintentionally skipping tests. Previously, some tests were never run on sharded clusters. --- .../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 | 32 ++++++++++++++----- .../tests/valid-pass/poc-retryable-writes.yml | 9 +++--- 6 files changed, 49 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..f4ae38d01a 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", 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..ce4ef94958 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 From e2add3af7d59ee33827bcd9840e63361d0cda79f Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Mon, 18 Dec 2023 22:58:23 -0500 Subject: [PATCH 2/2] 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/valid-pass/poc-retryable-writes.json | 3 +++ .../tests/valid-pass/poc-retryable-writes.yml | 1 + 2 files changed, 4 insertions(+) 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 f4ae38d01a..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 @@ -449,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 ce4ef94958..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 @@ -191,6 +191,7 @@ tests: mode: { times: 2 } data: failCommands: [ insert ] + errorLabels: [ RetryableWriteError ] writeConcernError: code: 91 # ShutdownInProgress errmsg: "Replication is being shut down"