(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.commandWorked(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();
})();
