| #!/bin/bash |
| |
| PATH=$PATH:..:../../deps/shunit2-2.1.6/src |
| export PATH |
| |
| export PGDATABASE=testdb |
| |
| source ./test_common.sh |
| |
| function setUp() |
| { |
| # echo "PATH=$PATH" |
| # echo "PGHOME=$PGHOME" |
| # echo "PGDATA=$PGDATA" |
| ps auxx > setUp.log |
| |
| rm -rf /tmp/spc1 |
| mkdir -p /tmp/spc1 |
| |
| psql<<EOF >> setUp.log |
| CREATE SCHEMA nsp1; |
| CREATE TABLESPACE spc1 LOCATION '/tmp/spc1'; |
| SELECT * FROM pg_tablespace; |
| |
| CREATE TABLE t1 ( uid INTEGER PRIMARY KEY, uname TEXT NOT NULL ); |
| |
| SELECT relname,spcname FROM pg_class c LEFT OUTER JOIN pg_tablespace t ON c.reltablespace = t.oid WHERE relname LIKE 't1%'; |
| EOF |
| } |
| |
| function tearDown() |
| { |
| psql<<EOF >> tearDown.log |
| DROP TABLE t1; |
| DROP TABLESPACE spc1; |
| DROP SCHEMA nsp1; |
| EOF |
| } |
| |
| function testSetTablespace001() |
| { |
| OUT=${_SHUNIT_TEST_}.out |
| |
| cat<<EOF >${_SHUNIT_TEST_}.expected |
| |
| Usage: pt-set-tablespace [option...] [tablespace] |
| |
| Options: |
| -h, --host=HOSTNAME Host name of the postgres server |
| -p, --port=PORT Port number of the postgres server |
| -U, --username=USERNAME User name to connect |
| -d, --dbname=DBNAME Database name to connect |
| |
| -o, --owner=STRING Owner name |
| -n, --schema=STRING Schema name |
| -t, --table=STRING Table name |
| |
| -l, --list List table spaces |
| --apply Apply change(s) |
| |
| --help Print this help. |
| |
| EOF |
| |
| pt-set-tablespace --help > $OUT 2>&1 |
| |
| diff -rc ${_SHUNIT_TEST_}.expected $OUT |
| assertEquals 0 $? |
| } |
| |
| function testSetTablespace002() |
| { |
| OUT=${_SHUNIT_TEST_}.out |
| |
| pt-set-tablespace --list > $OUT 2>&1 |
| |
| grep spc1 $OUT | grep /tmp/spc1 > /dev/null |
| assertEquals 0 $? |
| } |
| |
| function testSetTablespace003() |
| { |
| OUT=${_SHUNIT_TEST_}.out |
| |
| #_DEBUG="--debug" |
| pt-set-tablespace $_DEBUG -t t1 spc1 > $OUT 2>&1 |
| |
| psql<<EOF >> $OUT |
| SELECT relname,spcname FROM pg_class c LEFT OUTER JOIN pg_tablespace t ON c.reltablespace = t.oid WHERE relname LIKE 't1%'; |
| EOF |
| |
| contains 'ALTER TABLE "public"."t1" SET TABLESPACE "spc1";' $OUT |
| assertTrue $? |
| contains 'ALTER INDEX "public"."t1_pkey" SET TABLESPACE "spc1";' $OUT |
| assertTrue $? |
| |
| contains ' t1 | $' $OUT |
| assertTrue $? |
| contains ' t1_pkey | $' $OUT |
| assertTrue $? |
| } |
| |
| function testSetTablespace004() |
| { |
| OUT=${_SHUNIT_TEST_}.out |
| |
| # move t1 to spc1 |
| pt-set-tablespace $_DEBUG -t t1 --apply spc1 > $OUT 2>&1 |
| |
| psql<<EOF >> $OUT |
| SELECT relname,spcname FROM pg_class c LEFT OUTER JOIN pg_tablespace t ON c.reltablespace = t.oid WHERE relname LIKE 't1%'; |
| EOF |
| |
| contains ' t1 | spc1$' $OUT |
| assertTrue $? |
| contains ' t1_pkey | spc1$' $OUT |
| assertTrue $? |
| } |
| |
| function testSetTablespace005() |
| { |
| OUT=${_SHUNIT_TEST_}.out |
| |
| # move t1 back to pg_default |
| pt-set-tablespace $_DEBUG --table t1 --apply pg_default > $OUT 2>&1 |
| |
| psql<<EOF >> $OUT |
| SELECT relname,spcname FROM pg_class c LEFT OUTER JOIN pg_tablespace t ON c.reltablespace = t.oid WHERE relname LIKE 't1%'; |
| EOF |
| |
| contains ' t1 | $' $OUT |
| assertTrue $? |
| contains ' t1_pkey | $' $OUT |
| assertTrue $? |
| } |
| |
| . shunit2 |