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 ec41f38b409 Add more test cases on MySQLColumnDefinition41PacketTest 
(#38190)
ec41f38b409 is described below

commit ec41f38b4091d3f1f7234bebbb538fefdd5d918c
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Feb 25 12:39:44 2026 +0800

    Add more test cases on MySQLColumnDefinition41PacketTest (#38190)
---
 .../query/MySQLColumnDefinition41PacketTest.java   | 86 +++++++++++++++++-----
 1 file changed, 68 insertions(+), 18 deletions(-)

diff --git 
a/database/protocol/dialect/mysql/src/test/java/org/apache/shardingsphere/database/protocol/mysql/packet/command/query/MySQLColumnDefinition41PacketTest.java
 
b/database/protocol/dialect/mysql/src/test/java/org/apache/shardingsphere/database/protocol/mysql/packet/command/query/MySQLColumnDefinition41PacketTest.java
index 8dd45cc4882..1497ab55a11 100644
--- 
a/database/protocol/dialect/mysql/src/test/java/org/apache/shardingsphere/database/protocol/mysql/packet/command/query/MySQLColumnDefinition41PacketTest.java
+++ 
b/database/protocol/dialect/mysql/src/test/java/org/apache/shardingsphere/database/protocol/mysql/packet/command/query/MySQLColumnDefinition41PacketTest.java
@@ -20,12 +20,20 @@ package 
org.apache.shardingsphere.database.protocol.mysql.packet.command.query;
 import 
org.apache.shardingsphere.database.protocol.mysql.constant.MySQLBinaryColumnType;
 import 
org.apache.shardingsphere.database.protocol.mysql.constant.MySQLConstants;
 import 
org.apache.shardingsphere.database.protocol.mysql.payload.MySQLPacketPayload;
+import org.apache.shardingsphere.database.protocol.payload.PacketPayload;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import static org.mockito.Mockito.times;
+import java.util.stream.Stream;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -36,28 +44,70 @@ class MySQLColumnDefinition41PacketTest {
     private MySQLPacketPayload payload;
     
     @Test
-    void assertWriteWithPayload() {
-        
when(payload.readInt1()).thenReturn(MySQLBinaryColumnType.LONG.getValue(), 0);
-        
when(payload.readInt2()).thenReturn(MySQLConstants.DEFAULT_CHARSET.getId(), 0);
-        when(payload.readInt4()).thenReturn(10);
-        when(payload.readIntLenenc()).thenReturn(0x0cL);
-        when(payload.readStringLenenc()).thenReturn("def", "logic_db", "tbl", 
"tbl", "id", "id");
+    void assertNewWithPayload() {
+        mockPayloadForNewPacket("def", 0x0cL);
+        assertDoesNotThrow(() -> new MySQLColumnDefinition41Packet(payload));
+    }
+    
+    @ParameterizedTest(name = "{0}")
+    @MethodSource("assertNewWithInvalidPayloadArguments")
+    void assertNewWithInvalidPayload(final String name, final String catalog, 
final long nextLength) {
+        when(payload.readStringLenenc()).thenReturn(catalog, "logic_db", 
"tbl", "tbl_org", "id", "id_org");
+        if ("def".equals(catalog)) {
+            when(payload.readIntLenenc()).thenReturn(nextLength);
+        }
+        assertThrows(IllegalArgumentException.class, () -> new 
MySQLColumnDefinition41Packet(payload));
+    }
+    
+    @Test
+    void assertWriteWithoutDefaultValues() {
+        mockPayloadForNewPacket("def", 0x0cL);
         MySQLColumnDefinition41Packet actual = new 
MySQLColumnDefinition41Packet(payload);
-        actual.write(payload);
-        verifyWrite();
+        actual.write((PacketPayload) payload);
+        verifyWrite("logic_db", "tbl", "tbl_org", "id", "id_org", 
MySQLConstants.DEFAULT_CHARSET.getId(), 10, 
MySQLBinaryColumnType.LONG.getValue(), 2, 1);
+        verify(payload, never()).writeIntLenenc(0);
+        verify(payload, never()).writeStringLenenc("");
+    }
+    
+    @Test
+    void assertWriteWithDefaultValues() {
+        MySQLColumnDefinition41Packet actual = new 
MySQLColumnDefinition41Packet(
+                MySQLConstants.DEFAULT_CHARSET.getId(), "logic_db", "tbl", 
"tbl_org", "id", "id_org", 10, MySQLBinaryColumnType.LONG, 1, true);
+        actual.write((PacketPayload) payload);
+        verifyWrite("logic_db", "tbl", "tbl_org", "id", "id_org", 
MySQLConstants.DEFAULT_CHARSET.getId(), 10, 
MySQLBinaryColumnType.LONG.getValue(), 0, 1);
+        verify(payload).writeIntLenenc(0);
+        verify(payload).writeStringLenenc("");
+    }
+    
+    private void mockPayloadForNewPacket(final String catalog, final long 
nextLength) {
+        when(payload.readStringLenenc()).thenReturn(catalog, "logic_db", 
"tbl", "tbl_org", "id", "id_org");
+        when(payload.readIntLenenc()).thenReturn(nextLength);
+        
when(payload.readInt2()).thenReturn(MySQLConstants.DEFAULT_CHARSET.getId(), 2);
+        when(payload.readInt4()).thenReturn(10);
+        
when(payload.readInt1()).thenReturn(MySQLBinaryColumnType.LONG.getValue(), 1);
+    }
+    
+    private static Stream<Arguments> assertNewWithInvalidPayloadArguments() {
+        return Stream.of(
+                Arguments.of("catalog is invalid", "catalog", 0x0cL),
+                Arguments.of("next length is negative", "def", -1L),
+                Arguments.of("next length is zero", "def", 0L));
     }
     
-    private void verifyWrite() {
+    private void verifyWrite(final String schema, final String table, final 
String orgTable, final String name, final String orgName,
+                             final int characterSet, final int columnLength, 
final int columnType, final int flags, final int decimals) {
         verify(payload).writeStringLenenc("def");
-        verify(payload).writeStringLenenc("logic_db");
-        verify(payload, times(2)).writeStringLenenc("tbl");
-        verify(payload, times(2)).writeStringLenenc("id");
+        verify(payload).writeStringLenenc(schema);
+        verify(payload).writeStringLenenc(table);
+        verify(payload).writeStringLenenc(orgTable);
+        verify(payload).writeStringLenenc(name);
+        verify(payload).writeStringLenenc(orgName);
         verify(payload).writeIntLenenc(0x0c);
-        verify(payload).writeInt2(MySQLConstants.DEFAULT_CHARSET.getId());
-        verify(payload).writeInt4(10);
-        verify(payload).writeInt1(MySQLBinaryColumnType.LONG.getValue());
-        verify(payload).writeInt2(0);
-        verify(payload).writeInt1(0);
+        verify(payload).writeInt2(characterSet);
+        verify(payload).writeInt4(columnLength);
+        verify(payload).writeInt1(columnType);
+        verify(payload).writeInt2(flags);
+        verify(payload).writeInt1(decimals);
         verify(payload).writeReserved(2);
     }
 }

Reply via email to