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()));
+    }
+    
+}

Reply via email to