You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/09/13 06:28:56 UTC

[shardingsphere] branch master updated: add test case for PostgreSQLErrorResponsePacket (#7415)

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 3376904  add test case for PostgreSQLErrorResponsePacket (#7415)
3376904 is described below

commit 337690490f5667e467971234e3dd622050d3b743
Author: Yanjie Zhou <zh...@aliyun.com>
AuthorDate: Sun Sep 13 14:28:34 2020 +0800

    add test case for PostgreSQLErrorResponsePacket (#7415)
---
 .../postgresql/PostgreSQLErrPacketFactoryTest.java | 71 ++++++++++++++++++++++
 1 file changed, 71 insertions(+)

diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLErrPacketFactoryTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLErrPacketFactoryTest.java
new file mode 100644
index 0000000..64874fd
--- /dev/null
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLErrPacketFactoryTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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.proxy.frontend.postgresql;
+
+import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLErrorResponsePacket;
+import org.junit.Test;
+import org.postgresql.util.PSQLException;
+import org.postgresql.util.PSQLState;
+import org.postgresql.util.ServerErrorMessage;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public final class PostgreSQLErrPacketFactoryTest {
+    
+    @Test
+    public void assertPSQLExceptionWithServerErrorMessageNotNull() throws NoSuchFieldException, IllegalAccessException {
+        ServerErrorMessage serverErrorMessage = mock(ServerErrorMessage.class);
+        when(serverErrorMessage.getSeverity()).thenReturn("severity");
+        when(serverErrorMessage.getSQLState()).thenReturn("sqlState");
+        when(serverErrorMessage.getMessage()).thenReturn("message");
+        when(serverErrorMessage.getPosition()).thenReturn(1);
+        PostgreSQLErrorResponsePacket actual = PostgreSQLErrPacketFactory.newInstance(new PSQLException(serverErrorMessage));
+        Field packetField = PostgreSQLErrorResponsePacket.class.getDeclaredField("fields");
+        packetField.setAccessible(true);
+        Map<Character, String> fields = (Map<Character, String>) packetField.get(actual);
+        assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_SEVERITY), is("severity"));
+        assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_CODE), is("sqlState"));
+        assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_MESSAGE), is("message"));
+        assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_POSITION), is("1"));
+    }
+    
+    @Test
+    public void assertPSQLExceptionWithServerErrorMessageIsNull() throws NoSuchFieldException, IllegalAccessException {
+        PostgreSQLErrorResponsePacket actual = PostgreSQLErrPacketFactory.newInstance(new PSQLException("psqlEx", PSQLState.UNEXPECTED_ERROR, new Exception("test")));
+        Field packetField = PostgreSQLErrorResponsePacket.class.getDeclaredField("fields");
+        packetField.setAccessible(true);
+        Map<Character, String> fields = (Map<Character, String>) packetField.get(actual);
+        assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_CODE), is(PSQLState.UNEXPECTED_ERROR.getState()));
+        assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_MESSAGE), is("psqlEx"));
+    }
+    
+    @Test
+    public void assertRuntimeException() throws NoSuchFieldException, IllegalAccessException {
+        PostgreSQLErrorResponsePacket actual = PostgreSQLErrPacketFactory.newInstance(new RuntimeException("test"));
+        Field packetField = PostgreSQLErrorResponsePacket.class.getDeclaredField("fields");
+        packetField.setAccessible(true);
+        Map<Character, String> fields = (Map<Character, String>) packetField.get(actual);
+        assertThat(fields.get(PostgreSQLErrorResponsePacket.FIELD_TYPE_MESSAGE), is("test"));
+    }
+}