This is an automated email from the ASF dual-hosted git repository.
joshinnis pushed a commit to branch AGEHA
in repository https://gitbox.apache.org/repos/asf/age.git
The following commit(s) were added to refs/heads/AGEHA by this push:
new 8573fa18 [AGEHA] Add script to run AGE regression tests (#919)
8573fa18 is described below
commit 8573fa181d04396a1543bb237c96b2c06dea75c9
Author: moeed-k <[email protected]>
AuthorDate: Tue May 16 05:53:12 2023 +0500
[AGEHA] Add script to run AGE regression tests (#919)
* Isolate AGE regression tests
* Add script to run AGE regression tests
---
src/test/regression/age_regress.sh | 236 +++++++++++++++++++++
.../001.load_balance}/.gitignore | 0
.../001.load_balance}/test.sh | 75 ++++---
3 files changed, 280 insertions(+), 31 deletions(-)
diff --git a/src/test/regression/age_regress.sh
b/src/test/regression/age_regress.sh
new file mode 100755
index 00000000..8c618e86
--- /dev/null
+++ b/src/test/regression/age_regress.sh
@@ -0,0 +1,236 @@
+#!/usr/bin/env bash
+#
+# pgpool-II regression test driver.
+#
+# usage: regress.sh [test_name]
+# -i install directory of pgpool
+# -b pgbench path
+# -p installation path of Postgres
+# -j JDBC driver path
+# -m install (install pgpool-II and use that for tests) / noinstall : Default
install
+# -s unix socket directory
+# -c test pgpool using sample scripts and config files
+# -d start pgpool with debug option
+
+dir=`pwd`
+MODE=install
+PG_INSTALL_DIR=/usr/local/pgsql/bin
+PGPOOL_PATH=/usr/local
+JDBC_DRIVER=/usr/local/pgsql/share/postgresql-9.2-1003.jdbc4.jar
+#export USE_REPLICATION_SLOT=true
+export log=$dir/log
+fail=0
+ok=0
+timeout=0
+PGSOCKET_DIR=/tmp
+
+CRED=$(tput setaf 1)
+CGREEN=$(tput setaf 2)
+CBLUE=$(tput setaf 4)
+CNORM=$(tput sgr0)
+
+# timeout for each test (5 min.)
+TIMEOUT=300
+
+function install_pgpool
+{
+ echo "creating pgpool-II temporary installation ..."
+ PGPOOL_PATH=$dir/temp/installed
+
+ test -d $log || mkdir $log
+
+ make install WATCHDOG_DEBUG=1 -C $dir/../../ -e prefix=${PGPOOL_PATH}
>& regression.log 2>&1
+
+ if [ $? != 0 ];then
+ echo "make install failed"
+ exit 1
+ fi
+
+ echo "moving pgpool_setup to temporary installation path ..."
+ cp $dir/../pgpool_setup ${PGPOOL_PATH}/pgpool_setup
+ export PGPOOL_SETUP=$PGPOOL_PATH/pgpool_setup
+ echo "moving watchdog_setup to temporary installation path ..."
+ cp $dir/../watchdog_setup ${PGPOOL_PATH}/watchdog_setup
+ export WATCHDOG_SETUP=$PGPOOL_PATH/watchdog_setup
+}
+
+function verify_pginstallation
+{
+ # PostgreSQL bin directory
+ PGBIN=`$PG_INSTALL_DIR/pg_config --bindir`
+ if [ -z $PGBIN ]; then
+ echo "$0: cannot locate pg_config"
+ exit 1
+ fi
+
+ # PostgreSQL lib directory
+ PGLIB=`$PG_INSTALL_DIR/pg_config --libdir`
+ if [ -z $PGLIB ]; then
+ echo "$0: cannot locate pg_config"
+ exit 1
+ fi
+}
+
+function export_env_vars
+{
+ if [[ -z "$PGPOOL_PATH" ]]; then
+ # check if pgpool is in the path
+ PGPOOL_PATH=/usr/local
+ export PGPOOL_SETUP=$HOME/bin/pgpool_setup
+ export WATCHDOG_SETUP=$HOME/bin/watchdog_setup
+ fi
+
+ if [[ -z "$PGBENCH_PATH" ]]; then
+ if [ -x $PGBIN/pgbench ]; then
+ PGBENCH_PATH=$PGBIN/pgbench
+ else
+ PGBENCH_PATH=`which pgbench`
+ fi
+ fi
+
+ if [ ! -x $PGBENCH_PATH ]; then
+ echo "$0] cannot locate pgbench"; exit 1
+ fi
+
+ echo "using pgpool-II at "$PGPOOL_PATH
+
+ export PGPOOL_VERSION=`$PGPOOL_PATH/bin/pgpool --version 2>&1`
+
+ export PGPOOL_INSTALL_DIR=$PGPOOL_PATH
+ # where to look for pgpool.conf.sample files.
+ export PGPOOLDIR=${PGPOOLDIR:-"$PGPOOL_INSTALL_DIR/etc"}
+
+ PGPOOLLIB=${PGPOOL_INSTALL_DIR}/lib
+ if [ -z "$LD_LIBRARY_PATH" ];then
+ export LD_LIBRARY_PATH=${PGPOOLLIB}:${PGLIB}
+ else
+ export LD_LIBRARY_PATH=${PGPOOLLIB}:${PGLIB}:${LD_LIBRARY_PATH}
+ fi
+
+ export TESTLIBS=$dir/libs.sh
+ export PGBIN=$PGBIN
+ export JDBC_DRIVER=$JDBC_DRIVER
+ export PGBENCH_PATH=$PGBENCH_PATH
+ export PGSOCKET_DIR=$PGSOCKET_DIR
+ export PGVERSION=`$PGBIN/initdb -V|awk '{print $3}'|sed 's/\..*//'`
+ export LANG=C
+
+ export ENABLE_TEST=true
+}
+function print_info
+{
+ echo ${CBLUE}"*************************"${CNORM}
+
+ echo "REGRESSION MODE : "${CBLUE}$MODE${CNORM}
+ echo "Pgpool-II version : "${CBLUE}$PGPOOL_VERSION${CNORM}
+ echo "Pgpool-II install path : "${CBLUE}$PGPOOL_PATH${CNORM}
+ echo "PostgreSQL bin : "${CBLUE}$PGBIN${CNORM}
+ echo "PostgreSQL Major version : "${CBLUE}$PGVERSION${CNORM}
+ echo "pgbench : "${CBLUE}$PGBENCH_PATH${CNORM}
+ echo "PostgreSQL jdbc : "${CBLUE}$JDBC_DRIVER${CNORM}
+ echo ${CBLUE}"*************************"${CNORM}
+}
+
+function print_usage
+{
+ printf "Usage:\n"
+ printf " %s: [Options]... [test_name]\n" $(basename $0) >&2
+ printf "\nOptions:\n"
+ printf " -p DIRECTORY Postgres installed directory\n" >&2
+ printf " -b PATH pgbench installed path, if different
from Postgres installed directory\n" >&2
+ printf " -i DIRECTORY pgpool installed directory, if
already installed pgpool is to be used for tests\n" >&2
+ printf " -m install/noinstall make install pgpool to temp
directory for executing regression tests [Default: install]\n" >&2
+ printf " -j FILE Postgres jdbc jar file path\n" >&2
+ printf " -s DIRECTORY unix socket directory\n" >&2
+ printf " -t TIMEOUT timeout value for each test (sec)\n"
>&2
+ printf " -c test pgpool using sample scripts and
config files\n" >&2
+ printf " -d start pgpool with debug option\n" >&2
+ printf " -? print this help and then exit\n\n"
>&2
+ printf "Please read the README for details on adding new tests\n" >&2
+
+}
+
+trap "echo ; exit 0" SIGINT SIGQUIT
+
+while getopts "p:m:i:j:b:s:t:cd?" OPTION
+do
+ case $OPTION in
+ p) PG_INSTALL_DIR="$OPTARG";;
+ m) MODE="$OPTARG";;
+ i) PGPOOL_PATH="$OPTARG";;
+ j) JDBC_DRIVER="$OPTARG";;
+ b) PGBENCH_PATH="$OPTARG";;
+ s) PGSOCKET_DIR="$OPTARG";;
+ t) TIMEOUT="$OPTARG";;
+ c) export TEST_SAMPLES="true";;
+ d) export PGPOOLDEBUG="true";;
+ ?) print_usage
+ exit 2;;
+ esac
+done
+
+shift $(($OPTIND - 1))
+if [ "$MODE" = "install" ]; then
+ install_pgpool
+
+elif [ "$MODE" = "noinstall" ]; then
+ echo not installing pgpool for the tests ...
+ if [[ -n "$PGPOOL_INSTALL_DIR" ]]; then
+ PGPOOL_PATH=$PGPOOL_INSTALL_DIR
+ fi
+ export PGPOOL_SETUP=$PGPOOL_PATH/bin/pgpool_setup
+ export WATCHDOG_SETUP=$PGPOOL_PATH/bin/watchdog_setup
+else
+ echo $MODE : Invalid mode
+ exit -1
+fi
+
+verify_pginstallation
+export_env_vars
+print_info
+source $TESTLIBS
+
+#Start executing tests
+rm -fr $log
+mkdir $log
+
+cd age_tests
+
+if [ $# -eq 1 ];then
+ dirs=`ls|grep $1`
+else
+ dirs=`ls`
+fi
+
+for i in $dirs
+do
+ cd $i
+ echo -n "testing $i..."
+ clean_all
+ timeout $TIMEOUT ./test.sh > $log/$i 2>&1
+ rtn=$?
+
+ check_segfault
+ if [ $? -eq 0 ];then
+ echo "fail: Segmentation fault detected" >> $log/$i
+ rtn=1
+ fi
+
+ if [ $rtn = 0 ];then
+ echo ${CGREEN}"ok."${CNORM}
+ ok=`expr $ok + 1`
+ elif [ $rtn = 124 ];then
+ echo "timeout."
+ timeout=`expr $timeout + 1`
+ else
+ echo ${CRED}"failed."${CNORM}
+ fail=`expr $fail + 1`
+ fi
+
+ cd ..
+
+done
+
+total=`expr $ok + $fail`
+
+echo "out of $total ok:$ok failed:$fail timeout:$timeout"
diff --git a/src/test/regression/tests/01.Cypher_load_balance/.gitignore
b/src/test/regression/age_tests/001.load_balance/.gitignore
old mode 100644
new mode 100755
similarity index 100%
rename from src/test/regression/tests/01.Cypher_load_balance/.gitignore
rename to src/test/regression/age_tests/001.load_balance/.gitignore
diff --git a/src/test/regression/tests/01.Cypher_load_balance/test.sh
b/src/test/regression/age_tests/001.load_balance/test.sh
old mode 100644
new mode 100755
similarity index 56%
rename from src/test/regression/tests/01.Cypher_load_balance/test.sh
rename to src/test/regression/age_tests/001.load_balance/test.sh
index 49fcd330..d70bc39d
--- a/src/test/regression/tests/01.Cypher_load_balance/test.sh
+++ b/src/test/regression/age_tests/001.load_balance/test.sh
@@ -9,7 +9,7 @@ PSQL=$PGBIN/psql
# sleep time after reload in seconds
st=10
-for mode in r
+for mode in s
do
rm -fr $TESTDIR
mkdir $TESTDIR
@@ -25,7 +25,7 @@ do
echo "backend_weight0 = 0" >> etc/pgpool.conf
echo "backend_weight1 = 1" >> etc/pgpool.conf
echo "statement_level_load_balance = on" >> etc/pgpool.conf
-
+
./startall
@@ -33,47 +33,55 @@ do
wait_for_pgpool_startup
- $PSQL -p 11002 template1 <<EOF
-CREATE EXTENSION IF NOT EXISTS age;
-LOAD 'age';
-SELECT create_graph('test_graph');
-EOF
- $PSQL -p 11003 template1 <<EOF
+
+ $PSQL test <<EOF
+-- Setup
CREATE EXTENSION IF NOT EXISTS age;
-LOAD 'age';
-EOF
+LOAD 'age';
+SET search_path = ag_catalog, public;
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (dummy) RETURN dummy
\$\$) as (v ag_catalog.agtype); -- Forcing secondary node to Self-Load AGE with
a dummy MATCH
+-- Database population
+SELECT create_graph('test_graph');
- $PSQL template1 <<EOF
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ CREATE (:vertex1 {i: 123})
\$\$) as (v ag_catalog.agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ CREATE (:vertex2 {i: 124})
\$\$) as (v ag_catalog.agtype);
-SELECT * FROM cypher('test_graph', \$\$ CREATE (:vertex1 {i: 123}) \$\$) as (v
agtype);
-SELECT * FROM cypher('test_graph', \$\$ CREATE (:vertex2 {i: 124}) \$\$) as (v
agtype);
+-- Read Query
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (v) RETURN v \$\$) as
(v ag_catalog.agtype);
EOF
# check if simple load balance worked
- fgrep "SELECT * FROM cypher('test_graph', \$\$ MATCH (v) RETURN v \$\$)
as (v agtype);" log/pgpool.log |grep "DB node id: 1">/dev/null 2>&1
+ fgrep "SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (v)
RETURN v \$\$) as (v ag_catalog.agtype);" log/pgpool.log |grep "DB node id:
1">/dev/null 2>&1
if [ $? != 0 ];then
# expected result not found
echo fail: select is sent to zero-weight node.
./shutdownall
exit 1
fi
- echo ok: simple load balance works.
+ echo ok: load balance works.
+
-# check a set of cypher queries:
+# CREATE cypher queries:
- $PSQL template1 <<EOF
+ $PSQL test <<EOF
+-- Setup
+CREATE EXTENSION IF NOT EXISTS age;
+LOAD 'age';
+SET search_path = ag_catalog, public;
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (dummy) RETURN dummy
\$\$) as (v ag_catalog.agtype); -- Forcing Secondary node to Self-Load AGE with
a dummy MATCH
+
-- Create node for Alice and Bob
-SELECT * FROM cypher('test_graph', \$\$ CREATE (p:Person {name: 'Alice', age:
30}) RETURN p.name \$\$) AS (a agtype);
-SELECT * FROM cypher('test_graph', \$\$ CREATE (p:Person {name: 'Bob', age:
35}) RETURN p.name \$\$) AS (a agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ CREATE (p:Person {name:
'Alice', age: 30}) RETURN p.name \$\$) AS (a ag_catalog.agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ CREATE (p:Person {name:
'Bob', age: 35}) RETURN p.name \$\$) AS (a ag_catalog.agtype);
-- Create a relationship between Alice and Bob
-SELECT * FROM cypher('test_graph', \$\$ MATCH (a:Person {name: 'Alice'}),
(b:Person {name: 'Bob'}) CREATE (a)-[:FRIENDS_WITH]->(b) RETURN a.name \$\$) AS
(a agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (a:Person {name:
'Alice'}), (b:Person {name: 'Bob'}) CREATE (a)-[:FRIENDS_WITH]->(b) RETURN
a.name \$\$) AS (a ag_catalog.agtype);
EOF
@@ -99,31 +107,36 @@ EOF
./shutdownall
exit 1
fi
- echo ok: Wrtie queries work.
+ echo ok: Write queries work.
-# Read and Update query
- $PSQL template1 <<EOF
+# Read and Update queries
+ $PSQL test <<EOF
+-- Setup
+CREATE EXTENSION IF NOT EXISTS age;
+LOAD 'age';
+SET search_path = ag_catalog, public;
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (dummy) RETURN dummy
\$\$) as (v ag_catalog.agtype); -- Forcing secondary node to Self-Load AGE with
a dummy MATCH
--- Get all Person nodes
-SELECT * FROM cypher('test_graph', \$\$ MATCH (p:Person) RETURN p.name \$\$)
AS (a agtype);
+-- Get all Person nodes
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (p:Person) RETURN
p.name \$\$) AS (a ag_catalog.agtype);
-- Get all relationships between Person nodes
-SELECT * FROM cypher('test_graph', \$\$ MATCH
(a:Person)-[r:FRIENDS_WITH]->(b:Person) RETURN a.name \$\$) AS (a agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH
(a:Person)-[r:FRIENDS_WITH]->(b:Person) RETURN a.name \$\$) AS (a
ag_catalog.agtype);
-- Update Alice's age
-SELECT * FROM cypher('test_graph', \$\$ MATCH (p:Person {name: 'Alice'}) SET
p.age = 31 RETURN p.age \$\$) AS (a agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (p:Person {name:
'Alice'}) SET p.age = 31 RETURN p.age \$\$) AS (a ag_catalog.agtype);
-- Merge a new node or update if exists with the same name
-SELECT * FROM cypher('test_graph', \$\$ MERGE (p:Person {name: 'Charlie', age:
25}) RETURN p.name \$\$) AS (a agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MERGE (p:Person {name:
'Charlie', age: 25}) RETURN p.name \$\$) AS (a ag_catalog.agtype);
-- Delete the relationship between Alice and Bob
-SELECT * FROM cypher('test_graph', \$\$ MATCH (a:Person {name:
'Alice'})-[r:FRIENDS_WITH]->(b:Person {name: 'Bob'}) DELETE r RETURN a.age
\$\$) AS (a agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (a:Person {name:
'Alice'})-[r:FRIENDS_WITH]->(b:Person {name: 'Bob'}) DELETE r RETURN a.age
\$\$) AS (a ag_catalog.agtype);
-- Delete the node for Charlie
-SELECT * FROM cypher('test_graph', \$\$ MATCH (p:Person {name: 'Charlie'})
DETACH DELETE p RETURN p.name \$\$) AS (a agtype);
+SELECT * FROM ag_catalog.cypher('test_graph', \$\$ MATCH (p:Person {name:
'Charlie'}) DETACH DELETE p RETURN p.name \$\$) AS (a ag_catalog.agtype);
EOF
@@ -177,7 +190,7 @@ EOF
exit 1
fi
- echo ok: Wrtie queries work.
+ echo ok: Write queries work.
./shutdownall