Merge "Provide a more generic run-tox.sh."
This commit is contained in:
commit
1f906fa7a1
@ -6,64 +6,34 @@
|
|||||||
# resulting environment at the end so that we have a record of exactly
|
# resulting environment at the end so that we have a record of exactly
|
||||||
# what packages we ended up testing.
|
# 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
|
# Where VENV is the name of the tox environment to run (specified in the
|
||||||
# in the tox.ini file. E.g., "26" or "27" for "py26"/"jenkins26" or
|
# project's tox.ini file).
|
||||||
# "py27"/"jenkins27" respectively.
|
|
||||||
|
|
||||||
version=$1
|
venv=$1
|
||||||
org=$2
|
org=$2
|
||||||
project=$3
|
project=$3
|
||||||
|
|
||||||
if [[ -z "$version" || -z "$org" || -z "$project" ]]
|
if [[ -z "$venv" || -z "$org" || -z "$project" ]]
|
||||||
then
|
then
|
||||||
echo "Usage: $? VERSION ORG PROJECT"
|
echo "Usage: $? VENV ORG PROJECT"
|
||||||
echo
|
echo
|
||||||
echo "VERSION: The tox environment python version (eg '27')"
|
echo "VENV: The tox environment to run (eg 'python27')"
|
||||||
echo "ORG: The project organization (eg 'openstack')"
|
echo "ORG: The project organization (eg 'stackforge')"
|
||||||
echo "PROJECT: The project name (eg 'nova')"
|
echo "PROJECT: The project name (eg 'nova')"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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
|
/usr/local/jenkins/slave_scripts/jenkins-oom-grep.sh pre
|
||||||
|
|
||||||
sudo /usr/local/jenkins/slave_scripts/jenkins-sudo-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
|
source /usr/local/jenkins/slave_scripts/select-mirror.sh $org $project
|
||||||
|
|
||||||
# Workaround the combo of tox running setup.py outside of virtualenv
|
tox -v -e$venv
|
||||||
# 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
|
|
||||||
result=$?
|
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
|
sudo /usr/local/jenkins/slave_scripts/jenkins-sudo-grep.sh post
|
||||||
sudoresult=$?
|
sudoresult=$?
|
||||||
|
|
||||||
@ -89,23 +59,4 @@ then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
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
|
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:
|
builders:
|
||||||
- gerrit-git-prep
|
- 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
|
- assert-no-extra-files
|
||||||
|
|
||||||
publishers:
|
publishers:
|
||||||
|
@ -129,22 +129,22 @@
|
|||||||
- builder:
|
- builder:
|
||||||
name: python26
|
name: python26
|
||||||
builders:
|
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:
|
- builder:
|
||||||
name: python27
|
name: python27
|
||||||
builders:
|
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:
|
- builder:
|
||||||
name: python33
|
name: python33
|
||||||
builders:
|
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:
|
- builder:
|
||||||
name: pypy
|
name: pypy
|
||||||
builders:
|
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:
|
- builder:
|
||||||
name: assert-no-extra-files
|
name: assert-no-extra-files
|
||||||
|
@ -32,11 +32,11 @@
|
|||||||
node: '{node}'
|
node: '{node}'
|
||||||
|
|
||||||
- job-template:
|
- job-template:
|
||||||
name: 'gate-{name}-tox-{env}'
|
name: 'gate-{name}-unittests-{env}'
|
||||||
|
|
||||||
builders:
|
builders:
|
||||||
- gerrit-git-prep
|
- 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
|
- assert-no-extra-files
|
||||||
|
|
||||||
publishers:
|
publishers:
|
||||||
|
@ -118,7 +118,7 @@
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
- python-jobs
|
- python-jobs
|
||||||
- gate-{name}-tox-{env}
|
- gate-{name}-unittests-{env}
|
||||||
- hook-{name}-rtfd
|
- hook-{name}-rtfd
|
||||||
- pypi-jobs
|
- pypi-jobs
|
||||||
|
|
||||||
|
@ -2508,8 +2508,8 @@ projects:
|
|||||||
- gate-sqlalchemy-migrate-python26
|
- gate-sqlalchemy-migrate-python26
|
||||||
- gate-sqlalchemy-migrate-python27
|
- gate-sqlalchemy-migrate-python27
|
||||||
experimental:
|
experimental:
|
||||||
- gate-sqlalchemy-migrate-tox-26sa07
|
- gate-sqlalchemy-migrate-unittests-26sa07
|
||||||
- gate-sqlalchemy-migrate-tox-27sa07
|
- gate-sqlalchemy-migrate-unittests-27sa07
|
||||||
post:
|
post:
|
||||||
- sqlalchemy-migrate-branch-tarball
|
- sqlalchemy-migrate-branch-tarball
|
||||||
- hook-sqlalchemy-migrate-rtfd
|
- hook-sqlalchemy-migrate-rtfd
|
||||||
|
Loading…
x
Reference in New Issue
Block a user