This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 8be832e4bb3 Add more test cases on MySQLBinlogTableMapEventPacketTest
(#38180)
8be832e4bb3 is described below
commit 8be832e4bb3165ab5b1e5f7452de9575b692e5a1
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Feb 24 19:35:24 2026 +0800
Add more test cases on MySQLBinlogTableMapEventPacketTest (#38180)
---
.../binlog/row/MySQLBinlogTableMapEventPacket.java | 1 -
.../row/MySQLBinlogTableMapEventPacketTest.java | 76 ++++++++++++++++------
2 files changed, 55 insertions(+), 22 deletions(-)
diff --git
a/database/protocol/dialect/mysql/src/main/java/org/apache/shardingsphere/database/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacket.java
b/database/protocol/dialect/mysql/src/main/java/org/apache/shardingsphere/database/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacket.java
index 936d3849ad3..eaa20d900c0 100644
---
a/database/protocol/dialect/mysql/src/main/java/org/apache/shardingsphere/database/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacket.java
+++
b/database/protocol/dialect/mysql/src/main/java/org/apache/shardingsphere/database/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacket.java
@@ -112,6 +112,5 @@ public final class MySQLBinlogTableMapEventPacket extends
AbstractMySQLBinlogEve
@Override
protected void writeEvent(final MySQLPacketPayload payload) {
- // TODO
}
}
diff --git
a/database/protocol/dialect/mysql/src/test/java/org/apache/shardingsphere/database/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacketTest.java
b/database/protocol/dialect/mysql/src/test/java/org/apache/shardingsphere/database/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacketTest.java
index bb3d56bff6e..ddca3b75f05 100644
---
a/database/protocol/dialect/mysql/src/test/java/org/apache/shardingsphere/database/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacketTest.java
+++
b/database/protocol/dialect/mysql/src/test/java/org/apache/shardingsphere/database/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacketTest.java
@@ -25,16 +25,20 @@ import
org.apache.shardingsphere.database.protocol.mysql.packet.command.query.bi
import
org.apache.shardingsphere.database.protocol.mysql.payload.MySQLPacketPayload;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
-import java.util.Collection;
-import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Stream;
-import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -51,36 +55,59 @@ class MySQLBinlogTableMapEventPacketTest {
@Mock
private MySQLBinlogEventHeader binlogEventHeader;
- @Test
- void assertNew() {
- when(payload.readInt6()).thenReturn(1L);
- when(payload.readInt2()).thenReturn(0, 255);
- when(payload.readInt1()).thenReturn(4, 4,
MySQLBinaryColumnType.LONGLONG.getValue(),
MySQLBinaryColumnType.VARCHAR.getValue(),
- MySQLBinaryColumnType.NEWDECIMAL.getValue(),
MySQLBinaryColumnType.DATETIME2.getValue(), 11,
- 0x0e);
- when(payload.readStringFix(4)).thenReturn("test");
- when(payload.readIntLenenc()).thenReturn(4L);
- when(payload.getByteBuf()).thenReturn(byteBuf);
- when(byteBuf.readUnsignedShort()).thenReturn(10);
- when(byteBuf.readerIndex()).thenReturn(1);
+ @ParameterizedTest(name = "{0}")
+ @MethodSource("assertNewArguments")
+ void assertNew(final String name, final int eventSize, final int
checksumLength, final int readerIndex, final int expectedRemainBytesLength) {
+ when(binlogEventHeader.getEventSize()).thenReturn(eventSize);
+ when(binlogEventHeader.getChecksumLength()).thenReturn(checksumLength);
+ mockReadPayload(readerIndex);
MySQLBinlogTableMapEventPacket actual = new
MySQLBinlogTableMapEventPacket(binlogEventHeader, payload);
assertThat(actual.getTableId(), is(1L));
assertThat(actual.getFlags(), is(0));
assertThat(actual.getSchemaName(), is("test"));
assertThat(actual.getTableName(), is("test"));
verify(payload, times(2)).skipReserved(1);
+ if (0 < expectedRemainBytesLength) {
+ verify(payload).skipReserved(expectedRemainBytesLength);
+ } else {
+ verify(payload, never()).skipReserved(expectedRemainBytesLength);
+ }
assertThat(actual.getColumnCount(), is(4));
assertColumnDefs(actual.getColumnDefs());
assertNullBitmap(actual.getNullBitMap());
}
- private void assertColumnDefs(final Collection<MySQLBinlogColumnDef>
columnDefs) {
+ @Test
+ void assertWrite() {
+ MySQLBinlogEventHeader eventHeader = new MySQLBinlogEventHeader(1, 2,
3, 4, 5, 6, 0);
+ mockReadPayload(1);
+ new MySQLBinlogTableMapEventPacket(eventHeader,
payload).write(payload);
+ verify(payload).writeInt4(1);
+ verify(payload).writeInt1(2);
+ verify(payload).writeInt4(3);
+ verify(payload).writeInt4(4);
+ verify(payload).writeInt4(5);
+ verify(payload).writeInt2(6);
+ }
+
+ private void mockReadPayload(final int readerIndex) {
+ when(payload.readInt6()).thenReturn(1L);
+ when(payload.readInt2()).thenReturn(0, 255);
+ when(payload.readInt1()).thenReturn(4, 4,
MySQLBinaryColumnType.LONGLONG.getValue(),
MySQLBinaryColumnType.VARCHAR.getValue(),
+ MySQLBinaryColumnType.NEWDECIMAL.getValue(),
MySQLBinaryColumnType.DATETIME2.getValue(), 11, 0x0e);
+ when(payload.readStringFix(4)).thenReturn("test");
+ when(payload.readIntLenenc()).thenReturn(4L);
+ when(payload.getByteBuf()).thenReturn(byteBuf);
+ when(byteBuf.readUnsignedShort()).thenReturn(10);
+ when(byteBuf.readerIndex()).thenReturn(readerIndex);
+ }
+
+ private void assertColumnDefs(final List<MySQLBinlogColumnDef> columnDefs)
{
assertThat(columnDefs.size(), is(4));
- Iterator<MySQLBinlogColumnDef> columnDefIterator =
columnDefs.iterator();
- assertColumnDef(columnDefIterator.next(),
MySQLBinaryColumnType.LONGLONG, 0);
- assertColumnDef(columnDefIterator.next(),
MySQLBinaryColumnType.VARCHAR, 255);
- assertColumnDef(columnDefIterator.next(),
MySQLBinaryColumnType.NEWDECIMAL, 10);
- assertColumnDef(columnDefIterator.next(),
MySQLBinaryColumnType.DATETIME2, 11);
+ assertColumnDef(columnDefs.get(0), MySQLBinaryColumnType.LONGLONG, 0);
+ assertColumnDef(columnDefs.get(1), MySQLBinaryColumnType.VARCHAR, 255);
+ assertColumnDef(columnDefs.get(2), MySQLBinaryColumnType.NEWDECIMAL,
10);
+ assertColumnDef(columnDefs.get(3), MySQLBinaryColumnType.DATETIME2,
11);
}
private void assertColumnDef(final MySQLBinlogColumnDef actual, final
MySQLBinaryColumnType columnType, final int columnMeta) {
@@ -94,4 +121,11 @@ class MySQLBinlogTableMapEventPacketTest {
assertTrue(actualNullBitMap.isNullParameter(2));
assertTrue(actualNullBitMap.isNullParameter(3));
}
+
+ private static Stream<Arguments> assertNewArguments() {
+ return Stream.of(
+ Arguments.of("remain bytes is zero", 0, 0, 1, 0),
+ Arguments.of("remain bytes is positive", 8, 0, 1, 8),
+ Arguments.of("remain bytes is negative", 2, 0, 4, -1));
+ }
}