tests/compose: Write logs directly

Make logging work the same as it does for the vmcheck-STI work
(at some point I'll try to unify the 3 parallel+script implementions
 we have).  This fixes the problem that when the test times out,
the filename won't have `.txt` and S3 won't have the right MIME type.

Closes: #1479
Approved by: jlebon
This commit is contained in:
Colin Walters 2018-07-31 10:57:31 -04:00 committed by Atomic Bot
parent 800402b00a
commit 628a3aa22f
2 changed files with 13 additions and 15 deletions

View File

@ -10,7 +10,7 @@ export topsrcdir=$(cd $dn/.. && pwd)
# avoid refetching yum metadata everytime # avoid refetching yum metadata everytime
export RPMOSTREE_USE_CACHED_METADATA=1 export RPMOSTREE_USE_CACHED_METADATA=1
LOGDIR=${LOGDIR:-$(pwd)/test-compose-logs} export LOGDIR=${LOGDIR:-$(pwd)/test-compose-logs}
mkdir -p ${LOGDIR} mkdir -p ${LOGDIR}
colour_print() { colour_print() {
@ -81,19 +81,7 @@ fi
echo "Compose tests starting: $(date)" echo "Compose tests starting: $(date)"
echo "Executing: ${tests}" echo "Executing: ${tests}"
echo "Writing logs to ${LOGDIR}" echo "Writing logs to ${LOGDIR}"
function postprocess_logs() {
# Help out S3 to have the right MIME type
for x in ${LOGDIR}/1/*.sh; do
if test -d ${x}; then
mv ${x}/{stdout,output.txt}
rm ${x}/stderr
fi
done
}
trap postprocess_logs EXIT
# Note we merge stdout/stderr here since I don't see value
# in separating them.
(for tf in ${tests}; do echo $tf; done) | \ (for tf in ${tests}; do echo $tf; done) | \
parallel -j +1 --progress --halt soon,fail=1 \ parallel -v -j +1 --progress --halt soon,fail=1 \
--results ${LOGDIR} /bin/sh -c "${dn}/compose-tests/{} 2>&1" |& tail --results ${LOGDIR}/parallel --quote /bin/sh -c "${dn}/compose-tests/run-test.sh {}"
echo "$(date): All tests passed" echo "$(date): All tests passed"

10
tests/compose-tests/run-test.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
set -euo pipefail
tf=$1
export TEST_ARTIFACTS=${LOGDIR}/${tf}
mkdir -p ${TEST_ARTIFACTS}
# Redirect our stdout/stderr, since we don't want what GNU parallel does
exec 1>${TEST_ARTIFACTS}/output.txt
exec 2>&1
exec $(dirname $0)/${tf}