CVS User Account cvsuser
Tue Aug 1 14:28:19 PDT 2006
Log Message:
-----------
Add a regression test that sets up a "master" table and three other
tables that inherit from it, and replicates all four tables.

Added Files:
-----------
    slony1-engine/tests/testinherit:
        README (r1.1)
        generate_dml.sh (r1.1)
        init_add_tables.ik (r1.1)
        init_cluster.ik (r1.1)
        init_create_set.ik (r1.1)
        init_data.sql (r1.1)
        init_schema.sql (r1.1)
        init_subscribe_set.ik (r1.1)
        schema.diff (r1.1)
        settings.ik (r1.1)

-------------- next part --------------
--- /dev/null
+++ tests/testinherit/init_add_tables.ik
@@ -0,0 +1,4 @@
+set add table (id=1, set id=1, origin=1, fully qualified name = 'public.sub1', comment='sub table 1');
+set add table (id=2, set id=1, origin=1, fully qualified name = 'public.sub2', comment='sub table 2');
+set add table (id=3, set id=1, origin=1, fully qualified name = 'public.sub3', comment='sub table 3');
+set add table (id=4, set id=1, origin=1, fully qualified name = 'public.master', comment='master table');
--- /dev/null
+++ tests/testinherit/init_cluster.ik
@@ -0,0 +1 @@
+init cluster (id=1, comment = 'Regress test node');
--- /dev/null
+++ tests/testinherit/init_data.sql
@@ -0,0 +1,4 @@
+insert into master (data) values ('master 000');
+insert into sub1 (data) values ('sub1 a');
+insert into sub2 (data) values ('sub1 b');
+insert into sub3 (data) values ('sub1 c');
--- /dev/null
+++ tests/testinherit/init_schema.sql
@@ -0,0 +1,19 @@
+create table master (
+   id serial primary key,
+   trans_on timestamptz default 'now()',
+   data text
+);
+
+create table sub1 (
+) inherits (master);
+alter table sub1 add primary key(id);
+
+create table sub2 (
+) inherits (master);
+alter table sub2 add primary key(id);
+
+create table sub3 (
+) inherits (master);
+alter table sub3 add primary key(id);
+
+
--- /dev/null
+++ tests/testinherit/settings.ik
@@ -0,0 +1,4 @@
+NUMCLUSTERS=${NUMCLUSTERS:-"1"}
+NUMNODES=${NUMNODES:-"2"}
+ORIGINNODE=1
+WORKERS=${WORKERS:-"1"}
--- /dev/null
+++ tests/testinherit/init_subscribe_set.ik
@@ -0,0 +1 @@
+subscribe set (id = 1, provider = 1, receiver = 2, forward = no);
--- /dev/null
+++ tests/testinherit/init_create_set.ik
@@ -0,0 +1,2 @@
+create set (id=1, origin=1, comment='All test1 tables');
+
--- /dev/null
+++ tests/testinherit/generate_dml.sh
@@ -0,0 +1,82 @@
+. support_funcs.sh
+
+init_dml()
+{
+  echo "init_dml()"
+}
+
+begin()
+{
+  echo "begin()"
+}
+
+rollback()
+{
+  echo "rollback()"
+}
+
+commit()
+{
+  echo "commit()"
+}
+
+generate_initdata()
+{
+  numrows=$(random_number 50 1000)
+  i=0;
+  trippoint=`expr $numrows / 20`
+  j=0;
+  percent=0
+  status "generating ${numrows} tranactions of random data"
+  percent=`expr $j \* 5`
+  status "$percent %"
+  GENDATA="$mktmp/generate.data"
+  while : ; do
+    txtalen=$(random_number 1 100)
+    txta=$(random_string ${txtalen})
+    txta=`echo ${txta} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtblen=$(random_number 1 100)
+    txtb=$(random_string ${txtblen})
+    txtb=`echo ${txtb} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtclen=$(random_number 1 100)
+    txtc=$(random_string ${txtclen})
+    txtc=`echo ${txtc} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtdlen=$(random_number 1 100)
+    txtd=$(random_string ${txtdlen})
+    txtd=`echo ${txtd} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    echo "INSERT INTO sub1(data) VALUES ('sub1 ${txta}');" >> $GENDATA
+    echo "INSERT INTO sub2(data) VALUES ('sub2 ${txtb}');" >> $GENDATA
+    echo "INSERT INTO sub3(data) VALUES ('sub3 ${txtc}');" >> $GENDATA
+    echo "INSERT INTO master(data) VALUES ('master ${txtd}');" >> $GENDATA
+
+    if [ ${i} -ge ${numrows} ]; then
+      break;
+    else
+      i=$((${i} +1))
+      working=`expr $i % $trippoint`
+      if [ $working -eq 0 ]; then
+        j=`expr $j + 1`
+        percent=`expr $j \* 5`
+        status "$percent %"
+      fi 
+    fi
+  done
+  status "done"
+}
+
+do_initdata()
+{
+  originnode=${ORIGINNODE:-"1"}
+  eval db=\$DB${originnode}
+  eval host=\$HOST${originnode}
+  eval user=\$USER${originnode}
+  eval port=\$PORT${originnode}
+  generate_initdata
+  launch_poll
+  status "loading data"
+  $pgbindir/psql -h $host -p $port -d $db -U $user < $mktmp/generate.data 1> $mktmp/initdata.log 2> $mktmp/initdata.log
+  if [ $? -ne 0 ]; then
+    warn 3 "do_initdata failed, see $mktmp/initdata.log for details"
+  fi 
+  status "done"
+}
--- /dev/null
+++ tests/testinherit/schema.diff
@@ -0,0 +1,2 @@
+select id, trans_on, data from master order by id
+
--- /dev/null
+++ tests/testinherit/README
@@ -0,0 +1,6 @@
+$Id: README,v 1.1 2006/08/01 21:28:18 cbbrowne Exp $
+  
+testinherit does some simple handling of inheritance...
+
+A "master" table is created; three "sub tables" inherit from it, and
+all four tables are replicated.



More information about the Slony1-commit mailing list