| Todd Willey | 2599b31 | 2011-11-04 10:31:37 -0400 | [diff] [blame] | 1 | #!/usr/bin/env bash | 
|  | 2 |  | 
| Dean Troyer | 27e3269 | 2012-03-16 16:16:56 -0500 | [diff] [blame] | 3 | # **exercise.sh** | 
|  | 4 |  | 
|  | 5 | # Keep track of the current devstack directory. | 
|  | 6 | TOP_DIR=$(cd $(dirname "$0") && pwd) | 
|  | 7 |  | 
| Dean Troyer | 05530ca | 2012-07-06 15:09:10 -0500 | [diff] [blame] | 8 | # Import common functions | 
|  | 9 | source $TOP_DIR/functions | 
|  | 10 |  | 
| Dean Troyer | 27e3269 | 2012-03-16 16:16:56 -0500 | [diff] [blame] | 11 | # Load local configuration | 
|  | 12 | source $TOP_DIR/stackrc | 
|  | 13 |  | 
| Todd Willey | 2599b31 | 2011-11-04 10:31:37 -0400 | [diff] [blame] | 14 | # Run everything in the exercises/ directory that isn't explicitly disabled | 
|  | 15 |  | 
|  | 16 | # comma separated list of script basenames to skip | 
|  | 17 | # to refrain from exercising euca.sh use SKIP_EXERCISES=euca | 
|  | 18 | SKIP_EXERCISES=${SKIP_EXERCISES:-""} | 
|  | 19 |  | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 20 | # Locate the scripts we should run | 
| Todd Willey | 2599b31 | 2011-11-04 10:31:37 -0400 | [diff] [blame] | 21 | EXERCISE_DIR=$(dirname "$0")/exercises | 
| Todd Willey | 0367cf1 | 2011-11-05 10:46:56 -0400 | [diff] [blame] | 22 | basenames=$(for b in `ls $EXERCISE_DIR/*.sh`; do basename $b .sh; done) | 
| Todd Willey | 2599b31 | 2011-11-04 10:31:37 -0400 | [diff] [blame] | 23 |  | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 24 | # Track the state of each script | 
|  | 25 | passes="" | 
|  | 26 | failures="" | 
|  | 27 | skips="" | 
|  | 28 |  | 
|  | 29 | # Loop over each possible script (by basename) | 
| Todd Willey | 0367cf1 | 2011-11-05 10:46:56 -0400 | [diff] [blame] | 30 | for script in $basenames; do | 
| Dean Troyer | a3b0255 | 2012-12-19 16:27:12 -0600 | [diff] [blame] | 31 | if [[ ,$SKIP_EXERCISES, =~ ,$script, ]] ; then | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 32 | skips="$skips $script" | 
| Todd Willey | 2599b31 | 2011-11-04 10:31:37 -0400 | [diff] [blame] | 33 | else | 
| Dean Troyer | 27e3269 | 2012-03-16 16:16:56 -0500 | [diff] [blame] | 34 | echo "=====================================================================" | 
| Todd Willey | 2599b31 | 2011-11-04 10:31:37 -0400 | [diff] [blame] | 35 | echo Running $script | 
| Dean Troyer | 27e3269 | 2012-03-16 16:16:56 -0500 | [diff] [blame] | 36 | echo "=====================================================================" | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 37 | $EXERCISE_DIR/$script.sh | 
| Chmouel Boudjnah | 408b009 | 2012-03-15 23:21:55 +0000 | [diff] [blame] | 38 | exitcode=$? | 
|  | 39 | if [[ $exitcode == 55 ]]; then | 
|  | 40 | skips="$skips $script" | 
|  | 41 | elif [[ $exitcode -ne 0 ]] ; then | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 42 | failures="$failures $script" | 
| Todd Willey | 2599b31 | 2011-11-04 10:31:37 -0400 | [diff] [blame] | 43 | else | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 44 | passes="$passes $script" | 
| Todd Willey | 2599b31 | 2011-11-04 10:31:37 -0400 | [diff] [blame] | 45 | fi | 
|  | 46 | fi | 
|  | 47 | done | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 48 |  | 
|  | 49 | # output status of exercise run | 
| Dean Troyer | 27e3269 | 2012-03-16 16:16:56 -0500 | [diff] [blame] | 50 | echo "=====================================================================" | 
| Todd Willey | 0367cf1 | 2011-11-05 10:46:56 -0400 | [diff] [blame] | 51 | for script in $skips; do | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 52 | echo SKIP $script | 
|  | 53 | done | 
| Todd Willey | 0367cf1 | 2011-11-05 10:46:56 -0400 | [diff] [blame] | 54 | for script in $passes; do | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 55 | echo PASS $script | 
|  | 56 | done | 
| Todd Willey | 0367cf1 | 2011-11-05 10:46:56 -0400 | [diff] [blame] | 57 | for script in $failures; do | 
| Todd Willey | 9e9132d | 2011-11-04 12:09:54 -0400 | [diff] [blame] | 58 | echo FAILED $script | 
|  | 59 | done | 
| Dean Troyer | 27e3269 | 2012-03-16 16:16:56 -0500 | [diff] [blame] | 60 | echo "=====================================================================" | 
| James E. Blair | c639ef0 | 2011-11-10 15:11:28 -0800 | [diff] [blame] | 61 |  | 
|  | 62 | if [ -n "$failures" ] ; then | 
|  | 63 | exit 1 | 
|  | 64 | fi |