summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgon Valdmees2011-04-11 12:53:44 +0000
committerMarko Kreen2011-04-15 10:03:05 +0000
commit2a69fe8771286d2209db2f9cbe1d7b7be7188da2 (patch)
tree28e80aac16b415d5217fc1c570ff18f5cb21cb72
parent5982df7588e25588115b842bc8fd574a357854ff (diff)
OCM-1524: syntax error fix and added tests
-rw-r--r--sql/londiste/functions/londiste.local_add_table.sql2
-rwxr-xr-xtests/noqueue_merge/init.sh16
-rwxr-xr-xtests/noqueue_merge/overview.sh7
-rwxr-xr-xtests/noqueue_merge/regen.sh155
4 files changed, 179 insertions, 1 deletions
diff --git a/sql/londiste/functions/londiste.local_add_table.sql b/sql/londiste/functions/londiste.local_add_table.sql
index 3eb55292..5fa508d0 100644
--- a/sql/londiste/functions/londiste.local_add_table.sql
+++ b/sql/londiste/functions/londiste.local_add_table.sql
@@ -210,7 +210,7 @@ begin
lg_args := lg_args || ', ' || quote_literal('SKIP');
-- if one previous skip trigger, check it's prefix and
-- do not use SKIP on current trigger
- elif _skip_trg_count = 1 then
+ elsif _skip_trg_count = 1 then
-- if not prefixed then rename
if position(_skip_prefix in _skip_trg_name) != 1 then
sql := 'alter trigger ' || _skip_trg_name
diff --git a/tests/noqueue_merge/init.sh b/tests/noqueue_merge/init.sh
new file mode 100755
index 00000000..62c7ee46
--- /dev/null
+++ b/tests/noqueue_merge/init.sh
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+. ../env.sh
+
+lst="part1 part2 part3 part4 full1 full2"
+
+../zstop.sh
+
+for db in $lst; do
+ echo dropdb $db
+ dropdb $db
+done
+for db in $lst; do
+ echo createdb $db
+ createdb $db
+done
diff --git a/tests/noqueue_merge/overview.sh b/tests/noqueue_merge/overview.sh
new file mode 100755
index 00000000..f25e1b39
--- /dev/null
+++ b/tests/noqueue_merge/overview.sh
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+for db in part1 full1 full2; do
+ echo "==== $db ==="
+ psql -d $db -c "select * from pgq.get_consumer_info() where not consumer_name like '.%'"
+ psql -d $db -c "select * from pgq_node.local_state order by 1,2"
+done
diff --git a/tests/noqueue_merge/regen.sh b/tests/noqueue_merge/regen.sh
new file mode 100755
index 00000000..acbd4df0
--- /dev/null
+++ b/tests/noqueue_merge/regen.sh
@@ -0,0 +1,155 @@
+#! /bin/sh
+
+. ../testlib.sh
+
+title "NoMerge"
+
+part_list="part1 part2 part3 part4"
+full_list="full1 full2"
+merge_list=""
+for dst in $full_list; do
+ for src in $part_list; do
+ merge_list="$merge_list ${src}_${dst}"
+ done
+done
+all_list="$part_list $full_list"
+kdb_list="`echo $all_list|sed 's/ /,/g'`"
+
+for db in $part_list $full_list; do
+ cleardb $db
+done
+msg "clean logs"
+rm -f log/*.log
+
+msg "Create configs"
+
+# create ticker conf
+cat > conf/pgqd.ini << EOF
+[pgqd]
+database_list = $kdb_list
+logfile = log/pgqd.log
+pidfile = pid/pgqd.pid
+EOF
+
+# partition replicas
+for db in $part_list; do
+
+queue=l3_${db}_q
+part_job=${queue}_${db}
+# londiste on part node
+cat > conf/$part_job.ini << EOF
+[londiste3]
+job_name = ${part_job}
+db = dbname=$db
+queue_name = ${queue}
+logfile = log/%(job_name)s.log
+pidfile = pid/%(job_name)s.pid
+EOF
+
+# londiste on combined nodes
+for dst in full1 full2; do
+full_job=${queue}_$dst
+cat > conf/${full_job}.ini << EOF
+[londiste3]
+job_name = ${full_job}
+db = dbname=$dst
+queue_name = $queue
+logfile = log/%(job_name)s.log
+pidfile = pid/%(job_name)s.pid
+EOF
+
+done
+done
+
+set -e
+
+msg "Create nodes for partition queues"
+
+# partition replicas
+for db in $part_list; do
+job=l3_${db}_q_${db}
+run londiste3 $v conf/${job}.ini create-root ${db}_root "dbname=${db}"
+done
+
+msg "Create merge nodes for partition queues"
+
+for dst in $full_list; do
+ for src in $part_list; do
+ job=l3_${src}_q_${dst}
+ run londiste3 $v conf/${job}.ini \
+ create-leaf merge_${src}_${dst} "dbname=$dst" \
+ --provider="dbname=$src"
+ done
+done
+
+msg "Tune PgQ"
+
+for db in $all_list; do
+ run_sql $db "update pgq.queue set queue_ticker_idle_period='3 secs'"
+done
+
+msg "Launch ticker"
+run pgqd $v -d conf/pgqd.ini
+
+msg "Launch londiste replay"
+
+for db in $part_list; do
+ queue=l3_${db}_q
+ part_job=${queue}_${db}
+ # londiste on part node
+ run londiste3 $v -d conf/${part_job}.ini worker
+
+ # londiste on combined nodes
+ for dst in full1 full2; do
+ full_job=${queue}_$dst
+ run londiste3 $v -d conf/${full_job}.ini worker
+ done
+done
+
+msg "Create table in partition nodes"
+for db in $part_list; do
+ run_sql "$db" "create table mydata (id int4 primary key, data text)"
+done
+
+msg "Register table in partition nodes"
+for db in $part_list; do
+ job=l3_${db}_q_${db}
+ run londiste3 $v conf/${job}.ini add-table mydata
+done
+
+
+msg "Insert few rows"
+for n in 1 2 3 4; do
+ run_sql part$n "insert into mydata values ($n, 'part$n')"
+done
+
+msg "Create table and register it in full nodes"
+for db in $full_list; do
+ job=l3_part1_q_${db}
+ run londiste3 $v conf/$job.ini add-table mydata --create
+ for src in $part_list; do
+ run londiste3 $v conf/l3_${src}_q_${db}.ini add-table mydata
+ done
+done
+
+msg "Sleep a bit"
+run sleep 10
+
+msg "Insert few rows"
+for n in 1 2 3 4; do
+ run_sql part$n "insert into mydata values (4 + $n, 'part$n')"
+done
+
+run sleep 10
+
+msg "Now check if data apprered"
+for db in $full_list; do
+ run_sql $db "select * from mydata order by id"
+ run_sql $db "select * from londiste.table_info order by queue_name"
+ for src in $part_list; do
+ run_sql $db "select * from londiste.get_table_list('l3_${src}_q')"
+ done
+done
+
+../zcheck.sh
+