From e6918187568dbd01842d8d1d2c808ce16a894239 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 21 Apr 2024 13:54:28 +0200 Subject: Adding upstream version 18.2.2. Signed-off-by: Daniel Baumann --- src/pybind/mgr/rook/ci/tests/features/rook.feature | 12 +++++++++ .../rook/ci/tests/features/steps/implementation.py | 21 ++++++++++++++++ .../mgr/rook/ci/tests/features/steps/utils.py | 29 ++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 src/pybind/mgr/rook/ci/tests/features/rook.feature create mode 100644 src/pybind/mgr/rook/ci/tests/features/steps/implementation.py create mode 100644 src/pybind/mgr/rook/ci/tests/features/steps/utils.py (limited to 'src/pybind/mgr/rook/ci/tests') diff --git a/src/pybind/mgr/rook/ci/tests/features/rook.feature b/src/pybind/mgr/rook/ci/tests/features/rook.feature new file mode 100644 index 000000000..ae0478f8b --- /dev/null +++ b/src/pybind/mgr/rook/ci/tests/features/rook.feature @@ -0,0 +1,12 @@ +Feature: Testing Rook orchestrator commands + Ceph has been installed using the cluster CRD available in deploy/examples/cluster-test.yaml and + + Scenario: Verify ceph cluster health + When I run + """ + ceph health | grep HEALTH + """ + Then I get + """ + HEALTH_OK + """ diff --git a/src/pybind/mgr/rook/ci/tests/features/steps/implementation.py b/src/pybind/mgr/rook/ci/tests/features/steps/implementation.py new file mode 100644 index 000000000..adde61afd --- /dev/null +++ b/src/pybind/mgr/rook/ci/tests/features/steps/implementation.py @@ -0,0 +1,21 @@ +from behave import * +from utils import * +import re + +@when("I run") +def run_step(context): + context.output = run_commands(context.text) + +@then("I get") +def verify_result_step(context): + print(f"Output is:\n{context.output}\n--------------\n") + assert context.text == context.output + +@then("I get something like") +def verify_fuzzy_result_step(context): + output_lines = context.output.split("\n") + expected_lines = context.text.split("\n") + num_lines = min(len(output_lines), len(expected_lines)) + for n in range(num_lines): + if not re.match(expected_lines[n], output_lines[n]): + raise diff --git a/src/pybind/mgr/rook/ci/tests/features/steps/utils.py b/src/pybind/mgr/rook/ci/tests/features/steps/utils.py new file mode 100644 index 000000000..41a71d0fb --- /dev/null +++ b/src/pybind/mgr/rook/ci/tests/features/steps/utils.py @@ -0,0 +1,29 @@ +import subprocess + +ROOK_CEPH_COMMAND = "minikube kubectl -- -n rook-ceph exec -it deploy/rook-ceph-tools -- " +CLUSTER_COMMAND = "minikube kubectl -- " + + +def execute_command(command: str) -> str: + output = "" + try: + proc = subprocess.run(command, shell=True, capture_output=True, text=True) + output = proc.stdout + except Exception as ex: + output = f"Error executing command: {ex}" + + return output + + +def run_commands(commands: str) -> str: + commands_list = commands.split("\n") + output = "" + for cmd in commands_list: + if cmd.startswith("ceph"): + prefix = ROOK_CEPH_COMMAND + else: + prefix = CLUSTER_COMMAND + command = prefix + cmd + output = execute_command(command) + + return output.strip("\n") -- cgit v1.2.3