9
9
import static io .airbyte .integrations .source .mongodb .MongoCatalogHelper .AIRBYTE_STREAM_PROPERTIES ;
10
10
import static io .airbyte .integrations .source .mongodb .MongoConstants .DATABASE_CONFIG_CONFIGURATION_KEY ;
11
11
import static io .airbyte .integrations .source .mongodb .MongoConstants .DEFAULT_DISCOVER_SAMPLE_SIZE ;
12
+ import static io .airbyte .integrations .source .mongodb .MongoUtil .DEFAULT_CHUNK_SIZE ;
12
13
import static io .airbyte .integrations .source .mongodb .MongoUtil .MAX_QUEUE_SIZE ;
13
14
import static io .airbyte .integrations .source .mongodb .MongoUtil .MIN_QUEUE_SIZE ;
15
+ import static io .airbyte .integrations .source .mongodb .MongoUtil .QUERY_TARGET_SIZE_GB ;
14
16
import static io .airbyte .integrations .source .mongodb .MongoUtil .checkSchemaModeMismatch ;
15
17
import static org .assertj .core .api .AssertionsForClassTypes .assertThat ;
16
18
import static org .assertj .core .api .AssertionsForClassTypes .catchThrowable ;
39
41
import io .airbyte .commons .exceptions .ConfigErrorException ;
40
42
import io .airbyte .commons .json .Jsons ;
41
43
import io .airbyte .commons .resources .MoreResources ;
44
+ import io .airbyte .integrations .source .mongodb .MongoUtil .CollectionStatistics ;
42
45
import io .airbyte .integrations .source .mongodb .cdc .MongoDbCdcConnectorMetadataInjector ;
43
46
import io .airbyte .protocol .models .JsonSchemaType ;
44
47
import io .airbyte .protocol .models .v0 .AirbyteStream ;
@@ -349,7 +352,7 @@ void testGetCollectionStatistics() throws IOException {
349
352
when (mongoClient .getDatabase (databaseName )).thenReturn (mongoDatabase );
350
353
when (aggregateIterable .allowDiskUse (anyBoolean ())).thenReturn (aggregateIterable );
351
354
352
- final Optional <MongoUtil .CollectionStatistics > statistics = MongoUtil .getCollectionStatistics (mongoClient , configuredAirbyteStream );
355
+ final Optional <MongoUtil .CollectionStatistics > statistics = MongoUtil .getCollectionStatistics (mongoDatabase , configuredAirbyteStream );
353
356
354
357
assertTrue (statistics .isPresent ());
355
358
assertEquals (746 , statistics .get ().count ());
@@ -375,7 +378,7 @@ void testGetCollectionStatisticsNoResult() {
375
378
when (mongoDatabase .getCollection (collectionName )).thenReturn (mongoCollection );
376
379
when (mongoClient .getDatabase (databaseName )).thenReturn (mongoDatabase );
377
380
378
- final Optional <MongoUtil .CollectionStatistics > statistics = MongoUtil .getCollectionStatistics (mongoClient , configuredAirbyteStream );
381
+ final Optional <MongoUtil .CollectionStatistics > statistics = MongoUtil .getCollectionStatistics (mongoDatabase , configuredAirbyteStream );
379
382
380
383
assertFalse (statistics .isPresent ());
381
384
}
@@ -401,7 +404,7 @@ void testGetCollectionStatisticsEmptyResult() {
401
404
when (mongoDatabase .getCollection (collectionName )).thenReturn (mongoCollection );
402
405
when (mongoClient .getDatabase (databaseName )).thenReturn (mongoDatabase );
403
406
404
- final Optional <MongoUtil .CollectionStatistics > statistics = MongoUtil .getCollectionStatistics (mongoClient , configuredAirbyteStream );
407
+ final Optional <MongoUtil .CollectionStatistics > statistics = MongoUtil .getCollectionStatistics (mongoDatabase , configuredAirbyteStream );
405
408
406
409
assertFalse (statistics .isPresent ());
407
410
}
@@ -410,19 +413,42 @@ void testGetCollectionStatisticsEmptyResult() {
410
413
void testGetCollectionStatisticsException () {
411
414
final String collectionName = "test-collection" ;
412
415
final String databaseName = "test-database" ;
413
- final MongoClient mongoClient = mock (MongoClient .class );
416
+ final MongoDatabase mongoDatabase = mock (MongoDatabase .class );
414
417
415
418
final AirbyteStream stream = new AirbyteStream ().withName (collectionName ).withNamespace (databaseName );
416
419
final ConfiguredAirbyteStream configuredAirbyteStream = new ConfiguredAirbyteStream ().withStream (stream );
417
420
418
- when (mongoClient . getDatabase ( databaseName )).thenThrow (new IllegalArgumentException ("test" ));
421
+ when (mongoDatabase . getCollection ( collectionName )).thenThrow (new IllegalArgumentException ("test" ));
419
422
420
- final Optional <MongoUtil .CollectionStatistics > statistics = MongoUtil .getCollectionStatistics (mongoClient , configuredAirbyteStream );
423
+ final Optional <MongoUtil .CollectionStatistics > statistics = MongoUtil .getCollectionStatistics (mongoDatabase , configuredAirbyteStream );
421
424
422
425
assertFalse (statistics .isPresent ());
423
426
424
427
}
425
428
429
+ @ Test
430
+ void testChunkSize () {
431
+ final String collectionName = "test-collection" ;
432
+ final String databaseName = "test-database" ;
433
+ final AirbyteStream stream = new AirbyteStream ().withName (collectionName ).withNamespace (databaseName );
434
+ final ConfiguredAirbyteStream configuredAirbyteStream = new ConfiguredAirbyteStream ().withStream (stream );
435
+
436
+ // Assert that the default chunk size is returned
437
+ assertThat (MongoUtil .getChunkSizeForCollection (Optional .empty (), configuredAirbyteStream )).isEqualTo (1_000_000 );
438
+ assertThat (MongoUtil .getChunkSizeForCollection (Optional .of (new CollectionStatistics (0 , 0 )), configuredAirbyteStream ))
439
+ .isEqualTo (DEFAULT_CHUNK_SIZE );
440
+ assertThat (MongoUtil .getChunkSizeForCollection (Optional .of (new CollectionStatistics (0 , 1000 )), configuredAirbyteStream ))
441
+ .isEqualTo (DEFAULT_CHUNK_SIZE );
442
+ assertThat (MongoUtil .getChunkSizeForCollection (Optional .of (new CollectionStatistics (1000 , 0 )), configuredAirbyteStream ))
443
+ .isEqualTo (DEFAULT_CHUNK_SIZE );
444
+ assertThat (MongoUtil .getChunkSizeForCollection (Optional .of (new CollectionStatistics (1000 , 999 )), configuredAirbyteStream ))
445
+ .isEqualTo (DEFAULT_CHUNK_SIZE );
446
+
447
+ assertThat (
448
+ MongoUtil .getChunkSizeForCollection (Optional .of (new CollectionStatistics (1_000_000 , 10 * QUERY_TARGET_SIZE_GB )), configuredAirbyteStream ))
449
+ .isEqualTo (100_003 );
450
+ }
451
+
426
452
private static String formatMismatchException (final boolean isConfigSchemaEnforced ,
427
453
final boolean isCatalogSchemaEnforcing ,
428
454
final boolean isStateSchemaEnforced ) {
0 commit comments