summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/rook/ci/tests
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/pybind/mgr/rook/ci/tests
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pybind/mgr/rook/ci/tests')
-rw-r--r--src/pybind/mgr/rook/ci/tests/features/rook.feature12
-rw-r--r--src/pybind/mgr/rook/ci/tests/features/steps/implementation.py21
-rw-r--r--src/pybind/mgr/rook/ci/tests/features/steps/utils.py29
3 files changed, 62 insertions, 0 deletions
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")