system-config/tools/apply-test.sh
James E. Blair a01bec1fc6 Use ansible for puppet apply test
This is needed since the hiera configuration is in the ansible
role.

Have puppet append its output directly to our per-test output file.

Rename that file with a FAILED suffix for easy identification when
looking at the results in the published log directory.

Change-Id: Ie2a028b9e0179168d279bcf33de7f997cdfdbc8d
Depends-On: I0db01d128258f78e9b196354799a80774f6c6808
2016-10-04 22:29:00 +00:00

70 lines
2.4 KiB
Bash
Executable File

#!/bin/bash -ex
# Copyright 2014 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
. ./tools/prep-apply.sh
if [[ ! -d applytest ]] ; then
mkdir applytest
fi
# First split the variables at the beginning of the file
csplit -sf applytest/prep $PUPPET_MANIFEST '/^$/' {0}
# Then split the class defs.
csplit -sf applytest/puppetapplytest applytest/prep01 '/^}$/' {*}
# Remove } header left by csplit
sed -i -e '/^\}$/d' applytest/puppetapplytest*
# Comment out anything that doesn't begin with a space.
# This gives us the node {} internal contents.
sed -i -e 's/^[^][:space:]$]/#&/g' applytest/prep00 applytest/puppetapplytest*
sed -i -e 's@hiera(.\([^.]*\).,\([^)]*\))@\2@' applytest/prep00 applytest/puppetapplytest*
sed -i -e "s@hiera(.\([^.]*\).)@'\1NoDefault'@" applytest/prep00 applytest/puppetapplytest*
mv applytest/prep00 applytest/head # These are the top-level variables defined in site.pp
if [[ `lsb_release -i -s` == 'CentOS' ]]; then
if [[ `lsb_release -r -s` =~ '7' ]]; then
CODENAME='centos7'
fi
elif [[ `lsb_release -i -s` == 'Debian' ]]; then
CODENAME=`lsb_release -c -s`
elif [[ `lsb_release -i -s` == 'Ubuntu' ]]; then
CODENAME=`lsb_release -c -s`
elif [[ `lsb_release -i -s` == 'Fedora' ]]; then
REL=`lsb_release -r -s`
CODENAME="fedora$REL"
fi
FOUND=0
for f in `find applytest -name 'puppetapplytest*' -print` ; do
if grep -q "Node-OS: $CODENAME" $f; then
cat applytest/head $f > $f.final
FOUND=1
fi
done
if [[ $FOUND == "0" ]]; then
echo "No hosts found for node type $CODENAME"
exit 1
fi
sudo mkdir -p /var/run/puppet
sudo -E bash -x ./install_modules.sh
echo "Running apply test on these hosts:"
find applytest -name 'puppetapplytest*.final' -print0
# TODO: restore the use of "-P $(nproc)" for parallel testing
find applytest -name 'puppetapplytest*.final' -print0 | \
xargs -0 -n 1 -I filearg \
./tools/test_puppet_apply.sh filearg