From 8c768050a59d61866398ca4c549f68663a0e09e9 Mon Sep 17 00:00:00 2001 From: David Zafman Date: Mon, 31 Jul 2017 09:27:15 -0700 Subject: [PATCH] qa: run-standalone.sh improvements Signed-off-by: David Zafman --- qa/run-standalone.sh | 73 +++++++++++++++++++++++++++++++++++++++----- qa/standalone/README | 6 ++-- 2 files changed, 68 insertions(+), 11 deletions(-) diff --git a/qa/run-standalone.sh b/qa/run-standalone.sh index 185ed41c25d27..6b94958568725 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 b362295962b7f..8ec202639bdbd 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 -- 2.39.5