(function() {

    'use strict';

    var st = new ShardingTest({name: 'rename_across_mongos', shards: 1, mongos: 2});
    var dbName = 'RenameDB';

    st.s0.getDB(dbName).dropDatabase();
    st.s1.getDB(dbName).dropDatabase();

    // Create collection on first mongos and insert a document
    assert.commandWorked(st.s0.getDB(dbName).runCommand({create: 'CollNameBeforeRename'}));
    assert.writeOK(st.s0.getDB(dbName).CollNameBeforeRename.insert({Key: 1, Value: 1}));

    if (st.configRS) {
        // Ensure that the second mongos will see the newly created database metadata when
        // it tries to do the collection rename.
        st.configRS.awaitLastOpCommitted();
    }

    // Rename collection on second mongos and ensure the document is found
    assert.commandWorked(
        st.s1.getDB(dbName).CollNameBeforeRename.renameCollection('CollNameAfterRename'));
    assert.eq([{Key: 1, Value: 1}],
              st.s1.getDB(dbName).CollNameAfterRename.find({}, {_id: false}).toArray());

    st.stop();

})();
