This is just a cleanup work to hide some of the private state of ReplSetTest so it is easier to encapsulate and add new logic. Also enables strict mode.
53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
|
|
// Test replication of collection renaming
|
|
|
|
baseName = "jstests_replsets_replset6";
|
|
|
|
var rt = new ReplSetTest({ name : "replset6tests" , nodes: 2 });
|
|
var nodes = rt.startSet();
|
|
rt.initiate();
|
|
var m = rt.getPrimary();
|
|
rt.awaitSecondaryNodes();
|
|
var slaves = rt.liveNodes.slaves;
|
|
s = slaves[0];
|
|
s.setSlaveOk();
|
|
admin = m.getDB( "admin" );
|
|
|
|
debug = function( foo ) {} // print( foo ); }
|
|
|
|
// rename within db
|
|
|
|
m.getDB( baseName ).one.save( { a: 1 } );
|
|
assert.soon( function() { v = s.getDB( baseName ).one.findOne(); return v && 1 == v.a } );
|
|
|
|
assert.commandWorked( admin.runCommand( {renameCollection:"jstests_replsets_replset6.one", to:"jstests_replsets_replset6.two"} ) );
|
|
assert.soon( function() {
|
|
if ( -1 == s.getDB( baseName ).getCollectionNames().indexOf( "two" ) ) {
|
|
debug( "no two coll" );
|
|
debug( tojson( s.getDB( baseName ).getCollectionNames() ) );
|
|
return false;
|
|
}
|
|
if ( !s.getDB( baseName ).two.findOne() ) {
|
|
debug( "no two object" );
|
|
return false;
|
|
}
|
|
return 1 == s.getDB( baseName ).two.findOne().a; });
|
|
assert.eq( -1, s.getDB( baseName ).getCollectionNames().indexOf( "one" ) );
|
|
|
|
// rename to new db
|
|
|
|
first = baseName + "_first";
|
|
second = baseName + "_second";
|
|
|
|
m.getDB( first ).one.save( { a: 1 } );
|
|
assert.soon( function() { return s.getDB( first ).one.findOne() && 1 == s.getDB( first ).one.findOne().a; } );
|
|
|
|
assert.commandWorked( admin.runCommand( {renameCollection:"jstests_replsets_replset6_first.one", to:"jstests_replsets_replset6_second.two"} ) );
|
|
assert.soon( function() {
|
|
return -1 != s.getDBNames().indexOf( second ) &&
|
|
-1 != s.getDB( second ).getCollectionNames().indexOf( "two" ) &&
|
|
s.getDB( second ).two.findOne() &&
|
|
1 == s.getDB( second ).two.findOne().a; } );
|
|
assert.eq( -1, s.getDB( first ).getCollectionNames().indexOf( "one" ) );
|
|
|