0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-30 00:56:44 +01:00

tiny beginnings for compound ShardKeyPattern

This commit is contained in:
Dwight 2009-04-23 15:40:00 -04:00
parent ed0065fff2
commit 9a3a7f3c88

View File

@ -496,10 +496,20 @@ normal:
class ShardKeyUnitTest : public UnitTest {
public:
void hsk() {
void hasshardkeytest() {
BSONObj x = fromjson("{ zid : \"abcdefg\", num: 1.0, name: \"eliot\" }");
ShardKeyPattern k( BSON( "num" << 1 ) );
assert( k.hasShardKey(x) );
assert( !k.hasShardKey( fromjson("{foo:'a'}") ) );
// try compound key
{
ShardKeyPattern k( fromjson("{a:1,b:-1,c:1}") );
assert( k.hasShardKey( fromjson("{foo:'a',a:'b',c:'z',b:9,k:99}") ) );
assert( !k.hasShardKey( fromjson("{foo:'a',a:'b',c:'z',bb:9,k:99}") ) );
assert( !k.hasShardKey( fromjson("{k:99}") ) );
}
}
void rfq() {
ShardKeyPattern k( BSON( "key" << 1 ) );
@ -552,7 +562,7 @@ normal:
}
void testGlobal(){
ShardKeyPattern k( fromjson( "{num:1}" ) );
cout << "global middle:" << k.middle( k.globalMin() , k.globalMax() ) << endl;
DEV cout << "global middle:" << k.middle( k.globalMin() , k.globalMax() ) << endl;
}
void div(const char *a, const char *res) {
OID A,RES;
@ -580,7 +590,7 @@ normal:
assert( s > a );
assert( s < b );
}
void ms() {
void middlestrtest() {
checkstr("a\377", "b");
checkstr("a\377\377", "b");
checkstr("a", "b");
@ -598,9 +608,17 @@ normal:
assert( k.canOrder( fromjson("{a:1,b:1}") ) == 0 );
assert( k.canOrder( fromjson("{a:-1,b:1}") ) == -1 );
}
void extractkeytest() {
ShardKeyPattern k( fromjson("{a:1,b:-1,c:1}") );
BSONObj x = fromjson("{a:1,b:2,c:3}");
assert( k.extractKey( fromjson("{a:1,b:2,c:3}") ).woEqual(x) );
assert( k.extractKey( fromjson("{b:2,c:3,a:1}") ).woEqual(x) );
}
void run(){
extractkeytest();
oid();
ms();
middlestrtest();
ShardKeyPattern k( BSON( "key" << 1 ) );
@ -617,7 +635,7 @@ normal:
assert( k.compare( max , min ) > 0 );
assert( k.compare( min , min ) == 0 );
hsk();
hasshardkeytest();
assert( k.hasShardKey( k1 ) );
assert( ! k.hasShardKey( BSON( "key2" << 1 ) ) );