1{ 2 "runOn": [ 3 { 4 "minServerVersion": "4.0", 5 "topology": [ 6 "single", 7 "replicaset" 8 ] 9 }, 10 { 11 "minServerVersion": "4.1.7", 12 "topology": [ 13 "sharded" 14 ] 15 } 16 ], 17 "database_name": "retryable-reads-tests", 18 "collection_name": "coll", 19 "data": [], 20 "tests": [ 21 { 22 "description": "ListIndexes succeeds after InterruptedAtShutdown", 23 "failPoint": { 24 "configureFailPoint": "failCommand", 25 "mode": { 26 "times": 1 27 }, 28 "data": { 29 "failCommands": [ 30 "listIndexes" 31 ], 32 "errorCode": 11600 33 } 34 }, 35 "operations": [ 36 { 37 "name": "listIndexes", 38 "object": "collection" 39 } 40 ], 41 "expectations": [ 42 { 43 "command_started_event": { 44 "command": { 45 "listIndexes": "coll" 46 }, 47 "database_name": "retryable-reads-tests" 48 } 49 }, 50 { 51 "command_started_event": { 52 "command": { 53 "listIndexes": "coll" 54 }, 55 "database_name": "retryable-reads-tests" 56 } 57 } 58 ] 59 }, 60 { 61 "description": "ListIndexes succeeds after InterruptedDueToReplStateChange", 62 "failPoint": { 63 "configureFailPoint": "failCommand", 64 "mode": { 65 "times": 1 66 }, 67 "data": { 68 "failCommands": [ 69 "listIndexes" 70 ], 71 "errorCode": 11602 72 } 73 }, 74 "operations": [ 75 { 76 "name": "listIndexes", 77 "object": "collection" 78 } 79 ], 80 "expectations": [ 81 { 82 "command_started_event": { 83 "command": { 84 "listIndexes": "coll" 85 }, 86 "database_name": "retryable-reads-tests" 87 } 88 }, 89 { 90 "command_started_event": { 91 "command": { 92 "listIndexes": "coll" 93 }, 94 "database_name": "retryable-reads-tests" 95 } 96 } 97 ] 98 }, 99 { 100 "description": "ListIndexes succeeds after NotMaster", 101 "failPoint": { 102 "configureFailPoint": "failCommand", 103 "mode": { 104 "times": 1 105 }, 106 "data": { 107 "failCommands": [ 108 "listIndexes" 109 ], 110 "errorCode": 10107 111 } 112 }, 113 "operations": [ 114 { 115 "name": "listIndexes", 116 "object": "collection" 117 } 118 ], 119 "expectations": [ 120 { 121 "command_started_event": { 122 "command": { 123 "listIndexes": "coll" 124 }, 125 "database_name": "retryable-reads-tests" 126 } 127 }, 128 { 129 "command_started_event": { 130 "command": { 131 "listIndexes": "coll" 132 }, 133 "database_name": "retryable-reads-tests" 134 } 135 } 136 ] 137 }, 138 { 139 "description": "ListIndexes succeeds after NotMasterNoSlaveOk", 140 "failPoint": { 141 "configureFailPoint": "failCommand", 142 "mode": { 143 "times": 1 144 }, 145 "data": { 146 "failCommands": [ 147 "listIndexes" 148 ], 149 "errorCode": 13435 150 } 151 }, 152 "operations": [ 153 { 154 "name": "listIndexes", 155 "object": "collection" 156 } 157 ], 158 "expectations": [ 159 { 160 "command_started_event": { 161 "command": { 162 "listIndexes": "coll" 163 }, 164 "database_name": "retryable-reads-tests" 165 } 166 }, 167 { 168 "command_started_event": { 169 "command": { 170 "listIndexes": "coll" 171 }, 172 "database_name": "retryable-reads-tests" 173 } 174 } 175 ] 176 }, 177 { 178 "description": "ListIndexes succeeds after NotMasterOrSecondary", 179 "failPoint": { 180 "configureFailPoint": "failCommand", 181 "mode": { 182 "times": 1 183 }, 184 "data": { 185 "failCommands": [ 186 "listIndexes" 187 ], 188 "errorCode": 13436 189 } 190 }, 191 "operations": [ 192 { 193 "name": "listIndexes", 194 "object": "collection" 195 } 196 ], 197 "expectations": [ 198 { 199 "command_started_event": { 200 "command": { 201 "listIndexes": "coll" 202 }, 203 "database_name": "retryable-reads-tests" 204 } 205 }, 206 { 207 "command_started_event": { 208 "command": { 209 "listIndexes": "coll" 210 }, 211 "database_name": "retryable-reads-tests" 212 } 213 } 214 ] 215 }, 216 { 217 "description": "ListIndexes succeeds after PrimarySteppedDown", 218 "failPoint": { 219 "configureFailPoint": "failCommand", 220 "mode": { 221 "times": 1 222 }, 223 "data": { 224 "failCommands": [ 225 "listIndexes" 226 ], 227 "errorCode": 189 228 } 229 }, 230 "operations": [ 231 { 232 "name": "listIndexes", 233 "object": "collection" 234 } 235 ], 236 "expectations": [ 237 { 238 "command_started_event": { 239 "command": { 240 "listIndexes": "coll" 241 }, 242 "database_name": "retryable-reads-tests" 243 } 244 }, 245 { 246 "command_started_event": { 247 "command": { 248 "listIndexes": "coll" 249 }, 250 "database_name": "retryable-reads-tests" 251 } 252 } 253 ] 254 }, 255 { 256 "description": "ListIndexes succeeds after ShutdownInProgress", 257 "failPoint": { 258 "configureFailPoint": "failCommand", 259 "mode": { 260 "times": 1 261 }, 262 "data": { 263 "failCommands": [ 264 "listIndexes" 265 ], 266 "errorCode": 91 267 } 268 }, 269 "operations": [ 270 { 271 "name": "listIndexes", 272 "object": "collection" 273 } 274 ], 275 "expectations": [ 276 { 277 "command_started_event": { 278 "command": { 279 "listIndexes": "coll" 280 }, 281 "database_name": "retryable-reads-tests" 282 } 283 }, 284 { 285 "command_started_event": { 286 "command": { 287 "listIndexes": "coll" 288 }, 289 "database_name": "retryable-reads-tests" 290 } 291 } 292 ] 293 }, 294 { 295 "description": "ListIndexes succeeds after HostNotFound", 296 "failPoint": { 297 "configureFailPoint": "failCommand", 298 "mode": { 299 "times": 1 300 }, 301 "data": { 302 "failCommands": [ 303 "listIndexes" 304 ], 305 "errorCode": 7 306 } 307 }, 308 "operations": [ 309 { 310 "name": "listIndexes", 311 "object": "collection" 312 } 313 ], 314 "expectations": [ 315 { 316 "command_started_event": { 317 "command": { 318 "listIndexes": "coll" 319 }, 320 "database_name": "retryable-reads-tests" 321 } 322 }, 323 { 324 "command_started_event": { 325 "command": { 326 "listIndexes": "coll" 327 }, 328 "database_name": "retryable-reads-tests" 329 } 330 } 331 ] 332 }, 333 { 334 "description": "ListIndexes succeeds after HostUnreachable", 335 "failPoint": { 336 "configureFailPoint": "failCommand", 337 "mode": { 338 "times": 1 339 }, 340 "data": { 341 "failCommands": [ 342 "listIndexes" 343 ], 344 "errorCode": 6 345 } 346 }, 347 "operations": [ 348 { 349 "name": "listIndexes", 350 "object": "collection" 351 } 352 ], 353 "expectations": [ 354 { 355 "command_started_event": { 356 "command": { 357 "listIndexes": "coll" 358 }, 359 "database_name": "retryable-reads-tests" 360 } 361 }, 362 { 363 "command_started_event": { 364 "command": { 365 "listIndexes": "coll" 366 }, 367 "database_name": "retryable-reads-tests" 368 } 369 } 370 ] 371 }, 372 { 373 "description": "ListIndexes succeeds after NetworkTimeout", 374 "failPoint": { 375 "configureFailPoint": "failCommand", 376 "mode": { 377 "times": 1 378 }, 379 "data": { 380 "failCommands": [ 381 "listIndexes" 382 ], 383 "errorCode": 89 384 } 385 }, 386 "operations": [ 387 { 388 "name": "listIndexes", 389 "object": "collection" 390 } 391 ], 392 "expectations": [ 393 { 394 "command_started_event": { 395 "command": { 396 "listIndexes": "coll" 397 }, 398 "database_name": "retryable-reads-tests" 399 } 400 }, 401 { 402 "command_started_event": { 403 "command": { 404 "listIndexes": "coll" 405 }, 406 "database_name": "retryable-reads-tests" 407 } 408 } 409 ] 410 }, 411 { 412 "description": "ListIndexes succeeds after SocketException", 413 "failPoint": { 414 "configureFailPoint": "failCommand", 415 "mode": { 416 "times": 1 417 }, 418 "data": { 419 "failCommands": [ 420 "listIndexes" 421 ], 422 "errorCode": 9001 423 } 424 }, 425 "operations": [ 426 { 427 "name": "listIndexes", 428 "object": "collection" 429 } 430 ], 431 "expectations": [ 432 { 433 "command_started_event": { 434 "command": { 435 "listIndexes": "coll" 436 }, 437 "database_name": "retryable-reads-tests" 438 } 439 }, 440 { 441 "command_started_event": { 442 "command": { 443 "listIndexes": "coll" 444 }, 445 "database_name": "retryable-reads-tests" 446 } 447 } 448 ] 449 }, 450 { 451 "description": "ListIndexes fails after two NotMaster errors", 452 "failPoint": { 453 "configureFailPoint": "failCommand", 454 "mode": { 455 "times": 2 456 }, 457 "data": { 458 "failCommands": [ 459 "listIndexes" 460 ], 461 "errorCode": 10107 462 } 463 }, 464 "operations": [ 465 { 466 "name": "listIndexes", 467 "object": "collection", 468 "error": true 469 } 470 ], 471 "expectations": [ 472 { 473 "command_started_event": { 474 "command": { 475 "listIndexes": "coll" 476 }, 477 "database_name": "retryable-reads-tests" 478 } 479 }, 480 { 481 "command_started_event": { 482 "command": { 483 "listIndexes": "coll" 484 }, 485 "database_name": "retryable-reads-tests" 486 } 487 } 488 ] 489 }, 490 { 491 "description": "ListIndexes fails after NotMaster when retryReads is false", 492 "clientOptions": { 493 "retryReads": false 494 }, 495 "failPoint": { 496 "configureFailPoint": "failCommand", 497 "mode": { 498 "times": 1 499 }, 500 "data": { 501 "failCommands": [ 502 "listIndexes" 503 ], 504 "errorCode": 10107 505 } 506 }, 507 "operations": [ 508 { 509 "name": "listIndexes", 510 "object": "collection", 511 "error": true 512 } 513 ], 514 "expectations": [ 515 { 516 "command_started_event": { 517 "command": { 518 "listIndexes": "coll" 519 }, 520 "database_name": "retryable-reads-tests" 521 } 522 } 523 ] 524 } 525 ] 526} 527