Skip to content

Instantly share code, notes, and snippets.

@eputnam
Created September 14, 2016 09:46
Show Gist options
  • Save eputnam/675e0a3e628792ba9e6de46431e828c4 to your computer and use it in GitHub Desktop.
Save eputnam/675e0a3e628792ba9e6de46431e828c4 to your computer and use it in GitHub Desktop.
#!/bin/bash
##Command line tool to make acceptance tests on vmpooler a little more bearable
##Author: Eric Putnam <eric.putnam@puppet.com>
function output {
PURPLE='\033[0;35m'
NC='\033[0m' # No Color
printf "${PURPLE}"$1"${NC}${2}"
}
function usage {
echo "Usage: module_test <acceptance|unit> [OPTIONS]"
echo ""
echo "--OPTIONS--"
echo "[-f|--testfile PATH]: path to specific spec to run, starting in unit/ or acceptance/"
echo "[-pe|--enterprise VERSION]: run tests against PE version VERSION"
echo "[-d|--destroy]: destroy VM after run"
echo "[-p|--provision]: provision new VM"
echo "[--setfile PATH]: path to nodeset to use"
echo "[--keyfile PATH]: path to acceptance key, default is $USER/.ssh/id_rsa-acceptance"
}
function printReport {
output "PUPPET_INSTALL_TYPE=" "${PUPPET_INSTALL_TYPE}\n"
if $ENTERPRISE; then
output "BEAKER_PE_VERSION=" "${PUPPET_PE_VERSION}\n"
printf "...using version ${PE_VERSION_ACTUAL}\n"
output "BEAKER_PE_DIR=" "${BEAKER_PE_DIR}\n"
fi
if [ "${TEST_FILE}" != "" ]; then
output "TEST_FILE=" "${TEST_FILE}\n"
fi
output "BEAKER_destroy=" "${BEAKER_destroy}\n"
output "BEAKER_provision=" "${BEAKER_provision}\n"
output "BEAKER_setfile=" "${BEAKER_setfile}\n"
output "BEAKER_keyfile=" "${BEAKER_keyfile}\n"
output "TEST_CMD=" "${TEST_CMD}\n"
}
ENTERPRISE=false
PUPPET_INSTALL_TYPE=foss
PUPPET_PE_VERSION=2016.2
BEAKER_destroy=no
BEAKER_provision=no
BEAKER_setfile=~/code/qe-module-ci-helpers/nodes/new/pe/solaris-10-64a
BEAKER_keyfile=~/.ssh/id_rsa-acceptance
BEAKER_debug=true
CURRENT_DIR=${PWD##*/}
ACCEPTANCE_CMD="bundle exec rspec spec/acceptance/"
UNIT_CMD="bundle exec rspec spec/unit/"
TEST_FILE=""
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
acceptance)
TEST_CMD=$ACCEPTANCE_CMD
;;
unit)
TEST_CMD=$UNIT_CMD
;;
-f|--testfile)
TEST_FILE=$2
shift
;;
-pe|--enterprise)
ENTERPRISE=true
PUPPET_PE_VERSION=$2
PUPPET_INSTALL_TYPE=pe
shift
;;
-d|--destroy)
BEAKER_destroy=yes
;;
-p|--provision)
BEAKER_provision=yes
;;
-o|--platform)
PLATFORM=$2
shift
;;
--setfile)
BEAKER_setfile=$2
shift
;;
--keyfile)
BEAKER_keyfile=$2
shift
;;
--debug)
DEBUG=true
;;
*)
usage
exit
;;
esac
shift # past argument or value
done
echo "Running $1 tests for $CURRENT_DIR"
PE_VERSION_ACTUAL=$(curl -s http://getpe.delivery.puppetlabs.net/latest/$PUPPET_PE_VERSION)
BEAKER_PE_DIR="http://enterprise.delivery.puppetlabs.net/${PUPPET_PE_VERSION}/ci-ready"
##ALL THE PRETTY OUTPUT
output "PUPPET_INSTALL_TYPE=" "${PUPPET_INSTALL_TYPE}\n"
if $ENTERPRISE; then
output "BEAKER_PE_VERSION=" "${PUPPET_PE_VERSION}\n"
printf "...using version ${PE_VERSION_ACTUAL}\n"
output "BEAKER_PE_DIR=" "${BEAKER_PE_DIR}\n"
fi
if [ "${TEST_FILE}" != "" ]; then
output "TEST_FILE=" "${TEST_FILE}\n"
fi
output "BEAKER_destroy=" "${BEAKER_destroy}\n"
output "BEAKER_provision=" "${BEAKER_provision}\n"
output "BEAKER_setfile=" "${BEAKER_setfile}\n"
output "BEAKER_keyfile=" "${BEAKER_keyfile}\n"
output "TEST_CMD=" "${TEST_CMD}\n"
FINAL_COMMAND=""
if $ENTERPRISE; then
FINAL_COMMAND="PUPPET_INSTALL_TYPE=${PUPPET_INSTALL_TYPE} BEAKER_PE_DIR='${BEAKER_PE_DIR}' BEAKER_PE_VER='${PE_VERSION_ACTUAL}' BEAKER_destroy=${BEAKER_destroy} BEAKER_provision=${BEAKER_provision} BEAKER_setfile=${BEAKER_setfile} BEAKER_keyfile=${BEAKER_keyfile} ${TEST_CMD}${TEST_FILE}"
else
FINAL_COMANND="PUPPET_INSTALL_TYPE=${PUPPET_INSTALL_TYPE} BEAKER_destroy=${BEAKER_destroy} BEAKER_provision=${BEAKER_provision} BEAKER_setfile=${BEAKER_setfile} BEAKER_keyfile=${BEAKER_keyfile} ${TEST_CMD}${TEST_FILE}"
fi
echo "Executing: ${FINAL_COMMAND}"
#RUN IT
eval $FINAL_COMMAND
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment