diff --git a/test/spec/server-discovery-and-monitoring/unified/backpressure-server-description-unchanged-on-min-pool-size-population-error.json b/test/spec/server-discovery-and-monitoring/unified/backpressure-server-description-unchanged-on-min-pool-size-population-error.json index 35a49c1323..f0597124b7 100644 --- a/test/spec/server-discovery-and-monitoring/unified/backpressure-server-description-unchanged-on-min-pool-size-population-error.json +++ b/test/spec/server-discovery-and-monitoring/unified/backpressure-server-description-unchanged-on-min-pool-size-population-error.json @@ -22,6 +22,27 @@ { "description": "the server description is not changed on handshake error during minPoolSize population", "operations": [ + { + "name": "failPoint", + "object": "testRunner", + "arguments": { + "client": "setupClient", + "failPoint": { + "configureFailPoint": "failCommand", + "mode": { + "skip": 1 + }, + "data": { + "failCommands": [ + "hello", + "isMaster" + ], + "appName": "authErrorTest", + "closeConnection": true + } + } + } + }, { "name": "createEntities", "object": "testRunner", @@ -46,27 +67,6 @@ ] } }, - { - "name": "failPoint", - "object": "testRunner", - "arguments": { - "client": "setupClient", - "failPoint": { - "configureFailPoint": "failCommand", - "mode": { - "skip": 1 - }, - "data": { - "failCommands": [ - "hello", - "isMaster" - ], - "appName": "authErrorTest", - "closeConnection": true - } - } - } - }, { "name": "waitForEvent", "object": "testRunner", diff --git a/test/spec/server-discovery-and-monitoring/unified/backpressure-server-description-unchanged-on-min-pool-size-population-error.yml b/test/spec/server-discovery-and-monitoring/unified/backpressure-server-description-unchanged-on-min-pool-size-population-error.yml index dd5029097d..e1d98dae20 100644 --- a/test/spec/server-discovery-and-monitoring/unified/backpressure-server-description-unchanged-on-min-pool-size-population-error.yml +++ b/test/spec/server-discovery-and-monitoring/unified/backpressure-server-description-unchanged-on-min-pool-size-population-error.yml @@ -12,6 +12,20 @@ createEntities: tests: - description: the server description is not changed on handshake error during minPoolSize population operations: + - name: failPoint + object: testRunner + arguments: + client: setupClient + failPoint: + configureFailPoint: failCommand + mode: + skip: 1 + data: + failCommands: + - hello + - isMaster + appName: authErrorTest + closeConnection: true - name: createEntities object: testRunner arguments: @@ -27,20 +41,6 @@ tests: maxConnecting: 1 serverMonitoringMode: poll heartbeatFrequencyMS: 1000000 - - name: failPoint - object: testRunner - arguments: - client: setupClient - failPoint: - configureFailPoint: failCommand - mode: - skip: 1 - data: - failCommands: - - hello - - isMaster - appName: authErrorTest - closeConnection: true - name: waitForEvent object: testRunner arguments: diff --git a/test/spec/server-discovery-and-monitoring/unified/minPoolSize-error.json b/test/spec/server-discovery-and-monitoring/unified/minPoolSize-error.json index 7e294baf66..0ce2bdd6c1 100644 --- a/test/spec/server-discovery-and-monitoring/unified/minPoolSize-error.json +++ b/test/spec/server-discovery-and-monitoring/unified/minPoolSize-error.json @@ -3,7 +3,7 @@ "schemaVersion": "1.4", "runOnRequirements": [ { - "minServerVersion": "4.9", + "minServerVersion": "4.4.7", "serverless": "forbid", "topologies": [ "single" @@ -27,7 +27,7 @@ ], "tests": [ { - "description": "Network error on minPoolSize background creation", + "description": "Server error on minPoolSize background creation", "operations": [ { "name": "failPoint", @@ -45,7 +45,7 @@ "isMaster" ], "appName": "SDAMminPoolSizeError", - "closeConnection": true + "errorCode": 91 } } } @@ -68,6 +68,7 @@ "heartbeatFrequencyMS": 10000, "appname": "SDAMminPoolSizeError", "minPoolSize": 10, + "serverMonitoringMode": "poll", "serverSelectionTimeoutMS": 1000 } } diff --git a/test/spec/server-discovery-and-monitoring/unified/minPoolSize-error.yml b/test/spec/server-discovery-and-monitoring/unified/minPoolSize-error.yml index 7d76174694..1bbc0c376e 100644 --- a/test/spec/server-discovery-and-monitoring/unified/minPoolSize-error.yml +++ b/test/spec/server-discovery-and-monitoring/unified/minPoolSize-error.yml @@ -4,8 +4,8 @@ description: minPoolSize-error schemaVersion: "1.4" runOnRequirements: - # failCommand appName requirements - - minServerVersion: "4.9" + # Require SERVER-49336 for failCommand + appName on the initial handshake. + - minServerVersion: "4.4.7" serverless: forbid topologies: - single @@ -21,7 +21,7 @@ initialData: &initialData documents: [] tests: - - description: Network error on minPoolSize background creation + - description: Server error on minPoolSize background creation operations: # Configure the initial monitor handshake to succeed but the # first or second background minPoolSize establishments to fail. @@ -38,7 +38,7 @@ tests: - hello - isMaster appName: SDAMminPoolSizeError - closeConnection: true + errorCode: 91 - name: createEntities object: testRunner arguments: @@ -54,6 +54,7 @@ tests: heartbeatFrequencyMS: 10000 appname: SDAMminPoolSizeError minPoolSize: 10 + serverMonitoringMode: poll serverSelectionTimeoutMS: 1000 - database: id: &database database diff --git a/test/spec/server-discovery-and-monitoring/unified/pool-clear-min-pool-size-error.json b/test/spec/server-discovery-and-monitoring/unified/pool-clear-min-pool-size-error.json index e36dd7aa61..a0139bd033 100644 --- a/test/spec/server-discovery-and-monitoring/unified/pool-clear-min-pool-size-error.json +++ b/test/spec/server-discovery-and-monitoring/unified/pool-clear-min-pool-size-error.json @@ -56,7 +56,7 @@ "client": { "id": "client", "observeEvents": [ - "connectionCreatedEvent", + "poolReadyEvent", "poolClearedEvent", "connectionClosedEvent" ], @@ -69,6 +69,17 @@ ] } }, + { + "name": "waitForEvent", + "object": "testRunner", + "arguments": { + "client": "client", + "event": { + "poolReadyEvent": {} + }, + "count": 1 + } + }, { "name": "waitForEvent", "object": "testRunner", @@ -91,22 +102,89 @@ "count": 1 } } - ], - "expectEvents": [ + ] + }, + { + "description": "Pool is not cleared on handshake error during minPoolSize population", + "operations": [ + { + "name": "failPoint", + "object": "testRunner", + "arguments": { + "client": "setupClient", + "failPoint": { + "configureFailPoint": "failCommand", + "mode": { + "skip": 1 + }, + "data": { + "failCommands": [ + "hello", + "isMaster" + ], + "appName": "authErrorTest", + "closeConnection": true + } + } + } + }, + { + "name": "createEntities", + "object": "testRunner", + "arguments": { + "entities": [ + { + "client": { + "id": "client", + "observeEvents": [ + "poolReadyEvent", + "poolClearedEvent", + "connectionClosedEvent" + ], + "uriOptions": { + "appname": "authErrorTest", + "minPoolSize": 5, + "maxConnecting": 1, + "serverMonitoringMode": "poll", + "heartbeatFrequencyMS": 1000000 + } + } + } + ] + } + }, { - "client": "client", - "eventType": "cmap", - "events": [ - { - "connectionCreatedEvent": {} + "name": "waitForEvent", + "object": "testRunner", + "arguments": { + "client": "client", + "event": { + "poolReadyEvent": {} }, - { + "count": 1 + } + }, + { + "name": "waitForEvent", + "object": "testRunner", + "arguments": { + "client": "client", + "event": { + "connectionClosedEvent": {} + }, + "count": 1 + } + }, + { + "name": "assertEventCount", + "object": "testRunner", + "arguments": { + "client": "client", + "event": { "poolClearedEvent": {} }, - { - "connectionClosedEvent": {} - } - ] + "count": 0 + } } ] } diff --git a/test/spec/server-discovery-and-monitoring/unified/pool-clear-min-pool-size-error.yml b/test/spec/server-discovery-and-monitoring/unified/pool-clear-min-pool-size-error.yml index 8b58f672d3..2c8e32a410 100644 --- a/test/spec/server-discovery-and-monitoring/unified/pool-clear-min-pool-size-error.yml +++ b/test/spec/server-discovery-and-monitoring/unified/pool-clear-min-pool-size-error.yml @@ -40,12 +40,21 @@ tests: - client: id: &client client observeEvents: - - connectionCreatedEvent + - poolReadyEvent - poolClearedEvent - connectionClosedEvent uriOptions: appname: authErrorTest minPoolSize: 1 + + - name: waitForEvent + object: testRunner + arguments: + client: *client + event: + poolReadyEvent: {} + count: 1 + - name: waitForEvent object: testRunner arguments: @@ -53,6 +62,7 @@ tests: event: poolClearedEvent: {} count: 1 + - name: waitForEvent object: testRunner arguments: @@ -60,16 +70,24 @@ tests: event: connectionClosedEvent: {} count: 1 - expectEvents: - - client: *client - eventType: cmap - events: - - connectionCreatedEvent: {} - - poolClearedEvent: {} - - connectionClosedEvent: {} - description: Pool is not cleared on handshake error during minPoolSize population operations: + - name: failPoint + object: testRunner + arguments: + client: *setupClient + failPoint: + configureFailPoint: failCommand + mode: + skip: 1 # skip one to let monitoring thread to move pool to ready state + data: + failCommands: + - hello + - isMaster + appName: authErrorTest + closeConnection: true + - name: createEntities object: testRunner arguments: @@ -77,11 +95,9 @@ tests: - client: id: &client client observeEvents: - - topologyDescriptionChangedEvent - - connectionCreatedEvent + - poolReadyEvent - poolClearedEvent - connectionClosedEvent - - connectionReadyEvent uriOptions: appname: authErrorTest minPoolSize: 5 @@ -96,28 +112,9 @@ tests: arguments: client: *client event: - topologyDescriptionChangedEvent: - previousDescription: - type: "Unknown" - newDescription: - type: "Single" + poolReadyEvent: {} count: 1 - - name: failPoint - object: testRunner - arguments: - client: *setupClient - failPoint: - configureFailPoint: failCommand - mode: - times: 1 - data: - failCommands: - - hello - - isMaster - appName: authErrorTest - closeConnection: true - - name: waitForEvent object: testRunner arguments: @@ -125,11 +122,11 @@ tests: event: connectionClosedEvent: {} count: 1 - expectEvents: - - client: *client - eventType: cmap - events: - - connectionCreatedEvent: {} - - connectionReadyEvent: {} - - connectionCreatedEvent: {} - - connectionClosedEvent: {} + + - name: assertEventCount + object: testRunner + arguments: + client: *client + event: + poolClearedEvent: {} + count: 0