{
    "runOn": [
        {
            "minServerVersion": "4.9.0"
        }
    ],
    "database_name": "retryable-reads-tests",
    "collection_name": "coll",
    "data": [
        {
            "_id": 1,
            "x": 11
        },
        {
            "_id": 2,
            "x": 22
        }
    ],
    "tests": [
        {
            "description": "EstimatedDocumentCount succeeds on first attempt",
            "operations": [
                {
                    "name": "estimatedDocumentCount",
                    "object": "collection",
                    "result": 2
                }
            ],
            "expectations": [
                {
                    "command_started_event": {
                        "command": {
                            "aggregate": "coll",
                            "pipeline": [
                                {
                                    "$collStats": {
                                        "count": {}
                                    }
                                },
                                {
                                    "$group": {
                                        "_id": 1,
                                        "n": {
                                            "$sum": "$count"
                                        }
                                    }
                                }
                            ]
                        },
                        "database_name": "retryable-reads-tests"
                    }
                }
            ]
        },
        {
            "description": "EstimatedDocumentCount succeeds on second attempt",
            "failPoint": {
                "configureFailPoint": "failCommand",
                "mode": {
                    "times": 1
                },
                "data": {
                    "failCommands": [
                        "aggregate"
                    ],
                    "closeConnection": true
                }
            },
            "operations": [
                {
                    "name": "estimatedDocumentCount",
                    "object": "collection",
                    "result": 2
                }
            ],
            "expectations": [
                {
                    "command_started_event": {
                        "command": {
                            "aggregate": "coll",
                            "pipeline": [
                                {
                                    "$collStats": {
                                        "count": {}
                                    }
                                },
                                {
                                    "$group": {
                                        "_id": 1,
                                        "n": {
                                            "$sum": "$count"
                                        }
                                    }
                                }
                            ]
                        },
                        "database_name": "retryable-reads-tests"
                    }
                },
                {
                    "command_started_event": {
                        "command": {
                            "aggregate": "coll",
                            "pipeline": [
                                {
                                    "$collStats": {
                                        "count": {}
                                    }
                                },
                                {
                                    "$group": {
                                        "_id": 1,
                                        "n": {
                                            "$sum": "$count"
                                        }
                                    }
                                }
                            ]
                        },
                        "database_name": "retryable-reads-tests"
                    }
                }
            ]
        },
        {
            "description": "EstimatedDocumentCount fails on first attempt",
            "clientOptions": {
                "retryReads": false
            },
            "failPoint": {
                "configureFailPoint": "failCommand",
                "mode": {
                    "times": 1
                },
                "data": {
                    "failCommands": [
                        "aggregate"
                    ],
                    "closeConnection": true
                }
            },
            "operations": [
                {
                    "name": "estimatedDocumentCount",
                    "object": "collection",
                    "error": true
                }
            ],
            "expectations": [
                {
                    "command_started_event": {
                        "command": {
                            "aggregate": "coll",
                            "pipeline": [
                                {
                                    "$collStats": {
                                        "count": {}
                                    }
                                },
                                {
                                    "$group": {
                                        "_id": 1,
                                        "n": {
                                            "$sum": "$count"
                                        }
                                    }
                                }
                            ]
                        },
                        "database_name": "retryable-reads-tests"
                    }
                }
            ]
        },
        {
            "description": "EstimatedDocumentCount fails on second attempt",
            "failPoint": {
                "configureFailPoint": "failCommand",
                "mode": {
                    "times": 2
                },
                "data": {
                    "failCommands": [
                        "aggregate"
                    ],
                    "closeConnection": true
                }
            },
            "operations": [
                {
                    "name": "estimatedDocumentCount",
                    "object": "collection",
                    "error": true
                }
            ],
            "expectations": [
                {
                    "command_started_event": {
                        "command": {
                            "aggregate": "coll",
                            "pipeline": [
                                {
                                    "$collStats": {
                                        "count": {}
                                    }
                                },
                                {
                                    "$group": {
                                        "_id": 1,
                                        "n": {
                                            "$sum": "$count"
                                        }
                                    }
                                }
                            ]
                        },
                        "database_name": "retryable-reads-tests"
                    }
                },
                {
                    "command_started_event": {
                        "command": {
                            "aggregate": "coll",
                            "pipeline": [
                                {
                                    "$collStats": {
                                        "count": {}
                                    }
                                },
                                {
                                    "$group": {
                                        "_id": 1,
                                        "n": {
                                            "$sum": "$count"
                                        }
                                    }
                                }
                            ]
                        },
                        "database_name": "retryable-reads-tests"
                    }
                }
            ]
        }
    ]
}

