@@ -388,6 +388,13 @@ void testReadOneColumn() throws Exception {
388
388
389
389
setEmittedAtToNull (actualMessages );
390
390
391
+ final List <AirbyteMessage > expectedMessages = getAirbyteMessagesReadOneColumn ();
392
+ assertTrue (expectedMessages .size () == actualMessages .size ());
393
+ assertTrue (expectedMessages .containsAll (actualMessages ));
394
+ assertTrue (actualMessages .containsAll (expectedMessages ));
395
+ }
396
+
397
+ protected List <AirbyteMessage > getAirbyteMessagesReadOneColumn () {
391
398
final List <AirbyteMessage > expectedMessages = getTestMessages ().stream ()
392
399
.map (Jsons ::clone )
393
400
.peek (m -> {
@@ -397,9 +404,7 @@ void testReadOneColumn() throws Exception {
397
404
convertIdBasedOnDatabase (m .getRecord ().getData ().get (COL_ID ).asInt ()));
398
405
})
399
406
.collect (Collectors .toList ());
400
- assertTrue (expectedMessages .size () == actualMessages .size ());
401
- assertTrue (expectedMessages .containsAll (actualMessages ));
402
- assertTrue (actualMessages .containsAll (expectedMessages ));
407
+ return expectedMessages ;
403
408
}
404
409
405
410
@ Test
@@ -432,17 +437,7 @@ void testReadMultipleTables() throws Exception {
432
437
Field .of (COL_ID , JsonSchemaType .NUMBER ),
433
438
Field .of (COL_NAME , JsonSchemaType .STRING )));
434
439
435
- final List <AirbyteMessage > secondStreamExpectedMessages = getTestMessages ()
436
- .stream ()
437
- .map (Jsons ::clone )
438
- .peek (m -> {
439
- m .getRecord ().setStream (streamName2 );
440
- m .getRecord ().setNamespace (getDefaultNamespace ());
441
- ((ObjectNode ) m .getRecord ().getData ()).remove (COL_UPDATED_AT );
442
- ((ObjectNode ) m .getRecord ().getData ()).replace (COL_ID ,
443
- convertIdBasedOnDatabase (m .getRecord ().getData ().get (COL_ID ).asInt ()));
444
- })
445
- .collect (Collectors .toList ());
440
+ final List <AirbyteMessage > secondStreamExpectedMessages = getAirbyteMessagesSecondSync (streamName2 );
446
441
expectedMessages .addAll (secondStreamExpectedMessages );
447
442
}
448
443
@@ -456,6 +451,21 @@ void testReadMultipleTables() throws Exception {
456
451
assertTrue (actualMessages .containsAll (expectedMessages ));
457
452
}
458
453
454
+ protected List <AirbyteMessage > getAirbyteMessagesSecondSync (String streamName2 ) {
455
+ return getTestMessages ()
456
+ .stream ()
457
+ .map (Jsons ::clone )
458
+ .peek (m -> {
459
+ m .getRecord ().setStream (streamName2 );
460
+ m .getRecord ().setNamespace (getDefaultNamespace ());
461
+ ((ObjectNode ) m .getRecord ().getData ()).remove (COL_UPDATED_AT );
462
+ ((ObjectNode ) m .getRecord ().getData ()).replace (COL_ID ,
463
+ convertIdBasedOnDatabase (m .getRecord ().getData ().get (COL_ID ).asInt ()));
464
+ })
465
+ .collect (Collectors .toList ());
466
+
467
+ }
468
+
459
469
@ Test
460
470
void testTablesWithQuoting () throws Exception {
461
471
final ConfiguredAirbyteStream streamForTableWithSpaces = createTableWithSpaces ();
@@ -469,7 +479,17 @@ void testTablesWithQuoting() throws Exception {
469
479
470
480
setEmittedAtToNull (actualMessages );
471
481
472
- final List <AirbyteMessage > secondStreamExpectedMessages = getTestMessages ()
482
+ final List <AirbyteMessage > secondStreamExpectedMessages = getAirbyteMessagesForTablesWithQuoting (streamForTableWithSpaces );
483
+ final List <AirbyteMessage > expectedMessages = new ArrayList <>(getTestMessages ());
484
+ expectedMessages .addAll (secondStreamExpectedMessages );
485
+
486
+ assertTrue (expectedMessages .size () == actualMessages .size ());
487
+ assertTrue (expectedMessages .containsAll (actualMessages ));
488
+ assertTrue (actualMessages .containsAll (expectedMessages ));
489
+ }
490
+
491
+ protected List <AirbyteMessage > getAirbyteMessagesForTablesWithQuoting (ConfiguredAirbyteStream streamForTableWithSpaces ) {
492
+ return getTestMessages ()
473
493
.stream ()
474
494
.map (Jsons ::clone )
475
495
.peek (m -> {
@@ -481,12 +501,6 @@ void testTablesWithQuoting() throws Exception {
481
501
convertIdBasedOnDatabase (m .getRecord ().getData ().get (COL_ID ).asInt ()));
482
502
})
483
503
.collect (Collectors .toList ());
484
- final List <AirbyteMessage > expectedMessages = new ArrayList <>(getTestMessages ());
485
- expectedMessages .addAll (secondStreamExpectedMessages );
486
-
487
- assertTrue (expectedMessages .size () == actualMessages .size ());
488
- assertTrue (expectedMessages .containsAll (actualMessages ));
489
- assertTrue (actualMessages .containsAll (expectedMessages ));
490
504
}
491
505
492
506
@ SuppressWarnings ("ResultOfMethodCallIgnored" )
@@ -532,6 +546,17 @@ void testIncrementalStringCheckCursor() throws Exception {
532
546
void testIncrementalStringCheckCursorSpaceInColumnName () throws Exception {
533
547
final ConfiguredAirbyteStream streamWithSpaces = createTableWithSpaces ();
534
548
549
+ final ArrayList <AirbyteMessage > expectedRecordMessages = getAirbyteMessagesCheckCursorSpaceInColumnName (streamWithSpaces );
550
+ incrementalCursorCheck (
551
+ COL_LAST_NAME_WITH_SPACE ,
552
+ COL_LAST_NAME_WITH_SPACE ,
553
+ "patent" ,
554
+ "vash" ,
555
+ expectedRecordMessages ,
556
+ streamWithSpaces );
557
+ }
558
+
559
+ protected ArrayList <AirbyteMessage > getAirbyteMessagesCheckCursorSpaceInColumnName (ConfiguredAirbyteStream streamWithSpaces ) {
535
560
final AirbyteMessage firstMessage = getTestMessages ().get (0 );
536
561
firstMessage .getRecord ().setStream (streamWithSpaces .getStream ().getName ());
537
562
((ObjectNode ) firstMessage .getRecord ().getData ()).remove (COL_UPDATED_AT );
@@ -546,21 +571,15 @@ void testIncrementalStringCheckCursorSpaceInColumnName() throws Exception {
546
571
547
572
Lists .newArrayList (getTestMessages ().get (0 ), getTestMessages ().get (2 ));
548
573
549
- incrementalCursorCheck (
550
- COL_LAST_NAME_WITH_SPACE ,
551
- COL_LAST_NAME_WITH_SPACE ,
552
- "patent" ,
553
- "vash" ,
554
- Lists .newArrayList (firstMessage , secondMessage ),
555
- streamWithSpaces );
574
+ return Lists .newArrayList (firstMessage , secondMessage );
556
575
}
557
576
558
577
@ Test
559
- void testIncrementalTimestampCheckCursor () throws Exception {
560
- incrementalTimestampCheck ();
578
+ void testIncrementalDateCheckCursor () throws Exception {
579
+ incrementalDateCheck ();
561
580
}
562
581
563
- protected void incrementalTimestampCheck () throws Exception {
582
+ protected void incrementalDateCheck () throws Exception {
564
583
incrementalCursorCheck (
565
584
COL_UPDATED_AT ,
566
585
"2005-10-18T00:00:00Z" ,
@@ -600,14 +619,7 @@ void testReadOneTableIncrementallyTwice() throws Exception {
600
619
.filter (r -> r .getType () == Type .STATE ).findFirst ();
601
620
assertTrue (stateAfterFirstSyncOptional .isPresent ());
602
621
603
- database .execute (connection -> {
604
- connection .createStatement ().execute (
605
- String .format ("INSERT INTO %s(id, name, updated_at) VALUES (4,'riker', '2006-10-19')" ,
606
- getFullyQualifiedTableName (TABLE_NAME )));
607
- connection .createStatement ().execute (
608
- String .format ("INSERT INTO %s(id, name, updated_at) VALUES (5, 'data', '2006-10-19')" ,
609
- getFullyQualifiedTableName (TABLE_NAME )));
610
- });
622
+ executeStatementReadIncrementallyTwice ();
611
623
612
624
final List <AirbyteMessage > actualMessagesSecondSync = MoreIterators
613
625
.toList (source .read (config , configuredCatalog ,
@@ -624,6 +636,17 @@ void testReadOneTableIncrementallyTwice() throws Exception {
624
636
assertTrue (actualMessagesSecondSync .containsAll (expectedMessages ));
625
637
}
626
638
639
+ protected void executeStatementReadIncrementallyTwice () throws SQLException {
640
+ database .execute (connection -> {
641
+ connection .createStatement ().execute (
642
+ String .format ("INSERT INTO %s(id, name, updated_at) VALUES (4,'riker', '2006-10-19')" ,
643
+ getFullyQualifiedTableName (TABLE_NAME )));
644
+ connection .createStatement ().execute (
645
+ String .format ("INSERT INTO %s(id, name, updated_at) VALUES (5, 'data', '2006-10-19')" ,
646
+ getFullyQualifiedTableName (TABLE_NAME )));
647
+ });
648
+ }
649
+
627
650
protected List <AirbyteMessage > getExpectedAirbyteMessagesSecondSync (String namespace ) {
628
651
final List <AirbyteMessage > expectedMessages = new ArrayList <>();
629
652
expectedMessages .add (new AirbyteMessage ().withType (Type .RECORD )
@@ -696,16 +719,7 @@ void testReadMultipleTablesIncrementally() throws Exception {
696
719
697
720
// we know the second streams messages are the same as the first minus the updated at column. so we
698
721
// cheat and generate the expected messages off of the first expected messages.
699
- final List <AirbyteMessage > secondStreamExpectedMessages = getTestMessages ()
700
- .stream ()
701
- .map (Jsons ::clone )
702
- .peek (m -> {
703
- m .getRecord ().setStream (streamName2 );
704
- ((ObjectNode ) m .getRecord ().getData ()).remove (COL_UPDATED_AT );
705
- ((ObjectNode ) m .getRecord ().getData ()).replace (COL_ID ,
706
- convertIdBasedOnDatabase (m .getRecord ().getData ().get (COL_ID ).asInt ()));
707
- })
708
- .collect (Collectors .toList ());
722
+ final List <AirbyteMessage > secondStreamExpectedMessages = getAirbyteMessagesSecondStreamWithNamespace (streamName2 );
709
723
final List <AirbyteMessage > expectedMessagesFirstSync = new ArrayList <>(getTestMessages ());
710
724
expectedMessagesFirstSync .add (new AirbyteMessage ()
711
725
.withType (Type .STATE )
@@ -748,6 +762,19 @@ void testReadMultipleTablesIncrementally() throws Exception {
748
762
assertTrue (actualMessagesFirstSync .containsAll (expectedMessagesFirstSync ));
749
763
}
750
764
765
+ protected List <AirbyteMessage > getAirbyteMessagesSecondStreamWithNamespace (String streamName2 ) {
766
+ return getTestMessages ()
767
+ .stream ()
768
+ .map (Jsons ::clone )
769
+ .peek (m -> {
770
+ m .getRecord ().setStream (streamName2 );
771
+ ((ObjectNode ) m .getRecord ().getData ()).remove (COL_UPDATED_AT );
772
+ ((ObjectNode ) m .getRecord ().getData ()).replace (COL_ID ,
773
+ convertIdBasedOnDatabase (m .getRecord ().getData ().get (COL_ID ).asInt ()));
774
+ })
775
+ .collect (Collectors .toList ());
776
+ }
777
+
751
778
// when initial and final cursor fields are the same.
752
779
protected void incrementalCursorCheck (
753
780
final String cursorField ,
0 commit comments