Refine search
protected void assertNoTablesExistForDatabase(String dbName) { assertThat(mysql.tableIds().stream().filter(id->id.catalog().equals(dbName)).count()).isEqualTo(0); } protected void assertTablesExistForDatabase(String dbName) {
@Test public void shouldStartSourceInfoFromZeroBinlogCoordinates() { source.setBinlogStartPoint(FILENAME, 0); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(0); assertThat(source.eventsToSkipUponRestart()).isEqualTo(0); assertThat(source.rowsToSkipUponRestart()).isEqualTo(0); assertThat(source.isSnapshotInEffect()).isFalse(); }
@Test public void shouldStartSourceInfoFromNonZeroBinlogCoordinates() { source.setBinlogStartPoint(FILENAME, 100); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(100); assertThat(source.rowsToSkipUponRestart()).isEqualTo(0); assertThat(source.isSnapshotInEffect()).isFalse(); }
protected void asertFirstInterval(String uuid, int start, int end) { UUIDSet set = gtids.forServerWithId(uuid); Interval interval = set.getIntervals().iterator().next(); assertThat(interval.getStart()).isEqualTo(start); assertThat(interval.getEnd()).isEqualTo(end); }
@Test public void shouldRecoverSourceInfoFromOffsetWithZeroBinlogCoordinatesAndNonZeroRow() { sourceWith(offset(0, 5)); assertThat(source.gtidSet()).isNull(); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(0); assertThat(source.rowsToSkipUponRestart()).isEqualTo(5); assertThat(source.isSnapshotInEffect()).isFalse(); }
protected void asertLastInterval(String uuid, int start, int end) { UUIDSet set = gtids.forServerWithId(uuid); Interval interval = new LinkedList<>(set.getIntervals()).getLast(); assertThat(interval.getStart()).isEqualTo(start); assertThat(interval.getEnd()).isEqualTo(end); }
@Test public void shouldRecoverSourceInfoFromOffsetWithZeroBinlogCoordinatesAndNonZeroRowAndSnapshot() { sourceWith(offset(0, 5, true)); assertThat(source.gtidSet()).isNull(); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(0); assertThat(source.rowsToSkipUponRestart()).isEqualTo(5); assertThat(source.isSnapshotInEffect()).isTrue(); }
protected void handleTransactionCommit(long positionOfEvent, int eventSize) { source.setEventPosition(positionOfEvent, eventSize); source.commitTransaction(); eventNumberInTxn = 0; inTxn = false; // Verify the offset ... Map<String, ?> offset = source.offset(); // The offset position should be the position of the next event long position = (Long) offset.get(SourceInfo.BINLOG_POSITION_OFFSET_KEY); assertThat(position).isEqualTo(positionOfEvent + eventSize); Long rowsToSkip = (Long) offset.get(SourceInfo.BINLOG_ROW_IN_EVENT_OFFSET_KEY); if (rowsToSkip == null) rowsToSkip = 0L; assertThat(rowsToSkip).isEqualTo(0); assertThat(offset.get(SourceInfo.EVENTS_TO_SKIP_OFFSET_KEY)).isNull(); if (source.gtidSet() != null) { assertThat(offset.get(SourceInfo.GTID_SET_KEY)).isEqualTo(source.gtidSet()); } }
@Test public void shouldStartSourceInfoFromBinlogCoordinatesWithGtidsAndNonZeroBinlogCoordinates() { sourceWith(offset(GTID_SET, 100, 0, false)); assertThat(source.gtidSet()).isEqualTo(GTID_SET); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(100); assertThat(source.rowsToSkipUponRestart()).isEqualTo(0); assertThat(source.isSnapshotInEffect()).isFalse(); }
/** * Utility method to validate that two given {@link SourceRecord} values are identical. * @param actual actual value stored on the source record * @param expected expected value stored on the source record */ public static void assertSameValue(Object actual, Object expected) { if(expected instanceof Double || expected instanceof Float || expected instanceof BigDecimal) { // Value should be within 1% double expectedNumericValue = ((Number)expected).doubleValue(); double actualNumericValue = ((Number)actual).doubleValue(); assertThat(actualNumericValue).isEqualTo(expectedNumericValue, Delta.delta(0.01d*expectedNumericValue)); } else if (expected instanceof Integer || expected instanceof Long || expected instanceof Short) { long expectedNumericValue = ((Number)expected).longValue(); long actualNumericValue = ((Number)actual).longValue(); assertThat(actualNumericValue).isEqualTo(expectedNumericValue); } else if (expected instanceof Boolean) { boolean expectedValue = (Boolean) expected; boolean actualValue = (Boolean) actual; assertThat(actualValue).isEqualTo(expectedValue); } else { assertThat(actual).isEqualTo(expected); } }
@Test public void shouldStartSourceInfoFromBinlogCoordinatesWithGtidsAndNonZeroBinlogCoordinatesAndSnapshot() { sourceWith(offset(GTID_SET, 100, 0, true)); assertThat(source.gtidSet()).isEqualTo(GTID_SET); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(100); assertThat(source.rowsToSkipUponRestart()).isEqualTo(0); assertThat(source.isSnapshotInEffect()).isTrue(); }
private void assertBigintUnsignedLong(Struct value) { Struct after = value.getStruct(Envelope.FieldName.AFTER); Integer i = after.getInt32("id"); assertThat(i).isNotNull(); //Validate the schema first, we are expecting int-64 since we have forced Long mode for BIGINT UNSIGNED assertThat(after.schema().field("c1").schema()).isEqualTo(Schema.INT64_SCHEMA); assertThat(after.schema().field("c2").schema()).isEqualTo(Schema.INT64_SCHEMA); //Validate the schema first, we are expecting int-64 since we are dealing with signed-bigint. //So Signed BIGINT would be an INT64 type assertThat(after.schema().field("c3").schema()).isEqualTo(Schema.INT64_SCHEMA); //Validate candidates values, note the loss in precision which is expected since BIGINT UNSIGNED cannot always be represented by //a long datatype. switch (i) { case 1: assertThat(after.getInt64("c1")).isEqualTo(-1L); assertThat(after.getInt64("c2")).isEqualTo(-1L); assertThat(after.getInt64("c3")).isEqualTo(9223372036854775807L); break; case 2: assertThat(after.getInt64("c1")).isEqualTo(-4000000000000000001L); assertThat(after.getInt64("c2")).isEqualTo(-4000000000000000001L); assertThat(after.getInt64("c3")).isEqualTo(-1223372036854775807L); break; case 3: assertThat(after.getInt64("c1")).isEqualTo(0L); assertThat(after.getInt64("c2")).isEqualTo(0L); assertThat(after.getInt64("c3")).isEqualTo(-9223372036854775808L); } }
@Test public void shouldRecoverSourceInfoFromOffsetWithNonZeroBinlogCoordinatesAndNonZeroRow() { sourceWith(offset(100, 5)); assertThat(source.gtidSet()).isNull(); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(100); assertThat(source.rowsToSkipUponRestart()).isEqualTo(5); assertThat(source.isSnapshotInEffect()).isFalse(); }
protected void assertEnumType( String content, String expression ) { DataType type = parser.parse(text(content), null); assertThat(type).isNotNull(); assertThat(type.jdbcType()).isEqualTo(Types.CHAR); assertThat(type.name()).isEqualTo("ENUM"); assertThat(type.length()).isEqualTo(-1); assertThat(type.expression()).isEqualTo(expression); }
@Test public void shouldRecoverSourceInfoFromOffsetWithNonZeroBinlogCoordinatesAndSnapshot() { sourceWith(offset(100, 0, true)); assertThat(source.gtidSet()).isNull(); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(100); assertThat(source.rowsToSkipUponRestart()).isEqualTo(0); assertThat(source.isSnapshotInEffect()).isTrue(); }
assertThat(offset.get(SourceInfo.BINLOG_FILENAME_OFFSET_KEY)).isEqualTo(FILENAME); if (source.gtidSet() != null) { assertThat(offset.get(SourceInfo.GTID_SET_KEY)).isEqualTo(source.gtidSet()); assertThat(position).isEqualTo(positionOfBeginEvent); assertThat(eventsToSkip).isEqualTo(eventNumberInTxn - 1); } else { assertThat(position).isEqualTo(positionOfEvent + eventSize); assertThat(offset.get(SourceInfo.EVENTS_TO_SKIP_OFFSET_KEY)).isNull(); if ((row + 1) == rowCount) { assertThat(rowsToSkip).isEqualTo(rowCount); } else { assertThat(rowsToSkip).isEqualTo(row + 1); assertThat(recordSource.getInt64(SourceInfo.BINLOG_POSITION_OFFSET_KEY)).isEqualTo(positionOfEvent); assertThat(recordSource.getInt32(SourceInfo.BINLOG_ROW_IN_EVENT_OFFSET_KEY)).isEqualTo(row); assertThat(recordSource.getString(SourceInfo.BINLOG_FILENAME_OFFSET_KEY)).isEqualTo(FILENAME);
@Test public void shouldStartSourceInfoFromBinlogCoordinatesWithGtidsAndZeroBinlogCoordinatesAndNonZeroRow() { sourceWith(offset(GTID_SET, 0, 5, false)); assertThat(source.gtidSet()).isEqualTo(GTID_SET); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(0); assertThat(source.rowsToSkipUponRestart()).isEqualTo(5); assertThat(source.isSnapshotInEffect()).isFalse(); }
protected void assertType( String content, String typeName, int jdbcType, long length, int scale, int[] arrayDims ) { DataType type = parser.parse(text(content), null); assertThat(type).isNotNull(); assertThat(type.jdbcType()).isEqualTo(jdbcType); assertThat(type.name()).isEqualTo(typeName); assertThat(type.length()).isEqualTo(length); assertThat(type.scale()).isEqualTo(scale); assertThat(type.arrayDimensions()).isEqualTo(arrayDims); }
@Test public void shouldRecoverSourceInfoFromOffsetWithZeroBinlogCoordinates() { sourceWith(offset(0, 0)); assertThat(source.gtidSet()).isNull(); assertThat(source.binlogFilename()).isEqualTo(FILENAME); assertThat(source.binlogPosition()).isEqualTo(0); assertThat(source.rowsToSkipUponRestart()).isEqualTo(0); assertThat(source.isSnapshotInEffect()).isFalse(); }
private void assertIntUnsigned(Struct value) { Struct after = value.getStruct(Envelope.FieldName.AFTER); Integer i = after.getInt32("id"); assertThat(i).isNotNull(); assertThat(after.getInt64("c1")).isEqualTo(4294967295L); assertThat(after.getInt64("c2")).isEqualTo(4294967295L); assertThat(after.getInt32("c3")).isEqualTo(2147483647); assertThat(after.getInt64("c4")).isEqualTo(4294967295L); assertThat(after.getInt64("c5")).isEqualTo(4294967295L); assertThat(after.getInt32("c6")).isEqualTo(2147483647); break; case 2: assertThat(after.getInt64("c1")).isEqualTo(3294967295L); assertThat(after.getInt64("c2")).isEqualTo(3294967295L); assertThat(after.getInt32("c3")).isEqualTo(-1147483647); assertThat(after.getInt64("c4")).isEqualTo(3294967295L); assertThat(after.getInt64("c5")).isEqualTo(3294967295L); assertThat(after.getInt32("c6")).isEqualTo(-1147483647); break; case 3: assertThat(after.getInt64("c1")).isEqualTo(0L); assertThat(after.getInt64("c2")).isEqualTo(0L); assertThat(after.getInt32("c3")).isEqualTo(-2147483648); assertThat(after.getInt64("c4")).isEqualTo(0L); assertThat(after.getInt64("c5")).isEqualTo(0L); assertThat(after.getInt32("c6")).isEqualTo(-2147483648);