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 e91d08ede3b Add more test cases on 
FirebirdInfoPacket,FirebirdBlobInfoReturnPacket,FirebirdCommitTransactionPacket,FirebirdRollbackTransactionPacket
 (#38168)
e91d08ede3b is described below

commit e91d08ede3b1af1e2529c9f8b2e5bd06d90b7f4f
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Feb 23 22:07:35 2026 +0800

    Add more test cases on 
FirebirdInfoPacket,FirebirdBlobInfoReturnPacket,FirebirdCommitTransactionPacket,FirebirdRollbackTransactionPacket
 (#38168)
---
 .../FirebirdCommitTransactionPacket.java           |   1 -
 .../FirebirdRollbackTransactionPacket.java         |   1 -
 .../command/query/info/FirebirdInfoPacketTest.java |   9 ++
 .../blob/FirebirdBlobInfoReturnPacketTest.java     | 124 +++++++++++++++++++++
 .../FirebirdCommitTransactionPacketTest.java       |  12 ++
 .../FirebirdRollbackTransactionPacketTest.java     |  12 ++
 6 files changed, 157 insertions(+), 2 deletions(-)

diff --git 
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdCommitTransactionPacket.java
 
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdCommitTransactionPacket.java
index 95cc9fda115..991d5bebefd 100644
--- 
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdCommitTransactionPacket.java
+++ 
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdCommitTransactionPacket.java
@@ -36,7 +36,6 @@ public final class FirebirdCommitTransactionPacket extends 
FirebirdCommandPacket
     
     @Override
     protected void write(final FirebirdPacketPayload payload) {
-        
     }
     
     /**
diff --git 
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdRollbackTransactionPacket.java
 
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdRollbackTransactionPacket.java
index 22a75688b1f..37ac8a6bdce 100644
--- 
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdRollbackTransactionPacket.java
+++ 
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdRollbackTransactionPacket.java
@@ -36,7 +36,6 @@ public final class FirebirdRollbackTransactionPacket extends 
FirebirdCommandPack
     
     @Override
     protected void write(final FirebirdPacketPayload payload) {
-        
     }
     
     /**
diff --git 
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/info/FirebirdInfoPacketTest.java
 
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/info/FirebirdInfoPacketTest.java
index db2aeee987b..8e918f823db 100644
--- 
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/info/FirebirdInfoPacketTest.java
+++ 
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/info/FirebirdInfoPacketTest.java
@@ -21,6 +21,7 @@ import io.netty.buffer.ByteBuf;
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.info.type.common.FirebirdCommonInfoPacketType;
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.info.type.sql.FirebirdSQLInfoPacketType;
 import 
org.apache.shardingsphere.database.protocol.firebird.payload.FirebirdPacketPayload;
+import org.apache.shardingsphere.database.protocol.payload.PacketPayload;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
@@ -30,6 +31,7 @@ import java.util.List;
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
@@ -61,4 +63,11 @@ class FirebirdInfoPacketTest {
         assertThat(infoItems.get(0), is(FirebirdSQLInfoPacketType.RECORDS));
         assertThat(infoItems.get(1), is(FirebirdCommonInfoPacketType.END));
     }
+    
+    @Test
+    void assertWrite() {
+        FirebirdInfoPacket packet = new FirebirdInfoPacket(1, 2, 100);
+        packet.write((PacketPayload) payload);
+        verifyNoInteractions(payload);
+    }
 }
diff --git 
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/info/type/blob/FirebirdBlobInfoReturnPacketTest.java
 
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/info/type/blob/FirebirdBlobInfoReturnPacketTest.java
new file mode 100644
index 00000000000..d65718bbaa3
--- /dev/null
+++ 
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/info/type/blob/FirebirdBlobInfoReturnPacketTest.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.info.type.blob;
+
+import lombok.SneakyThrows;
+import 
org.apache.shardingsphere.database.protocol.firebird.exception.FirebirdProtocolException;
+import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.blob.FirebirdBlobRegistry;
+import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.info.FirebirdInfoPacketType;
+import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.info.type.common.FirebirdCommonInfoPacketType;
+import 
org.apache.shardingsphere.database.protocol.firebird.payload.FirebirdPacketPayload;
+import org.apache.shardingsphere.database.protocol.payload.PacketPayload;
+import org.junit.jupiter.api.AfterEach;
+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.InOrder;
+import org.mockito.Mock;
+import org.mockito.internal.configuration.plugins.Plugins;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Stream;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.inOrder;
+
+@ExtendWith(MockitoExtension.class)
+class FirebirdBlobInfoReturnPacketTest {
+    
+    private static final String SWITCH_CLASS_NAME =
+            
"org.apache.shardingsphere.database.protocol.firebird.packet.command.query.info.type.blob.FirebirdBlobInfoReturnPacket$1";
+    
+    private static final String SWITCH_FIELD_NAME =
+            
"$SwitchMap$org$apache$shardingsphere$database$protocol$firebird$packet$command$query$info$type$blob$FirebirdBlobInfoPacketType";
+    
+    @Mock
+    private FirebirdPacketPayload payload;
+    
+    @AfterEach
+    void clearBlobSegment() {
+        FirebirdBlobRegistry.clearSegment();
+    }
+    
+    @Test
+    void assertGetInfoItems() {
+        List<FirebirdInfoPacketType> expectedInfoItems = 
Collections.singletonList(FirebirdCommonInfoPacketType.END);
+        assertThat(new 
FirebirdBlobInfoReturnPacket(expectedInfoItems).getInfoItems(), 
is(expectedInfoItems));
+    }
+    
+    @Test
+    void assertWriteCommonInfo() {
+        FirebirdBlobInfoReturnPacket packet = new 
FirebirdBlobInfoReturnPacket(Collections.singletonList(FirebirdCommonInfoPacketType.END));
+        packet.write((PacketPayload) payload);
+        
inOrder(payload).verify(payload).writeInt1(FirebirdCommonInfoPacketType.END.getCode());
+    }
+    
+    @ParameterizedTest(name = "{0}")
+    @MethodSource("blobInfoCases")
+    void assertWriteBlobInfo(final String name, final 
FirebirdBlobInfoPacketType type, final byte[] segment, final int expectedValue) 
{
+        if (null == segment) {
+            FirebirdBlobRegistry.clearSegment();
+        } else {
+            FirebirdBlobRegistry.setSegment(segment);
+        }
+        FirebirdBlobInfoReturnPacket packet = new 
FirebirdBlobInfoReturnPacket(Collections.singletonList(type));
+        packet.write((PacketPayload) payload);
+        InOrder order = inOrder(payload);
+        order.verify(payload).writeInt1(type.getCode());
+        order.verify(payload).writeInt2LE(4);
+        order.verify(payload).writeInt4LE(expectedValue);
+    }
+    
+    @Test
+    void assertWriteCommonInfoWithUnsupportedType() {
+        assertThrows(FirebirdProtocolException.class, () -> new 
FirebirdBlobInfoReturnPacket(Collections.singletonList(FirebirdCommonInfoPacketType.TRUNCATED)).write((PacketPayload)
 payload));
+    }
+    
+    @Test
+    void assertWriteBlobInfoWithUnknownType() {
+        int[] switchMap = getSwitchMap();
+        int typeIndex = FirebirdBlobInfoPacketType.TYPE.ordinal();
+        int actualSwitchValue = switchMap[typeIndex];
+        switchMap[typeIndex] = 0;
+        try {
+            assertThrows(FirebirdProtocolException.class, () -> new 
FirebirdBlobInfoReturnPacket(Collections.singletonList(FirebirdBlobInfoPacketType.TYPE)).write((PacketPayload)
 payload));
+        } finally {
+            switchMap[typeIndex] = actualSwitchValue;
+        }
+    }
+    
+    @SneakyThrows(ReflectiveOperationException.class)
+    private int[] getSwitchMap() {
+        return (int[]) 
Plugins.getMemberAccessor().get(Class.forName(SWITCH_CLASS_NAME).getDeclaredField(SWITCH_FIELD_NAME),
 null);
+    }
+    
+    private static Stream<Arguments> blobInfoCases() {
+        return Stream.of(
+                Arguments.of("NUM_SEGMENTS without segment", 
FirebirdBlobInfoPacketType.NUM_SEGMENTS, null, 0),
+                Arguments.of("NUM_SEGMENTS with segment", 
FirebirdBlobInfoPacketType.NUM_SEGMENTS, new byte[]{1, 2, 3}, 1),
+                Arguments.of("MAX_SEGMENT with segment", 
FirebirdBlobInfoPacketType.MAX_SEGMENT, new byte[]{1, 2, 3, 4}, 4),
+                Arguments.of("TOTAL_LENGTH with segment", 
FirebirdBlobInfoPacketType.TOTAL_LENGTH, new byte[]{1, 2, 3, 4, 5}, 5),
+                Arguments.of("TYPE", FirebirdBlobInfoPacketType.TYPE, new 
byte[]{7}, 0));
+    }
+}
diff --git 
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdCommitTransactionPacketTest.java
 
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdCommitTransactionPacketTest.java
index 37bf7ecdcc9..bcd3f19afa7 100644
--- 
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdCommitTransactionPacketTest.java
+++ 
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdCommitTransactionPacketTest.java
@@ -18,6 +18,7 @@
 package 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.transaction;
 
 import 
org.apache.shardingsphere.database.protocol.firebird.payload.FirebirdPacketPayload;
+import org.apache.shardingsphere.database.protocol.payload.PacketPayload;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
@@ -25,7 +26,9 @@ import org.mockito.junit.jupiter.MockitoExtension;
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
@@ -46,4 +49,13 @@ class FirebirdCommitTransactionPacketTest {
     void assertGetLength() {
         assertThat(FirebirdCommitTransactionPacket.getLength(), is(8));
     }
+    
+    @Test
+    void assertWrite() {
+        when(payload.readInt4()).thenReturn(123);
+        FirebirdCommitTransactionPacket packet = new 
FirebirdCommitTransactionPacket(payload);
+        FirebirdPacketPayload writePayload = mock(FirebirdPacketPayload.class);
+        packet.write((PacketPayload) writePayload);
+        verifyNoInteractions(writePayload);
+    }
 }
diff --git 
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdRollbackTransactionPacketTest.java
 
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdRollbackTransactionPacketTest.java
index 2525265178c..5f5a737ea7a 100644
--- 
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdRollbackTransactionPacketTest.java
+++ 
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/transaction/FirebirdRollbackTransactionPacketTest.java
@@ -18,6 +18,7 @@
 package 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.transaction;
 
 import 
org.apache.shardingsphere.database.protocol.firebird.payload.FirebirdPacketPayload;
+import org.apache.shardingsphere.database.protocol.payload.PacketPayload;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
@@ -25,7 +26,9 @@ import org.mockito.junit.jupiter.MockitoExtension;
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
@@ -46,4 +49,13 @@ class FirebirdRollbackTransactionPacketTest {
     void assertGetLength() {
         assertThat(FirebirdRollbackTransactionPacket.getLength(), is(8));
     }
+    
+    @Test
+    void assertWrite() {
+        when(payload.readInt4()).thenReturn(456);
+        FirebirdRollbackTransactionPacket packet = new 
FirebirdRollbackTransactionPacket(payload);
+        FirebirdPacketPayload writePayload = mock(FirebirdPacketPayload.class);
+        packet.write((PacketPayload) writePayload);
+        verifyNoInteractions(writePayload);
+    }
 }

Reply via email to