0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00
mongodb/jstests/sharding/trace_missing_docs_test.js

50 lines
1.5 KiB
JavaScript

//
// Tests tracing where a document was inserted
//
load('jstests/libs/trace_missing_docs.js')
var testDocMissing = function( useReplicaSet ) {
var options = { rs : useReplicaSet,
shardOptions : { master : "", oplogSize : 10 },
rsOptions : { nodes : 1, oplogSize : 10 } };
var st = new ShardingTest({ shards : 2, mongos : 1, other : options });
var mongos = st.s0;
var coll = mongos.getCollection( "foo.bar" );
var admin = mongos.getDB( "admin" );
var shards = mongos.getCollection( "config.shards" ).find().toArray();
assert( admin.runCommand({ enableSharding : coll.getDB() + "" }).ok );
printjson( admin.runCommand({ movePrimary : coll.getDB() + "", to : shards[0]._id }) );
coll.ensureIndex({ sk : 1 });
assert( admin.runCommand({ shardCollection : coll + "", key : { sk : 1 } }).ok );
assert.writeOK(coll.insert({ _id : 12345, sk : 67890, hello : "world" }));
assert.writeOK(coll.update({ _id : 12345 }, { $set : { baz : 'biz' } }));
assert.writeOK(coll.update({ sk : 67890 }, { $set : { baz : 'boz' } }));
assert( admin.runCommand({ moveChunk : coll + "",
find : { sk : 0 },
to : shards[1]._id,
_waitForDelete : true }).ok );
st.printShardingStatus();
var ops = traceMissingDoc( coll, { _id : 12345, sk : 67890 } );
assert.eq( ops[0].op, 'i' );
assert.eq( ops.length, 5 );
jsTest.log( "DONE! " + ( useReplicaSet ? "(using rs)" : "(using master/slave)" ) );
st.stop();
}
testDocMissing( true );
testDocMissing( false );