74 lines
1.4 KiB
Bash
74 lines
1.4 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
#username="li2490@csora"
|
||
|
#pword="h83r81up"
|
||
|
username="mocull@csora"
|
||
|
pword="lyaN8EVc"
|
||
|
|
||
|
# echo $1
|
||
|
# echo $2
|
||
|
echo "$1"
|
||
|
|
||
|
get_result () {
|
||
|
sqlplus -s $1/$2 << EOF
|
||
|
whenever sqlerror exit 1;
|
||
|
set echo on
|
||
|
SET FEEDBACK OFF
|
||
|
set pagesize 0
|
||
|
set wrap off
|
||
|
set linesize 200
|
||
|
$3
|
||
|
exit
|
||
|
EOF
|
||
|
}
|
||
|
|
||
|
if [[ -z "$1" ]]
|
||
|
then
|
||
|
echo "Test all sql querys"
|
||
|
count=0
|
||
|
for i in {1..10};
|
||
|
do
|
||
|
echo Query"$i";
|
||
|
sql=$(awk -v n=$i '/-- Query/{l++;next}(l==n){print}' answer.sql)
|
||
|
echo "---- student query:"
|
||
|
echo "$sql"
|
||
|
echo "---- result:"
|
||
|
v1=$(get_result "$username" "$pword" "$sql")
|
||
|
echo "$v1"
|
||
|
# echo ">>>Query$i" >> result.txt
|
||
|
# echo "$v1" >> result.txt
|
||
|
ans=$(awk -v n=$i '/>>>Query/{l++;next}(l==n){print}' result.txt )
|
||
|
if [[ "$v1" = "$ans" ]]
|
||
|
then
|
||
|
echo -e "\e[42mPass\e[0m"
|
||
|
count=$((count + 1))
|
||
|
else
|
||
|
echo -e "\e[31mFail\e[0m"
|
||
|
echo "Expected:"
|
||
|
echo "$ans"
|
||
|
fi
|
||
|
echo -e "\e[34m====================================\e[0m"
|
||
|
done
|
||
|
echo -e "+++++ Total pass: \e[32m$count\e[0m"
|
||
|
else
|
||
|
echo ">>> Test Query$1 "
|
||
|
sql=$(awk -v n=$1 '/-- Query/{l++;next}(l==n){print}' answer.sql)
|
||
|
echo "---- student query:"
|
||
|
echo "$sql"
|
||
|
v1=$(get_result "$username" "$pword" "$sql")
|
||
|
echo "---- result of Query$1"
|
||
|
for i in "${v1[@]}"
|
||
|
do
|
||
|
echo "$i"
|
||
|
done
|
||
|
ans=$(awk -v n=$1 '/>>>Query/{l++;next}(l==n){print}' result.txt)
|
||
|
if [[ "$v1" = "$ans" ]]
|
||
|
then
|
||
|
echo -e "\e[42mPass\e[0m"
|
||
|
else
|
||
|
echo -e "\e[31mFail\e[0m"
|
||
|
echo "Expected:"
|
||
|
echo "$ans"
|
||
|
fi
|
||
|
fi
|