Add a bulk query suite tester
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
This commit is contained in:
parent
ca90c1b5d3
commit
13aeac24b6
81
tools/util/query_tester.sh
Executable file
81
tools/util/query_tester.sh
Executable file
@ -0,0 +1,81 @@
|
||||
#!/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
|
Loading…
Reference in New Issue
Block a user