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

Reply via email to