From b838299a5382ec3dc3643b86b43183657e944fbe Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Wed, 28 Sep 2016 10:27:39 +0100 Subject: [PATCH] Use centralised test scripts This patch consumes the test scripts implemented by https://review.openstack.org/375061 to ensure that the tests and test preparation is consistent and more maintainable. Change-Id: I379a67a3178bd10b1a5b0ae0b53289e1355e3ba1 --- manual-test.rc | 2 +- tests/test-nova-functional.yml | 2 +- tests/test.yml | 18 +++---- tox.ini | 88 +++++++--------------------------- 4 files changed, 29 insertions(+), 81 deletions(-) diff --git a/manual-test.rc b/manual-test.rc index f7e77710..7016c453 100644 --- a/manual-test.rc +++ b/manual-test.rc @@ -30,4 +30,4 @@ export ANSIBLE_SSH_ARGS="-o ControlMaster=no \ -o ForwardAgent=yes" echo "Run manual functional tests by executing the following:" -echo "# ./.tox/functional/bin/ansible-playbook -i tests/inventory tests/test.yml -e \"rolename=$(pwd)\"" +echo "# ./.tox/functional/bin/ansible-playbook -i tests/inventory tests/test.yml" diff --git a/tests/test-nova-functional.yml b/tests/test-nova-functional.yml index 01bbf0cd..16aedd8a 100644 --- a/tests/test-nova-functional.yml +++ b/tests/test-nova-functional.yml @@ -27,4 +27,4 @@ retries: 3 delay: 5 vars_files: - - playbooks/test-vars.yml + - common/test-vars.yml diff --git a/tests/test.yml b/tests/test.yml index f7aaf32b..a3f6e4e5 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -14,31 +14,31 @@ # limitations under the License. # Prepare the user ssh keys -- include: playbooks/test-prepare-keys.yml +- include: common/test-prepare-keys.yml # Prepare the host -- include: playbooks/test-prepare-host.yml +- include: common/test-prepare-host.yml # Prepare the containers -- include: playbooks/test-prepare-containers.yml +- include: common/test-prepare-containers.yml # Install RabbitMQ/MariaDB -- include: playbooks/test-install-infra.yml +- include: common/test-install-infra.yml # Install Keystone -- include: playbooks/test-install-keystone.yml +- include: common/test-install-keystone.yml # Install Glance -- include: playbooks/test-install-glance.yml +- include: common/test-install-glance.yml # Install Neutron -- include: playbooks/test-install-neutron.yml +- include: common/test-install-neutron.yml # Install Nova -- include: playbooks/test-install-nova.yml +- include: common/test-install-nova.yml # Install Tempest -- include: playbooks/test-install-tempest.yml +- include: common/test-install-tempest.yml # Test Nova - include: test-nova-functional.yml diff --git a/tox.ini b/tox.ini index f0033acd..307b325a 100644 --- a/tox.ini +++ b/tox.ini @@ -22,11 +22,11 @@ passenv = NO_PROXY whitelist_externals = bash - git - rm setenv = - VIRTUAL_ENV={envdir} PYTHONUNBUFFERED=1 + ROLE_NAME=os_nova + VIRTUAL_ENV={envdir} + WORKING_DIR={toxinidir} [testenv:docs] @@ -46,17 +46,17 @@ commands = {posargs} +[testenv:tests_clone] +commands = + bash -c "if [ ! -d "{toxinidir}/tests/common" ]; then \ + git clone https://git.openstack.org/openstack/openstack-ansible-tests {toxinidir}/tests/common; \ + fi" + + [testenv:pep8] commands = - # Run hacking/flake8 check for all python files - bash -c "grep --recursive --binary-files=without-match \ - --files-with-match '^.!.*python$' \ - --exclude-dir .eggs \ - --exclude-dir .git \ - --exclude-dir .tox \ - --exclude-dir *.egg-info \ - --exclude-dir doc \ - {toxinidir} | xargs flake8 --verbose" + {[testenv:tests_clone]commands} + bash -c "{toxinidir}/tests/common/test-pep8.sh" [flake8] @@ -69,68 +69,27 @@ ignore=F403,H303 [testenv:bashate] commands = - # Run bashate check for all bash scripts - # Ignores the following rules: - # E003: Indent not multiple of 4 (we prefer to use multiples of 2) - # E006: Line longer than 79 columns (as many scripts use jinja - # templating, this is very difficult) - # E040: Syntax error determined using `bash -n` (as many scripts - # use jinja templating, this will often fail and the syntax - # error will be discovered in execution anyway) - bash -c "grep --recursive --binary-files=without-match \ - --files-with-match '^.!.*\(ba\)\?sh$' \ - --exclude-dir .tox \ - --exclude-dir .git \ - {toxinidir} | xargs bashate --error . --verbose --ignore=E003,E006,E040" + {[testenv:tests_clone]commands} + bash -c "{toxinidir}/tests/common/test-bashate.sh" [testenv:ansible] deps = {[testenv]deps} - ansible==2.1.1 - ansible-lint>=2.7.0,<3.0.0 -setenv = - {[testenv]setenv} - ANSIBLE_HOST_KEY_CHECKING = False - ANSIBLE_SSH_CONTROL_PATH = /tmp/%%h-%%r - # TODO (odyssey4me) These are only here as they are non-standard folder - # names for Ansible 1.9.x. We are using the standard folder names for - # Ansible v2.x. We can remove this when we move to Ansible 2.x. - ANSIBLE_ACTION_PLUGINS = {homedir}/.ansible/plugins/action - ANSIBLE_CALLBACK_PLUGINS = {homedir}/.ansible/plugins/callback - ANSIBLE_FILTER_PLUGINS = {homedir}/.ansible/plugins/filter - ANSIBLE_LOOKUP_PLUGINS = {homedir}/.ansible/plugins/lookup - # This is required as the default is the current path or a path specified - # in ansible.cfg - ANSIBLE_LIBRARY = {homedir}/.ansible/plugins/library - # This is required as the default is '/etc/ansible/roles' or a path - # specified in ansible.cfg - ANSIBLE_ROLES_PATH = {homedir}/.ansible/roles:{toxinidir}/.. - ANSIBLE_TRANSPORT = "ssh" + -rhttp://git.openstack.org/cgit/openstack/openstack-ansible-tests/plain/test-ansible-deps.txt commands = - rm -rf {homedir}/.ansible/plugins - git clone https://git.openstack.org/openstack/openstack-ansible-plugins \ - {homedir}/.ansible/plugins - rm -rf {homedir}/.ansible/roles - ansible-galaxy install \ - --role-file={toxinidir}/tests/ansible-role-requirements.yml \ - --force - rm -rf {toxinidir}/tests/playbooks - git clone https://git.openstack.org/openstack/openstack-ansible-tests \ - {toxinidir}/tests/playbooks + {[testenv:tests_clone]commands} + bash -c "{toxinidir}/tests/common/test-ansible-env-prep.sh" [testenv:ansible-syntax] deps = {[testenv:ansible]deps} -setenv = - {[testenv:ansible]setenv} commands = {[testenv:ansible]commands} ansible-playbook -i {toxinidir}/tests/inventory \ --syntax-check \ --list-tasks \ - -e "nova_rolename={toxinidir}" \ {toxinidir}/tests/test.yml @@ -152,10 +111,7 @@ install_command = [testenv:func_logs] commands = - bash -c 'mkdir -p {toxinidir}/logs' - bash -c 'rsync --archive --verbose --ignore-errors /var/log/ /openstack/log/ {toxinidir}/logs/ || true' - bash -c 'find "{toxinidir}/logs/" -type f | sed "p;s|$|.txt|" | xargs -n2 mv' - bash -c 'command gzip --best --recursive "{toxinidir}/logs/"' + bash -c "{toxinidir}/tests/common/test-log-collect.sh" [testenv:functional] @@ -171,13 +127,10 @@ install_command = {[testenv:func_base]install_command} deps = {[testenv:ansible]deps} -setenv = - {[testenv:ansible]setenv} commands = {[testenv:ansible]commands} ansible-playbook -i {toxinidir}/tests/inventory \ -e @{toxinidir}/tests/nova-overrides.yml \ - -e "nova_rolename={toxinidir}" \ -e "install_test_packages=True" \ {toxinidir}/tests/test.yml -vvvv {[testenv:func_logs]commands} @@ -194,14 +147,11 @@ install_command = {[testenv:func_base]install_command} deps = {[testenv:ansible]deps} -setenv = - {[testenv:ansible]setenv} commands = {[testenv:ansible]commands} ansible-playbook -i {toxinidir}/tests/inventory \ -e @{toxinidir}/tests/nova-overrides.yml \ -e @{toxinidir}/tests/nova-overrides-lxd.yml \ - -e "nova_rolename={toxinidir}" \ -e "install_test_packages=True" \ {toxinidir}/tests/test.yml -vvvv {[testenv:func_logs]commands} @@ -210,8 +160,6 @@ commands = [testenv:linters] deps = {[testenv:ansible]deps} -setenv = - {[testenv:ansible]setenv} commands = {[testenv:pep8]commands} {[testenv:bashate]commands}