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