126 lines
3.7 KiB
YAML
126 lines
3.7 KiB
YAML
---
|
|
description: minPoolSize-error
|
|
|
|
schemaVersion: "1.4"
|
|
|
|
runOnRequirements:
|
|
# failCommand appName requirements
|
|
- minServerVersion: "4.9"
|
|
serverless: forbid
|
|
topologies:
|
|
- single
|
|
|
|
createEntities:
|
|
- client:
|
|
id: &setupClient setupClient
|
|
useMultipleMongoses: false
|
|
|
|
initialData: &initialData
|
|
- collectionName: &collectionName sdam-minPoolSize-error
|
|
databaseName: &databaseName sdam-tests
|
|
documents: []
|
|
|
|
tests:
|
|
- description: Network error on minPoolSize background creation
|
|
operations:
|
|
# Configure the initial monitor handshake to succeed but the
|
|
# first or second background minPoolSize establishments to fail.
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *setupClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode:
|
|
skip: 3
|
|
data:
|
|
failCommands:
|
|
- hello
|
|
- isMaster
|
|
appName: SDAMminPoolSizeError
|
|
closeConnection: true
|
|
- name: createEntities
|
|
object: testRunner
|
|
arguments:
|
|
entities:
|
|
- client:
|
|
id: &client client
|
|
useMultipleMongoses: false
|
|
observeEvents:
|
|
- serverDescriptionChangedEvent
|
|
- poolClearedEvent
|
|
- poolReadyEvent
|
|
uriOptions:
|
|
heartbeatFrequencyMS: 10000
|
|
appname: SDAMminPoolSizeError
|
|
minPoolSize: 10
|
|
serverSelectionTimeoutMS: 1000
|
|
- database:
|
|
id: &database database
|
|
client: *client
|
|
databaseName: *databaseName
|
|
- collection:
|
|
id: &collection collection
|
|
database: *database
|
|
collectionName: *collectionName
|
|
# Wait for monitor to succeed handshake and mark the pool as ready.
|
|
- name: waitForEvent
|
|
object: testRunner
|
|
arguments:
|
|
client: *client
|
|
event:
|
|
poolReadyEvent: {}
|
|
count: 1
|
|
# Background connection establishment ensuring minPoolSize should fail,
|
|
# causing the pool to be cleared.
|
|
- name: waitForEvent
|
|
object: testRunner
|
|
arguments:
|
|
client: *client
|
|
event:
|
|
poolClearedEvent: {}
|
|
count: 1
|
|
# The server should be marked as Unknown as part of this.
|
|
- name: waitForEvent
|
|
object: testRunner
|
|
arguments:
|
|
client: *client
|
|
event:
|
|
serverDescriptionChangedEvent:
|
|
newDescription:
|
|
type: Unknown
|
|
count: 1
|
|
# Executing a command should fail server selection due to not being able
|
|
# to find the primary.
|
|
- name: runCommand
|
|
object: *database
|
|
arguments:
|
|
command:
|
|
ping: {}
|
|
commandName: ping
|
|
expectError:
|
|
isError: true
|
|
# Disable the failpoint, allowing the monitor to discover the primary again.
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: "off"
|
|
client: *setupClient
|
|
# Perform an operation to ensure the node is discovered.
|
|
- name: runCommand
|
|
object: *database
|
|
arguments:
|
|
command:
|
|
ping: 1
|
|
commandName: ping
|
|
# Assert that the monitor discovered the primary and mark the pool as ready again.
|
|
- name: assertEventCount
|
|
object: testRunner
|
|
arguments:
|
|
client: *client
|
|
event:
|
|
poolReadyEvent: {}
|
|
count: 2
|