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 8b3447e1f57 Add more test cases on FirebirdFetchResponsePacketTest and
FirebirdGenericResponsePacketTest (#38166)
8b3447e1f57 is described below
commit 8b3447e1f573ba1c968ef1931f5be891eb73e1eb
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Feb 23 21:20:23 2026 +0800
Add more test cases on FirebirdFetchResponsePacketTest and
FirebirdGenericResponsePacketTest (#38166)
* Update release notes
* Add more test cases on FirebirdFetchResponsePacketTest and
FirebirdGenericResponsePacketTest
---
.../generic/FirebirdFetchResponsePacket.java | 2 +-
.../generic/FirebirdFetchResponsePacketTest.java | 56 ++++++++++----
.../generic/FirebirdGenericResponsePacketTest.java | 89 +++++++++++++++++++---
3 files changed, 120 insertions(+), 27 deletions(-)
diff --git
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdFetchResponsePacket.java
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdFetchResponsePacket.java
index 20da8d1b62f..2d61c37bc03 100644
---
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdFetchResponsePacket.java
+++
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdFetchResponsePacket.java
@@ -31,8 +31,8 @@ import org.firebirdsql.gds.ISCConstants;
/**
* SQL fetch packet for Firebird.
*/
-@Getter
@RequiredArgsConstructor
+@Getter
public final class FirebirdFetchResponsePacket extends FirebirdPacket {
private final int status;
diff --git
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdFetchResponsePacketTest.java
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdFetchResponsePacketTest.java
index b09c9b7a290..343c7a27457 100644
---
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdFetchResponsePacketTest.java
+++
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdFetchResponsePacketTest.java
@@ -34,9 +34,11 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -53,15 +55,39 @@ class FirebirdFetchResponsePacketTest {
private FirebirdBinaryProtocolValue protocolValue;
@Test
- void assertWriteRow() {
+ void assertGetFetchRowPacket() {
+ BinaryRow row = new BinaryRow(Collections.singleton(new
BinaryCell(FirebirdBinaryColumnType.LONG, 123)));
+ FirebirdFetchResponsePacket actual =
FirebirdFetchResponsePacket.getFetchRowPacket(row);
+ assertThat(actual.getStatus(), is(ISCConstants.FETCH_OK));
+ assertThat(actual.getCount(), is(1));
+ assertThat(actual.getRow(), is(row));
+ }
+
+ @Test
+ void assertGetFetchNoMoreRowsPacket() {
+ FirebirdFetchResponsePacket actual =
FirebirdFetchResponsePacket.getFetchNoMoreRowsPacket();
+ assertThat(actual.getStatus(), is(ISCConstants.FETCH_NO_MORE_ROWS));
+ assertThat(actual.getCount(), is(0));
+ assertNull(actual.getRow());
+ }
+
+ @Test
+ void assertGetFetchEndPacket() {
+ FirebirdFetchResponsePacket actual =
FirebirdFetchResponsePacket.getFetchEndPacket();
+ assertThat(actual.getStatus(), is(ISCConstants.FETCH_OK));
+ assertThat(actual.getCount(), is(0));
+ assertNull(actual.getRow());
+ }
+
+ @Test
+ void assertWriteWithNonNullCellData() {
when(payload.getByteBuf()).thenReturn(byteBuf);
when(byteBuf.writerIndex()).thenReturn(0);
when(byteBuf.writeZero(4)).thenReturn(byteBuf);
BinaryRow row = new BinaryRow(Collections.singleton(new
BinaryCell(FirebirdBinaryColumnType.LONG, 123)));
try (MockedStatic<FirebirdBinaryProtocolValueFactory> mocked =
mockStatic(FirebirdBinaryProtocolValueFactory.class)) {
mocked.when(() ->
FirebirdBinaryProtocolValueFactory.getBinaryProtocolValue(FirebirdBinaryColumnType.LONG)).thenReturn(protocolValue);
- FirebirdFetchResponsePacket packet =
FirebirdFetchResponsePacket.getFetchRowPacket(row);
- packet.write(payload);
+ FirebirdFetchResponsePacket.getFetchRowPacket(row).write(payload);
verify(payload).writeInt4(FirebirdCommandPacketType.FETCH_RESPONSE.getValue());
verify(payload).writeInt4(ISCConstants.FETCH_OK);
verify(payload).writeInt4(1);
@@ -71,21 +97,23 @@ class FirebirdFetchResponsePacketTest {
}
@Test
- void assertWriteNoMoreRows() {
- FirebirdFetchResponsePacket packet =
FirebirdFetchResponsePacket.getFetchNoMoreRowsPacket();
- packet.write(payload);
+ void assertWriteWithNullCellData() {
+ when(payload.getByteBuf()).thenReturn(byteBuf);
+ when(byteBuf.writerIndex()).thenReturn(0);
+ when(byteBuf.writeZero(4)).thenReturn(byteBuf);
+ when(byteBuf.getByte(0)).thenReturn((byte) 0);
+ FirebirdFetchResponsePacket.getFetchRowPacket(new
BinaryRow(Collections.singleton(new BinaryCell(FirebirdBinaryColumnType.LONG,
null)))).write(payload);
verify(payload).writeInt4(FirebirdCommandPacketType.FETCH_RESPONSE.getValue());
- verify(payload).writeInt4(ISCConstants.FETCH_NO_MORE_ROWS);
- verify(payload).writeInt4(0);
- verify(payload, never()).getByteBuf();
+ verify(payload).writeInt4(ISCConstants.FETCH_OK);
+ verify(byteBuf).setByte(0, 1);
}
@Test
- void assertWriteEnd() {
- FirebirdFetchResponsePacket packet =
FirebirdFetchResponsePacket.getFetchEndPacket();
- packet.write(payload);
+ void assertWriteWithNullRowData() {
+ FirebirdFetchResponsePacket.getFetchNoMoreRowsPacket().write(payload);
verify(payload).writeInt4(FirebirdCommandPacketType.FETCH_RESPONSE.getValue());
- verify(payload, times(2)).writeInt4(0);
+ verify(payload).writeInt4(ISCConstants.FETCH_NO_MORE_ROWS);
+ verify(payload).writeInt4(0);
verify(payload, never()).getByteBuf();
}
}
diff --git
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdGenericResponsePacketTest.java
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdGenericResponsePacketTest.java
index ad31dd6f2d1..45e9a18f3e4 100644
---
a/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdGenericResponsePacketTest.java
+++
b/database/protocol/dialect/firebird/src/test/java/org/apache/shardingsphere/database/protocol/firebird/packet/generic/FirebirdGenericResponsePacketTest.java
@@ -31,9 +31,16 @@ import java.sql.SQLException;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.isA;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.atLeastOnce;
@ExtendWith(MockitoExtension.class)
class FirebirdGenericResponsePacketTest {
@@ -44,28 +51,72 @@ class FirebirdGenericResponsePacketTest {
@Mock
private ByteBuf byteBuf;
- @Mock
- private FirebirdPacket data;
+ @Test
+ void assertGetPacket() {
+ assertThat(FirebirdGenericResponsePacket.getPacket(),
isA(FirebirdGenericResponsePacket.class));
+ }
@Test
- void assertGetHandleAndId() {
- FirebirdGenericResponsePacket packet =
FirebirdGenericResponsePacket.getPacket().setHandle(1).setId(2);
+ void assertSetHandle() {
+ FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket();
+ assertThat(packet.setHandle(1), is(packet));
assertThat(packet.getHandle(), is(1));
+ }
+
+ @Test
+ void assertSetIdWithInt() {
+ FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket();
+ assertThat(packet.setId(2), is(packet));
assertThat(packet.getId(), is(2L));
}
@Test
- void assertGetErrorStatusVector() {
+ void assertSetIdWithLong() {
+ FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket();
+ assertThat(packet.setId(2L), is(packet));
+ assertThat(packet.getId(), is(2L));
+ }
+
+ @Test
+ void assertSetData() {
+ FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket();
+ FirebirdPacket data = mock(FirebirdPacket.class);
+ assertThat(packet.setData(data), is(packet));
+ assertThat(packet.getData(), is(data));
+ }
+
+ @Test
+ void assertSetErrorStatusVector() {
SQLException ex = new SQLException("foo_error", "42000",
ISCConstants.isc_random + 1);
- FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket().setErrorStatusVector(ex);
+ FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket();
+ assertThat(packet.setErrorStatusVector(ex), is(packet));
+ assertNotNull(packet.getStatusVector());
assertThat(packet.getErrorCode(), is(ex.getErrorCode()));
assertThat(packet.getErrorMessage(), is("foo_error"));
}
@Test
- void assertWriteWithoutData() {
+ void assertGetErrorCodeWithNullStatusVector() {
+ assertThat(new FirebirdGenericResponsePacket().getErrorCode(), is(-1));
+ }
+
+ @Test
+ void assertGetErrorMessageWithNullStatusVector() {
+ assertThat(new FirebirdGenericResponsePacket().getErrorMessage(),
is(""));
+ }
+
+ @Test
+ void assertSetWriteZeroStatementId() {
+ FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket();
+ FirebirdGenericResponsePacket actual =
packet.setWriteZeroStatementId(true);
+ assertThat(actual, is(packet));
+ assertTrue(packet.isWriteZeroStatementId());
+ }
+
+ @Test
+ void assertWriteWithoutDataAndStatusVector() {
when(payload.getByteBuf()).thenReturn(byteBuf);
- new
FirebirdGenericResponsePacket().setHandle(3).setId(4).write(payload);
+
FirebirdGenericResponsePacket.getPacket().setHandle(3).setId(4L).write(payload);
verify(payload).writeInt4(FirebirdCommandPacketType.RESPONSE.getValue());
verify(payload).writeInt4(3);
verify(payload).writeInt8(4L);
@@ -75,16 +126,30 @@ class FirebirdGenericResponsePacketTest {
@Test
void assertWriteWithDataAndStatusVector() {
- when(payload.getByteBuf()).thenReturn(byteBuf);
when(byteBuf.writeZero(4)).thenReturn(byteBuf);
when(byteBuf.readableBytes()).thenReturn(4, 8);
SQLException ex = new SQLException("foo_error", "42000",
ISCConstants.isc_arith_except);
- FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket().setHandle(1).setId(2).setData(data).setErrorStatusVector(ex);
- packet.write(payload);
+ when(payload.getByteBuf()).thenReturn(byteBuf);
+ FirebirdPacket data = mock(FirebirdPacket.class);
+ new
FirebirdGenericResponsePacket().setData(data).setHandle(1).setId(2L).setErrorStatusVector(ex).write(payload);
verify(data).write(payload);
verify(payload, atLeastOnce()).writeInt4(ISCConstants.isc_arg_gds);
verify(payload, atLeastOnce()).writeInt4(ISCConstants.isc_arg_string);
verify(payload).writeString("foo_error");
verify(payload, atLeastOnce()).writeInt4(ISCConstants.isc_arg_end);
}
+
+ @Test
+ void assertWriteWithZeroStatementId() {
+ FirebirdGenericResponsePacket packet = new
FirebirdGenericResponsePacket().setHandle(8).setWriteZeroStatementId(true).setId(5L);
+ when(payload.getByteBuf()).thenReturn(byteBuf);
+ packet.write(payload);
+
verify(payload).writeInt4(FirebirdCommandPacketType.RESPONSE.getValue());
+ verify(payload).writeInt8(5L);
+ verify(payload, never()).writeInt4(8);
+ verify(payload, atLeastOnce()).writeInt4(0);
+ verify(byteBuf).writeZero(4);
+ assertFalse(packet.isWriteZeroStatementId());
+ assertNull(packet.getData());
+ }
}