@@ -1141,8 +1141,9 @@ public void TestInsertBatchMultipleBatchesWriteConcernDisabledContinueOnErrorFal
1141
1141
} ;
1142
1142
1143
1143
var options = new MongoInsertOptions { Flags = InsertFlags . None } ; // no ContinueOnError
1144
- collection . InsertBatch ( documents , options ) ;
1144
+ var result = collection . InsertBatch ( documents , options ) ;
1145
1145
1146
+ Assert . AreEqual ( null , result ) ;
1146
1147
Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 1 ) ) ) ;
1147
1148
Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 2 ) ) ) ;
1148
1149
Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 3 ) ) ) ;
@@ -1178,7 +1179,113 @@ public void TestInsertBatchMultipleBatchesWriteConcernDisabledContinueOnErrorTru
1178
1179
} ;
1179
1180
1180
1181
var options = new MongoInsertOptions { Flags = InsertFlags . ContinueOnError } ;
1181
- collection . InsertBatch ( documents , options ) ;
1182
+ var result = collection . InsertBatch ( documents , options ) ;
1183
+
1184
+ Assert . AreEqual ( null , result ) ;
1185
+ Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 1 ) ) ) ;
1186
+ Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 2 ) ) ) ;
1187
+ Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 3 ) ) ) ;
1188
+ Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 4 ) ) ) ;
1189
+ Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 5 ) ) ) ;
1190
+ }
1191
+ }
1192
+
1193
+ [ Test ]
1194
+ public void TestInsertBatchMultipleBatchesWriteConcernEnabledContinueOnErrorFalse ( )
1195
+ {
1196
+ var collectionName = Configuration . TestCollection . Name ;
1197
+ var collectionSettings = new MongoCollectionSettings { WriteConcern = WriteConcern . Acknowledged } ;
1198
+ var collection = Configuration . TestDatabase . GetCollection < BsonDocument > ( collectionName , collectionSettings ) ;
1199
+ if ( collection . Exists ( ) ) { collection . Drop ( ) ; }
1200
+
1201
+ using ( Configuration . TestDatabase . RequestStart ( ) )
1202
+ {
1203
+ var maxMessageLength = Configuration . TestServer . RequestConnection . ServerInstance . MaxMessageLength ;
1204
+
1205
+ var filler = new string ( 'x' , maxMessageLength / 3 ) ; // after overhead results in two documents per sub-batch
1206
+ var documents = new BsonDocument [ ]
1207
+ {
1208
+ // first sub-batch
1209
+ new BsonDocument { { "_id" , 1 } , { "filler" , filler } } ,
1210
+ new BsonDocument { { "_id" , 2 } , { "filler" , filler } } ,
1211
+ // second sub-batch
1212
+ new BsonDocument { { "_id" , 3 } , { "filler" , filler } } ,
1213
+ new BsonDocument { { "_id" , 3 } , { "filler" , filler } } , // duplicate _id error
1214
+ // third sub-batch
1215
+ new BsonDocument { { "_id" , 4 } , { "filler" , filler } } ,
1216
+ new BsonDocument { { "_id" , 5 } , { "filler" , filler } } ,
1217
+ } ;
1218
+
1219
+ try
1220
+ {
1221
+ var options = new MongoInsertOptions { Flags = InsertFlags . None } ; // no ContinueOnError
1222
+ collection . InsertBatch ( documents , options ) ;
1223
+ }
1224
+ catch ( WriteConcernException ex )
1225
+ {
1226
+ var results = ( IEnumerable < WriteConcernResult > ) ex . Data [ "results" ] ;
1227
+ Assert . AreEqual ( 2 , results . Count ( ) ) ;
1228
+
1229
+ var result1 = results . ElementAt ( 0 ) ;
1230
+ Assert . AreEqual ( false , result1 . HasLastErrorMessage ) ;
1231
+
1232
+ var result2 = results . ElementAt ( 1 ) ;
1233
+ Assert . AreEqual ( true , result2 . HasLastErrorMessage ) ;
1234
+ }
1235
+
1236
+ Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 1 ) ) ) ;
1237
+ Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 2 ) ) ) ;
1238
+ Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 3 ) ) ) ;
1239
+ Assert . AreEqual ( 0 , collection . Count ( Query . EQ ( "_id" , 4 ) ) ) ;
1240
+ Assert . AreEqual ( 0 , collection . Count ( Query . EQ ( "_id" , 5 ) ) ) ;
1241
+ }
1242
+ }
1243
+
1244
+ [ Test ]
1245
+ public void TestInsertBatchMultipleBatchesWriteConcernEnabledContinueOnErrorTrue ( )
1246
+ {
1247
+ var collectionName = Configuration . TestCollection . Name ;
1248
+ var collectionSettings = new MongoCollectionSettings { WriteConcern = WriteConcern . Acknowledged } ;
1249
+ var collection = Configuration . TestDatabase . GetCollection < BsonDocument > ( collectionName , collectionSettings ) ;
1250
+ if ( collection . Exists ( ) ) { collection . Drop ( ) ; }
1251
+
1252
+ using ( Configuration . TestDatabase . RequestStart ( ) )
1253
+ {
1254
+ var maxMessageLength = Configuration . TestServer . RequestConnection . ServerInstance . MaxMessageLength ;
1255
+
1256
+ var filler = new string ( 'x' , maxMessageLength / 3 ) ; // after overhead results in two documents per sub-batch
1257
+ var documents = new BsonDocument [ ]
1258
+ {
1259
+ // first sub-batch
1260
+ new BsonDocument { { "_id" , 1 } , { "filler" , filler } } ,
1261
+ new BsonDocument { { "_id" , 2 } , { "filler" , filler } } ,
1262
+ // second sub-batch
1263
+ new BsonDocument { { "_id" , 3 } , { "filler" , filler } } ,
1264
+ new BsonDocument { { "_id" , 3 } , { "filler" , filler } } , // duplicate _id error
1265
+ // third sub-batch
1266
+ new BsonDocument { { "_id" , 4 } , { "filler" , filler } } ,
1267
+ new BsonDocument { { "_id" , 5 } , { "filler" , filler } } ,
1268
+ } ;
1269
+
1270
+ try
1271
+ {
1272
+ var options = new MongoInsertOptions { Flags = InsertFlags . ContinueOnError } ;
1273
+ collection . InsertBatch ( documents , options ) ;
1274
+ }
1275
+ catch ( WriteConcernException ex )
1276
+ {
1277
+ var results = ( IEnumerable < WriteConcernResult > ) ex . Data [ "results" ] ;
1278
+ Assert . AreEqual ( 3 , results . Count ( ) ) ;
1279
+
1280
+ var result1 = results . ElementAt ( 0 ) ;
1281
+ Assert . AreEqual ( false , result1 . HasLastErrorMessage ) ;
1282
+
1283
+ var result2 = results . ElementAt ( 1 ) ;
1284
+ Assert . AreEqual ( true , result2 . HasLastErrorMessage ) ;
1285
+
1286
+ var result3 = results . ElementAt ( 2 ) ;
1287
+ Assert . AreEqual ( false , result3 . HasLastErrorMessage ) ;
1288
+ }
1182
1289
1183
1290
Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 1 ) ) ) ;
1184
1291
Assert . AreEqual ( 1 , collection . Count ( Query . EQ ( "_id" , 2 ) ) ) ;
0 commit comments