From: David Zafman Date: Mon, 31 Jul 2017 16:27:15 +0000 (-0700) Subject: qa: run-standalone.sh improvements X-Git-Tag: v12.2.0~31^2~18 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5afced4e08f4f91185ccc568ab35c29d73d0f3ea;p=ceph.git qa: run-standalone.sh improvements Signed-off-by: David Zafman (cherry picked from commit 8c768050a59d61866398ca4c549f68663a0e09e9) --- diff --git a/qa/run-standalone.sh b/qa/run-standalone.sh index 185ed41c25d..6b949585687 100755 --- a/qa/run-standalone.sh +++ b/qa/run-standalone.sh @@ -1,25 +1,82 @@ -#!/bin/sh -ex +#!/usr/bin/env bash +set -e -if [ ! -e Makefile ]; then +if [ ! -e Makefile -o ! -d bin ]; then echo 'run this from the build dir' exit 1 fi +if [ ! -d /tmp/ceph-disk-virtualenv -o ! -d /tmp/ceph-detect-init-virtualenv ]; then + echo '/tmp/*-virtualenv directories not built' + exit 1 +fi + if [ `uname` = FreeBSD ]; then # otherwise module prettytable will not be found export PYTHONPATH=/usr/local/lib/python2.7/site-packages exec_mode=+111 else + export PYTHONPATH=/usr/lib/python2.7/dist-packages exec_mode=/111 fi -for f in `find ../qa/standalone -perm $exec_mode -type f` +PATH=$(pwd)/bin:$PATH + +# TODO: Use getops +dryrun=false +if [[ "$1" = "--dry-run" ]]; then + dryrun=true + shift +fi + +all=false +if [ "$1" = "" ]; then + all=true +fi + +select=("$@") + +location="../qa/standalone" + +count=0 +errors=0 +for f in $(cd $location ; find . -perm $exec_mode -type f) do - echo '--- $f ---' - PATH=$PATH:bin \ - CEPH_ROOT=.. \ - CEPH_LIB=lib \ - $f || exit 1 + f=$(echo $f | sed 's/\.\///') + if [[ "$all" = "false" ]]; then + found=false + for c in "${!select[@]}" + do + if [[ "${select[$c]}" = $(basename $f) ]]; then + found=true + break + fi + if [[ "${select[$c]}" = "$f" ]]; then + found=true + break + fi + done + if [[ "$found" = "false" ]]; then + continue + fi + fi + count=$(expr $count + 1) + echo "--- $f ---" + if [[ "$dryrun" != "true" ]]; then + if ! PATH=$PATH:bin \ + CEPH_ROOT=.. \ + CEPH_LIB=lib \ + $location/$f ; then + echo "$f .............. FAILED" + errors=$(expr $errors + 1) + fi + fi done +if [ "$errors" != "0" ]; then + echo "$errors TESTS FAILED, $count TOTAL TESTS" + exit 1 +fi + +echo "ALL $count TESTS PASSED" exit 0 diff --git a/qa/standalone/README b/qa/standalone/README index b362295962b..8ec202639bd 100644 --- a/qa/standalone/README +++ b/qa/standalone/README @@ -12,7 +12,7 @@ You can run them in a git checkout + build directory as well: * The qa/run-standalone.sh will run all of them in sequence. This is slow since there is no parallelism. - * You can run an individual script by passing these environment args. For - example, if you are in the build/ directory, + * You can run individual script(s) by specifying the basename or path below + qa/standalone as arguments to qa/run-standalone.sh. -PATH=$PATH:bin CEPH_ROOT=.. CEPH_LIB=lib ../qa/standalone/mon/misc.sh +../qa/run-standalone.sh misc.sh osd/osd-dup.sh