Merge "Require filter parameters for running tempest test" into main
This commit is contained in:
commit
be31cb3b44
@ -284,7 +284,7 @@ class TempestOperatorCharm(sunbeam_charm.OSBaseOperatorCharmK8S):
|
||||
def _on_validate_action(self, event: ops.charm.ActionEvent) -> None:
|
||||
"""Run tempest action."""
|
||||
serial: bool = event.params["serial"]
|
||||
regexes: List[str] = event.params["regex"].strip().split()
|
||||
regexes: List[str] = event.params["regex"].split()
|
||||
exclude_regex: str = event.params["exclude-regex"].strip()
|
||||
test_list: str = event.params["test-list"].strip()
|
||||
|
||||
|
@ -200,6 +200,15 @@ class TempestPebbleHandler(sunbeam_chandlers.ServicePebbleHandler):
|
||||
Raises a RuntimeError if something goes wrong.
|
||||
"""
|
||||
# validation before running anything
|
||||
|
||||
if not (regexes or exclude_regex or test_list):
|
||||
raise RuntimeError(
|
||||
"No filter parameters provided.\n"
|
||||
"At least one of regex, exclude-regex, or test-list must be provided to run tests.\n\n"
|
||||
"If you really intend to run all tests, pass regex='.*'.\n"
|
||||
"WARNING: the full test set is very large and will take a long time."
|
||||
)
|
||||
|
||||
for r in [*regexes, exclude_regex]:
|
||||
try:
|
||||
re.compile(r)
|
||||
|
@ -311,14 +311,14 @@ class TestTempestOperatorCharm(test_utils.CharmTestCase):
|
||||
action_event = mock.Mock()
|
||||
action_event.params = {
|
||||
"serial": False,
|
||||
"regex": "",
|
||||
"regex": "smoke",
|
||||
"exclude-regex": "",
|
||||
"test-list": "",
|
||||
}
|
||||
self.harness.charm._on_validate_action(action_event)
|
||||
action_event.fail.assert_not_called()
|
||||
exec_mock.assert_called_with(
|
||||
["tempest-run-wrapper", "--parallel"],
|
||||
["tempest-run-wrapper", "--parallel", "--regex", "smoke"],
|
||||
user="tempest",
|
||||
group="tempest",
|
||||
working_dir=TEMPEST_HOME,
|
||||
@ -380,6 +380,31 @@ class TestTempestOperatorCharm(test_utils.CharmTestCase):
|
||||
self.harness.remove_relation(identity_ops_rel_id)
|
||||
self.harness.remove_relation(grafana_dashboard_rel_id)
|
||||
|
||||
def test_validate_action_no_params(self):
|
||||
"""Test validate action with no filter params."""
|
||||
test_utils.set_all_pebbles_ready(self.harness)
|
||||
self.add_logging_relation(self.harness)
|
||||
self.add_identity_ops_relation(self.harness)
|
||||
self.add_grafana_dashboard_relation(self.harness)
|
||||
|
||||
exec_mock = mock.Mock()
|
||||
self.harness.charm.pebble_handler().execute = exec_mock
|
||||
|
||||
action_event = mock.Mock()
|
||||
action_event.params = {
|
||||
"serial": True,
|
||||
"regex": "",
|
||||
"exclude-regex": "",
|
||||
"test-list": "",
|
||||
}
|
||||
self.harness.charm._on_validate_action(action_event)
|
||||
action_event.fail.assert_called_once()
|
||||
self.assertIn(
|
||||
"No filter parameters provided",
|
||||
action_event.fail.call_args.args[0],
|
||||
)
|
||||
exec_mock.assert_not_called()
|
||||
|
||||
def test_get_list_action(self):
|
||||
"""Test get-list action."""
|
||||
test_utils.set_all_pebbles_ready(self.harness)
|
||||
|
Loading…
x
Reference in New Issue
Block a user