Chris Browne cbbrowne at lists.slony.info
Tue Sep 25 14:36:31 PDT 2007
Update of /home/cvsd/slony1/slony1-engine/tests/testinherit
In directory main.slony.info:/tmp/cvs-serv24546

Modified Files:
	README generate_dml.sh 
Log Message:
Modify "testinherit" test to add in a test of subtransactions/savepoints.

- A bunch of concurrent psql sessions generate random lists of regions/products
  - each of them performs purchase transactions based on these lists
  - some of the purchases get rolled back
  - some "sleep" requests go in in order to increase concurrency


Index: README
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/tests/testinherit/README,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** README	7 Sep 2007 19:50:11 -0000	1.3
--- README	25 Sep 2007 21:36:29 -0000	1.4
***************
*** 30,31 ****
--- 30,37 ----
  Note that slon processes are configured purely via command line, not
  via .conf file
+ 
+ This test also performs a subtransaction test; it generates 16
+ more-or-less concurrent psql sessions that:
+  - create lists of products/regions (randomly, in temp tables local to each session)
+  - performs purchases on elements of those lists
+  - some of those purchases get rolled back, others don't

Index: generate_dml.sh
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/tests/testinherit/generate_dml.sh,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** generate_dml.sh	2 Apr 2007 18:52:18 -0000	1.5
--- generate_dml.sh	25 Sep 2007 21:36:29 -0000	1.6
***************
*** 63,67 ****
      fi
    done
!   status "done"
  }
  
--- 63,105 ----
      fi
    done
!   status "done initial test"
! 
!   SUBTRANSACTIONQUERY=<<EOF
!   begin;
!   -- Get a random list of products/regions
!   select product_id into temp table products_foo from products order by random() limit 10;
!   select region_code into temp table regions_foo from regions order by random() limit 10;
!   savepoint a;
!   -- Purchase some products...
!   select purchase_product( region_code, product_id, (random()*5+random()*8+random()*7)::integer) from products_foo, regions_foo order by random() limit 10;
! \!sh -c 'sleep2'
!   savepoint b;
!   -- Then purchase some more products
!   select purchase_product( region_code, product_id, (random()*5+random()*8+random()*7)::integer) from products_foo, regions_foo order by random() limit 5;
!   -- but psyche!!!  rollback to the previous savepoint!
!   rollback to savepoint b;
!   savepoint c;
!   -- Get another random listing of products/regions
!   select product_id into temp table products_bar from products order by random() limit 5;
!   select region_code into temp table regions_bar from regions order by random() limit 5;
!   savepoint d;
! \!sh -c 'sleep2'
!   -- Now, do a purchase
!   select purchase_product( region_code, product_id, (random()*5+random()*8+random()*7)::integer) from products_bar, regions_bar order by random() limit 5;
!   -- psyche!!!
!   rollback to savepoint d;
!   savepoint e;
!   select purchase_product( region_code, product_id, (random()*5+random()*8+random()*7)::integer) from products_bar, regions_bar order by random() limit 10;
! \!sh -c 'sleep2'
!   commit;
! EOF
! 
!   status "run a series of transactions that use subtransactions"
!   for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
!       status "subtransaction set ${i}"
!       (sleep 2; $pgbindir/psql -h $host -p $port -d $db -U $user -c "${QUERY}"; status "done subtransaction set ${i}") &
!       sleep 1
!   done
!   sleep 20
  }
  



More information about the Slony1-commit mailing list