diff options
Diffstat (limited to 'systemtest/testcases_open/test_select/test.sh')
-rwxr-xr-x | systemtest/testcases_open/test_select/test.sh | 279 |
1 files changed, 279 insertions, 0 deletions
diff --git a/systemtest/testcases_open/test_select/test.sh b/systemtest/testcases_open/test_select/test.sh new file mode 100755 index 0000000..0553a25 --- /dev/null +++ b/systemtest/testcases_open/test_select/test.sh @@ -0,0 +1,279 @@ +#!/bin/bash +#!/bin/ksh +# +# This file is part of rasdaman community. +# +# Rasdaman community is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Rasdaman community is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with rasdaman community. If not, see <http://www.gnu.org/licenses/>. +# +# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / +# rasdaman GmbH. +# +# For more information please see <http://www.rasdaman.org> +# or contact Peter Baumann via <baumann@rasdaman.com>. +# +# SYNOPSIS +# test.sh +# Description +# Command-line utility for testing rasdaman. +# 1) Send rasql query +# 2) Get response +# 3) Compare the response with the expected result +# 4) Give out the testing result. +# +# PRECONDITIONS +# Postgres, Rasdaman installed +# +# Usage: ./test.sh +# images needed for testing shall be put in directory of testdata +# Parameters: +# +# +# CHANGE HISTORY +# 2009-Sep-16 J.Yu created +# 2010-Apr-13 J.Yu revise on input folder structure to support different queries input, including folders on mandatory, bug fixed, bug unfixed, and other queries. +# +# Parameters definistion and initiation + PROGNAME=`basename $0` + USERNAME=rasadmin + PASSWORD=rasadmin + DATABASE=RASBASE +# RMANBASE: change RMANBASE depending on your system, where rasdaman is installed +# RASQL="rasql --quiet" no ornament msg +# QUERY_DIR: the test input folder, including queries for extracting some aspects of tested data +# QUERY_DIR_T: the test input folder, including queries for updating some aspects of tested data +# TESTDATA_DIR: the images needed +# ORACLE_DIR: the expected result + RMANBASE=$RMANHOME + RASQL="rasql" + RASDL="rasdl" + DIR_NAME=$(dirname $0) + QUERY_DIR=$DIR_NAME/test_rasql + TESTDATA_DIR=$DIR_NAME/testdata + ORACLE_DIR=$DIR_NAME/oracle + LOG_DIR=$DIR_NAME + LOG=$LOG_DIR/log + TEST_GREY=test_grey + TEST_GREY2=test_grey2 + TEST_RGB2=test_rgb2 + QUERY="" +# LOG_DIR: the query output +# REPOET: test report +# NUM_TOTAL: number of the test query +# NUM_FAIL: number of fail test +# NUM_SUC: number of success test +# Q_ID: query identifier + NUM_TOTAL=0 + NUM_FAIL=0 + NUM_SUC=0 + Q_ID="" + CODE_OK=0 + CODE_FAIL=255 + + echo "Test by:"$PROGNAME $QUERY_DIR $ORACLE_DIR $LOG_DIR" at "`date`|tee $LOG +#---------------------------Precondition------------------------------------------ +# check the Postgres +ps -e | grep --quiet -w postmaster +if [ $? -ne 0 ] +then + echo no postmaster available|tee -a $LOG + exit $CODE_FAIL +fi + +# check the Rasdaman +ps -e | grep --quiet -w rasmgr +if [ $? -ne 0 ] +then + echo no rasmgr available|tee -a $LOG + exit $CODE_FAIL +fi + +# check usr +# +# check data collection +$RASQL -q "select r from RAS_COLLECTIONNAMES as r" +if [ $? -ne 0 ] +then + echo no data collection available|tee -a $LOG + exit $CODE_FAIL +fi + +# check data type +$RASDL --print|grep --quiet GreySet +if [ $? -ne 0 ] +then + echo no GreySet type available, try create_db.sh|tee -a $LOG + exit $CODE_FAIL +fi + +$RASDL --print|grep --quiet RGBSet +if [ $? -ne 0 ] +then + echo no RGBSet type available, try create_db.sh|tee -a $LOG + exit $CODE_FAIL +fi +#--------------------------initiation-------------------------------------------- +# drop test collection if they already exists + +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_GREY +then + echo dropping collection ... | tee -a $LOG + $RASQL -q 'drop collection '$TEST_GREY'' --user $USERNAME --passwd $PASSWORD | tee -a $LOG +fi + +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_GREY2 +then + echo dropping collection ... | tee -a $LOG + $RASQL -q 'drop collection '$TEST_GREY2'' --user $USERNAME --passwd $PASSWORD | tee -a $LOG +fi + +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_RGB2 +then + echo dropping collection ... | tee -a $LOG + $RASQL -q 'drop collection '$TEST_RGB2'' --user $USERNAME --passwd $PASSWORD | tee -a $LOG +fi + +echo test data initiation... | tee -a $LOG +echo creating test collection $TEST_GREY... | tee -a $LOG +$RASQL -q 'create collection '$TEST_GREY' GreySet' --user $USERNAME --passwd $PASSWORD || echo Error creating collection $TEST_GREY| tee -a $LOG +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_GREY +then + echo create collection $TEST_GREY GreySet successfully ... | tee -a $LOG +else + echo create collection $TEST_GREY GreySet unsuccessfully ... | tee -a $LOG +fi + +echo inserting MDD into collection $TEST_GREY... | tee -a $LOG +if [ ! -f $TESTDATA_DIR/mr_1.png ] +then + echo "there is no test data in "$TESTDATA_DIR + exit $CODE_FAIL +else + if $RASQL -q 'insert into test_grey values inv_png($1)' --file $TESTDATA_DIR/mr_1.png --user $USERNAME --passwd $PASSWORD + then + echo insert test data into collection $TEST_GREY successfully ... | tee -a $LOG + else + echo insert test data into collection $TEST_GREY unsuccessfully ... | tee -a $LOG + exit $CODE_FAIL + fi +fi + + + +echo creating test collection $TEST_GREY2... | tee -a $LOG +$RASQL -q 'create collection '$TEST_GREY2' GreySet' --user $USERNAME --passwd $PASSWORD || echo Error creating collection $TEST_GREY2| tee -a $LOG +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_GREY2 +then + echo create collection $TEST_GREY2 GreySet successfully ... | tee -a $LOG +else + echo create collection $TEST_GREY2 GreySet unsuccessfully ... | tee -a $LOG +fi + +echo inserting MDD into collection $TEST_GREY2... | tee -a $LOG +if [ ! -f $TESTDATA_DIR/mr2_1.png ] +then + echo "there is no test data in "$TESTDATA_DIR + exit $CODE_FAIL +else + if $RASQL -q 'insert into '$TEST_GREY2' values inv_png($1)' -f $TESTDATA_DIR/mr2_1.png --user $USERNAME --passwd $PASSWORD + then + echo insert test data into collection $TEST_GREY2 successfully ... | tee -a $LOG + else + echo insert test data into collection $TEST_GREY2 unsuccessfully ... | tee -a $LOG + exit $CODE_FAIL + fi +fi + + +echo creating test collection $TEST_RGB2... | tee -a $LOG +$RASQL -q 'create collection '$TEST_RGB2' RGBSet' --user $USERNAME --passwd $PASSWORD || echo Error creating collection $TEST_RGB2| tee -a $LOG +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w test_rgb +then + echo create collection $TEST_RGB2 RGBSet successfully ... | tee -a $LOG +else + echo create collection $TEST_RGB2 RGBSet unsuccessfully ... | tee -a $LOG +fi + +echo inserting MDD into collection $TEST_RGB2... | tee -a $LOG +if [ ! -f $TESTDATA_DIR/rgb.png ] +then + echo "there is no test data in "$TESTDATA_DIR + exit $CODE_FAIL +else + if $RASQL -q 'insert into '$TEST_RGB2' values inv_png($1)' --file $TESTDATA_DIR/rgb.png --user $USERNAME --passwd $PASSWORD + then + echo insert test data into collection $TEST_RGB2 successfully ... | tee -a $LOG + else + echo insert test data into collection $TEST_RGB2 unsuccessfully ... | tee -a $LOG + exit $CODE_FAIL + fi +fi +#==========================test by queries================================================== + if [ ! -f $QUERY_DIR/*.rasql ] + then + echo "there is no rasql for test in the "$QUERY_DIR + else + # initialation + rm tmp.unknown + # Query by query for extracting some aspects of tested data + for i in $QUERY_DIR/*.rasql + do + # Send query in query folder. + Q_ID=`basename $i` + echo -e "\n test query in " $Q_ID|tee -a $LOG + QUERY=`cat $i` + if $RASQL -q "$QUERY" + then + echo bug is fixed + NUM_SUC=$(($NUM_SUC + 1)) + else + echo bug is unfixed + NUM_FAIL=$(($NUM_FAIL + 1)) + fi + + done + fi +NUM_TOTAL=$(($NUM_FAIL + $NUM_SUC)) +# drop collection after test + +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_GREY +then + echo dropping collection ... | tee -a $LOG + $RASQL -q 'drop collection '$TEST_GREY'' --user $USERNAME --passwd $PASSWORD | tee -a $LOG +fi + +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_GREY2 +then + echo dropping collection ... | tee -a $LOG + $RASQL -q 'drop collection '$TEST_GREY2'' --user $USERNAME --passwd $PASSWORD | tee -a $LOG +fi + +if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_RGB2 +then + echo dropping collection ... | tee -a $LOG + $RASQL -q 'drop collection '$TEST_RGB2'' --user $USERNAME --passwd $PASSWORD | tee -a $LOG +fi + +# Print the summary + echo "test done at "`date`|tee -a $LOG + echo "Total bug number: "$NUM_TOTAL|tee -a $LOG + echo "fixed bug number: "$NUM_SUC|tee -a $LOG + echo "unfixed bug number: "$NUM_FAIL|tee -a $LOG + echo "Detail test report is in "$LOG + + if [ $NUM_TOTAL = $NUM_FAIL ] + then + exit $CODE_OK + else + exit $CODE_FAIL + fi
\ No newline at end of file |