From 953407768961f06a17b49fb3c3a5237c183ee10d Mon Sep 17 00:00:00 2001 From: Ilya Shakhat Date: Thu, 2 Nov 2017 14:11:21 +0100 Subject: [PATCH] Add integration job for Zuul Change-Id: I0f4d71322eef32dd9ff14ea14f3287d6c2559a09 --- .zuul.yaml | 30 ++++++++++++ os_faults/tests/integration/__init__.py | 0 os_faults/tests/integration/os-faults.yaml | 12 +++++ os_faults/tests/integration/test_cmd_utils.py | 48 +++++++++++++++++++ tox.ini | 20 ++++++++ 5 files changed, 110 insertions(+) create mode 100644 .zuul.yaml create mode 100644 os_faults/tests/integration/__init__.py create mode 100644 os_faults/tests/integration/os-faults.yaml create mode 100644 os_faults/tests/integration/test_cmd_utils.py diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 0000000..b79a566 --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,30 @@ +- project: + name: openstack/os-faults + check: + jobs: + - os-faults-integration-py27 + - os-faults-integration-py35 + gate: + jobs: + - os-faults-integration-py27 + - os-faults-integration-py35 + +- job: + name: os-faults-integration-py27 + parent: openstack-tox + description: | + Run integration tests under Python 2.7 + + To run tests manually use ``tox -e integration-py27`` command. + vars: + tox_envlist: integration-py27 + +- job: + name: os-faults-integration-py35 + parent: openstack-tox + description: | + Run integration tests under Python 3.5 + + To run tests manually use ``tox -e integration-py35`` command. + vars: + tox_envlist: integration-py35 diff --git a/os_faults/tests/integration/__init__.py b/os_faults/tests/integration/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/os_faults/tests/integration/os-faults.yaml b/os_faults/tests/integration/os-faults.yaml new file mode 100644 index 0000000..9e55827 --- /dev/null +++ b/os_faults/tests/integration/os-faults.yaml @@ -0,0 +1,12 @@ +cloud_management: + driver: universal +node_discover: + driver: node_list + args: + - ip: localhost +services: + memcached: + args: + grep: memcached + service_name: memcached + driver: system_service diff --git a/os_faults/tests/integration/test_cmd_utils.py b/os_faults/tests/integration/test_cmd_utils.py new file mode 100644 index 0000000..89d83dd --- /dev/null +++ b/os_faults/tests/integration/test_cmd_utils.py @@ -0,0 +1,48 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import logging +import os +import re +import shlex + +from oslo_concurrency import processutils + +from os_faults.tests.unit import test + + +CONFIG_FILE = os.path.join(os.path.dirname(__file__), 'os-faults.yaml') +LOG = logging.getLogger(__name__) + + +class TestOSInjectFault(test.TestCase): + + def test_connect(self): + cmd = 'os-inject-fault -c %s -v' % CONFIG_FILE + + command_stdout, command_stderr = processutils.execute( + *shlex.split(cmd)) + + success = re.search('Connected to cloud successfully', command_stderr) + self.assertTrue(success) + + +class TestOSFaults(test.TestCase): + + def test_connect(self): + cmd = 'os-faults verify -c %s' % CONFIG_FILE + + command_stdout, command_stderr = processutils.execute( + *shlex.split(cmd)) + + success = re.search('Connected to cloud successfully', command_stderr) + self.assertTrue(success) diff --git a/tox.ini b/tox.ini index 9e1f0c6..bc827d5 100644 --- a/tox.ini +++ b/tox.ini @@ -50,6 +50,26 @@ commands = install_command = {[testenv:common-constraints]install_command} commands = {[testenv:cover]commands} +[testenv:integration] +setenv = {[testenv]setenv} + OS_TEST_PATH=./os_faults/tests/integration +deps = {[testenv]deps} + oslo.concurrency +commands = + py.test -vvvv --html={envlogdir}/pytest_results.html --self-contained-html --durations=10 "os_faults/tests/integration" {posargs} + +[testenv:integration-py27] +basepython = python2.7 +setenv = {[testenv:integration]setenv} +deps = {[testenv:integration]deps} +commands = {[testenv:integration]commands} + +[testenv:integration-py35] +basepython = python3.5 +setenv = {[testenv:integration]setenv} +deps = {[testenv:integration]deps} +commands = {[testenv:integration]commands} + [testenv:docs] commands = rm -rf doc/build