On Mon, Mar 11, 2013 at 4:23 PM, Iustin Pop <[email protected]> wrote:

> This is not run automatically (although it could/should), but is very
> useful during development.
>
> Signed-off-by: Iustin Pop <[email protected]>
> ---
>  devel/check-split-query | 70
> +++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 70 insertions(+)
>  create mode 100755 devel/check-split-query
>
> diff --git a/devel/check-split-query b/devel/check-split-query
> new file mode 100755
> index 0000000..e0a6659
> --- /dev/null
> +++ b/devel/check-split-query
> @@ -0,0 +1,70 @@
> +#!/bin/bash
> +
> +# Copyright (C) 2013 Google Inc.
> +#
> +# This program 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 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program 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 this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> +# 02110-1301, USA.
> +
> +# Checks query equivalence between masterd and confd
> +#
> +# This is not (currently) run automatically during QA, but you can run
> +# it manually on a test cluster. It will force all queries known to be
> +# converted via both paths and check the difference, via both 'list'
> +# and 'list-fields'. For best results, it should be run on a non-empty
> +# cluster.
> +#
> +# Also note that this is not expected to show 100% perfect matches,
> +# since the JSON output differs slightly for complex data types
> +# (e.g. dictionaries with different sort order for keys, etc.).
> +#
> +# Current known delta:
> +# - all dicts, sort order
> +# - ctime is always defined in Haskell, as epoch 0 if missing
>
Nit: I think the comma is superfluous.


> +# - external_reservations missing in gnt-network/Haskell
>
That's fixed with some other patch of this series, right?


> +
> +MA=`mktemp master.XXXXXX`
> +CF=`mktemp confd.XXXXXX`
> +trap 'rm -f "$MA" "$CF"' EXIT
> +trap 'exit 1' SIGINT
> +
> +RET=0
> +SEP="--separator=,"
> +ENABLED_QUERIES="node group network backup"
> +
> +test_cmd() {
> +  cmd="$1"
> +  desc="$2"
> +  FORCE_LUXI_SOCKET=master $cmd > "$MA"
> +  FORCE_LUXI_SOCKET=query  $cmd > "$CF"
> +  diff -u "$MA" "$CF" || {
> +    echo "Mismatch in $desc, see above."
> +    RET=1
> +  }
> +}
> +
> +for kind in $ENABLED_QUERIES; do
> +  all_fields=$(FORCE_LUXI_SOCKET=master gnt-$kind list-fields \
> +    --no-headers --separator=,|cut -d, -f1)
> +  comma_fields=$(echo $all_fields|tr ' ' ,|sed -e 's/,$//')
> +  for op in list list-fields; do
> +    test_cmd "gnt-$kind $op $SEP" "$kind $op"
> +  done
> +  #test_cmd "gnt-$kind list $SEP -o$comma_fields" "$kind list with all
> fields"
> +  for field in $all_fields; do
> +    test_cmd "gnt-$kind list $SEP -o$field" "$kind list for field $field"
> +  done
> +done
> +
> +exit $RET
> --
> 1.8.1.3
>
>
LGTM

Reply via email to