blob: 19c9d8045142d3252b320eeb5c0ac95c80ffb2c6 [file] [log] [blame]
Todd Willey2599b312011-11-04 10:31:37 -04001#!/usr/bin/env bash
2
Dean Troyer27e32692012-03-16 16:16:56 -05003# **exercise.sh**
4
Dean Troyerdc97cb72015-03-28 08:20:50 -05005# Keep track of the current DevStack directory.
Dean Troyer27e32692012-03-16 16:16:56 -05006TOP_DIR=$(cd $(dirname "$0") && pwd)
7
Dean Troyer05530ca2012-07-06 15:09:10 -05008# Import common functions
9source $TOP_DIR/functions
10
Dean Troyer27e32692012-03-16 16:16:56 -050011# Load local configuration
12source $TOP_DIR/stackrc
13
Todd Willey2599b312011-11-04 10:31:37 -040014# Run everything in the exercises/ directory that isn't explicitly disabled
15
16# comma separated list of script basenames to skip
Dean Troyerdc97cb72015-03-28 08:20:50 -050017# to refrain from exercising euca.sh use ``SKIP_EXERCISES=euca``
Todd Willey2599b312011-11-04 10:31:37 -040018SKIP_EXERCISES=${SKIP_EXERCISES:-""}
19
Russell Bryanta845dde2013-03-07 15:16:01 -050020# comma separated list of script basenames to run
Dean Troyerdc97cb72015-03-28 08:20:50 -050021# to run only euca.sh use ``RUN_EXERCISES=euca``
Russell Bryanta845dde2013-03-07 15:16:01 -050022basenames=${RUN_EXERCISES:-""}
23
24EXERCISE_DIR=$TOP_DIR/exercises
25
Dean Troyercc6b4432013-04-08 15:38:03 -050026if [[ -z "${basenames}" ]]; then
Russell Bryanta845dde2013-03-07 15:16:01 -050027 # Locate the scripts we should run
28 basenames=$(for b in `ls $EXERCISE_DIR/*.sh`; do basename $b .sh; done)
29else
Dean Troyerdc97cb72015-03-28 08:20:50 -050030 # If ``RUN_EXERCISES`` was specified, ignore ``SKIP_EXERCISES``.
Russell Bryanta845dde2013-03-07 15:16:01 -050031 SKIP_EXERCISES=
32fi
Todd Willey2599b312011-11-04 10:31:37 -040033
Todd Willey9e9132d2011-11-04 12:09:54 -040034# Track the state of each script
35passes=""
36failures=""
37skips=""
38
39# Loop over each possible script (by basename)
Todd Willey0367cf12011-11-05 10:46:56 -040040for script in $basenames; do
Dean Troyercc6b4432013-04-08 15:38:03 -050041 if [[ ,$SKIP_EXERCISES, =~ ,$script, ]]; then
Todd Willey9e9132d2011-11-04 12:09:54 -040042 skips="$skips $script"
Todd Willey2599b312011-11-04 10:31:37 -040043 else
Dean Troyer27e32692012-03-16 16:16:56 -050044 echo "====================================================================="
Todd Willey2599b312011-11-04 10:31:37 -040045 echo Running $script
Dean Troyer27e32692012-03-16 16:16:56 -050046 echo "====================================================================="
Todd Willey9e9132d2011-11-04 12:09:54 -040047 $EXERCISE_DIR/$script.sh
Chmouel Boudjnah408b0092012-03-15 23:21:55 +000048 exitcode=$?
49 if [[ $exitcode == 55 ]]; then
50 skips="$skips $script"
Dean Troyercc6b4432013-04-08 15:38:03 -050051 elif [[ $exitcode -ne 0 ]]; then
Todd Willey9e9132d2011-11-04 12:09:54 -040052 failures="$failures $script"
Todd Willey2599b312011-11-04 10:31:37 -040053 else
Todd Willey9e9132d2011-11-04 12:09:54 -040054 passes="$passes $script"
Todd Willey2599b312011-11-04 10:31:37 -040055 fi
56 fi
57done
Todd Willey9e9132d2011-11-04 12:09:54 -040058
Dean Troyerdc97cb72015-03-28 08:20:50 -050059# Output status of exercise run
Dean Troyer27e32692012-03-16 16:16:56 -050060echo "====================================================================="
Todd Willey0367cf12011-11-05 10:46:56 -040061for script in $skips; do
Todd Willey9e9132d2011-11-04 12:09:54 -040062 echo SKIP $script
63done
Todd Willey0367cf12011-11-05 10:46:56 -040064for script in $passes; do
Todd Willey9e9132d2011-11-04 12:09:54 -040065 echo PASS $script
66done
Todd Willey0367cf12011-11-05 10:46:56 -040067for script in $failures; do
Todd Willey9e9132d2011-11-04 12:09:54 -040068 echo FAILED $script
69done
Dean Troyer27e32692012-03-16 16:16:56 -050070echo "====================================================================="
James E. Blairc639ef02011-11-10 15:11:28 -080071
Dean Troyercc6b4432013-04-08 15:38:03 -050072if [[ -n "$failures" ]]; then
James E. Blairc639ef02011-11-10 15:11:28 -080073 exit 1
74fi