From 037a321506ec43c69c771b353b29fe286e7c2ef6 Mon Sep 17 00:00:00 2001 From: Ilya Shakhat Date: Mon, 26 Nov 2018 19:22:19 +0400 Subject: [PATCH] Modify integration tests job to run on DevStack Change-Id: I5ae22b3a02bd67534c8acb73c968b36f20008b31 --- .zuul.yaml | 30 +++++++------------ .../{integration => devstack}/__init__.py | 0 .../os-faults-universal.yaml} | 5 ++++ .../devstack/playbooks/run_on_devstack.yml | 30 +++++++++++++++++++ .../test_os_inject_fault.py} | 18 +++++------ tox.ini | 21 ++++--------- 6 files changed, 59 insertions(+), 45 deletions(-) rename os_faults/tests/{integration => devstack}/__init__.py (100%) rename os_faults/tests/{integration/os-faults.yaml => devstack/os-faults-universal.yaml} (68%) create mode 100644 os_faults/tests/devstack/playbooks/run_on_devstack.yml rename os_faults/tests/{integration/test_cmd_utils.py => devstack/test_os_inject_fault.py} (69%) diff --git a/.zuul.yaml b/.zuul.yaml index 285d4d8..b33e60f 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -7,29 +7,19 @@ rtd_webhook_id: '47124' check: jobs: - - os-faults-integration-py27 - - os-faults-integration-py35 + - os-faults-devstack gate: jobs: - - os-faults-integration-py27 - - os-faults-integration-py35 + - os-faults-devstack - job: - name: os-faults-integration-py27 - parent: openstack-tox + name: os-faults-devstack + parent: devstack-minimal description: | - Run integration tests under Python 2.7 - - To run tests manually use ``tox -e integration-py27`` command. + Run os-faults integration tests on DevStack under Python 3 + timeout: 2400 + run: os_faults/tests/devstack/playbooks/run_on_devstack.yml + required-projects: + - openstack/os-faults 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 + tox_envlist: devstack diff --git a/os_faults/tests/integration/__init__.py b/os_faults/tests/devstack/__init__.py similarity index 100% rename from os_faults/tests/integration/__init__.py rename to os_faults/tests/devstack/__init__.py diff --git a/os_faults/tests/integration/os-faults.yaml b/os_faults/tests/devstack/os-faults-universal.yaml similarity index 68% rename from os_faults/tests/integration/os-faults.yaml rename to os_faults/tests/devstack/os-faults-universal.yaml index 9e55827..97b1209 100644 --- a/os_faults/tests/integration/os-faults.yaml +++ b/os_faults/tests/devstack/os-faults-universal.yaml @@ -10,3 +10,8 @@ services: grep: memcached service_name: memcached driver: system_service + etcd: + args: + grep: etcd + service_name: devstack@etcd + driver: system_service diff --git a/os_faults/tests/devstack/playbooks/run_on_devstack.yml b/os_faults/tests/devstack/playbooks/run_on_devstack.yml new file mode 100644 index 0000000..295b05b --- /dev/null +++ b/os_faults/tests/devstack/playbooks/run_on_devstack.yml @@ -0,0 +1,30 @@ +--- + +- hosts: all + roles: + - orchestrate-devstack + + +- hosts: all + tasks: + - name: Run integration tests + command: "tox -e {{tox_envlist}}" + args: + chdir: "/opt/stack/os-faults" + + +- hosts: all + vars: + - test_results_path: "/opt/stack/os-faults/.tox/{{tox_envlist}}/log/pytest_results.html" + tasks: + - name: Copy job results + become: yes + synchronize: + src: "{{ test_results_path }}" + dest: "{{ zuul.executor.log_root }}" + mode: pull + copy_links: true + verify_host: true + rsync_opts: + - "--include=/**" + - "--include=*/" diff --git a/os_faults/tests/integration/test_cmd_utils.py b/os_faults/tests/devstack/test_os_inject_fault.py similarity index 69% rename from os_faults/tests/integration/test_cmd_utils.py rename to os_faults/tests/devstack/test_os_inject_fault.py index 89d83dd..7ca5611 100644 --- a/os_faults/tests/integration/test_cmd_utils.py +++ b/os_faults/tests/devstack/test_os_inject_fault.py @@ -20,14 +20,15 @@ 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): +class TestOSInjectFaultUniversalDriver(test.TestCase): + CONFIG_FILE = os.path.join(os.path.dirname(__file__), + 'os-faults-universal.yaml') def test_connect(self): - cmd = 'os-inject-fault -c %s -v' % CONFIG_FILE + cmd = 'os-inject-fault -c %s -v' % self.CONFIG_FILE command_stdout, command_stderr = processutils.execute( *shlex.split(cmd)) @@ -35,14 +36,13 @@ class TestOSInjectFault(test.TestCase): 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 + def test_restart_etcd(self): + cmd = 'os-inject-fault -c %s restart etcd service' % self.CONFIG_FILE command_stdout, command_stderr = processutils.execute( *shlex.split(cmd)) - success = re.search('Connected to cloud successfully', command_stderr) + print('stdout', command_stdout) + print('stderr', command_stderr) + success = re.search('successfully', command_stderr) self.assertTrue(success) diff --git a/tox.ini b/tox.ini index b0bbb72..6a826c6 100644 --- a/tox.ini +++ b/tox.ini @@ -57,25 +57,14 @@ basepython = python3 install_command = {[testenv:common-constraints]install_command} commands = {[testenv:cover]commands} -[testenv:integration] +[testenv:devstack] +basepython = python3 setenv = {[testenv]setenv} - OS_TEST_PATH=./os_faults/tests/integration + OS_TEST_PATH=./os_faults/tests/devstack deps = {[testenv]deps} - oslo.concurrency +extras = 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} + py.test -vvvv --html={envlogdir}/pytest_results.html --self-contained-html --durations=10 "os_faults/tests/devstack" {posargs} [testenv:docs] basepython = python3