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 "load-balanced"
15 ]
16 }
17 ],
18 "database_name": "retryable-reads-tests",
19 "bucket_name": "fs",
20 "data": {
21 "fs.files": [
22 {
23 "_id": {
24 "$oid": "000000000000000000000001"
25 },
26 "length": 1,
27 "chunkSize": 4,
28 "uploadDate": {
29 "$date": "1970-01-01T00:00:00.000Z"
30 },
31 "filename": "abc",
32 "metadata": {}
33 }
34 ],
35 "fs.chunks": [
36 {
37 "_id": {
38 "$oid": "000000000000000000000002"
39 },
40 "files_id": {
41 "$oid": "000000000000000000000001"
42 },
43 "n": 0,
44 "data": {
45 "$binary": {
46 "base64": "EQ==",
47 "subType": "00"
48 }
49 }
50 }
51 ]
52 },
53 "tests": [
54 {
55 "description": "DownloadByName succeeds after InterruptedAtShutdown",
56 "failPoint": {
57 "configureFailPoint": "failCommand",
58 "mode": {
59 "times": 1
60 },
61 "data": {
62 "failCommands": [
63 "find"
64 ],
65 "errorCode": 11600
66 }
67 },
68 "operations": [
69 {
70 "name": "download_by_name",
71 "object": "gridfsbucket",
72 "arguments": {
73 "filename": "abc"
74 }
75 }
76 ],
77 "expectations": [
78 {
79 "command_started_event": {
80 "command": {
81 "find": "fs.files",
82 "filter": {
83 "filename": "abc"
84 }
85 },
86 "database_name": "retryable-reads-tests"
87 }
88 },
89 {
90 "command_started_event": {
91 "command": {
92 "find": "fs.files",
93 "filter": {
94 "filename": "abc"
95 }
96 },
97 "database_name": "retryable-reads-tests"
98 }
99 },
100 {
101 "command_started_event": {
102 "command": {
103 "find": "fs.chunks",
104 "filter": {
105 "files_id": {
106 "$oid": "000000000000000000000001"
107 }
108 },
109 "sort": {
110 "n": 1
111 }
112 },
113 "database_name": "retryable-reads-tests"
114 }
115 }
116 ]
117 },
118 {
119 "description": "DownloadByName succeeds after InterruptedDueToReplStateChange",
120 "failPoint": {
121 "configureFailPoint": "failCommand",
122 "mode": {
123 "times": 1
124 },
125 "data": {
126 "failCommands": [
127 "find"
128 ],
129 "errorCode": 11602
130 }
131 },
132 "operations": [
133 {
134 "name": "download_by_name",
135 "object": "gridfsbucket",
136 "arguments": {
137 "filename": "abc"
138 }
139 }
140 ],
141 "expectations": [
142 {
143 "command_started_event": {
144 "command": {
145 "find": "fs.files",
146 "filter": {
147 "filename": "abc"
148 }
149 },
150 "database_name": "retryable-reads-tests"
151 }
152 },
153 {
154 "command_started_event": {
155 "command": {
156 "find": "fs.files",
157 "filter": {
158 "filename": "abc"
159 }
160 },
161 "database_name": "retryable-reads-tests"
162 }
163 },
164 {
165 "command_started_event": {
166 "command": {
167 "find": "fs.chunks",
168 "filter": {
169 "files_id": {
170 "$oid": "000000000000000000000001"
171 }
172 },
173 "sort": {
174 "n": 1
175 }
176 },
177 "database_name": "retryable-reads-tests"
178 }
179 }
180 ]
181 },
182 {
183 "description": "DownloadByName succeeds after NotWritablePrimary",
184 "failPoint": {
185 "configureFailPoint": "failCommand",
186 "mode": {
187 "times": 1
188 },
189 "data": {
190 "failCommands": [
191 "find"
192 ],
193 "errorCode": 10107
194 }
195 },
196 "operations": [
197 {
198 "name": "download_by_name",
199 "object": "gridfsbucket",
200 "arguments": {
201 "filename": "abc"
202 }
203 }
204 ],
205 "expectations": [
206 {
207 "command_started_event": {
208 "command": {
209 "find": "fs.files",
210 "filter": {
211 "filename": "abc"
212 }
213 },
214 "database_name": "retryable-reads-tests"
215 }
216 },
217 {
218 "command_started_event": {
219 "command": {
220 "find": "fs.files",
221 "filter": {
222 "filename": "abc"
223 }
224 },
225 "database_name": "retryable-reads-tests"
226 }
227 },
228 {
229 "command_started_event": {
230 "command": {
231 "find": "fs.chunks",
232 "filter": {
233 "files_id": {
234 "$oid": "000000000000000000000001"
235 }
236 },
237 "sort": {
238 "n": 1
239 }
240 },
241 "database_name": "retryable-reads-tests"
242 }
243 }
244 ]
245 },
246 {
247 "description": "DownloadByName succeeds after NotPrimaryNoSecondaryOk",
248 "failPoint": {
249 "configureFailPoint": "failCommand",
250 "mode": {
251 "times": 1
252 },
253 "data": {
254 "failCommands": [
255 "find"
256 ],
257 "errorCode": 13435
258 }
259 },
260 "operations": [
261 {
262 "name": "download_by_name",
263 "object": "gridfsbucket",
264 "arguments": {
265 "filename": "abc"
266 }
267 }
268 ],
269 "expectations": [
270 {
271 "command_started_event": {
272 "command": {
273 "find": "fs.files",
274 "filter": {
275 "filename": "abc"
276 }
277 },
278 "database_name": "retryable-reads-tests"
279 }
280 },
281 {
282 "command_started_event": {
283 "command": {
284 "find": "fs.files",
285 "filter": {
286 "filename": "abc"
287 }
288 },
289 "database_name": "retryable-reads-tests"
290 }
291 },
292 {
293 "command_started_event": {
294 "command": {
295 "find": "fs.chunks",
296 "filter": {
297 "files_id": {
298 "$oid": "000000000000000000000001"
299 }
300 },
301 "sort": {
302 "n": 1
303 }
304 },
305 "database_name": "retryable-reads-tests"
306 }
307 }
308 ]
309 },
310 {
311 "description": "DownloadByName succeeds after NotPrimaryOrSecondary",
312 "failPoint": {
313 "configureFailPoint": "failCommand",
314 "mode": {
315 "times": 1
316 },
317 "data": {
318 "failCommands": [
319 "find"
320 ],
321 "errorCode": 13436
322 }
323 },
324 "operations": [
325 {
326 "name": "download_by_name",
327 "object": "gridfsbucket",
328 "arguments": {
329 "filename": "abc"
330 }
331 }
332 ],
333 "expectations": [
334 {
335 "command_started_event": {
336 "command": {
337 "find": "fs.files",
338 "filter": {
339 "filename": "abc"
340 }
341 },
342 "database_name": "retryable-reads-tests"
343 }
344 },
345 {
346 "command_started_event": {
347 "command": {
348 "find": "fs.files",
349 "filter": {
350 "filename": "abc"
351 }
352 },
353 "database_name": "retryable-reads-tests"
354 }
355 },
356 {
357 "command_started_event": {
358 "command": {
359 "find": "fs.chunks",
360 "filter": {
361 "files_id": {
362 "$oid": "000000000000000000000001"
363 }
364 },
365 "sort": {
366 "n": 1
367 }
368 },
369 "database_name": "retryable-reads-tests"
370 }
371 }
372 ]
373 },
374 {
375 "description": "DownloadByName succeeds after PrimarySteppedDown",
376 "failPoint": {
377 "configureFailPoint": "failCommand",
378 "mode": {
379 "times": 1
380 },
381 "data": {
382 "failCommands": [
383 "find"
384 ],
385 "errorCode": 189
386 }
387 },
388 "operations": [
389 {
390 "name": "download_by_name",
391 "object": "gridfsbucket",
392 "arguments": {
393 "filename": "abc"
394 }
395 }
396 ],
397 "expectations": [
398 {
399 "command_started_event": {
400 "command": {
401 "find": "fs.files",
402 "filter": {
403 "filename": "abc"
404 }
405 },
406 "database_name": "retryable-reads-tests"
407 }
408 },
409 {
410 "command_started_event": {
411 "command": {
412 "find": "fs.files",
413 "filter": {
414 "filename": "abc"
415 }
416 },
417 "database_name": "retryable-reads-tests"
418 }
419 },
420 {
421 "command_started_event": {
422 "command": {
423 "find": "fs.chunks",
424 "filter": {
425 "files_id": {
426 "$oid": "000000000000000000000001"
427 }
428 },
429 "sort": {
430 "n": 1
431 }
432 },
433 "database_name": "retryable-reads-tests"
434 }
435 }
436 ]
437 },
438 {
439 "description": "DownloadByName succeeds after ShutdownInProgress",
440 "failPoint": {
441 "configureFailPoint": "failCommand",
442 "mode": {
443 "times": 1
444 },
445 "data": {
446 "failCommands": [
447 "find"
448 ],
449 "errorCode": 91
450 }
451 },
452 "operations": [
453 {
454 "name": "download_by_name",
455 "object": "gridfsbucket",
456 "arguments": {
457 "filename": "abc"
458 }
459 }
460 ],
461 "expectations": [
462 {
463 "command_started_event": {
464 "command": {
465 "find": "fs.files",
466 "filter": {
467 "filename": "abc"
468 }
469 },
470 "database_name": "retryable-reads-tests"
471 }
472 },
473 {
474 "command_started_event": {
475 "command": {
476 "find": "fs.files",
477 "filter": {
478 "filename": "abc"
479 }
480 },
481 "database_name": "retryable-reads-tests"
482 }
483 },
484 {
485 "command_started_event": {
486 "command": {
487 "find": "fs.chunks",
488 "filter": {
489 "files_id": {
490 "$oid": "000000000000000000000001"
491 }
492 },
493 "sort": {
494 "n": 1
495 }
496 },
497 "database_name": "retryable-reads-tests"
498 }
499 }
500 ]
501 },
502 {
503 "description": "DownloadByName succeeds after HostNotFound",
504 "failPoint": {
505 "configureFailPoint": "failCommand",
506 "mode": {
507 "times": 1
508 },
509 "data": {
510 "failCommands": [
511 "find"
512 ],
513 "errorCode": 7
514 }
515 },
516 "operations": [
517 {
518 "name": "download_by_name",
519 "object": "gridfsbucket",
520 "arguments": {
521 "filename": "abc"
522 }
523 }
524 ],
525 "expectations": [
526 {
527 "command_started_event": {
528 "command": {
529 "find": "fs.files",
530 "filter": {
531 "filename": "abc"
532 }
533 },
534 "database_name": "retryable-reads-tests"
535 }
536 },
537 {
538 "command_started_event": {
539 "command": {
540 "find": "fs.files",
541 "filter": {
542 "filename": "abc"
543 }
544 },
545 "database_name": "retryable-reads-tests"
546 }
547 },
548 {
549 "command_started_event": {
550 "command": {
551 "find": "fs.chunks",
552 "filter": {
553 "files_id": {
554 "$oid": "000000000000000000000001"
555 }
556 },
557 "sort": {
558 "n": 1
559 }
560 },
561 "database_name": "retryable-reads-tests"
562 }
563 }
564 ]
565 },
566 {
567 "description": "DownloadByName succeeds after HostUnreachable",
568 "failPoint": {
569 "configureFailPoint": "failCommand",
570 "mode": {
571 "times": 1
572 },
573 "data": {
574 "failCommands": [
575 "find"
576 ],
577 "errorCode": 6
578 }
579 },
580 "operations": [
581 {
582 "name": "download_by_name",
583 "object": "gridfsbucket",
584 "arguments": {
585 "filename": "abc"
586 }
587 }
588 ],
589 "expectations": [
590 {
591 "command_started_event": {
592 "command": {
593 "find": "fs.files",
594 "filter": {
595 "filename": "abc"
596 }
597 },
598 "database_name": "retryable-reads-tests"
599 }
600 },
601 {
602 "command_started_event": {
603 "command": {
604 "find": "fs.files",
605 "filter": {
606 "filename": "abc"
607 }
608 },
609 "database_name": "retryable-reads-tests"
610 }
611 },
612 {
613 "command_started_event": {
614 "command": {
615 "find": "fs.chunks",
616 "filter": {
617 "files_id": {
618 "$oid": "000000000000000000000001"
619 }
620 },
621 "sort": {
622 "n": 1
623 }
624 },
625 "database_name": "retryable-reads-tests"
626 }
627 }
628 ]
629 },
630 {
631 "description": "DownloadByName succeeds after NetworkTimeout",
632 "failPoint": {
633 "configureFailPoint": "failCommand",
634 "mode": {
635 "times": 1
636 },
637 "data": {
638 "failCommands": [
639 "find"
640 ],
641 "errorCode": 89
642 }
643 },
644 "operations": [
645 {
646 "name": "download_by_name",
647 "object": "gridfsbucket",
648 "arguments": {
649 "filename": "abc"
650 }
651 }
652 ],
653 "expectations": [
654 {
655 "command_started_event": {
656 "command": {
657 "find": "fs.files",
658 "filter": {
659 "filename": "abc"
660 }
661 },
662 "database_name": "retryable-reads-tests"
663 }
664 },
665 {
666 "command_started_event": {
667 "command": {
668 "find": "fs.files",
669 "filter": {
670 "filename": "abc"
671 }
672 },
673 "database_name": "retryable-reads-tests"
674 }
675 },
676 {
677 "command_started_event": {
678 "command": {
679 "find": "fs.chunks",
680 "filter": {
681 "files_id": {
682 "$oid": "000000000000000000000001"
683 }
684 },
685 "sort": {
686 "n": 1
687 }
688 },
689 "database_name": "retryable-reads-tests"
690 }
691 }
692 ]
693 },
694 {
695 "description": "DownloadByName succeeds after SocketException",
696 "failPoint": {
697 "configureFailPoint": "failCommand",
698 "mode": {
699 "times": 1
700 },
701 "data": {
702 "failCommands": [
703 "find"
704 ],
705 "errorCode": 9001
706 }
707 },
708 "operations": [
709 {
710 "name": "download_by_name",
711 "object": "gridfsbucket",
712 "arguments": {
713 "filename": "abc"
714 }
715 }
716 ],
717 "expectations": [
718 {
719 "command_started_event": {
720 "command": {
721 "find": "fs.files",
722 "filter": {
723 "filename": "abc"
724 }
725 },
726 "database_name": "retryable-reads-tests"
727 }
728 },
729 {
730 "command_started_event": {
731 "command": {
732 "find": "fs.files",
733 "filter": {
734 "filename": "abc"
735 }
736 },
737 "database_name": "retryable-reads-tests"
738 }
739 },
740 {
741 "command_started_event": {
742 "command": {
743 "find": "fs.chunks",
744 "filter": {
745 "files_id": {
746 "$oid": "000000000000000000000001"
747 }
748 },
749 "sort": {
750 "n": 1
751 }
752 },
753 "database_name": "retryable-reads-tests"
754 }
755 }
756 ]
757 },
758 {
759 "description": "DownloadByName fails after two NotWritablePrimary errors",
760 "failPoint": {
761 "configureFailPoint": "failCommand",
762 "mode": {
763 "times": 2
764 },
765 "data": {
766 "failCommands": [
767 "find"
768 ],
769 "errorCode": 10107
770 }
771 },
772 "operations": [
773 {
774 "name": "download_by_name",
775 "object": "gridfsbucket",
776 "arguments": {
777 "filename": "abc"
778 },
779 "error": true
780 }
781 ],
782 "expectations": [
783 {
784 "command_started_event": {
785 "command": {
786 "find": "fs.files",
787 "filter": {
788 "filename": "abc"
789 }
790 },
791 "database_name": "retryable-reads-tests"
792 }
793 },
794 {
795 "command_started_event": {
796 "command": {
797 "find": "fs.files",
798 "filter": {
799 "filename": "abc"
800 }
801 },
802 "database_name": "retryable-reads-tests"
803 }
804 }
805 ]
806 },
807 {
808 "description": "DownloadByName fails after NotWritablePrimary when retryReads is false",
809 "clientOptions": {
810 "retryReads": false
811 },
812 "failPoint": {
813 "configureFailPoint": "failCommand",
814 "mode": {
815 "times": 1
816 },
817 "data": {
818 "failCommands": [
819 "find"
820 ],
821 "errorCode": 10107
822 }
823 },
824 "operations": [
825 {
826 "name": "download_by_name",
827 "object": "gridfsbucket",
828 "arguments": {
829 "filename": "abc"
830 },
831 "error": true
832 }
833 ],
834 "expectations": [
835 {
836 "command_started_event": {
837 "command": {
838 "find": "fs.files",
839 "filter": {
840 "filename": "abc"
841 }
842 },
843 "database_name": "retryable-reads-tests"
844 }
845 }
846 ]
847 }
848 ]
849}
View as plain text