Includes: - Smoke.py options for filtering by jstest tags - New resmoke.py test utility in v0 alpha - Lots of example resmoke configurations - SCons integration for unittests - Sample tagged jstests
42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
// Test that the shardCollection command fails when a preexisting document lacks a shard key field.
|
|
// SERVER-8772
|
|
// @tags : [ hashed ]
|
|
|
|
var st = new ShardingTest( { shards: 1 } );
|
|
st.stopBalancer();
|
|
|
|
var db = st.s.getDB( 'testDb' );
|
|
var coll = db.testColl;
|
|
|
|
coll.insert( { x:1, z:1 } );
|
|
coll.insert( { y:1, z:1 } );
|
|
db.adminCommand( { enableSharding:'testDb' } );
|
|
|
|
/**
|
|
* Assert that the shardCollection command fails, with a preexisting index on the provided
|
|
* 'shardKey'.
|
|
*/
|
|
function assertInvalidShardKey( shardKey ) {
|
|
|
|
// Manually create a shard key index.
|
|
coll.dropIndexes();
|
|
coll.ensureIndex( shardKey );
|
|
|
|
// Ensure that the shard key index identifies 'x' as present in one document and absent in the
|
|
// other.
|
|
assert.eq( 1, coll.find( { x:1 } ).hint( shardKey ).itcount() );
|
|
assert.eq( 1, coll.find( { x:{ $exists:false } } ).hint( shardKey ).itcount() );
|
|
|
|
// Assert that the shardCollection command fails with the provided 'shardKey'.
|
|
assert.commandFailed( db.adminCommand( { shardCollection:'testDb.testColl', key:shardKey } ),
|
|
'shardCollection should have failed on key ' + tojson( shardKey ) );
|
|
}
|
|
|
|
// Test single, compound, and hashed shard keys.
|
|
assertInvalidShardKey( { x:1 } );
|
|
assertInvalidShardKey( { x:1, y:1 } );
|
|
assertInvalidShardKey( { y:1, x:1 } );
|
|
assertInvalidShardKey( { x:'hashed' } );
|
|
|
|
st.stop();
|