58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
admin = db.getMongo().getDB( "admin" );
|
|
|
|
a = db.jstests_rename_a;
|
|
b = db.jstests_rename_b;
|
|
c = db.jstests_rename_c;
|
|
|
|
a.drop();
|
|
b.drop();
|
|
c.drop();
|
|
|
|
a.save( {a: 1} );
|
|
a.save( {a: 2} );
|
|
a.ensureIndex( {a:1} );
|
|
a.ensureIndex( {b:1} );
|
|
|
|
c.save( {a: 100} );
|
|
assert.commandFailed( admin.runCommand( {renameCollection:"test.jstests_rename_a", to:"test.jstests_rename_c"} ) );
|
|
|
|
assert.commandWorked( admin.runCommand( {renameCollection:"test.jstests_rename_a", to:"test.jstests_rename_b"} ) );
|
|
assert.eq( 0, a.find().count() );
|
|
|
|
assert.eq( 2, b.find().count() );
|
|
assert( db.getCollectionNames().indexOf( "jstests_rename_b" ) >= 0 );
|
|
assert( db.getCollectionNames().indexOf( "jstests_rename_a" ) < 0 );
|
|
assert.eq( 3, db.jstests_rename_b.getIndexes().length );
|
|
assert.eq( 0, db.jstests_rename_a.getIndexes().length );
|
|
|
|
// now try renaming a capped collection
|
|
|
|
a.drop();
|
|
b.drop();
|
|
c.drop();
|
|
|
|
// TODO: too many numbers hard coded here
|
|
// this test depends precisely on record size and hence may not be very reliable
|
|
// note we use floats to make sure numbers are represented as doubles for SpiderMonkey, since test relies on record size
|
|
db.createCollection( "jstests_rename_a", {capped:true,size:10000} );
|
|
for( i = 0.1; i < 10; ++i ) {
|
|
a.save( { i: i } );
|
|
}
|
|
assert.commandWorked( admin.runCommand( {renameCollection:"test.jstests_rename_a", to:"test.jstests_rename_b"} ) );
|
|
assert.eq( 1, b.count( {i:9.1} ) );
|
|
printjson( b.stats() );
|
|
for( i = 10.1; i < 1000; ++i ) {
|
|
b.save( { i: i } );
|
|
}
|
|
printjson( b.stats() );
|
|
//res = b.find().sort({i:1});
|
|
//while (res.hasNext()) printjson(res.next());
|
|
|
|
assert.eq( 1, b.count( {i:i-1} ) ); // make sure last is there
|
|
assert.eq( 0, b.count( {i:9.1} ) ); // make sure early one is gone
|
|
|
|
|
|
assert( db.getCollectionNames().indexOf( "jstests_rename_b" ) >= 0 );
|
|
assert( db.getCollectionNames().indexOf( "jstests_rename_a" ) < 0 );
|
|
assert( db.jstests_rename_b.stats().capped );
|