[ci] Start fixing CLI job
Patch I7fc109ee5785f426211fbff7eb9b4553a3671ba7 splitted functional and samples check into 2 separate modules. It was done due to some conflicts while launching tests in parallel. Despite the fact it was a good patch, it had a bug - missed `set -e` called in the launch script. Which results in ignoring results of launching functional tests for more then 2 months. Now we have 1/4 tests fail. This patch starts refactoring CLI job. First of all, we need to stop ignoring the results of functional tests. The broken tests are marked as skipped, so we can enable a part of tests right away. Also, this patch moves test_certification_task.py to the proper dir with samples check. The new tox environment is introduced for launching only functional tests(which should not depend on OpenStack): tox -efunctional Change-Id: I222c13f724e8e70d10d58ca546094c076d73d737
This commit is contained in:
parent
1624aca2bc
commit
0913743b43
1
.gitignore
vendored
1
.gitignore
vendored
@ -33,6 +33,7 @@ cover-master
|
|||||||
.venv
|
.venv
|
||||||
.cache
|
.cache
|
||||||
.test_results/
|
.test_results/
|
||||||
|
rally-cli-output-files/
|
||||||
|
|
||||||
# Docs
|
# Docs
|
||||||
doc/source/_build/
|
doc/source/_build/
|
||||||
|
41
tests/check_samples/test_certification_task.py
Normal file
41
tests/check_samples/test_certification_task.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Copyright 2014: Mirantis Inc.
|
||||||
|
# Copyright 2014: Catalyst IT Ltd.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# 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 os
|
||||||
|
import traceback
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import rally as rally_m
|
||||||
|
from tests.functional import utils
|
||||||
|
|
||||||
|
|
||||||
|
class TestPreCreatedTasks(unittest.TestCase):
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
|
def test_task_samples_is_valid(self):
|
||||||
|
rally = utils.Rally()
|
||||||
|
full_path = os.path.join(
|
||||||
|
os.path.dirname(rally_m.__file__), os.pardir, "tasks", "openstack")
|
||||||
|
task_path = os.path.join(full_path, "task.yaml")
|
||||||
|
args_path = os.path.join(full_path, "task_arguments.yaml")
|
||||||
|
|
||||||
|
try:
|
||||||
|
rally("task validate --task %s --task-args-file %s" % (task_path,
|
||||||
|
args_path))
|
||||||
|
except Exception:
|
||||||
|
print(traceback.format_exc())
|
||||||
|
self.fail("Wrong task config %s" % full_path)
|
19
tests/ci/rally_functional_job.sh
Executable file
19
tests/ci/rally_functional_job.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
LOCAL_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
DB_CONNECTION="$(rally db show)"
|
||||||
|
|
||||||
|
if [[ $DB_CONNECTION == sqlite* ]]; then
|
||||||
|
CONCURRENCY=0
|
||||||
|
else
|
||||||
|
# in case of not sqlite db backends we cannot launch tests in parallel due
|
||||||
|
# to possible conflicts
|
||||||
|
CONCURRENCY=1
|
||||||
|
# currently, RCI_KEEP_DB variable is used to not create new databases per
|
||||||
|
# each test
|
||||||
|
export RCI_KEEP_DB=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
python $LOCAL_DIR/pytest_launcher.py "tests/functional" --concurrency $CONCURRENCY --posargs=$1
|
@ -43,11 +43,15 @@ class DeploymentTestCase(unittest.TestCase):
|
|||||||
"--filename /tmp/.tmp.deployment")
|
"--filename /tmp/.tmp.deployment")
|
||||||
self.assertIn("t_create_file", rally("deployment list"))
|
self.assertIn("t_create_file", rally("deployment list"))
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_create_empty(self):
|
def test_create_empty(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
rally("deployment create --name t_empty")
|
rally("deployment create --name t_empty")
|
||||||
self.assertEqual("{}", rally("deployment config"))
|
self.assertEqual("{}", rally("deployment config"))
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_config(self):
|
def test_config(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
rally.env.update(utils.TEST_ENV)
|
rally.env.update(utils.TEST_ENV)
|
||||||
@ -89,6 +93,8 @@ class DeploymentTestCase(unittest.TestCase):
|
|||||||
rally("deployment create --name t_create_env --fromenv")
|
rally("deployment create --name t_create_env --fromenv")
|
||||||
self.assertRaises(utils.RallyCliError, rally, "deployment check")
|
self.assertRaises(utils.RallyCliError, rally, "deployment check")
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_check_debug(self):
|
def test_check_debug(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
rally.env.update(utils.TEST_ENV)
|
rally.env.update(utils.TEST_ENV)
|
||||||
@ -130,6 +136,8 @@ class DeploymentTestCase(unittest.TestCase):
|
|||||||
rally("deployment recreate --deployment t_create_env")
|
rally("deployment recreate --deployment t_create_env")
|
||||||
self.assertIn("t_create_env", rally("deployment list"))
|
self.assertIn("t_create_env", rally("deployment list"))
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_recreate_from_file(self):
|
def test_recreate_from_file(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
rally.env.update(utils.TEST_ENV)
|
rally.env.update(utils.TEST_ENV)
|
||||||
|
@ -106,6 +106,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
rally("task start --task %s" % config.filename)
|
rally("task start --task %s" % config.filename)
|
||||||
self.assertIn("finished", rally("task status"))
|
self.assertIn("finished", rally("task status"))
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_detailed(self):
|
def test_detailed(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config()
|
cfg = self._get_sample_task_config()
|
||||||
@ -260,6 +262,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
self.assertRaises(utils.RallyCliError,
|
self.assertRaises(utils.RallyCliError,
|
||||||
rally, "task report --report %s" % FAKE_TASK_UUID)
|
rally, "task report --report %s" % FAKE_TASK_UUID)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_report_bunch_uuids(self):
|
def test_report_bunch_uuids(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config()
|
cfg = self._get_sample_task_config()
|
||||||
@ -276,6 +280,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
self.assertTrue(os.path.exists(html_report))
|
self.assertTrue(os.path.exists(html_report))
|
||||||
self._assert_html_report_libs_are_embedded(html_report, False)
|
self._assert_html_report_libs_are_embedded(html_report, False)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_new_report_bunch_uuids(self):
|
def test_new_report_bunch_uuids(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config()
|
cfg = self._get_sample_task_config()
|
||||||
@ -310,6 +316,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
self.assertTrue(os.path.exists(html_report))
|
self.assertTrue(os.path.exists(html_report))
|
||||||
self._assert_html_report_libs_are_embedded(html_report, False)
|
self._assert_html_report_libs_are_embedded(html_report, False)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_report_one_uuid_one_file(self):
|
def test_report_one_uuid_one_file(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config()
|
cfg = self._get_sample_task_config()
|
||||||
@ -376,6 +384,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
self.assertTrue(os.path.exists(html_report))
|
self.assertTrue(os.path.exists(html_report))
|
||||||
self._assert_html_report_libs_are_embedded(html_report)
|
self._assert_html_report_libs_are_embedded(html_report)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_trends(self):
|
def test_trends(self):
|
||||||
cfg1 = {
|
cfg1 = {
|
||||||
"Dummy.dummy": [
|
"Dummy.dummy": [
|
||||||
@ -525,6 +535,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
"--status finished")
|
"--status finished")
|
||||||
self.assertEqual(res, res2)
|
self.assertEqual(res, res2)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_validate_is_valid(self):
|
def test_validate_is_valid(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config()
|
cfg = self._get_sample_task_config()
|
||||||
@ -557,6 +569,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
r"(?P<task_id>[0-9a-f\-]{36}): started", output)
|
r"(?P<task_id>[0-9a-f\-]{36}): started", output)
|
||||||
self.assertIsNotNone(result)
|
self.assertIsNotNone(result)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_validate_with_plugin_paths(self):
|
def test_validate_with_plugin_paths(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
plugin_paths = ("tests/functional/extra/fake_dir1/,"
|
plugin_paths = ("tests/functional/extra/fake_dir1/,"
|
||||||
@ -959,6 +973,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
current_task = utils.get_global("RALLY_TASK", rally.env)
|
current_task = utils.get_global("RALLY_TASK", rally.env)
|
||||||
self.assertEqual(uuid, current_task)
|
self.assertEqual(uuid, current_task)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_start_v2(self):
|
def test_start_v2(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
deployment_id = utils.get_global("RALLY_DEPLOYMENT", rally.env)
|
deployment_id = utils.get_global("RALLY_DEPLOYMENT", rally.env)
|
||||||
@ -990,6 +1006,8 @@ class TaskTestCase(unittest.TestCase):
|
|||||||
rally("task export --type junit-xml --to %s" % junit_report)
|
rally("task export --type junit-xml --to %s" % junit_report)
|
||||||
self.assertTrue(os.path.exists(junit_report))
|
self.assertTrue(os.path.exists(junit_report))
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_export_bunch_uuids(self):
|
def test_export_bunch_uuids(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config()
|
cfg = self._get_sample_task_config()
|
||||||
@ -1029,6 +1047,8 @@ class SLATestCase(unittest.TestCase):
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_sla_fail(self):
|
def test_sla_fail(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config(max_seconds_per_iteration=0.001)
|
cfg = self._get_sample_task_config(max_seconds_per_iteration=0.001)
|
||||||
@ -1036,6 +1056,8 @@ class SLATestCase(unittest.TestCase):
|
|||||||
rally("task start --task %s" % config.filename)
|
rally("task start --task %s" % config.filename)
|
||||||
self.assertRaises(utils.RallyCliError, rally, "task sla-check")
|
self.assertRaises(utils.RallyCliError, rally, "task sla-check")
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_sla_success(self):
|
def test_sla_success(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
config = utils.TaskConfig(self._get_sample_task_config())
|
config = utils.TaskConfig(self._get_sample_task_config())
|
||||||
@ -1121,11 +1143,15 @@ class SLAExtraFlagsTestCase(unittest.TestCase):
|
|||||||
self.fail("`rally task sla-check` command should return non-zero "
|
self.fail("`rally task sla-check` command should return non-zero "
|
||||||
"exit code")
|
"exit code")
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_broken_context_with_constant_runner(self):
|
def test_broken_context_with_constant_runner(self):
|
||||||
self._test_broken_context({"type": "constant",
|
self._test_broken_context({"type": "constant",
|
||||||
"times": 5,
|
"times": 5,
|
||||||
"concurrency": 5})
|
"concurrency": 5})
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_broken_context_with_rps_runner(self):
|
def test_broken_context_with_rps_runner(self):
|
||||||
self._test_broken_context({"type": "rps",
|
self._test_broken_context({"type": "rps",
|
||||||
"times": 5,
|
"times": 5,
|
||||||
@ -1250,6 +1276,8 @@ class HookTestCase(unittest.TestCase):
|
|||||||
result["summary"][status] = len(events)
|
result["summary"][status] = len(events)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_hook_result_with_constant_runner(self):
|
def test_hook_result_with_constant_runner(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config(
|
cfg = self._get_sample_task_config(
|
||||||
@ -1265,6 +1293,8 @@ class HookTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(expected, hook_results)
|
self.assertEqual(expected, hook_results)
|
||||||
self._assert_results_time(hook_results)
|
self._assert_results_time(hook_results)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_hook_result_with_constant_for_duration_runner(self):
|
def test_hook_result_with_constant_for_duration_runner(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config(
|
cfg = self._get_sample_task_config(
|
||||||
@ -1281,6 +1311,8 @@ class HookTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(expected, hook_results)
|
self.assertEqual(expected, hook_results)
|
||||||
self._assert_results_time(hook_results)
|
self._assert_results_time(hook_results)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_hook_result_with_rps_runner(self):
|
def test_hook_result_with_rps_runner(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config(
|
cfg = self._get_sample_task_config(
|
||||||
@ -1296,6 +1328,8 @@ class HookTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(expected, hook_results)
|
self.assertEqual(expected, hook_results)
|
||||||
self._assert_results_time(hook_results)
|
self._assert_results_time(hook_results)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_hook_result_with_serial_runner(self):
|
def test_hook_result_with_serial_runner(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config(
|
cfg = self._get_sample_task_config(
|
||||||
@ -1311,6 +1345,8 @@ class HookTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(expected, hook_results)
|
self.assertEqual(expected, hook_results)
|
||||||
self._assert_results_time(hook_results)
|
self._assert_results_time(hook_results)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_hook_result_error(self):
|
def test_hook_result_error(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config(
|
cfg = self._get_sample_task_config(
|
||||||
@ -1326,6 +1362,8 @@ class HookTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(expected, hook_results)
|
self.assertEqual(expected, hook_results)
|
||||||
self._assert_results_time(hook_results)
|
self._assert_results_time(hook_results)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_time_hook(self):
|
def test_time_hook(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config(
|
cfg = self._get_sample_task_config(
|
||||||
@ -1360,6 +1398,8 @@ class HookTestCase(unittest.TestCase):
|
|||||||
key=lambda i: i["config"]["trigger"]["args"]["unit"]))
|
key=lambda i: i["config"]["trigger"]["args"]["unit"]))
|
||||||
self._assert_results_time(hook_results)
|
self._assert_results_time(hook_results)
|
||||||
|
|
||||||
|
@unittest.skip("It started failing due to broken launching script. "
|
||||||
|
"Requires investigation.")
|
||||||
def test_import_hook_result(self):
|
def test_import_hook_result(self):
|
||||||
rally = utils.Rally()
|
rally = utils.Rally()
|
||||||
cfg = self._get_sample_task_config(
|
cfg = self._get_sample_task_config(
|
||||||
|
6
tox.ini
6
tox.ini
@ -59,6 +59,12 @@ commands =
|
|||||||
find . -type f -name "*.pyc" -delete
|
find . -type f -name "*.pyc" -delete
|
||||||
{toxinidir}/tests/ci/rally_cli_job.sh
|
{toxinidir}/tests/ci/rally_cli_job.sh
|
||||||
|
|
||||||
|
[testenv:functional]
|
||||||
|
sitepackages = True
|
||||||
|
commands =
|
||||||
|
find . -type f -name "*.pyc" -delete
|
||||||
|
{toxinidir}/tests/ci/rally_functional_job.sh {posargs}
|
||||||
|
|
||||||
[testenv:cover]
|
[testenv:cover]
|
||||||
commands = {toxinidir}/tests/ci/cover.sh {posargs}
|
commands = {toxinidir}/tests/ci/cover.sh {posargs}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user