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
 |