11s = new ShardingTest ( "bigMapReduce" , 2 , 1 , 1 , { chunksize : 1 } ) ;
22
3+ // reduce chunk size to split
4+ var config = s . getDB ( "config" ) ;
5+ config . settings . save ( { _id : "chunksize" , value : 1 } ) ;
6+
37s . adminCommand ( { enablesharding : "test" } )
48s . adminCommand ( { shardcollection : "test.foo" , key : { "_id" : 1 } } )
59
610db = s . getDB ( "test" ) ;
711var str = ""
812for ( i = 0 ; i < 4 * 1024 ; i ++ ) { str = str + "a" ; }
9- for ( j = 0 ; j < 50 ; j ++ ) for ( i = 0 ; i < 512 ; i ++ ) { db . foo . save ( { y :str } ) }
13+ for ( j = 0 ; j < 100 ; j ++ ) for ( i = 0 ; i < 512 ; i ++ ) { db . foo . save ( { y :str } ) }
1014db . getLastError ( ) ;
1115
1216s . printChunks ( ) ;
@@ -62,7 +66,7 @@ for (iter = 0; iter < 5; iter++) {
6266 outColl = outDb [ outCollStr ] ;
6367
6468 obj = outColl . convertToSingleObject ( "value" ) ;
65- assert . eq ( 25600 , obj . count , "Received wrong result " + obj . count ) ;
69+ assert . eq ( 51200 , obj . count , "Received wrong result " + obj . count ) ;
6670
6771 print ( "checking result field" ) ;
6872 assert . eq ( res . result . collection , outCollStr , "Wrong collection " + res . result . collection ) ;
@@ -71,5 +75,29 @@ for (iter = 0; iter < 5; iter++) {
7175
7276assert ( gotAGoodOne , "no good for out db" )
7377
78+ // sharded output
79+
80+ function map2 ( ) { emit ( this . _id , 1 ) ; }
81+
82+ for ( iter = 0 ; iter < 5 ; iter ++ ) {
83+ try {
84+ out = db . foo . mapReduce ( map2 , reduce , { out : { replace : "mrShardedOut" , sharded : true } } ) ;
85+ gotAGoodOne = true ;
86+ assert . eq ( 51200 , obj . count , "Received wrong result " + obj . count ) ;
87+ // make sure it's sharded and split
88+ assert ( config . chunks . count ( { ns : db . mrShardedOut . _fullName } ) > 1 , "didnt split" ) ;
89+ }
90+ catch ( e ) {
91+ if ( __mrerror__ && __mrerror__ . cause && __mrerror__ . cause . code == 13388 ) {
92+ // TODO: SERVER-2396
93+ sleep ( 1000 ) ;
94+ continue ;
95+ }
96+ printjson ( __mrerror__ ) ;
97+ throw e ;
98+ }
99+ }
100+ assert ( gotAGoodOne , "no good for sharded" )
101+
74102s . stop ( )
75103
0 commit comments