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