Add unit tests (#2235)

* Add Unit Tests for the following classes:

com.alibaba.otter.canal.client.adapter.support.JdbcTypeUtilTest
com.alibaba.otter.canal.client.adapter.support.UtilTest
com.taobao.tddl.dbsync.binlog.JsonConversion_Json_ValueTest
com.taobao.tddl.dbsync.binlog.JsonDiffConversionTest
com.taobao.tddl.dbsync.binlog.LogBufferTest
com.taobao.tddl.dbsync.binlog.LogEventTest
com.taobao.tddl.dbsync.binlog.event.LogHeaderTest
com.taobao.tddl.dbsync.binlog.event.RowsLogBufferTest
com.alibaba.otter.canal.parse.driver.mysql.packets.client.RegisterSlaveCommandPacketTest
com.alibaba.otter.canal.parse.driver.mysql.utils.ByteHelperTest
com.alibaba.otter.canal.parse.inbound.mysql.ddl.DdlResultTest
com.alibaba.otter.canal.parse.inbound.mysql.ddl.DruidDdlParserTest

These tests were written using Diffblue Cover

* Add dependencies and refactor
This commit is contained in:
EdgarScott
2019-09-25 11:53:24 +01:00
committed by agapple
parent f45c0206da
commit fff623acb1
14 changed files with 1819 additions and 16386 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -36,6 +36,36 @@
<artifactId>snakeyaml</artifactId> <artifactId>snakeyaml</artifactId>
<version>1.19</version> <version>1.19</version>
</dependency> </dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.diffblue</groupId>
<artifactId>deeptestutils</artifactId>
<version>1.9.0</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -0,0 +1,200 @@
package com.alibaba.otter.canal.client.adapter.support;
import static org.mockito.AdditionalMatchers.or;
import static org.mockito.Matchers.isA;
import static org.mockito.Matchers.isNull;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import com.alibaba.otter.canal.client.adapter.support.JdbcTypeUtil;
import com.alibaba.otter.canal.client.adapter.support.Util;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.Timeout;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import java.lang.reflect.Array;
@RunWith(PowerMockRunner.class)
public class JdbcTypeUtilTest {
@Rule public final ExpectedException thrown = ExpectedException.none();
@Rule public final Timeout globalTimeout = new Timeout(10000);
/* testedClasses: JdbcTypeUtil */
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullNegativeNotNullOutput3() {
// Arrange
final String tableName = "foo";
final String columnName = "foo";
final String value = "foo";
final int sqlType = -4;
final String mysqlType = "foo";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertArrayEquals(new byte[] {(byte)102, (byte)111, (byte)111}, ((byte[])actual));
}
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullNegativeNotNullOutputPositive() {
// Arrange
final String tableName = "foo";
final String columnName = "foo";
final String value = "1234";
final int sqlType = -5;
final String mysqlType = "foo";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertEquals(1234L, actual);
}
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullNegativeNotNullOutputPositive2() {
// Arrange
final String tableName = "?????????";
final String columnName = "?";
final String value = "2";
final int sqlType = -5;
final String mysqlType = "bigint";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertEquals(2L, actual);
}
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullPositiveNotNullOutputFalse() {
// Arrange
final String tableName = "?????????";
final String columnName = "?";
final String value = "0";
final int sqlType = 16;
final String mysqlType = "bigint\u046bunsigned";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertFalse((boolean)actual);
}
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullPositiveNotNullOutputNotNull() {
// Arrange
final String tableName = "1";
final String columnName = "Bar";
final String value = "1";
final int sqlType = 12;
final String mysqlType = "2";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertEquals("1", actual);
}
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullPositiveNotNullOutputPositive() {
// Arrange
final String tableName = "foo";
final String columnName = "foo";
final String value = "3";
final int sqlType = 4;
final String mysqlType = "foo";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertEquals(3, actual);
}
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullPositiveNotNullOutputTrue() {
// Arrange
final String tableName = "?????????";
final String columnName = "?";
final String value = "5";
final int sqlType = 16;
final String mysqlType = "bigintsunsigned";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertTrue((boolean)actual);
}
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullPositiveNotNullOutputZero2() {
// Arrange
final String tableName = "?????????";
final String columnName = "?";
final String value = "0";
final int sqlType = 7;
final String mysqlType = "bigint\u046bunsigned";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertEquals(0.0f, (float)actual, 0.0f);
}
// Test written by Diffblue Cover.
@Test
public void typeConvertInputNotNullNotNullNotNullPositiveNotNullOutputZero3() {
// Arrange
final String tableName = "?????????";
final String columnName = "?";
final String value = "0";
final int sqlType = 5;
final String mysqlType = "bigintiunsigned";
// Act
final Object actual =
JdbcTypeUtil.typeConvert(tableName, columnName, value, sqlType, mysqlType);
// Assert result
Assert.assertEquals((short)0, actual);
}
}

View File

@@ -0,0 +1,130 @@
package com.alibaba.otter.canal.client.adapter.support;
import static org.mockito.AdditionalMatchers.or;
import static org.mockito.Matchers.isA;
import static org.mockito.Matchers.isNull;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import com.alibaba.otter.canal.client.adapter.support.Util;
import com.diffblue.deeptestutils.mock.DTUMemberMatcher;
import org.apache.commons.lang.StringUtils;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.Timeout;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import java.lang.reflect.Method;
import java.util.Date;
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.management.*"})
public class UtilTest {
@Rule public final ExpectedException thrown = ExpectedException.none();
@Rule public final Timeout globalTimeout = new Timeout(10000);
/* testedClasses: Util */
// Test written by Diffblue Cover.
@Test
public void cleanColumnInputNotNullOutputNotNull() {
// Arrange
final String column = "1234";
// Act
final String actual = Util.cleanColumn(column);
// Assert result
Assert.assertEquals("1234", actual);
}
// Test written by Diffblue Cover.
@Test
public void cleanColumnInputNullOutputNull() {
// Arrange
final String column = null;
// Act
final String actual = Util.cleanColumn(column);
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@PrepareForTest(StringUtils.class)
@Test
public void parseDate2InputNotNullOutputNull() throws Exception {
// Setup mocks
PowerMockito.mockStatic(StringUtils.class);
// Arrange
final String datetimeStr = "1a 2b 3c";
final Method isEmptyMethod =
DTUMemberMatcher.method(StringUtils.class, "isEmpty", String.class);
PowerMockito.doReturn(true)
.when(StringUtils.class, isEmptyMethod)
.withArguments(or(isA(String.class), isNull(String.class)));
// Act
final Date actual = Util.parseDate2(datetimeStr);
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@PrepareForTest(StringUtils.class)
@Test
public void parseDate2InputNotNullOutputNull2() throws Exception {
// Setup mocks
PowerMockito.mockStatic(StringUtils.class);
// Arrange
final String datetimeStr = "1a 2b 3c";
final Method isEmptyMethod =
DTUMemberMatcher.method(StringUtils.class, "isEmpty", String.class);
PowerMockito.doReturn(false)
.when(StringUtils.class, isEmptyMethod)
.withArguments(or(isA(String.class), isNull(String.class)));
// Act
final Date actual = Util.parseDate2(datetimeStr);
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@PrepareForTest(StringUtils.class)
@Test
public void parseDateInputNotNullOutputNull() throws Exception {
// Setup mocks
PowerMockito.mockStatic(StringUtils.class);
// Arrange
final String datetimeStr = "a/b/c";
final Method isEmptyMethod =
DTUMemberMatcher.method(StringUtils.class, "isEmpty", String.class);
PowerMockito.doReturn(true)
.when(StringUtils.class, isEmptyMethod)
.withArguments(or(isA(String.class), isNull(String.class)));
// Act
final Date actual = Util.parseDate(datetimeStr);
// Assert result
Assert.assertNull(actual);
}
}

View File

@@ -44,5 +44,35 @@
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.diffblue</groupId>
<artifactId>deeptestutils</artifactId>
<version>1.9.0</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -0,0 +1,54 @@
package com.taobao.tddl.dbsync.binlog;
import com.taobao.tddl.dbsync.binlog.JsonConversion.Json_Value;
import com.taobao.tddl.dbsync.binlog.JsonConversion.Json_enum_type;
import com.taobao.tddl.dbsync.binlog.JsonConversion;
import com.taobao.tddl.dbsync.binlog.LogBuffer;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.Timeout;
import java.lang.reflect.Method;
public class JsonConversion_Json_ValueTest {
@Rule public final ExpectedException thrown = ExpectedException.none();
@Rule public final Timeout globalTimeout = new Timeout(10000);
/* testedClasses: JsonConversion_Json_Value */
// Test written by Diffblue Cover.
@Test
public void constructorInputNullNotNullOutputVoid() {
// Arrange
final Json_enum_type t = null;
final String value = ",";
// Act, creating object to test constructor
final Json_Value objectUnderTest = new Json_Value(t, value);
// Assert side effects
Assert.assertEquals(",", objectUnderTest.m_string_value);
}
// Test written by Diffblue Cover.
@Test
public void parse_valueInputZeroNotNullPositiveNotNullOutputIllegalArgumentException() {
// Arrange
final int type = 0;
final LogBuffer buffer = new LogBuffer();
final long len = 4_294_967_297L;
final String charsetName = "3";
// Act
thrown.expect(IllegalArgumentException.class);
JsonConversion.parse_value(type, buffer, len, charsetName);
// Method is not expected to return due to exception thrown
}
}

View File

@@ -0,0 +1,214 @@
package com.taobao.tddl.dbsync.binlog;
import com.taobao.tddl.dbsync.binlog.JsonDiffConversion;
import com.taobao.tddl.dbsync.binlog.LogBuffer;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.Timeout;
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
public class JsonDiffConversionTest {
@Rule public final ExpectedException thrown = ExpectedException.none();
@Rule public final Timeout globalTimeout = new Timeout(10000);
/* testedClasses: JsonDiffConversion */
// Test written by Diffblue Cover.
@Test
public void print_json_diffInputNotNullPositiveNotNullZeroNotNullOutputIllegalArgumentException()
throws InvocationTargetException {
// Arrange
final LogBuffer buffer = new LogBuffer();
buffer.position = 28;
buffer.semival = 0;
final byte[] myByteArray = {(byte)3, (byte)3, (byte)67, (byte)67, (byte)67, (byte)67,
(byte)67, (byte)66, (byte)67, (byte)66, (byte)67, (byte)66,
(byte)67, (byte)67, (byte)67, (byte)66, (byte)67, (byte)66,
(byte)67, (byte)66, (byte)67, (byte)67, (byte)67, (byte)66,
(byte)67, (byte)67, (byte)67, (byte)66, (byte)2, (byte)66};
buffer.buffer = myByteArray;
buffer.limit = -1_000_000_065;
buffer.origin = 1_000_000_096;
final long len = 71L;
final String columnName = "foo";
final int columnIndex = 0;
final String charsetName = "foo";
try {
// Act
thrown.expect(IllegalArgumentException.class);
JsonDiffConversion.print_json_diff(buffer, len, columnName, columnIndex, charsetName);
} catch (IllegalArgumentException ex) {
// Assert side effects
Assert.assertNotNull(buffer);
Assert.assertEquals(30, buffer.position);
Assert.assertEquals(0, buffer.semival);
Assert.assertArrayEquals(new byte[] {(byte)3, (byte)3, (byte)67, (byte)67, (byte)67,
(byte)67, (byte)67, (byte)66, (byte)67, (byte)66,
(byte)67, (byte)66, (byte)67, (byte)67, (byte)67,
(byte)66, (byte)67, (byte)66, (byte)67, (byte)66,
(byte)67, (byte)67, (byte)67, (byte)66, (byte)67,
(byte)67, (byte)67, (byte)66, (byte)2, (byte)66},
buffer.buffer);
Assert.assertEquals(-1_000_000_065, buffer.limit);
Assert.assertEquals(1_000_000_096, buffer.origin);
throw ex;
}
}
// Test written by Diffblue Cover.
@Test
public void print_json_diffInputNotNullZeroNotNullZeroNotNullOutputIllegalArgumentException()
throws InvocationTargetException {
// Arrange
final LogBuffer buffer = new LogBuffer();
buffer.position = 28;
buffer.semival = 0;
final byte[] myByteArray = {
(byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2,
(byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2,
(byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)3, (byte)2};
buffer.buffer = myByteArray;
buffer.limit = 31;
buffer.origin = 0;
final long len = 0L;
final String columnName = "foo";
final int columnIndex = 0;
final String charsetName = "foo";
try {
// Act
thrown.expect(IllegalArgumentException.class);
JsonDiffConversion.print_json_diff(buffer, len, columnName, columnIndex, charsetName);
} catch (IllegalArgumentException ex) {
// Assert side effects
Assert.assertNotNull(buffer);
Assert.assertEquals(29, buffer.position);
Assert.assertEquals(0, buffer.semival);
Assert.assertArrayEquals(new byte[] {(byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2,
(byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2,
(byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2,
(byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2,
(byte)2, (byte)2, (byte)2, (byte)2, (byte)3, (byte)2},
buffer.buffer);
Assert.assertEquals(31, buffer.limit);
Assert.assertEquals(0, buffer.origin);
throw ex;
}
}
// Test written by Diffblue Cover.
@Test
public void print_json_diffInputNotNullZeroNotNullZeroNotNullOutputIllegalArgumentException2()
throws InvocationTargetException {
// Arrange
final LogBuffer buffer = new LogBuffer();
buffer.position = 15;
buffer.semival = 0;
final byte[] myByteArray = {
(byte)1, (byte)1, (byte)0, (byte)0, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1,
(byte)0, (byte)1, (byte)1, (byte)1, (byte)1, (byte)0, (byte)1, (byte)1, (byte)0, (byte)0,
(byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)0, (byte)1, (byte)1};
buffer.buffer = myByteArray;
buffer.limit = -1_215_751_986;
buffer.origin = 1_215_752_002;
final long len = 0L;
final String columnName = "foo";
final int columnIndex = 0;
final String charsetName = "foo";
try {
// Act
thrown.expect(IllegalArgumentException.class);
JsonDiffConversion.print_json_diff(buffer, len, columnName, columnIndex, charsetName);
} catch (IllegalArgumentException ex) {
// Assert side effects
Assert.assertNotNull(buffer);
Assert.assertEquals(16, buffer.position);
Assert.assertEquals(0, buffer.semival);
Assert.assertArrayEquals(new byte[] {(byte)1, (byte)1, (byte)0, (byte)0, (byte)1, (byte)1,
(byte)1, (byte)1, (byte)1, (byte)1, (byte)0, (byte)1,
(byte)1, (byte)1, (byte)1, (byte)0, (byte)1, (byte)1,
(byte)0, (byte)0, (byte)1, (byte)1, (byte)1, (byte)1,
(byte)1, (byte)1, (byte)1, (byte)0, (byte)1, (byte)1},
buffer.buffer);
Assert.assertEquals(-1_215_751_986, buffer.limit);
Assert.assertEquals(1_215_752_002, buffer.origin);
throw ex;
}
}
// Test written by Diffblue Cover.
@Test
public void print_json_diffInputNotNullZeroNotNullZeroNotNullOutputIllegalArgumentException3()
throws InvocationTargetException {
// Arrange
final LogBuffer buffer = new LogBuffer();
buffer.position = 27;
buffer.semival = 0;
final byte[] myByteArray = {
(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0,
(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0,
(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)1, (byte)0};
buffer.buffer = myByteArray;
buffer.limit = 31;
buffer.origin = -1;
final long len = 0L;
final String columnName = "foo";
final int columnIndex = 0;
final String charsetName = "foo";
try {
// Act
thrown.expect(IllegalArgumentException.class);
JsonDiffConversion.print_json_diff(buffer, len, columnName, columnIndex, charsetName);
} catch (IllegalArgumentException ex) {
// Assert side effects
Assert.assertNotNull(buffer);
Assert.assertEquals(29, buffer.position);
Assert.assertEquals(0, buffer.semival);
Assert.assertArrayEquals(new byte[] {(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0,
(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0,
(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0,
(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0,
(byte)0, (byte)0, (byte)0, (byte)0, (byte)1, (byte)0},
buffer.buffer);
Assert.assertEquals(31, buffer.limit);
Assert.assertEquals(-1, buffer.origin);
throw ex;
}
}
// Test written by Diffblue Cover.
@Test
public void print_json_diffInputNotNullZeroNotNullZeroNotNullOutputNotNull() {
// Arrange
final LogBuffer buffer = new LogBuffer();
final long len = 0L;
final String columnName = ",";
final int columnIndex = 0;
final String charsetName = "1a 2b 3c";
// Act
final StringBuilder actual =
JsonDiffConversion.print_json_diff(buffer, len, columnName, columnIndex, charsetName);
// Assert result
Assert.assertNotNull(actual);
Assert.assertEquals(",", actual.toString());
}
}

View File

@@ -1,312 +0,0 @@
package com.taobao.tddl.dbsync.binlog;
import java.math.BigDecimal;
import java.math.BigInteger;
import junit.framework.TestCase;
public class LogBufferTest extends TestCase {
public static final int LOOP = 10000;
public void testSigned() {
byte[] array = { 0, 0, 0, (byte) 0xff };
LogBuffer buffer = new LogBuffer(array, 0, array.length);
System.out.println(buffer.getInt32(0));
System.out.println(buffer.getUint32(0));
System.out.println(buffer.getInt24(1));
System.out.println(buffer.getUint24(1));
}
public void testBigInteger() {
byte[] array = { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
(byte) 0xff };
LogBuffer buffer = new LogBuffer(array, 0, array.length);
long tt1 = 0;
long l1 = 0;
for (int i = 0; i < LOOP; i++) {
final long t1 = System.nanoTime();
l1 = buffer.getLong64(0);
tt1 += System.nanoTime() - t1;
}
System.out.print(tt1 / LOOP);
System.out.print("ns >> ");
System.out.println(l1);
long tt2 = 0;
BigInteger l2 = null;
for (int i = 0; i < LOOP; i++) {
final long t2 = System.nanoTime();
l2 = buffer.getUlong64(0);
tt2 += System.nanoTime() - t2;
}
System.out.print(tt2 / LOOP);
System.out.print("ns >> ");
System.out.println(l2);
}
/* Reads big-endian integer from no more than 4 bytes */
private static int convertNBytesToInt(byte[] buffer, int offset, int length) {
int ret = 0;
for (int i = offset; i < (offset + length); i++) {
ret = (ret << 8) | (0xff & buffer[i]);
}
return ret;
}
private static int convert4BytesToInt(byte[] buffer, int offset) {
int value;
value = (0xff & buffer[offset + 3]);
value += (0xff & buffer[offset + 2]) << 8;
value += (0xff & buffer[offset + 1]) << 16;
value += (0xff & buffer[offset]) << 24;
return value;
}
public static short convert1ByteToShort(byte[] buffer, int offset) {
short value;
value = (short) buffer[offset + 0];
return value;
}
public static short convert2bytesToShort(byte[] buffer, int offset) {
short value;
value = (short) (buffer[offset + 0] << 8);
value += (short) (buffer[offset + 1] & 0xff);
return value;
}
public static final BigDecimal extractDecimal(byte[] buffer, int precision, int scale) {
//
// Decimal representation in binlog seems to be as follows:
// 1 byte - 'precision'
// 1 byte - 'scale'
// remaining n bytes - integer such that value = n / (10^scale)
// Integer is represented as follows:
// 1st bit - sign such that set == +, unset == -
// every 4 bytes represent 9 digits in big-endian order, so that if
// you print the values of these quads as big-endian integers one after
// another, you get the whole number string representation in decimal.
// What remains is to put a sign and a decimal dot.
// 13 0a 80 00 00 05 1b 38 b0 60 00 means:
// 0x13 - precision = 19
// 0x0a - scale = 10
// 0x80 - positive
// 0x00000005 0x1b38b060 0x00
// 5 456700000 0
// 54567000000 / 10^{10} = 5.4567
//
// int_size below shows how long is integer part
//
// offset = offset + 2; // offset of the number part
//
int intg = precision - scale;
int intg0 = intg / LogBuffer.DIG_PER_INT32;
int frac0 = scale / LogBuffer.DIG_PER_INT32;
int intg0x = intg - intg0 * LogBuffer.DIG_PER_INT32;
int frac0x = scale - frac0 * LogBuffer.DIG_PER_INT32;
int offset = 0;
int sign = (buffer[offset] & 0x80) == 0x80 ? 1 : -1;
// how many bytes are used to represent given amount of digits?
int integerSize = intg0 * LogBuffer.SIZE_OF_INT32 + LogBuffer.dig2bytes[intg0x];
int decimalSize = frac0 * LogBuffer.SIZE_OF_INT32 + LogBuffer.dig2bytes[frac0x];
int bin_size = integerSize + decimalSize; // total bytes
byte[] d_copy = new byte[bin_size];
if (bin_size > buffer.length) {
throw new ArrayIndexOutOfBoundsException("Calculated bin_size: " + bin_size + ", available bytes: "
+ buffer.length);
}
// Invert first bit
d_copy[0] = buffer[0];
d_copy[0] ^= 0x80;
if (sign == -1) {
// Invert every byte
d_copy[0] ^= 0xFF;
}
for (int i = 1; i < bin_size; i++) {
d_copy[i] = buffer[i];
if (sign == -1) {
// Invert every byte
d_copy[i] ^= 0xFF;
}
}
// Integer part
offset = LogBuffer.dig2bytes[intg0x];
BigDecimal intPart = new BigDecimal(0);
if (offset > 0) intPart = BigDecimal.valueOf(convertNBytesToInt(d_copy, 0, offset));
while (offset < integerSize) {
intPart = intPart.movePointRight(LogBuffer.DIG_PER_DEC1).add(BigDecimal.valueOf(convert4BytesToInt(d_copy,
offset)));
offset += 4;
}
// Decimal part
BigDecimal fracPart = new BigDecimal(0);
int shift = 0;
for (int i = 0; i < frac0; i++) {
shift += LogBuffer.DIG_PER_DEC1;
fracPart = fracPart.add(BigDecimal.valueOf(convert4BytesToInt(d_copy, offset)).movePointLeft(shift));
offset += 4;
}
if (LogBuffer.dig2bytes[frac0x] > 0) {
fracPart = fracPart.add(BigDecimal.valueOf(convertNBytesToInt(d_copy, offset, LogBuffer.dig2bytes[frac0x]))
.movePointLeft(shift + frac0x));
}
return BigDecimal.valueOf(sign).multiply(intPart.add(fracPart));
}
public static final byte[] array1 = { (byte) 0x80, 0x00, 0x00, 0x05, 0x1b, 0x38, (byte) 0xb0, 0x60, 0x00 };
public static final byte[] array2 = { (byte) 0x7f, (byte) 0xff, (byte) 0xff, (byte) 0xfb, (byte) 0xe4, (byte) 0xc7,
(byte) 0x4f, (byte) 0xa0, (byte) 0xff };
public static final byte[] array3 = { -128, 0, 6, 20, 113, 56, 6, 26, -123 };
public static final byte[] array4 = { -128, 7, 0, 0, 0, 1, 0, 0, 3 };
public static final byte[] array5 = { -128, 0, 0, 0, 0, 1, 1, -122, -96, -108 };
public void testBigDecimal() throws InterruptedException {
do {
System.out.println("old extract decimal: ");
long tt1 = 0;
BigDecimal bd1 = null;
for (int i = 0; i < LOOP; i++) {
final long t1 = System.nanoTime();
bd1 = extractDecimal(array2, 19, 10);
tt1 += System.nanoTime() - t1;
}
System.out.print(tt1 / LOOP);
System.out.print("ns >> ");
System.out.println(bd1);
long tt2 = 0;
BigDecimal bd2 = null;
for (int i = 0; i < LOOP; i++) {
final long t2 = System.nanoTime();
bd2 = extractDecimal(array1, 19, 10);
tt2 += System.nanoTime() - t2;
}
System.out.print(tt2 / LOOP);
System.out.print("ns >> ");
System.out.println(bd2);
long tt3 = 0;
BigDecimal bd3 = null;
for (int i = 0; i < LOOP; i++) {
final long t3 = System.nanoTime();
bd3 = extractDecimal(array3, 18, 6);
tt3 += System.nanoTime() - t3;
}
System.out.print(tt3 / LOOP);
System.out.print("ns >> ");
System.out.println(bd3);
long tt4 = 0;
BigDecimal bd4 = null;
for (int i = 0; i < LOOP; i++) {
final long t4 = System.nanoTime();
bd4 = extractDecimal(array4, 18, 6);
tt4 += System.nanoTime() - t4;
}
System.out.print(tt4 / LOOP);
System.out.print("ns >> ");
System.out.println(bd4);
long tt5 = 0;
BigDecimal bd5 = null;
for (int i = 0; i < LOOP; i++) {
final long t5 = System.nanoTime();
bd5 = extractDecimal(array5, 18, 6);
tt5 += System.nanoTime() - t5;
}
System.out.print(tt5 / LOOP);
System.out.print("ns >> ");
System.out.println(bd5);
} while (false);
do {
System.out.println("new extract decimal: ");
LogBuffer buffer1 = new LogBuffer(array2, 0, array2.length);
LogBuffer buffer2 = new LogBuffer(array1, 0, array1.length);
LogBuffer buffer3 = new LogBuffer(array3, 0, array3.length);
LogBuffer buffer4 = new LogBuffer(array4, 0, array4.length);
LogBuffer buffer5 = new LogBuffer(array5, 0, array5.length);
long tt1 = 0;
BigDecimal bd1 = null;
for (int i = 0; i < LOOP; i++) {
final long t1 = System.nanoTime();
bd1 = buffer1.getDecimal(0, 19, 10);
tt1 += System.nanoTime() - t1;
}
System.out.print(tt1 / LOOP);
System.out.print("ns >> ");
System.out.println(bd1);
long tt2 = 0;
BigDecimal bd2 = null;
for (int i = 0; i < LOOP; i++) {
final long t2 = System.nanoTime();
bd2 = buffer2.getDecimal(0, 19, 10);
tt2 += System.nanoTime() - t2;
}
System.out.print(tt2 / LOOP);
System.out.print("ns >> ");
System.out.println(bd2);
long tt3 = 0;
BigDecimal bd3 = null;
for (int i = 0; i < LOOP; i++) {
final long t3 = System.nanoTime();
bd3 = buffer3.getDecimal(0, 18, 6);
tt3 += System.nanoTime() - t3;
}
System.out.print(tt3 / LOOP);
System.out.print("ns >> ");
System.out.println(bd3);
long tt4 = 0;
BigDecimal bd4 = null;
for (int i = 0; i < LOOP; i++) {
final long t4 = System.nanoTime();
bd4 = buffer4.getDecimal(0, 18, 6);
tt4 += System.nanoTime() - t4;
}
System.out.print(tt4 / LOOP);
System.out.print("ns >> ");
System.out.println(bd4);
long tt5 = 0;
BigDecimal bd5 = null;
for (int i = 0; i < LOOP; i++) {
final long t5 = System.nanoTime();
bd5 = buffer5.getDecimal(0, 18, 6);
tt5 += System.nanoTime() - t5;
}
System.out.print(tt5 / LOOP);
System.out.print("ns >> ");
System.out.println(bd5);
} while (false);
}
}

View File

@@ -0,0 +1,534 @@
package com.taobao.tddl.dbsync.binlog;
import com.taobao.tddl.dbsync.binlog.LogEvent;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.Timeout;
public class LogEventTest {
@Rule public final ExpectedException thrown = ExpectedException.none();
@Rule public final Timeout globalTimeout = new Timeout(10000);
/* testedClasses: LogEvent */
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull() {
// Arrange
final int type = 8;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Create_file", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull2() {
// Arrange
final int type = 12;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("New_load", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull3() {
// Arrange
final int type = 39;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Update_rows_partial", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull4() {
// Arrange
final int type = 36;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Unknown", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull5() {
// Arrange
final int type = 7;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Slave", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull6() {
// Arrange
final int type = 6;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Load", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull7() {
// Arrange
final int type = 10;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Exec_load", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull8() {
// Arrange
final int type = 5;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Intvar", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull9() {
// Arrange
final int type = 11;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Delete_file", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull10() {
// Arrange
final int type = 4;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Rotate", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull11() {
// Arrange
final int type = 13;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("RAND", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull12() {
// Arrange
final int type = 34;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Anonymous_Gtid", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull13() {
// Arrange
final int type = 15;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Format_desc", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull14() {
// Arrange
final int type = 32;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Delete_rows", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull15() {
// Arrange
final int type = 16;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Xid", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull16() {
// Arrange
final int type = 30;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Write_rows", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull17() {
// Arrange
final int type = 18;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Execute_load_query", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull18() {
// Arrange
final int type = 29;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Rows_query", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull19() {
// Arrange
final int type = 19;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Table_map", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull20() {
// Arrange
final int type = 28;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Ignorable", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull21() {
// Arrange
final int type = 33;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Gtid", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull22() {
// Arrange
final int type = 27;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Heartbeat", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull23() {
// Arrange
final int type = 26;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Incident", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull24() {
// Arrange
final int type = 31;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Update_rows", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull25() {
// Arrange
final int type = 25;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Delete_rows_v1", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull26() {
// Arrange
final int type = 24;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Update_rows_v1", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull27() {
// Arrange
final int type = 23;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Write_rows_v1", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull28() {
// Arrange
final int type = 35;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Previous_gtids", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull29() {
// Arrange
final int type = 22;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Delete_rows_event_old", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull30() {
// Arrange
final int type = 21;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Update_rows_event_old", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull31() {
// Arrange
final int type = 20;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Write_rows_event_old", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull32() {
// Arrange
final int type = 17;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Begin_load_query", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull33() {
// Arrange
final int type = 14;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("User var", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull34() {
// Arrange
final int type = 9;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Append_block", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull35() {
// Arrange
final int type = 2;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Query", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull36() {
// Arrange
final int type = 3;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Stop", actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeNameInputPositiveOutputNotNull37() {
// Arrange
final int type = 1;
// Act
final String actual = LogEvent.getTypeName(type);
// Assert result
Assert.assertEquals("Start_v3", actual);
}
}

View File

@@ -0,0 +1,231 @@
package com.taobao.tddl.dbsync.binlog.event;
import com.taobao.tddl.dbsync.binlog.event.LogHeader;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.Timeout;
import java.util.HashMap;
public class LogHeaderTest {
@Rule public final ExpectedException thrown = ExpectedException.none();
@Rule public final Timeout globalTimeout = new Timeout(10000);
/* testedClasses: LogHeader */
// Test written by Diffblue Cover.
@Test
public void constructorInputZeroOutputVoid() {
// Arrange
final int type = 0;
// Act, creating object to test constructor
final LogHeader objectUnderTest = new LogHeader(type);
// Assert side effects
final HashMap<String, String> hashMap = new HashMap<String, String>();
Assert.assertEquals(hashMap, objectUnderTest.gtidMap);
}
// Test written by Diffblue Cover.
@Test
public void getChecksumAlgOutputZero() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final int actual = objectUnderTest.getChecksumAlg();
// Assert result
Assert.assertEquals(0, actual);
}
// Test written by Diffblue Cover.
@Test
public void getCrcOutputZero() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final long actual = objectUnderTest.getCrc();
// Assert result
Assert.assertEquals(0L, actual);
}
// Test written by Diffblue Cover.
@Test
public void getCurrentGtidLastCommitOutputNull() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final String actual = objectUnderTest.getCurrentGtidLastCommit();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getCurrentGtidOutputNull() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final String actual = objectUnderTest.getCurrentGtid();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getCurrentGtidSnOutputNull() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final String actual = objectUnderTest.getCurrentGtidSn();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getEventLenOutputZero() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final int actual = objectUnderTest.getEventLen();
// Assert result
Assert.assertEquals(0, actual);
}
// Test written by Diffblue Cover.
@Test
public void getFlagsOutputZero() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final int actual = objectUnderTest.getFlags();
// Assert result
Assert.assertEquals(0, actual);
}
// Test written by Diffblue Cover.
@Test
public void getGtidSetStrOutputNull() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final String actual = objectUnderTest.getGtidSetStr();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getLogFileNameOutputNull() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final String actual = objectUnderTest.getLogFileName();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getLogPosOutputZero() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final long actual = objectUnderTest.getLogPos();
// Assert result
Assert.assertEquals(0L, actual);
}
// Test written by Diffblue Cover.
@Test
public void getServerIdOutputZero() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final long actual = objectUnderTest.getServerId();
// Assert result
Assert.assertEquals(0L, actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeOutputZero() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final int actual = objectUnderTest.getType();
// Assert result
Assert.assertEquals(0, actual);
}
// Test written by Diffblue Cover.
@Test
public void getWhenOutputZero() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
// Act
final long actual = objectUnderTest.getWhen();
// Assert result
Assert.assertEquals(0L, actual);
}
// Test written by Diffblue Cover.
@Test
public void setLogFileNameInputNotNullOutputVoid() {
// Arrange
final LogHeader objectUnderTest = new LogHeader(0);
final String logFileName = "3";
// Act
objectUnderTest.setLogFileName(logFileName);
// Assert side effects
Assert.assertEquals("3", objectUnderTest.getLogFileName());
}
}

View File

@@ -39,5 +39,35 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.diffblue</groupId>
<artifactId>deeptestutils</artifactId>
<version>1.9.0</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -0,0 +1,59 @@
package com.alibaba.otter.canal.parse.driver.mysql.packets.client;
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.RegisterSlaveCommandPacket;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.Timeout;
import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
public class RegisterSlaveCommandPacketTest {
@Rule public final ExpectedException thrown = ExpectedException.none();
@Rule public final Timeout globalTimeout = new Timeout(10000);
/* testedClasses: RegisterSlaveCommandPacket */
// Test written by Diffblue Cover.
@Test
public void toBytesOutput27() throws IOException, InvocationTargetException {
// Arrange
final RegisterSlaveCommandPacket objectUnderTest = new RegisterSlaveCommandPacket();
objectUnderTest.serverId = 0L;
objectUnderTest.reportPort = 0;
objectUnderTest.reportPasswd = "foo";
objectUnderTest.reportHost = "foo";
objectUnderTest.reportUser = "foo";
objectUnderTest.setCommand((byte)0);
// Act
final byte[] actual = objectUnderTest.toBytes();
// Assert result
Assert.assertArrayEquals(
new byte[] {(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)3, (byte)102,
(byte)111, (byte)111, (byte)3, (byte)102, (byte)111, (byte)111, (byte)3,
(byte)102, (byte)111, (byte)111, (byte)0, (byte)0, (byte)0, (byte)0,
(byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0},
actual);
}
// Test written by Diffblue Cover.
@Test
public void toLHInputZeroOutput4() {
// Arrange
final int n = 0;
// Act
final byte[] actual = RegisterSlaveCommandPacket.toLH(n);
// Assert result
Assert.assertArrayEquals(new byte[] {(byte)0, (byte)0, (byte)0, (byte)0}, actual);
}
}

View File

@@ -92,5 +92,35 @@
<groupId>javax.annotation</groupId> <groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId> <artifactId>javax.annotation-api</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.diffblue</groupId>
<artifactId>deeptestutils</artifactId>
<version>1.9.0</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -0,0 +1,277 @@
package com.alibaba.otter.canal.parse.inbound.mysql.ddl;
import com.alibaba.otter.canal.parse.inbound.mysql.ddl.DdlResult;
import com.alibaba.otter.canal.protocol.CanalEntry.EventType;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.Timeout;
import java.lang.reflect.InvocationTargetException;
public class DdlResultTest {
@Rule public final ExpectedException thrown = ExpectedException.none();
@Rule public final Timeout globalTimeout = new Timeout(10000);
/* testedClasses: DdlResult */
// Test written by Diffblue Cover.
@Test
public void cloneOutputNotNull() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
// Act
final DdlResult actual = objectUnderTest.clone();
// Assert result
Assert.assertNotNull(actual);
Assert.assertNull(actual.getSchemaName());
Assert.assertNull(actual.getType());
Assert.assertNull(actual.getOriSchemaName());
Assert.assertNull(actual.getTableName());
Assert.assertNull(actual.getRenameTableResult());
Assert.assertNull(actual.getOriTableName());
}
// Test written by Diffblue Cover.
@Test
public void constructorInputNotNullNotNullNotNullNotNullOutputVoid() {
// Arrange
final String schemaName = "foo";
final String tableName = "\'";
final String oriSchemaName = "1a 2b 3c";
final String oriTableName = "BAZ";
// Act, creating object to test constructor
final DdlResult objectUnderTest =
new DdlResult(schemaName, tableName, oriSchemaName, oriTableName);
// Assert side effects
Assert.assertEquals("foo", objectUnderTest.getSchemaName());
Assert.assertEquals("1a 2b 3c", objectUnderTest.getOriSchemaName());
Assert.assertEquals("\'", objectUnderTest.getTableName());
Assert.assertEquals("BAZ", objectUnderTest.getOriTableName());
}
// Test written by Diffblue Cover.
@Test
public void constructorInputNotNullNotNullOutputVoid() {
// Arrange
final String schemaName = ",";
final String tableName = "BAZ";
// Act, creating object to test constructor
final DdlResult objectUnderTest = new DdlResult(schemaName, tableName);
// Assert side effects
Assert.assertEquals(",", objectUnderTest.getSchemaName());
Assert.assertEquals("BAZ", objectUnderTest.getTableName());
}
// Test written by Diffblue Cover.
@Test
public void constructorInputNotNullOutputVoid() {
// Arrange
final String schemaName = "3";
// Act, creating object to test constructor
final DdlResult objectUnderTest = new DdlResult(schemaName);
// Assert side effects
Assert.assertEquals("3", objectUnderTest.getSchemaName());
}
// Test written by Diffblue Cover.
@Test
public void getOriSchemaNameOutputNull() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
// Act
final String actual = objectUnderTest.getOriSchemaName();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getOriTableNameOutputNull() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
// Act
final String actual = objectUnderTest.getOriTableName();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getRenameTableResultOutputNull() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
// Act
final DdlResult actual = objectUnderTest.getRenameTableResult();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getSchemaNameOutputNull() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
// Act
final String actual = objectUnderTest.getSchemaName();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getTableNameOutputNull() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
// Act
final String actual = objectUnderTest.getTableName();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void getTypeOutputNull() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
// Act
final EventType actual = objectUnderTest.getType();
// Assert result
Assert.assertNull(actual);
}
// Test written by Diffblue Cover.
@Test
public void setOriSchemaNameInputNotNullOutputVoid() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
final String oriSchemaName = "3";
// Act
objectUnderTest.setOriSchemaName(oriSchemaName);
// Assert side effects
Assert.assertEquals("3", objectUnderTest.getOriSchemaName());
}
// Test written by Diffblue Cover.
@Test
public void setOriTableNameInputNotNullOutputVoid() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
final String oriTableName = "3";
// Act
objectUnderTest.setOriTableName(oriTableName);
// Assert side effects
Assert.assertEquals("3", objectUnderTest.getOriTableName());
}
// Test written by Diffblue Cover.
@Test
public void setSchemaNameInputNotNullOutputVoid() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
final String schemaName = "3";
// Act
objectUnderTest.setSchemaName(schemaName);
// Assert side effects
Assert.assertEquals("3", objectUnderTest.getSchemaName());
}
// Test written by Diffblue Cover.
@Test
public void setTableNameInputNotNullOutputVoid() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
final String tableName = "3";
// Act
objectUnderTest.setTableName(tableName);
// Assert side effects
Assert.assertEquals("3", objectUnderTest.getTableName());
}
// Test written by Diffblue Cover.
@Test
public void toStringOutputNotNull() {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
// Act
final String actual = objectUnderTest.toString();
// Assert result
Assert.assertEquals(
"DdlResult [schemaName=null , tableName=null , oriSchemaName=null , oriTableName=null , type=null ];",
actual);
}
// Test written by Diffblue Cover.
@Test
public void toStringOutputNotNull2() throws InvocationTargetException {
// Arrange
final DdlResult objectUnderTest = new DdlResult();
objectUnderTest.setSchemaName(null);
objectUnderTest.setType(null);
objectUnderTest.setOriSchemaName(null);
objectUnderTest.setTableName(",");
final DdlResult ddlResult = new DdlResult();
objectUnderTest.setRenameTableResult(ddlResult);
objectUnderTest.setOriTableName("2");
// Act
final String actual = objectUnderTest.toString();
// Assert result
Assert.assertEquals(
"DdlResult [schemaName=null , tableName=, , oriSchemaName=null , oriTableName=2 , type=null ];DdlResult [schemaName=null , tableName=null , oriSchemaName=null , oriTableName=null , type=null ];",
actual);
}
}