From 6ee8aa80f51bbc3ff4aa9c5ef3d1ba545ab8562f Mon Sep 17 00:00:00 2001 From: Emanuele Prella Date: Wed, 22 Apr 2026 12:40:37 +0200 Subject: [PATCH 1/3] [Storage] De-quarantine libguestfs test and use data source instead of http import Signed-off-by: Emanuele Prella --- tests/storage/test_libguestfs.py | 30 +++++++++++++++++------------- tests/storage/utils.py | 23 ----------------------- 2 files changed, 17 insertions(+), 36 deletions(-) diff --git a/tests/storage/test_libguestfs.py b/tests/storage/test_libguestfs.py index 622ac61d28..5be98f4720 100644 --- a/tests/storage/test_libguestfs.py +++ b/tests/storage/test_libguestfs.py @@ -3,11 +3,10 @@ import pexpect import pytest from ocp_resources.pod import Pod -from pytest_testconfig import config as py_config -from tests.storage.utils import create_cirros_dv -from utilities.constants import QUARANTINED, TIMEOUT_1MIN, UNPRIVILEGED_PASSWORD, UNPRIVILEGED_USER +from utilities.constants import TIMEOUT_1MIN, TIMEOUT_2MIN, UNPRIVILEGED_PASSWORD, UNPRIVILEGED_USER from utilities.infra import login_with_user_password +from utilities.storage import create_dv, get_dv_size_from_datasource pytestmark = pytest.mark.post_upgrade @@ -40,13 +39,23 @@ def dv_created_by_specific_user( request, namespace, client_for_test, + fedora_data_source_scope_module, + storage_class_name_scope_function, ): - yield from create_cirros_dv( - name=request.param["data_volume_name"], - namespace=namespace.name, - storage_class=py_config["default_storage_class"], + with create_dv( + dv_name=request.param["data_volume_name"], + storage_class=storage_class_name_scope_function, client=client_for_test, - ) + namespace=namespace.name, + source_ref={ + "kind": fedora_data_source_scope_module.kind, + "name": fedora_data_source_scope_module.name, + "namespace": fedora_data_source_scope_module.namespace, + }, + size=get_dv_size_from_datasource(data_source=fedora_data_source_scope_module), + ) as dv: + dv.wait_for_dv_success(timeout=TIMEOUT_2MIN) + yield dv @pytest.fixture() @@ -86,13 +95,8 @@ def client_for_test(request, admin_client, unprivileged_client): ], indirect=True, ) -@pytest.mark.xfail( - reason=f"{QUARANTINED}: Timeout exceeded. Tracked in CNV-62312", - run=False, -) @pytest.mark.s390x def test_virtctl_libguestfs_with_specific_user( - client_for_test, virtctl_libguestfs_by_user, ): virtctl_libguestfs_by_user.sendline("libguestfs-test-tool") diff --git a/tests/storage/utils.py b/tests/storage/utils.py index a05ecfcb29..c1737f4eae 100644 --- a/tests/storage/utils.py +++ b/tests/storage/utils.py @@ -400,29 +400,6 @@ def _wait_for_sc_update(): yield edited_cdi_config -def create_cirros_dv( - namespace, - name, - storage_class, - client, - access_modes=None, - volume_mode=None, - dv_size=Images.Cirros.DEFAULT_DV_SIZE, -): - with create_dv( - dv_name=f"dv-{name}", - namespace=namespace, - url=get_http_image_url(image_directory=Images.Cirros.DIR, image_name=Images.Cirros.QCOW2_IMG), - size=dv_size, - storage_class=storage_class, - access_modes=access_modes, - volume_mode=volume_mode, - client=client, - ) as dv: - dv.wait_for_dv_success() - yield dv - - def check_snapshot_indication(snapshot, is_online): snapshot_indications = snapshot.instance.status.indications online = "Online" From a05aa1d743a7d2cb35a32c1191737cc17156c82c Mon Sep 17 00:00:00 2001 From: Emanuele Prella Date: Fri, 15 May 2026 14:28:28 +0200 Subject: [PATCH 2/3] Wait for libguestfs pod to be running before interacting Signed-off-by: Emanuele Prella --- tests/storage/test_libguestfs.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/storage/test_libguestfs.py b/tests/storage/test_libguestfs.py index 5be98f4720..dca74614e2 100644 --- a/tests/storage/test_libguestfs.py +++ b/tests/storage/test_libguestfs.py @@ -21,17 +21,18 @@ def virtctl_libguestfs_by_user( f"virtctl guestfs {dv_created_by_specific_user.name} -n {dv_created_by_specific_user.namespace} \ {fs_group_flag}" ) - + libguestfs_pod = Pod( + name=f"libguestfs-tools-{dv_created_by_specific_user.name}", + namespace=dv_created_by_specific_user.namespace, + ) + libguestfs_pod.wait_for_status(status=Pod.Status.RUNNING, timeout=TIMEOUT_1MIN) guestfs_proc.send("\n\n") - guestfs_proc.expect("$", timeout=TIMEOUT_1MIN) + guestfs_proc.expect(r"\$", timeout=TIMEOUT_1MIN) yield guestfs_proc guestfs_proc.send("exit\n") guestfs_proc.expect(pexpect.EOF, timeout=TIMEOUT_1MIN) guestfs_proc.close() - Pod( - name=f"libguestfs-tools-{dv_created_by_specific_user.name}", - namespace=dv_created_by_specific_user.namespace, - ).wait_deleted() + libguestfs_pod.wait_deleted() @pytest.fixture From 564eadb4b36269c9ea022fdf0a20736c42f6aa82 Mon Sep 17 00:00:00 2001 From: Emanuele Prella Date: Thu, 11 Jun 2026 13:43:55 +0200 Subject: [PATCH 3/3] address @jpeimer comments Signed-off-by: Emanuele Prella --- tests/storage/test_libguestfs.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/storage/test_libguestfs.py b/tests/storage/test_libguestfs.py index dca74614e2..97ca428ec9 100644 --- a/tests/storage/test_libguestfs.py +++ b/tests/storage/test_libguestfs.py @@ -3,8 +3,9 @@ import pexpect import pytest from ocp_resources.pod import Pod +from pytest_testconfig import config as py_config -from utilities.constants import TIMEOUT_1MIN, TIMEOUT_2MIN, UNPRIVILEGED_PASSWORD, UNPRIVILEGED_USER +from utilities.constants import TIMEOUT_1MIN, UNPRIVILEGED_PASSWORD, UNPRIVILEGED_USER from utilities.infra import login_with_user_password from utilities.storage import create_dv, get_dv_size_from_datasource @@ -41,11 +42,10 @@ def dv_created_by_specific_user( namespace, client_for_test, fedora_data_source_scope_module, - storage_class_name_scope_function, ): with create_dv( dv_name=request.param["data_volume_name"], - storage_class=storage_class_name_scope_function, + storage_class=py_config["default_storage_class"], client=client_for_test, namespace=namespace.name, source_ref={ @@ -55,7 +55,7 @@ def dv_created_by_specific_user( }, size=get_dv_size_from_datasource(data_source=fedora_data_source_scope_module), ) as dv: - dv.wait_for_dv_success(timeout=TIMEOUT_2MIN) + dv.wait_for_dv_success() yield dv