1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
#hello Test SDAM error handling.
runOn:
# failCommand appName requirements
- minServerVersion: "4.9"
database_name: &database_name "sdam-tests"
collection_name: &collection_name "hello-network-error"
data: []
tests:
- description: Network error on Monitor handshake
# Configure the initial handshake to fail with a network error.
# Use times: 2 so that the RTT hello fails as well.
failPoint:
configureFailPoint: failCommand
mode: { times: 2 }
data:
failCommands: ["hello", "isMaster"]
appName: networkErrorHandshakeTest
closeConnection: true
clientOptions:
retryWrites: false
connectTimeoutMS: 250
heartbeatFrequencyMS: 500
appname: networkErrorHandshakeTest
operations:
# The network error on the initial handshake should mark the server
# Unknown (emitting a ServerDescriptionChangedEvent) and clear the pool.
- name: waitForEvent
object: testRunner
arguments:
event: ServerMarkedUnknownEvent
count: 1
# Perform an operation to ensure the node is discovered.
- name: insertMany
object: collection
arguments:
documents:
- _id: 1
- _id: 2
# We cannot assert the server was marked Unknown and pool was cleared an
# exact number of times because the RTT hello may or may not have
# triggered this failpoint as well.
# - name: assertEventCount
# object: testRunner
# arguments:
# event: ServerMarkedUnknownEvent
# count: 1
# - name: assertEventCount
# object: testRunner
# arguments:
# event: PoolClearedEvent
# count: 1
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
- _id: 2
command_name: insert
database_name: *database_name
outcome:
collection:
data:
- {_id: 1}
- {_id: 2}
- description: Network error on Monitor check
clientOptions:
retryWrites: false
connectTimeoutMS: 250
heartbeatFrequencyMS: 500
appname: networkErrorCheckTest
operations:
# Perform an operation to ensure the node is discovered.
- name: insertMany
object: collection
arguments:
documents:
- _id: 1
- _id: 2
# Configure the next streaming hello check to fail with a non-timeout
# network error. Use times: 2 to ensure that the the Monitor check fails
# since the RTT hello may trigger this failpoint as well.
- name: configureFailPoint
object: testRunner
arguments:
failPoint:
configureFailPoint: failCommand
mode: { times: 2 }
data:
failCommands: ["hello", "isMaster"]
appName: networkErrorCheckTest
closeConnection: true
# The network error on the next check should mark the server Unknown and
# clear the pool.
- name: waitForEvent
object: testRunner
arguments:
event: ServerMarkedUnknownEvent
count: 1
- name: waitForEvent
object: testRunner
arguments:
event: PoolClearedEvent
count: 1
# Perform an operation to ensure the node is rediscovered.
- name: insertMany
object: collection
arguments:
documents:
- _id: 3
- _id: 4
# We cannot assert the server was marked Unknown and pool was cleared an
# exact number of times because the RTT hello may or may not have
# triggered this failpoint as well.
# - name: assertEventCount
# object: testRunner
# arguments:
# event: ServerMarkedUnknownEvent
# count: 1
# - name: assertEventCount
# object: testRunner
# arguments:
# event: PoolClearedEvent
# count: 1
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
- _id: 2
command_name: insert
database_name: *database_name
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 3
- _id: 4
command_name: insert
database_name: *database_name
outcome:
collection:
data:
- {_id: 1}
- {_id: 2}
- {_id: 3}
- {_id: 4}
|