Add new regression test 074.bug700_memqcache_bug_segfault_at_close_complete which...
authorTatsuo Ishii <ishii@sraoss.co.jp>
Sun, 11 Apr 2021 05:25:31 +0000 (14:25 +0900)
committerTatsuo Ishii <ishii@sraoss.co.jp>
Sun, 11 Apr 2021 05:31:42 +0000 (14:31 +0900)
The test was missed in commit: a531e783c90a88ab429d0de83fadb7e41c787a92

src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/expected.txt [new file with mode: 0644]
src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/pgproto.data [new file with mode: 0644]
src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/test.sh [new file with mode: 0755]

diff --git a/src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/expected.txt b/src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/expected.txt
new file mode 100644 (file)
index 0000000..46d5304
--- /dev/null
@@ -0,0 +1,19 @@
+FE=> Parse(stmt="S1", query="SELECT 1")
+FE=> Bind(stmt="S1", portal="P1")
+FE=> Execute(portal="P1")
+FE=> Close(portal="P1")
+FE=> Bind(stmt="S1", portal="P2")
+FE=> Execute(portal="P2")
+FE=> Close(portal="P2")
+FE=> Sync
+<= BE ParseComplete
+<= BE BindComplete
+<= BE DataRow
+<= BE CommandComplete(SELECT 1)
+<= BE CloseComplete
+<= BE BindComplete
+<= BE DataRow
+<= BE CommandComplete(SELECT 1)
+<= BE CloseComplete
+<= BE ReadyForQuery(I)
+FE=> Terminate
diff --git a/src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/pgproto.data b/src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/pgproto.data
new file mode 100644 (file)
index 0000000..8c8b8f5
--- /dev/null
@@ -0,0 +1,10 @@
+'P'    "S1"    "SELECT 1"      0
+'B'    "P1"    "S1"    0       0       0
+'E'    "P1"    0
+'C'    'P'     "P1"
+'B'    "P2"    "S1"    0       0       0
+'E'    "P2"    0
+'C'    'P'     "P2"
+'S'
+'Y'
+'X'
diff --git a/src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/test.sh b/src/test/regression/tests/074.bug700_memqcache_bug_segfault_at_close_complete/test.sh
new file mode 100755 (executable)
index 0000000..29e8a7a
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+#-------------------------------------------------------------------
+# test script for a memqcache bug 700.
+#
+# Pgpool-II crashes upon receiving CloseComplete.
+# This only happens in other than streaming and logical replication mode.
+
+source $TESTLIBS
+WHOAMI=`whoami`
+TESTDIR=testdir
+PGPROTO=pgproto
+
+for mode in s i r n
+do
+    rm -fr $TESTDIR
+    mkdir $TESTDIR
+    cd $TESTDIR
+
+    # create test environment
+    echo -n "creating test environment in mode = $mode..."
+    $PGPOOL_SETUP -m $mode -n 1 || exit 1
+    echo "done."
+
+    source ./bashrc.ports
+
+    export PGPORT=$PGPOOL_PORT
+
+    echo "memory_cache_enabled = on" >> etc/pgpool.conf
+    ./startall
+    wait_for_pgpool_startup
+
+    $PGPROTO -d test -f ../pgproto.data > result.txt 2>&1
+    cmp ../expected.txt result.txt
+    if [ $? != 0 ];then
+       ./shutdownall
+       exit 1
+    fi
+    ./shutdownall
+    cd ..
+done
+
+exit 0