This is an automated email from the ASF dual-hosted git repository.
zhangyonglun 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 245c407 Add test case of postgre binary packet (#7036)
245c407 is described below
commit 245c40727c5ba5521c7442ae2eea748108381ea3
Author: xbkaishui <[email protected]>
AuthorDate: Mon Aug 24 21:08:04 2020 +0800
Add test case of postgre binary packet (#7036)
* add test case for pg codesc and constants
* fix check style error check
* fix mockito strict check
* remove un finish test case
* test pg binary packet protocol
---
.../PostgreSQLBinaryResultSetRowPacketTest.java | 70 +++++++++++++++++
.../bind/PostgreSQLBindCompletePacketTest.java | 53 +++++++++++++
.../binary/bind/PostgreSQLComBindPacketTest.java | 88 ++++++++++++++++++++++
3 files changed, 211 insertions(+)
diff --git
a/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLBinaryResultSetRowPacketTest.java
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLBinaryResultSetRowPacketTest.java
new file mode 100644
index 0000000..bce6eeb
--- /dev/null
+++
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLBinaryResultSetRowPacketTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.db.protocol.postgresql.packet.command.query.binary.bind;
+
+import
org.apache.shardingsphere.db.protocol.postgresql.constant.PostgreSQLColumnType;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.PostgreSQLCommandPacketType;
+import
org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import java.util.Arrays;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.verify;
+
+@RunWith(MockitoJUnitRunner.class)
+public class PostgreSQLBinaryResultSetRowPacketTest {
+
+ @Mock
+ private PostgreSQLPacketPayload payload;
+
+ @Test
+ public void assertWriteStringData() {
+ PostgreSQLBinaryResultSetRowPacket rowPacket = new
PostgreSQLBinaryResultSetRowPacket(Arrays.asList("value", "b"),
+ Arrays.asList(PostgreSQLColumnType.POSTGRESQL_TYPE_VARCHAR,
PostgreSQLColumnType.POSTGRESQL_TYPE_VARCHAR));
+ assertThat(rowPacket.getData().size(), is(2));
+ rowPacket.write(payload);
+ verify(payload).writeInt2(2);
+ verify(payload).writeInt4(5);
+ verify(payload).writeStringEOF("value");
+ verify(payload).writeInt4(1);
+ verify(payload).writeStringEOF("b");
+ }
+
+ @Test
+ public void assertWriteIntData() {
+ PostgreSQLBinaryResultSetRowPacket rowPacket = new
PostgreSQLBinaryResultSetRowPacket(Arrays.asList(10),
+ Arrays.asList(PostgreSQLColumnType.POSTGRESQL_TYPE_INT4));
+ assertThat(rowPacket.getData().size(), is(1));
+ rowPacket.write(payload);
+ verify(payload).writeInt2(1);
+ verify(payload).writeInt4(4);
+ verify(payload).writeInt4(10);
+ }
+
+ @Test
+ public void assertGetMessageType() {
+ PostgreSQLBinaryResultSetRowPacket rowPacket = new
PostgreSQLBinaryResultSetRowPacket(null, null);
+ assertThat(rowPacket.getMessageType(),
is(PostgreSQLCommandPacketType.DATA_ROW.getValue()));
+ }
+
+}
diff --git
a/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLBindCompletePacketTest.java
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLBindCompletePacketTest.java
new file mode 100644
index 0000000..ad1d597
--- /dev/null
+++
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLBindCompletePacketTest.java
@@ -0,0 +1,53 @@
+/*
+ * 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.db.protocol.postgresql.packet.command.query.binary.bind;
+
+import io.netty.buffer.ByteBuf;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.PostgreSQLCommandPacketType;
+import
org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+@RunWith(MockitoJUnitRunner.class)
+public class PostgreSQLBindCompletePacketTest {
+
+ @Mock
+ private PostgreSQLPacketPayload payload;
+
+ @Mock
+ private ByteBuf byteBuf;
+
+ @Test
+ public void assertWrite() {
+ PostgreSQLBindCompletePacket rowPacket = new
PostgreSQLBindCompletePacket();
+ rowPacket.write(payload);
+ assertThat(byteBuf.writerIndex(), is(0));
+ }
+
+ @Test
+ public void assertGetMessageType() {
+ PostgreSQLBindCompletePacket rowPacket = new
PostgreSQLBindCompletePacket();
+ assertThat(rowPacket.getMessageType(),
is(PostgreSQLCommandPacketType.BIND_COMPLETE.getValue()));
+ }
+
+}
diff --git
a/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLComBindPacketTest.java
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLComBindPacketTest.java
new file mode 100644
index 0000000..942eb25
--- /dev/null
+++
b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/PostgreSQLComBindPacketTest.java
@@ -0,0 +1,88 @@
+/*
+ * 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.db.protocol.postgresql.packet.command.query.binary.bind;
+
+import
org.apache.shardingsphere.db.protocol.postgresql.constant.PostgreSQLColumnType;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.PostgreSQLCommandPacketType;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.BinaryStatementRegistry;
+import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.PostgreSQLBinaryStatementParameterType;
+import
org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import java.sql.SQLException;
+import java.util.Arrays;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class PostgreSQLComBindPacketTest {
+
+ @Mock
+ private PostgreSQLPacketPayload payload;
+
+ @Before
+ public void init() {
+ when(payload.readInt4()).thenReturn(1);
+ when(payload.readStringNul()).thenReturn("");
+ when(payload.readStringNul()).thenReturn("sts-id");
+ when(payload.readInt2()).thenReturn(1);
+
+ BinaryStatementRegistry.getInstance().register(1);
+ }
+
+ @Test
+ public void assertWrite() throws SQLException {
+ //mock parameters
+ when(payload.readInt2()).thenReturn(1);
+ when(payload.readInt4()).thenReturn(1);
+ when(payload.readInt8()).thenReturn(11L);
+
+ String sql = "select * from order where id = ? ";
+ BinaryStatementRegistry.getInstance().get(1).register("sts-id", sql,
1, Arrays.asList(new
PostgreSQLBinaryStatementParameterType(PostgreSQLColumnType.POSTGRESQL_TYPE_INT8)));
+
+ PostgreSQLComBindPacket bindPacket = new
PostgreSQLComBindPacket(payload, 1);
+ bindPacket.write(payload);
+
+ assertThat(bindPacket.getSql(), is(sql));
+ assertThat(bindPacket.getParameters().size(), is(1));
+ assertThat(bindPacket.isBinaryRowData(), is(true));
+ }
+
+ @Test
+ public void assertWriteWithEmptySql() throws SQLException {
+ PostgreSQLComBindPacket bindPacket = new
PostgreSQLComBindPacket(payload, 1);
+ bindPacket.write(payload);
+ assertNull(bindPacket.getSql());
+ assertThat(bindPacket.getParameters().size(), is(0));
+ assertThat(bindPacket.isBinaryRowData(), is(true));
+ }
+
+ @Test
+ public void getMessageType() throws SQLException {
+ PostgreSQLComBindPacket bindPacket = new
PostgreSQLComBindPacket(payload, 1);
+ assertThat(bindPacket.getMessageType(),
is(PostgreSQLCommandPacketType.BIND.getValue()));
+ }
+
+}