A `MockupDB` that the mongo shell can connect to.

    Call `~.MockupDB.run` on the returned server, and clean it up with
    `~.MockupDB.stop`.

    If ``all_ok`` is True, replies {ok: 1} to anything unmatched by a specific
    responder.

def interactive_server(port=27017, verbose=True, all_ok=False, name='MockupDB',
                       ssl=False, uds_path=None):
    """A `MockupDB` that the mongo shell can connect to.

    Call `~.MockupDB.run` on the returned server, and clean it up with
    `~.MockupDB.stop`.

    If ``all_ok`` is True, replies {ok: 1} to anything unmatched by a specific
    responder.
    """
    if uds_path is not None:
        port = None

    server = MockupDB(port=port,
                      verbose=verbose,
                      request_timeout=int(1e6),
                      ssl=ssl,
                      auto_ismaster=True,
                      uds_path=uds_path)
    if all_ok:
        server.append_responder({})
    server.autoresponds('whatsmyuri', you='localhost:12345')
    server.autoresponds({'getLog': 'startupWarnings'},
                        log=['hello from %s!' % name])
    server.autoresponds(OpMsg('buildInfo'), version='MockupDB ' + __version__)
    server.autoresponds(OpMsg('listCollections'))
    server.autoresponds('replSetGetStatus', ok=0)
    server.autoresponds('getFreeMonitoringStatus', ok=0)
    return server