summaryrefslogtreecommitdiff
path: root/jstests/sharding
diff options
context:
space:
mode:
authorAntonin Kral <a.kral@bobek.cz>2010-03-25 19:21:32 +0100
committerAntonin Kral <a.kral@bobek.cz>2010-03-25 19:21:32 +0100
commit0ca01a91ae0a3562e54c226e7b9512feb2ea83d0 (patch)
tree2b3886e435b0217d6afd63a213b04d32bb4b4f6f /jstests/sharding
parenta696359b248adef0cc8576fce3f473535e995136 (diff)
downloadmongodb-0ca01a91ae0a3562e54c226e7b9512feb2ea83d0.tar.gz
Imported Upstream version 1.4.0
Diffstat (limited to 'jstests/sharding')
-rw-r--r--jstests/sharding/findandmodify1.js57
-rw-r--r--jstests/sharding/key_many.js15
-rw-r--r--jstests/sharding/moveshard1.js6
-rw-r--r--jstests/sharding/shard2.js2
-rw-r--r--jstests/sharding/sync1.js21
-rw-r--r--jstests/sharding/sync2.js48
6 files changed, 138 insertions, 11 deletions
diff --git a/jstests/sharding/findandmodify1.js b/jstests/sharding/findandmodify1.js
new file mode 100644
index 0000000..774701f
--- /dev/null
+++ b/jstests/sharding/findandmodify1.js
@@ -0,0 +1,57 @@
+s = new ShardingTest( "find_and_modify_sharded" , 2 );
+
+s.adminCommand( { enablesharding : "test" } );
+db = s.getDB( "test" );
+primary = s.getServer( "test" ).getDB( "test" );
+seconday = s.getOther( primary ).getDB( "test" );
+
+numObjs = 20;
+
+s.adminCommand( { shardcollection : "test.stuff" , key : {_id:1} } );
+
+for (var i=0; i < numObjs; i++){
+ db.stuff.insert({_id: i});
+}
+
+for (var i=0; i < numObjs; i+=2){
+ s.adminCommand( { split: "test.stuff" , middle : {_id: i} } );
+}
+
+for (var i=0; i < numObjs; i+=4){
+ s.adminCommand( { movechunk : "test.stuff" , find : {_id: i} , to : seconday.getMongo().name } );
+}
+
+//sorted update
+for (var i=0; i < numObjs; i++){
+ assert.eq(db.stuff.count({a:1}), i, "1 A");
+
+ var out = db.stuff.findAndModify({query: {a:null}, update: {$set: {a:1}}, sort: {_id:1}});
+
+ assert.eq(db.stuff.count({a:1}), i+1, "1 B");
+ assert.eq(db.stuff.findOne({_id:i}).a, 1, "1 C");
+ assert.eq(out._id, i, "1 D");
+}
+
+// unsorted update
+for (var i=0; i < numObjs; i++){
+ assert.eq(db.stuff.count({b:1}), i, "2 A");
+
+ var out = db.stuff.findAndModify({query: {b:null}, update: {$set: {b:1}}});
+
+ assert.eq(db.stuff.count({b:1}), i+1, "2 B");
+ assert.eq(db.stuff.findOne({_id:out._id}).a, 1, "2 C");
+}
+
+//sorted remove (no query)
+for (var i=0; i < numObjs; i++){
+ assert.eq(db.stuff.count(), numObjs - i, "3 A");
+ assert.eq(db.stuff.count({_id: i}), 1, "3 B");
+
+ var out = db.stuff.findAndModify({remove: true, sort: {_id:1}});
+
+ assert.eq(db.stuff.count(), numObjs - i - 1, "3 C");
+ assert.eq(db.stuff.count({_id: i}), 0, "3 D");
+ assert.eq(out._id, i, "3 E");
+}
+
+s.stop();
diff --git a/jstests/sharding/key_many.js b/jstests/sharding/key_many.js
index 43e7cc5..d1644ac 100644
--- a/jstests/sharding/key_many.js
+++ b/jstests/sharding/key_many.js
@@ -1,13 +1,14 @@
// key_many.js
// values have to be sorted
-types =
- [ { name : "string" , values : [ "allan" , "bob" , "eliot" , "joe" , "mark" , "sara" ] , keyfield: "k" } ,
- { name : "double" , values : [ 1.2 , 3.5 , 4.5 , 4.6 , 6.7 , 9.9 ] , keyfield : "a" } ,
- { name : "string_id" , values : [ "allan" , "bob" , "eliot" , "joe" , "mark" , "sara" ] , keyfield : "_id" },
- { name : "embedded" , values : [ "allan" , "bob" , "eliot" , "joe" , "mark" , "sara" ] , keyfield : "a.b" } ,
- { name : "embedded 2" , values : [ "allan" , "bob" , "eliot" , "joe" , "mark" , "sara" ] , keyfield : "a.b.c" } ,
- { name : "object" , values : [ {a:1, b:1.2}, {a:1, b:3.5}, {a:1, b:4.5}, {a:2, b:1.2}, {a:2, b:3.5}, {a:2, b:4.5} ] , keyfield : "o" } ,
+types = [
+ { name : "string" , values : [ "allan" , "bob" , "eliot" , "joe" , "mark" , "sara" ] , keyfield: "k" } ,
+ { name : "double" , values : [ 1.2 , 3.5 , 4.5 , 4.6 , 6.7 , 9.9 ] , keyfield : "a" } ,
+ { name : "date" , values : [ new Date( 1000000 ) , new Date( 2000000 ) , new Date( 3000000 ) , new Date( 4000000 ) , new Date( 5000000 ) , new Date( 6000000 ) ] , keyfield : "a" } ,
+ { name : "string_id" , values : [ "allan" , "bob" , "eliot" , "joe" , "mark" , "sara" ] , keyfield : "_id" },
+ { name : "embedded" , values : [ "allan" , "bob" , "eliot" , "joe" , "mark" , "sara" ] , keyfield : "a.b" } ,
+ { name : "embedded 2" , values : [ "allan" , "bob" , "eliot" , "joe" , "mark" , "sara" ] , keyfield : "a.b.c" } ,
+ { name : "object" , values : [ {a:1, b:1.2}, {a:1, b:3.5}, {a:1, b:4.5}, {a:2, b:1.2}, {a:2, b:3.5}, {a:2, b:4.5} ] , keyfield : "o" } ,
]
s = new ShardingTest( "key_many" , 2 );
diff --git a/jstests/sharding/moveshard1.js b/jstests/sharding/moveshard1.js
index b074b4c..9220983 100644
--- a/jstests/sharding/moveshard1.js
+++ b/jstests/sharding/moveshard1.js
@@ -16,8 +16,8 @@ assert.eq( ldb.things.count() , 3 );
assert.eq( rdb.things.count() , 0 );
startResult = l.getDB( "admin" ).runCommand( { "movechunk.start" : "foo.things" ,
- "to" : s._serverNames[1] ,
- "from" : s._serverNames[0] ,
+ "to" : s._connections[1].name ,
+ "from" : s._connections[0].name ,
filter : { a : { $gt : 2 } }
} );
print( "movechunk.start: " + tojson( startResult ) );
@@ -25,7 +25,7 @@ assert( startResult.ok == 1 , "start failed!" );
finishResult = l.getDB( "admin" ).runCommand( { "movechunk.finish" : "foo.things" ,
finishToken : startResult.finishToken ,
- to : s._serverNames[1] ,
+ to : s._connections[1].name ,
newVersion : 1 } );
print( "movechunk.finish: " + tojson( finishResult ) );
assert( finishResult.ok == 1 , "finishResult failed!" );
diff --git a/jstests/sharding/shard2.js b/jstests/sharding/shard2.js
index 566a0db..5932210 100644
--- a/jstests/sharding/shard2.js
+++ b/jstests/sharding/shard2.js
@@ -140,7 +140,7 @@ function countCursor( c ){
return num;
}
assert.eq( 6 , countCursor( db.foo.find()._exec() ) , "getMore 2" );
-assert.eq( 6 , countCursor( db.foo.find().limit(1)._exec() ) , "getMore 3" );
+assert.eq( 6 , countCursor( db.foo.find().batchSize(1)._exec() ) , "getMore 3" );
// find by non-shard-key
db.foo.find().forEach(
diff --git a/jstests/sharding/sync1.js b/jstests/sharding/sync1.js
new file mode 100644
index 0000000..905b488
--- /dev/null
+++ b/jstests/sharding/sync1.js
@@ -0,0 +1,21 @@
+
+test = new SyncCCTest( "sync1" )
+
+db = test.conn.getDB( "test" )
+t = db.sync1
+t.save( { x : 1 } )
+assert.eq( 1 , t.find().itcount() , "A1" );
+assert.eq( 1 , t.find().count() , "A2" );
+t.save( { x : 2 } )
+assert.eq( 2 , t.find().itcount() , "A3" );
+assert.eq( 2 , t.find().count() , "A4" );
+
+test.checkHashes( "test" , "A3" );
+
+test.tempKill();
+assert.throws( function(){ t.save( { x : 3 } ) } , "B1" )
+assert.eq( 2 , t.find().itcount() , "B2" );
+test.tempStart();
+test.checkHashes( "test" , "B3" );
+
+test.stop();
diff --git a/jstests/sharding/sync2.js b/jstests/sharding/sync2.js
new file mode 100644
index 0000000..b0bbcb6
--- /dev/null
+++ b/jstests/sharding/sync2.js
@@ -0,0 +1,48 @@
+// sync2.js
+
+s = new ShardingTest( "sync2" , 3 , 50 , 2 , { sync : true } );
+
+s2 = s._mongos[1];
+
+s.adminCommand( { enablesharding : "test" } );
+s.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } );
+
+s.getDB( "test" ).foo.save( { num : 1 } );
+s.getDB( "test" ).foo.save( { num : 2 } );
+s.getDB( "test" ).foo.save( { num : 3 } );
+s.getDB( "test" ).foo.save( { num : 4 } );
+s.getDB( "test" ).foo.save( { num : 5 } );
+s.getDB( "test" ).foo.save( { num : 6 } );
+s.getDB( "test" ).foo.save( { num : 7 } );
+
+assert.eq( 7 , s.getDB( "test" ).foo.find().toArray().length , "normal A" );
+assert.eq( 7 , s2.getDB( "test" ).foo.find().toArray().length , "other A" );
+
+s.adminCommand( { split : "test.foo" , middle : { num : 4 } } );
+s.adminCommand( { movechunk : "test.foo" , find : { num : 3 } , to : s.getFirstOther( s.getServer( "test" ) ).name } );
+
+assert( s._connections[0].getDB( "test" ).foo.find().toArray().length > 0 , "blah 1" );
+assert( s._connections[1].getDB( "test" ).foo.find().toArray().length > 0 , "blah 2" );
+assert.eq( 7 , s._connections[0].getDB( "test" ).foo.find().toArray().length +
+ s._connections[1].getDB( "test" ).foo.find().toArray().length , "blah 3" );
+
+assert.eq( 7 , s.getDB( "test" ).foo.find().toArray().length , "normal B" );
+assert.eq( 7 , s2.getDB( "test" ).foo.find().toArray().length , "other B" );
+
+s.adminCommand( { split : "test.foo" , middle : { num : 2 } } );
+s.printChunks();
+
+print( "* A" );
+
+assert.eq( 7 , s.getDB( "test" ).foo.find().toArray().length , "normal B 1" );
+assert.eq( 7 , s2.getDB( "test" ).foo.find().toArray().length , "other B 2" );
+print( "* B" );
+assert.eq( 7 , s.getDB( "test" ).foo.find().toArray().length , "normal B 3" );
+assert.eq( 7 , s2.getDB( "test" ).foo.find().toArray().length , "other B 4" );
+
+for ( var i=0; i<10; i++ ){
+ print( "* C " + i );
+ assert.eq( 7 , s2.getDB( "test" ).foo.find().toArray().length , "other B " + i );
+}
+
+s.stop();