13aeac24b6
This query suite tester allows queries to be stored in files to easily be executed in bulk. The output of the queries are stored for easy analysis. Change-Id: Ibcfb395ec0fdfb2c46ed2cc02032cc4eb7395a43
82 lines
1.9 KiB
Bash
Executable File
82 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
query_suite run -h <host> -i <suite_dir> -o <output_dir> [-s <suite>]
|
|
|
|
Run query test suites
|
|
|
|
A query test suite must be a subdirectory of suite_dir and contain
|
|
either files with queries in them, or if the suite name looks like
|
|
"values_operator", the files must contain values for the operator
|
|
instead of full queries.
|
|
|
|
The query outputs for each suite will be stored in files named
|
|
after their suites and input file names under the output_dir.
|
|
|
|
EOF
|
|
exit
|
|
}
|
|
|
|
e() { [ -n "$VERBOSE" ] && echo "$@" >&2 ; "$@" ; }
|
|
|
|
query() { # host query
|
|
local host=$1 query="$2"
|
|
e ssh -p 29418 "$host" gerrit query --format json "$query"
|
|
}
|
|
|
|
run_suite() { # host idir odir suite operator
|
|
local host=$1 idir=$2 odir=$3 suite=$4 operator=$5 qfile files
|
|
|
|
mkdir -p "$odir/$suite"
|
|
|
|
echo "$suite" | grep -q "^values_" && operator=$(echo "$suite" | sed '-es/^values_//')
|
|
|
|
if [ -z "$suite" ] ; then
|
|
files=($(cd "$idir" ; echo *))
|
|
else
|
|
files=($(cd "$idir" ; echo $suite/*))
|
|
fi
|
|
|
|
for qfile in "${files[@]}" ; do
|
|
if [ -d "$idir/$qfile" ] ; then
|
|
run_suite "$host" "$idir" "$odir" "$qfile" "$operator"
|
|
else
|
|
if [ -n "$operator" ] ; then
|
|
query "$host" "$operator:{$(< "$idir/$qfile")}" > "$odir/$qfile"
|
|
else
|
|
query "$host" "$(< "$idir/$qfile")" > "$odir/$qfile"
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
cmd=''
|
|
while [ $# -gt 0 ] ; do
|
|
case "$1" in
|
|
-v) VERBOSE=$1 ;;
|
|
|
|
-h) shift ; HOST=$1 ;;
|
|
-s) shift ; SUITE=$1 ;;
|
|
-i) shift ; IDIR=$1 ;;
|
|
-o) shift ; ODIR=$1 ;;
|
|
|
|
run) cmd=$1 ;;
|
|
|
|
--exec) shift ; "$@" ; exit ;;
|
|
|
|
*) usage ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
case "$cmd" in
|
|
run)
|
|
[ -z "$HOST" ] && usage
|
|
[ -z "$IDIR" ] && usage
|
|
[ -z "$ODIR" ] && usage
|
|
[ -z "$SUITE" ] && SUITE=""
|
|
run_suite "$HOST" "$IDIR" "$ODIR" "$SUITE" ; exit
|
|
;;
|
|
esac
|