From db1c94c2799a61226db8acf5c8aac7b4fc57573b Mon Sep 17 00:00:00 2001 From: Gustavo Pereira Date: Fri, 23 May 2025 12:00:57 -0300 Subject: [PATCH] Add test verify backup file test case Test Plan: PASS: Deploy a DC system with one subcloud and verify all tests pass successfully. Change-Id: I855cced4b9b13fd6afa16c88167a0b79258b0970 Signed-off-by: Gustavo Pereira --- .../dcmanager_subcloud_backup_keywords.py | 2 +- .../backup_restore/test_verify_backup_file.py | 97 ++++++++++++++++++- 2 files changed, 97 insertions(+), 2 deletions(-) diff --git a/keywords/cloud_platform/dcmanager/dcmanager_subcloud_backup_keywords.py b/keywords/cloud_platform/dcmanager/dcmanager_subcloud_backup_keywords.py index be76d6db..2ff2127f 100644 --- a/keywords/cloud_platform/dcmanager/dcmanager_subcloud_backup_keywords.py +++ b/keywords/cloud_platform/dcmanager/dcmanager_subcloud_backup_keywords.py @@ -39,7 +39,7 @@ class DcManagerSubcloudBackupKeywords(BaseKeyword): if local_only: return f"/opt/platform-backup/backups/{release}/" - return f"/opt/dc-vault/backups/{subcloud_name}/{release}" + return f"/opt/dc-vault/backups/{subcloud_name}/{release}/" def create_subcloud_backup( self, diff --git a/testcases/cloud_platform/regression/dc/backup_restore/test_verify_backup_file.py b/testcases/cloud_platform/regression/dc/backup_restore/test_verify_backup_file.py index 1b8a5e91..bf2b3dc8 100644 --- a/testcases/cloud_platform/regression/dc/backup_restore/test_verify_backup_file.py +++ b/testcases/cloud_platform/regression/dc/backup_restore/test_verify_backup_file.py @@ -5,10 +5,12 @@ from pytest import mark from config.configuration_manager import ConfigurationManager from config.lab.objects.lab_type_enum import LabTypeEnum from framework.logging.automation_logger import get_logger -from framework.validation.validation import validate_equals +from framework.validation.validation import validate_equals, validate_list_contains from keywords.cloud_platform.dcmanager.dcmanager_subcloud_backup_keywords import DcManagerSubcloudBackupKeywords +from keywords.cloud_platform.dcmanager.dcmanager_subcloud_group_keywords import DcmanagerSubcloudGroupKeywords from keywords.cloud_platform.dcmanager.dcmanager_subcloud_list_keywords import DcManagerSubcloudListKeywords from keywords.cloud_platform.dcmanager.dcmanager_subcloud_show_keywords import DcManagerSubcloudShowKeywords +from keywords.cloud_platform.dcmanager.dcmanager_subcloud_update_keywords import DcManagerSubcloudUpdateKeywords from keywords.cloud_platform.ssh.lab_connection_keywords import LabConnectionKeywords from keywords.cloud_platform.version_info.cloud_platform_version_manager import CloudPlatformVersionManagerClass from keywords.files.file_keywords import FileKeywords @@ -191,3 +193,96 @@ def test_verify_backup_local_duplex(request): request.addfinalizer(teardown) verify_backup_local_custom_path(subcloud.get_name()) + +@mark.lab_has_subcloud +def test_verify_backup_central_simplex_group(request): + """ + Verify backup of subcloud group + + Test Steps: + - Create a Subcloud group + - Assign subcloud to group + - Verify the subcloud backup file is transferred to the centralized + default location + - Check backup match current Date and if it is complete + Teardown: + - Remove Test Group + - Remove files created while the Tc was running. + """ + + central_ssh = LabConnectionKeywords().get_active_controller_ssh() + release = CloudPlatformVersionManagerClass().get_sw_version() + + # Gets the lowest subcloud (the subcloud with the lowest id). + dcmanager_subcloud_list_keywords = DcManagerSubcloudListKeywords(central_ssh) + lowest_subcloud = dcmanager_subcloud_list_keywords.get_dcmanager_subcloud_list().get_healthy_subcloud_with_lowest_id() + subcloud_name = lowest_subcloud.get_name() + + # Gets the lowest subcloud sysadmin password needed for backup creation. + lab_config = ConfigurationManager.get_lab_config().get_subcloud(subcloud_name) + subcloud_password = lab_config.get_admin_credentials().get_password() + + dc_manager_backup = DcManagerSubcloudBackupKeywords(central_ssh) + central_path = f"/opt/dc-vault/backups/{subcloud_name}/{release}/" + + def teardown(): + get_logger().log_info("Removing test files") + FileKeywords(central_ssh).delete_folder_with_sudo("subcloud_backup.yaml") + FileKeywords(central_ssh).delete_folder_with_sudo(f"{central_path}{subcloud_name}_platform_backup_*.tgz") + + def teardown_group(): + get_logger().log_info("Removing the created subcloud group before teardown.") + DcManagerSubcloudUpdateKeywords(central_ssh).dcmanager_subcloud_update(subcloud_name=subcloud_name, update_attr="group", update_value="Default") + DcmanagerSubcloudGroupKeywords(central_ssh).dcmanager_subcloud_group_delete("TestGroup") + + request.addfinalizer(teardown) + request.addfinalizer(teardown_group) + + # Create subcloud group TestGroup + DcmanagerSubcloudGroupKeywords(central_ssh).dcmanager_subcloud_group_add(group_name="TestGroup") + # Adds subcloud to TestGroup + DcManagerSubcloudUpdateKeywords(central_ssh).dcmanager_subcloud_update(subcloud_name=subcloud_name, update_attr="group", update_value="TestGroup") + + group_list = DcmanagerSubcloudGroupKeywords(central_ssh).get_dcmanager_subcloud_group_list_subclouds("TestGroup").get_dcmanager_subcloud_group_list_subclouds() + subclouds = [subcloud.get_name() for subcloud in group_list] + validate_list_contains(subcloud_name, subclouds, "Verifies if the subcloud name is in the list of subclouds.") + + dc_manager_backup.create_subcloud_backup(subcloud_password, central_ssh, path=f"{central_path}{subcloud_name}_platform_backup_*.tgz", group="TestGroup", subcloud_list=[subcloud_name], release=str(release)) + + +@mark.lab_has_subcloud +def test_verify_backup_local_simplex_images(request): + """ + Verify Backup of registry container images + + Testcase steps: + - Pull, tag and push a test image to local registry + - Create backup of subcloud and registry backup + - Made a Subcloud Restore + - Check if the test image was restored + """ + + central_ssh = LabConnectionKeywords().get_active_controller_ssh() + release = CloudPlatformVersionManagerClass().get_sw_version() + + # Gets the lowest subcloud (the subcloud with the lowest id). + dcmanager_subcloud_list_keywords = DcManagerSubcloudListKeywords(central_ssh) + lowest_subcloud = dcmanager_subcloud_list_keywords.get_dcmanager_subcloud_list().get_healthy_subcloud_with_lowest_id() + subcloud_name = lowest_subcloud.get_name() + subcloud_ssh = LabConnectionKeywords().get_subcloud_ssh(subcloud_name) + + # Gets the lowest subcloud sysadmin password needed for backup creation. + lab_config = ConfigurationManager.get_lab_config().get_subcloud(subcloud_name) + subcloud_password = lab_config.get_admin_credentials().get_password() + + dc_manager_backup = DcManagerSubcloudBackupKeywords(central_ssh) + local_path = f"/opt/platform-backup/backups/{release}/" + + def teardown(): + get_logger().log_info("Removing test files") + FileKeywords(central_ssh).delete_folder_with_sudo("subcloud_backup.yaml") + FileKeywords(central_ssh).delete_folder_with_sudo(f"{local_path}{subcloud_name}_platform_backup_*.tgz") + + request.addfinalizer(teardown) + + dc_manager_backup.create_subcloud_backup(subcloud_password, subcloud_ssh, subcloud=subcloud_name, path=f"{local_path}{subcloud_name}_platform_backup_*.tgz", local_only=True, registry=True)