diff options
author | Antonin Kral <a.kral@bobek.cz> | 2010-03-25 19:21:32 +0100 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2010-03-25 19:21:32 +0100 |
commit | 0ca01a91ae0a3562e54c226e7b9512feb2ea83d0 (patch) | |
tree | 2b3886e435b0217d6afd63a213b04d32bb4b4f6f /jstests/sharding | |
parent | a696359b248adef0cc8576fce3f473535e995136 (diff) | |
download | mongodb-0ca01a91ae0a3562e54c226e7b9512feb2ea83d0.tar.gz |
Imported Upstream version 1.4.0
Diffstat (limited to 'jstests/sharding')
-rw-r--r-- | jstests/sharding/findandmodify1.js | 57 | ||||
-rw-r--r-- | jstests/sharding/key_many.js | 15 | ||||
-rw-r--r-- | jstests/sharding/moveshard1.js | 6 | ||||
-rw-r--r-- | jstests/sharding/shard2.js | 2 | ||||
-rw-r--r-- | jstests/sharding/sync1.js | 21 | ||||
-rw-r--r-- | jstests/sharding/sync2.js | 48 |
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(); |