diff options
author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2013-09-06 10:12:55 -0400 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-09-10 13:39:42 -0700 |
commit | 4c4aaa5abf68d4da8e3c626ab7a469b81354b9e2 (patch) | |
tree | ff7d8521308570198bf7e9e6ea497fec98138390 | |
parent | c05cd5a392efb382fc726c55f507beeedc824b02 (diff) |
tests/basic/rpm.t: run mock builds in parallel
save about six minutes per regression by building in parallel
Change-Id: Iaf6fa545e20b0322b10e9e4ab7cc3d4254a0ece5
BUG: 1006269
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/5845
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
-rwxr-xr-x | tests/basic/rpm.t | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/tests/basic/rpm.t b/tests/basic/rpm.t index ef4b5abf0cb..d7f40d32b97 100755 --- a/tests/basic/rpm.t +++ b/tests/basic/rpm.t @@ -22,6 +22,8 @@ fi # check for changed files CHANGED_FILES=$(git diff --name-only ${GIT_PARENT}) +# if a commit changes this test, we should not skip it +SELFTEST=$(grep -e 'tests/basic/rpm.t' <<< "${CHANGED_FILES}") # filter out any files not affecting the build itself CHANGED_FILES=$(grep -E -v \ -e '\.c$' \ @@ -29,9 +31,9 @@ CHANGED_FILES=$(grep -E -v \ -e '\.py$' \ -e '^tests/' \ <<< "${CHANGED_FILES}") -if [ -z "${CHANGED_FILES}" ] +if [ -z "${CHANGED_FILES}" -a -z "${SELFTEST}" ] then - # only contents of files were changed, no need to retest rpmbuild + # nothing affecting packaging changed, no need to retest rpmbuild SKIP_TESTS rm -rf ${RESULT_DIR} cleanup @@ -55,12 +57,10 @@ TEST make dist ls extras TEST make -C extras/LinuxRPM testsrpm -chmod g=rwx ${RESULT_DIR} +chmod 0777 ${RESULT_DIR} chown :mock ${RESULT_DIR} # build for the last two Fedora EPEL releases (x86_64 only) -# TAP/Prove aren't smart about loops -TESTS_EXPECTED_IN_LOOP=2 for MOCK_CONF in $(ls -x1 /etc/mock/*.cfg | egrep -e 'epel-[0-9]+-x86_64.cfg$' | tail -n2) do EPEL_RELEASE=$(basename ${MOCK_CONF} .cfg) @@ -68,9 +68,9 @@ do chmod g=rwx ${RESULT_DIR}/${EPEL_RELEASE} chown :mock ${RESULT_DIR}/${EPEL_RELEASE} # expand the mock command line - MOCK_CMD=$(echo /usr/bin/mock --cleanup-after \ + MOCK_CMD="/usr/bin/mock --cleanup-after \ --resultdir=${RESULT_DIR}/${EPEL_RELEASE} \ - -r ${EPEL_RELEASE} --rebuild ${PWD}/*.src.rpm) + -r ${EPEL_RELEASE} --rebuild ${PWD}/*.src.rpm" # write the mock command to a file, so that its easier to execute cat << EOF > ${RESULT_DIR}/${EPEL_RELEASE}/mock.sh @@ -83,14 +83,21 @@ EOF if (groups | grep -q mock) then # the current user is in group 'mock' - RUNMOCK="${RESULT_DIR}/${EPEL_RELEASE}/mock.sh" + ${RESULT_DIR}/${EPEL_RELEASE}/mock.sh & else # switch to the user called 'mock' chown mock:mock ${RESULT_DIR}/${EPEL_RELEASE} # "su" might not work, using sudo instead - RUNMOCK="sudo -u mock -E ${RESULT_DIR}/${EPEL_RELEASE}/mock.sh" + sudo -u mock -E ${RESULT_DIR}/${EPEL_RELEASE}/mock.sh & fi - TEST_IN_LOOP ${RUNMOCK} + sleep 5 +done + +# TAP and Prove aren't smart about loops +TESTS_EXPECTED_IN_LOOP=2 +for mockjob in $(jobs -p) +do + TEST_IN_LOOP wait ${mockjob} done # we could build for the last two Fedora releases too, but that is not |