100% coverage in functional tests
In Rally, we have functional tests that run different CLI commands and check that the CLI output contains all the expected data. We need to ensure that every single subcommand of “rally task”, “rally deployment” etc. (for example, “rally task start”, “rally task report”) is covered in these functional test with all possible parameters usage (e.g. the “--deployment” parameter in “rally task start --deployment <name>” didn’t get tested, which has lead to errors recently). Change-Id: I654ad4317b2d061dd899f5fdfb028cda50af9b8b
This commit is contained in:
parent
2205de4039
commit
b836fe428f
@ -71,3 +71,9 @@ class DeploymentTestCase(unittest.TestCase):
|
||||
self.rally("deployment create --name t_create_env --fromenv")
|
||||
self.assertRaises(utils.RallyCmdError, self.rally,
|
||||
("deployment check"))
|
||||
|
||||
def test_recreate(self):
|
||||
with mock.patch.dict("os.environ", utils.TEST_ENV):
|
||||
self.rally("deployment create --name t_create_env --fromenv")
|
||||
self.rally("deployment recreate --deployment t_create_env")
|
||||
self.assertIn("t_create_env", self.rally("deployment list"))
|
||||
|
@ -41,6 +41,5 @@ class ShowTestCase(unittest.TestCase):
|
||||
res = self.rally("show secgroups")
|
||||
self.assertIn("default", res)
|
||||
|
||||
# TODO(oanufriev): implement after bp/add-rally-create-cli-command
|
||||
def test_show_keypairs(self):
|
||||
pass
|
||||
self.rally("show keypairs")
|
||||
|
@ -14,10 +14,12 @@
|
||||
# under the License.
|
||||
|
||||
import os
|
||||
import re
|
||||
import unittest
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd import envutils
|
||||
from tests.functional import utils
|
||||
|
||||
|
||||
@ -39,6 +41,11 @@ class TaskTestCase(unittest.TestCase):
|
||||
]
|
||||
}
|
||||
|
||||
def _get_deployment_uuid(self, output):
|
||||
return re.search(
|
||||
r"Using deployment: (?P<uuid>[0-9a-f\-]{36})",
|
||||
output).group("uuid")
|
||||
|
||||
def test_status(self):
|
||||
rally = utils.Rally()
|
||||
cfg = self._get_sample_task_config()
|
||||
@ -139,6 +146,39 @@ class TaskTestCase(unittest.TestCase):
|
||||
self.assertRaises(utils.RallyCmdError,
|
||||
rally, "task list --status not_existing_status")
|
||||
|
||||
def test_validate_is_valid(self):
|
||||
rally = utils.Rally()
|
||||
cfg = self._get_sample_task_config()
|
||||
config = utils.TaskConfig(cfg)
|
||||
output = rally("task validate --task %s" % config.filename)
|
||||
self.assertIn("Task config is valid", output)
|
||||
|
||||
def test_validate_is_invalid(self):
|
||||
rally = utils.Rally()
|
||||
with mock.patch.dict("os.environ", utils.TEST_ENV):
|
||||
deployment_id = envutils.get_global("RALLY_DEPLOYMENT")
|
||||
cfg = {"invalid": "config"}
|
||||
config = utils.TaskConfig(cfg)
|
||||
output = rally(("task validate --task %(task_file)s "
|
||||
"--deployment %(deployment_id)s") %
|
||||
{"task_file": config.filename,
|
||||
"deployment_id": deployment_id})
|
||||
self.assertIn("Task config is invalid", output)
|
||||
|
||||
def test_start(self):
|
||||
rally = utils.Rally()
|
||||
with mock.patch.dict("os.environ", utils.TEST_ENV):
|
||||
deployment_id = envutils.get_global("RALLY_DEPLOYMENT")
|
||||
cfg = self._get_sample_task_config()
|
||||
config = utils.TaskConfig(cfg)
|
||||
output = rally(("task start --task %(task_file)s "
|
||||
"--deployment %(deployment_id)s") %
|
||||
{"task_file": config.filename,
|
||||
"deployment_id": deployment_id})
|
||||
result = re.search(
|
||||
r"(?P<task_id>[0-9a-f\-]{36}) is started", output)
|
||||
self.assertIsNotNone(result)
|
||||
|
||||
# NOTE(oanufriev): Not implemented
|
||||
def test_abort(self):
|
||||
pass
|
||||
|
@ -13,8 +13,12 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import re
|
||||
import unittest
|
||||
|
||||
import mock
|
||||
|
||||
from rally.cmd import envutils
|
||||
from tests.functional import utils
|
||||
|
||||
|
||||
@ -24,7 +28,48 @@ class CliUtilsTestCase(unittest.TestCase):
|
||||
super(CliUtilsTestCase, self).setUp()
|
||||
self.rally = utils.Rally()
|
||||
|
||||
def _get_deployment_uuid(self, output):
|
||||
return re.search(
|
||||
r"Using deployment: (?P<uuid>[0-9a-f\-]{36})",
|
||||
output).group("uuid")
|
||||
|
||||
def test_missing_argument(self):
|
||||
with self.assertRaises(utils.RallyCmdError) as e:
|
||||
self.rally("use task")
|
||||
self.assertIn("--uuid", e.exception.output)
|
||||
|
||||
def test_deployment(self):
|
||||
with mock.patch.dict("os.environ", utils.TEST_ENV):
|
||||
output = self.rally(
|
||||
"deployment create --name t_create_env1 --fromenv")
|
||||
uuid = self._get_deployment_uuid(output)
|
||||
self.rally("deployment create --name t_create_env2 --fromenv")
|
||||
self.rally("use deployment --deployment %s" % uuid)
|
||||
current_deployment = envutils.get_global("RALLY_DEPLOYMENT")
|
||||
self.assertEqual(uuid, current_deployment)
|
||||
|
||||
def test_task(self):
|
||||
cfg = {
|
||||
"Dummy.dummy_random_fail_in_atomic": [
|
||||
{
|
||||
"runner": {
|
||||
"type": "constant",
|
||||
"times": 100,
|
||||
"concurrency": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
with mock.patch.dict("os.environ", utils.TEST_ENV):
|
||||
deployment_id = envutils.get_global("RALLY_DEPLOYMENT")
|
||||
config = utils.TaskConfig(cfg)
|
||||
output = self.rally(("task start --task %(task_file)s "
|
||||
"--deployment %(deployment_id)s") %
|
||||
{"task_file": config.filename,
|
||||
"deployment_id": deployment_id})
|
||||
result = re.search(
|
||||
r"(?P<uuid>[0-9a-f\-]{36}) is started", output)
|
||||
uuid = result.group("uuid")
|
||||
self.rally("use task --uuid %s" % uuid)
|
||||
current_task = envutils.get_global("RALLY_TASK")
|
||||
self.assertEqual(uuid, current_task)
|
||||
|
Loading…
Reference in New Issue
Block a user