From fce50f3beb19dfa747ca12d11c8a0f70f7ea16a8 Mon Sep 17 00:00:00 2001 From: armando-migliaccio Date: Thu, 17 Dec 2015 12:25:32 -0800 Subject: [PATCH] Run functional gate jobs in a constrained environment This patch modifies the gate hooks to run jobs with upper constraints. Change-Id: I9eb1eb8e61381e9bb45678af8a24fa88a99e2c8f --- neutron/tests/contrib/post_test_hook.sh | 7 +++++- tools/configure_for_func_testing.sh | 5 +++++ tox.ini | 29 +++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/neutron/tests/contrib/post_test_hook.sh b/neutron/tests/contrib/post_test_hook.sh index 867002d1e6c..96bdc4d6048 100644 --- a/neutron/tests/contrib/post_test_hook.sh +++ b/neutron/tests/contrib/post_test_hook.sh @@ -35,7 +35,7 @@ function generate_testr_results { if [[ "$venv" == dsvm-functional* ]] || [[ "$venv" == dsvm-fullstack* ]] then - generate_test_logs "/tmp/${venv}-logs" + generate_test_logs $log_dir fi } @@ -43,6 +43,7 @@ if [[ "$venv" == dsvm-functional* ]] || [[ "$venv" == dsvm-fullstack* ]] then owner=stack sudo_env= + log_dir="/tmp/${venv}-logs" elif [ "$venv" == "api" ] then owner=tempest @@ -54,6 +55,10 @@ fi cd $NEUTRON_DIR sudo chown -R $owner:stack $NEUTRON_DIR +# NOTE(armax): this is a gate hook and we should run in a constrained env +# to avoid breakage from uncontrolled upper constraints +venv=$venv-constraints + # Run tests echo "Running neutron $venv test suite" set +e diff --git a/tools/configure_for_func_testing.sh b/tools/configure_for_func_testing.sh index 54938a09c37..684e4902610 100755 --- a/tools/configure_for_func_testing.sh +++ b/tools/configure_for_func_testing.sh @@ -50,6 +50,11 @@ done # Default to environment variables to permit the gate_hook to override # when sourcing. VENV=${VENV:-dsvm-functional} +# If executed in the gate, run in a constrained env +if [[ "$IS_GATE" == "True" ]] +then + VENV=$VENV-constraints +fi DEVSTACK_PATH=${DEVSTACK_PATH:-$1} PROJECT_NAME=${PROJECT_NAME:-neutron} REPO_BASE=${GATE_DEST:-$(cd $(dirname "$0")/../.. && pwd)} diff --git a/tox.ini b/tox.ini index 1b2a3c61e4f..9710cb9a521 100644 --- a/tox.ini +++ b/tox.ini @@ -28,6 +28,12 @@ setenv = {[testenv]setenv} # If you are running the tests locally you should set the env variable # TEMPEST_CONFIG_DIR=/opt/stack/tempest/etc +[testenv:api-constraints] +basepython = {[testenv:api]basepython} +install_command = {[testenv:common-constraints]install_command} +passenv = {[testenv:api]passenv} +setenv = {[testenv:api]setenv} + [testenv:common] # Fake job to define environment variables shared between dsvm/non-dsvm jobs setenv = OS_TEST_TIMEOUT=180 @@ -53,6 +59,13 @@ deps = {[testenv]deps} -r{toxinidir}/neutron/tests/functional/requirements.txt +[testenv:functional-constraints] +basepython = {[testenv:functional]basepython} +install_command = {[testenv:common-constraints]install_command} +setenv = {[testenv:functional]setenv} +deps = + {[testenv:functional]deps} + [testenv:functional-py34] basepython = python3.4 setenv = {[testenv:functional]setenv} @@ -67,6 +80,14 @@ sitepackages=True deps = {[testenv:functional]deps} +[testenv:dsvm-functional-constraints] +basepython = {[testenv:dsvm-functional]basepython} +install_command = {[testenv:common-constraints]install_command} +setenv = {[testenv:dsvm-functional]setenv} +sitepackages={[testenv:dsvm-functional]sitepackages} +deps = + {[testenv:functional-constraints]deps} + [testenv:dsvm-functional-py34] basepython = python3.4 setenv = {[testenv:dsvm-functional]setenv} @@ -83,6 +104,14 @@ sitepackages=True deps = {[testenv:functional]deps} +[testenv:dsvm-fullstack-constraints] +install_command = {[testenv:common-constraints]install_command} +setenv = + {[testenv:dsvm-fullstack]setenv} +sitepackages={[testenv:dsvm-fullstack]sitepackages} +deps = + {[testenv:functional-constraints]deps} + [testenv:releasenotes] commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html