Provide a more generic run-tox.sh.
Rename run-tox.sh to run-unittests.sh. Add a new run-tox.sh that takes the tox environment name as its first argument instead of the python version number suffix. This makes it easier to run alternative jobs through tox (building docs, building with different versions of dependencies, etc.). Based on feedback in https://review.openstack.org/#/c/38218/ Change-Id: I7e5a23fbe88af94bbfbbed4a47c5eb6527ab1d47
This commit is contained in:
parent
57c629ab8c
commit
17d785611c
@ -6,64 +6,34 @@
|
||||
# resulting environment at the end so that we have a record of exactly
|
||||
# what packages we ended up testing.
|
||||
#
|
||||
# Usage: run-tox.sh PYTHONVERSION
|
||||
# Usage: run-tox.sh VENV
|
||||
#
|
||||
# Where PYTHONVERSION is the numeric version identifier used as a suffix
|
||||
# in the tox.ini file. E.g., "26" or "27" for "py26"/"jenkins26" or
|
||||
# "py27"/"jenkins27" respectively.
|
||||
# Where VENV is the name of the tox environment to run (specified in the
|
||||
# project's tox.ini file).
|
||||
|
||||
version=$1
|
||||
venv=$1
|
||||
org=$2
|
||||
project=$3
|
||||
|
||||
if [[ -z "$version" || -z "$org" || -z "$project" ]]
|
||||
if [[ -z "$venv" || -z "$org" || -z "$project" ]]
|
||||
then
|
||||
echo "Usage: $? VERSION ORG PROJECT"
|
||||
echo "Usage: $? VENV ORG PROJECT"
|
||||
echo
|
||||
echo "VERSION: The tox environment python version (eg '27')"
|
||||
echo "ORG: The project organization (eg 'openstack')"
|
||||
echo "VENV: The tox environment to run (eg 'python27')"
|
||||
echo "ORG: The project organization (eg 'stackforge')"
|
||||
echo "PROJECT: The project name (eg 'nova')"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
venv=py$version
|
||||
|
||||
export NOSE_WITH_XUNIT=1
|
||||
export NOSE_WITH_HTML_OUTPUT=1
|
||||
export NOSE_HTML_OUT_FILE='nose_results.html'
|
||||
export TMPDIR=`/bin/mktemp -d`
|
||||
trap "rm -rf $TMPDIR" EXIT
|
||||
|
||||
/usr/local/jenkins/slave_scripts/jenkins-oom-grep.sh pre
|
||||
|
||||
sudo /usr/local/jenkins/slave_scripts/jenkins-sudo-grep.sh pre
|
||||
|
||||
source /usr/local/jenkins/slave_scripts/select-mirror.sh $org $project
|
||||
|
||||
# Workaround the combo of tox running setup.py outside of virtualenv
|
||||
# and RHEL having an old distribute. The next line can be removed
|
||||
# when either get fixed.
|
||||
python setup.py --version 2>/dev/null
|
||||
|
||||
tox -e$venv
|
||||
tox -v -e$venv
|
||||
result=$?
|
||||
|
||||
echo "Begin pip freeze output from test virtualenv:"
|
||||
echo "======================================================================"
|
||||
.tox/$venv/bin/pip freeze
|
||||
echo "======================================================================"
|
||||
|
||||
if [ -d ".testrepository" ] ; then
|
||||
if [ -f ".testrepository/0.2" ] ; then
|
||||
cp .testrepository/0.2 ./subunit_log.txt
|
||||
elif [ -f ".testrepository/0" ] ; then
|
||||
.tox/$venv/bin/subunit-1to2 < .testrepository/0 > ./subunit_log.txt
|
||||
fi
|
||||
.tox/$venv/bin/python /usr/local/jenkins/slave_scripts/subunit2html.py ./subunit_log.txt testr_results.html
|
||||
gzip -9 ./subunit_log.txt
|
||||
gzip -9 ./testr_results.html
|
||||
fi
|
||||
|
||||
sudo /usr/local/jenkins/slave_scripts/jenkins-sudo-grep.sh post
|
||||
sudoresult=$?
|
||||
|
||||
@ -89,23 +59,4 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
htmlreport=$(find . -name $NOSE_HTML_OUT_FILE)
|
||||
if [ -f "$htmlreport" ]
|
||||
then
|
||||
passcount=$(grep -c 'tr class=.passClass' $htmlreport)
|
||||
if [ $passcount -eq "0" ]
|
||||
then
|
||||
echo
|
||||
echo "Zero tests passed, which probably means there was an error"
|
||||
echo "parsing one of the python files, or that some other failure"
|
||||
echo "during test setup prevented a sane run."
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo
|
||||
echo "WARNING: Unable to find $NOST_HTML_OUT_FILE to confirm results!"
|
||||
echo
|
||||
fi
|
||||
|
||||
exit $result
|
||||
|
104
modules/jenkins/files/slave_scripts/run-unittests.sh
Executable file
104
modules/jenkins/files/slave_scripts/run-unittests.sh
Executable file
@ -0,0 +1,104 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# Call tox with the jenkins version of the test environment so it is used.
|
||||
# Also, run pip freeze on the resulting environment at the end so that we have
|
||||
# a record of exactly what packages we ended up testing.
|
||||
#
|
||||
# Usage: run-unittests.sh PYTHONVERSION
|
||||
#
|
||||
# Where PYTHONVERSION is the numeric version identifier used as a suffix
|
||||
# in the tox.ini file. E.g., "26" or "27" for "py26"/"jenkins26" or
|
||||
# "py27"/"jenkins27" respectively.
|
||||
|
||||
version=$1
|
||||
org=$2
|
||||
project=$3
|
||||
|
||||
if [[ -z "$version" || -z "$org" || -z "$project" ]]
|
||||
then
|
||||
echo "Usage: $? VERSION ORG PROJECT"
|
||||
echo
|
||||
echo "VERSION: The tox environment python version (eg '27')"
|
||||
echo "ORG: The project organization (eg 'openstack')"
|
||||
echo "PROJECT: The project name (eg 'nova')"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
venv=py$version
|
||||
|
||||
export NOSE_WITH_XUNIT=1
|
||||
export NOSE_WITH_HTML_OUTPUT=1
|
||||
export NOSE_HTML_OUT_FILE='nose_results.html'
|
||||
export TMPDIR=`/bin/mktemp -d`
|
||||
trap "rm -rf $TMPDIR" EXIT
|
||||
|
||||
/usr/local/jenkins/slave_scripts/jenkins-oom-grep.sh pre
|
||||
|
||||
sudo /usr/local/jenkins/slave_scripts/jenkins-sudo-grep.sh pre
|
||||
|
||||
source /usr/local/jenkins/slave_scripts/select-mirror.sh $org $project
|
||||
|
||||
tox -e$venv
|
||||
result=$?
|
||||
|
||||
echo "Begin pip freeze output from test virtualenv:"
|
||||
echo "======================================================================"
|
||||
.tox/$venv/bin/pip freeze
|
||||
echo "======================================================================"
|
||||
|
||||
if [ -d ".testrepository" ] ; then
|
||||
if [ -f ".testrepository/0.2" ] ; then
|
||||
cp .testrepository/0.2 ./subunit_log.txt
|
||||
elif [ -f ".testrepository/0" ] ; then
|
||||
cp .testrepository/0 ./subunit_log.txt
|
||||
fi
|
||||
.tox/$venv/bin/python /usr/local/jenkins/slave_scripts/subunit2html.py ./subunit_log.txt testr_results.html
|
||||
gzip -9 ./subunit_log.txt
|
||||
gzip -9 ./testr_results.html
|
||||
fi
|
||||
|
||||
sudo /usr/local/jenkins/slave_scripts/jenkins-sudo-grep.sh post
|
||||
sudoresult=$?
|
||||
|
||||
if [ $sudoresult -ne "0" ]
|
||||
then
|
||||
echo
|
||||
echo "This test has failed because it attempted to execute commands"
|
||||
echo "with sudo. See above for the exact commands used."
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
/usr/local/jenkins/slave_scripts/jenkins-oom-grep.sh post
|
||||
oomresult=$?
|
||||
|
||||
if [ $oomresult -ne "0" ]
|
||||
then
|
||||
echo
|
||||
echo "This test has failed because it attempted to exceed configured"
|
||||
echo "memory limits and was killed prior to completion. See above"
|
||||
echo "for related kernel messages."
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
htmlreport=$(find . -name $NOSE_HTML_OUT_FILE)
|
||||
if [ -f "$htmlreport" ]
|
||||
then
|
||||
passcount=$(grep -c 'tr class=.passClass' $htmlreport)
|
||||
if [ $passcount -eq "0" ]
|
||||
then
|
||||
echo
|
||||
echo "Zero tests passed, which probably means there was an error"
|
||||
echo "parsing one of the python files, or that some other failure"
|
||||
echo "during test setup prevented a sane run."
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo
|
||||
echo "WARNING: Unable to find $NOST_HTML_OUT_FILE to confirm results!"
|
||||
echo
|
||||
fi
|
||||
|
||||
exit $result
|
@ -23,7 +23,7 @@
|
||||
|
||||
builders:
|
||||
- gerrit-git-prep
|
||||
- shell: '/usr/local/jenkins/slave_scripts/run-tox.sh 27dj14 openstack horizon'
|
||||
- shell: '/usr/local/jenkins/slave_scripts/run-unittests.sh 27dj14 openstack horizon'
|
||||
- assert-no-extra-files
|
||||
|
||||
publishers:
|
||||
|
@ -134,22 +134,22 @@
|
||||
- builder:
|
||||
name: python26
|
||||
builders:
|
||||
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 26 {github-org} {project}"
|
||||
- shell: "/usr/local/jenkins/slave_scripts/run-unittests.sh 26 {github-org} {project}"
|
||||
|
||||
- builder:
|
||||
name: python27
|
||||
builders:
|
||||
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 27 {github-org} {project}"
|
||||
- shell: "/usr/local/jenkins/slave_scripts/run-unittests.sh 27 {github-org} {project}"
|
||||
|
||||
- builder:
|
||||
name: python33
|
||||
builders:
|
||||
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 33 {github-org} {project}"
|
||||
- shell: "/usr/local/jenkins/slave_scripts/run-unittests.sh 33 {github-org} {project}"
|
||||
|
||||
- builder:
|
||||
name: pypy
|
||||
builders:
|
||||
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py {github-org} {project}"
|
||||
- shell: "/usr/local/jenkins/slave_scripts/run-unittests.sh py {github-org} {project}"
|
||||
|
||||
- builder:
|
||||
name: assert-no-extra-files
|
||||
|
@ -36,11 +36,11 @@
|
||||
node: '{node}'
|
||||
|
||||
- job-template:
|
||||
name: 'gate-{name}-tox-{env}'
|
||||
name: 'gate-{name}-unittests-{env}'
|
||||
|
||||
builders:
|
||||
- gerrit-git-prep
|
||||
- shell: '/usr/local/jenkins/slave_scripts/run-tox.sh {env} {github-org} {name}'
|
||||
- shell: '/usr/local/jenkins/slave_scripts/run-unittests.sh {env} {github-org} {name}'
|
||||
- assert-no-extra-files
|
||||
|
||||
publishers:
|
||||
|
@ -120,7 +120,7 @@
|
||||
|
||||
jobs:
|
||||
- python-jobs
|
||||
- gate-{name}-tox-{env}
|
||||
- gate-{name}-unittests-{env}
|
||||
- hook-{name}-rtfd
|
||||
- pypi-jobs
|
||||
|
||||
|
@ -2392,8 +2392,8 @@ projects:
|
||||
- gate-sqlalchemy-migrate-python26
|
||||
- gate-sqlalchemy-migrate-python27
|
||||
experimental:
|
||||
- gate-sqlalchemy-migrate-tox-26sa07
|
||||
- gate-sqlalchemy-migrate-tox-27sa07
|
||||
- gate-sqlalchemy-migrate-unittests-26sa07
|
||||
- gate-sqlalchemy-migrate-unittests-27sa07
|
||||
post:
|
||||
- sqlalchemy-migrate-branch-tarball
|
||||
- hook-sqlalchemy-migrate-rtfd
|
||||
|
Loading…
x
Reference in New Issue
Block a user