#!/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 .
#
# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
# rasdaman GmbH.
#
# For more information please see
# or contact Peter Baumann via .
#
# SYNOPSIS
# test.sh
# Description
# Command-line utility for testing rasdaman.
# 1)creating collection
# 2)insert MDD into TEST_COLLECTION
# 3)update the MDD
# 4)delete MDD
# 5)drop TEST_COLLECTION
#
# PRECONDITIONS
# 1)Postgres Server must be running
# 2)Rasdaman Server must be running
# 3)database RASBASE must exists
# 4)rasql utility must be fully running
# Usage: ./test.sh
#
# CHANGE HISTORY
# 2009-Sep-16 J.Yu created
# 2010-July-04 J.Yu add precondition
# Variables
PROGNAME=`basename $0`
DIR_NAME=$(dirname $0)
LOG_DIR=$DIR_NAME
LOG=$LOG_DIR/log
OLDLOG=$LOG.old
USERNAME=rasguest
PASSWORD=rasguest
DATABASE=RASBASE
RASQL="rasql --quiet"
RASDL="rasdl"
TEST_COLLECTION="test_tmp"
CODE_OK=0
CODE_FAIL=255
# NUM_TOTAL: the number of manipulations
# NUM_FAIL: the number of fail manipulations
# NUM_SUC: the number of success manipulations
NUM_TOTAL=0
NUM_FAIL=0
NUM_SUC=0
#--------------- check if old logfile exists ----------------------------------
if [ -f $LOG ]
then
echo Old logfile found, copying it to $OLDLOG
mv $LOG $OLDLOG
fi
echo "Test by:"$PROGNAME" at "`date`|tee $LOG
#---------------------------Precondition------------------------------------------
# check the Postgres
ps -e | grep --quiet -w postgres
if [ $? -ne 0 ]
then
echo no postgres available|tee -a $LOG
exit $CODE_FAIL
fi
# check the Rasdaman
ps -e | grep --quiet 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 GreSet type available|tee -a $LOG
exit $CODE_FAIL
fi
# check data set
#--------------------------initiation--------------------------------------------
# drop collection if they already exists
if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_COLLECTION
then
echo dropping collection ... | tee -a $LOG
$RASQL -q "drop collection $TEST_COLLECTION" --user $USERNAME --passwd $PASSWORD | tee -a $LOG
fi
################## starting manipulation test #######################
echo starting manipulation test... | tee -a $LOG
echo creating collection $TEST_COLLECTION... | tee -a $LOG
$RASQL -q "create collection $TEST_COLLECTION GreySet" --user $USERNAME --passwd $PASSWORD || echo Error creating collection $TEST_COLLECTION| tee -a $LOG
if $RASQL -q "select r from RAS_COLLECTIONNAMES as r" --out string|grep -w $TEST_COLLECTION
then
echo create collection $TEST_COLLECTION GreySet successfully ... | tee -a $LOG
NUM_SUC=$(($NUM_SUC + 1))
else
echo create collection $TEST_COLLECTION GreySet unsuccessfully ... | tee -a $LOG
NUM_FAIL=$(($NUM_FAIL + 1))
fi
echo inserting MDD into collection ... | tee -a $LOG
if $RASQL -q "insert into $TEST_COLLECTION values marray x in [0:255, 0:210] values 1c" --user $USERNAME --passwd $PASSWORD
then
echo insert MDD into collection $TEST_COLLECTION successfully ... | tee -a $LOG
NUM_SUC=$(($NUM_SUC + 1))
else
echo insert MDD into collection $TEST_COLLECTION unsuccessfully ... | tee -a $LOG
NUM_FAIL=$(($NUM_FAIL + 1))
fi
echo updating MDD from collection ... | tee -a $LOG
if $RASQL -q "update $TEST_COLLECTION as a set a assign a[0:179,0:54] + 1c" --user $USERNAME --passwd $PASSWORD
then
echo update MDD from collection $TEST_COLLECTION successfully ... | tee -a $LOG
NUM_SUC=$(($NUM_SUC + 1))
else
echo update MDD from collection $TEST_COLLECTION unsuccessfully ... | tee -a $LOG
NUM_FAIL=$(($NUM_FAIL + 1))
fi
echo deleting MDD from collection ... | tee -a $LOG
if $RASQL -q "delete from $TEST_COLLECTION as a where all_cells(a>0)" --user $USERNAME --passwd $PASSWORD
then
echo delete MDD from collection $TEST_COLLECTION successfully ... | tee -a $LOG
NUM_SUC=$(($NUM_SUC + 1))
else
echo delete MDD from collection $TEST_COLLECTION unsuccessfully ... | tee -a $LOG
NUM_FAIL=$(($NUM_FAIL + 1))
fi
echo dropping collection $TEST_COLLECTION... | tee -a $LOG
if $RASQL -q "drop collection $TEST_COLLECTION" --user $USERNAME --passwd $PASSWORD
then
echo drop collection $TEST_COLLECTION successfully ... | tee -a $LOG
NUM_SUC=$(($NUM_SUC + 1))
else
echo drop collection $TEST_COLLECTION unsuccessfully ... | tee -a $LOG
NUM_FAIL=$(($NUM_FAIL + 1))
fi
NUM_TOTAL=$(($NUM_SUC + $NUM_FAIL))
# Print the summary
echo "test done at "`date`|tee -a $LOG
echo "Total manipulations: "$NUM_TOTAL|tee -a $LOG
echo "Successful manipulation number: "$NUM_SUC|tee -a $LOG
echo "Failed manipulation number: "$NUM_FAIL|tee -a $LOG
echo "Detail test log is in " $LOG
if [ $NUM_TOTAL = $NUM_SUC ]
then
exit $CODE_OK
else
exit $CODE_FAIL
fi