diff options
Diffstat (limited to 'tests/functional/snapshot/test_snap_delete_existing_scheduler.py')
-rw-r--r-- | tests/functional/snapshot/test_snap_delete_existing_scheduler.py | 133 |
1 files changed, 60 insertions, 73 deletions
diff --git a/tests/functional/snapshot/test_snap_delete_existing_scheduler.py b/tests/functional/snapshot/test_snap_delete_existing_scheduler.py index a321dcd39..19ad38e21 100644 --- a/tests/functional/snapshot/test_snap_delete_existing_scheduler.py +++ b/tests/functional/snapshot/test_snap_delete_existing_scheduler.py @@ -1,4 +1,4 @@ -# Copyright (C) 2017-2018 Red Hat, Inc. <http://www.redhat.com> +# Copyright (C) 2017-2020 Red Hat, Inc. <http://www.redhat.com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -14,25 +14,17 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -""" -Description: +from time import sleep - Test Cases in this module tests the - snapshot scheduler behavior when shared volume is mounted/not - mounted. scheduler command such as initialise scheduler, - enable scheduler, status of scheduler. -""" -import time from glusto.core import Glusto as g + from glustolibs.gluster.exceptions import ExecutionError -from glustolibs.gluster.gluster_base_class import (GlusterBaseClass, - runs_on) +from glustolibs.gluster.gluster_base_class import GlusterBaseClass, runs_on from glustolibs.misc.misc_libs import upload_scripts from glustolibs.io.utils import validate_io_procs from glustolibs.gluster.volume_ops import get_volume_info from glustolibs.gluster.shared_storage_ops import (enable_shared_storage, is_shared_volume_mounted, - is_shared_volume_unmounted, disable_shared_storage) from glustolibs.gluster.snap_scheduler import (scheduler_enable, scheduler_init, @@ -50,15 +42,13 @@ class SnapshotDeleteExistingScheduler(GlusterBaseClass): @classmethod def setUpClass(cls): - GlusterBaseClass.setUpClass.im_func(cls) + cls.get_super_method(cls, 'setUpClass')() # Upload io scripts for running IO on mounts g.log.info("Upload io scripts to clients %s for running IO on " "mounts", cls.clients) - script_local_path = ("/usr/share/glustolibs/io/scripts/" - "file_dir_ops.py") cls.script_upload_path = ("/usr/share/glustolibs/io/scripts/" "file_dir_ops.py") - ret = upload_scripts(cls.clients, script_local_path) + ret = upload_scripts(cls.clients, cls.script_upload_path) if not ret: raise ExecutionError("Failed to upload IO scripts " "to clients %s" % cls.clients) @@ -68,7 +58,7 @@ class SnapshotDeleteExistingScheduler(GlusterBaseClass): def setUp(self): # SettingUp volume and Mounting the volume - GlusterBaseClass.setUp.im_func(self) + self.get_super_method(self, 'setUp')() g.log.info("Starting to SetUp and Mount Volume") ret = self.setup_volume_and_mount_volume(mounts=self.mounts) if not ret: @@ -84,7 +74,13 @@ class SnapshotDeleteExistingScheduler(GlusterBaseClass): # Validate shared storage mounted g.log.info("Starting to validate shared storage mounted") - ret = is_shared_volume_mounted(self.mnode) + count = 0 + while count < 5: + ret = is_shared_volume_mounted(self.mnode) + if ret: + break + sleep(2) + count += 1 if not ret: raise ExecutionError("Failed to mount shared volume") g.log.info("Successfully mounted shared volume") @@ -107,27 +103,16 @@ class SnapshotDeleteExistingScheduler(GlusterBaseClass): "on all nodes") g.log.info("Successfully disabled snapshot scheduler on all nodes") - # disable shared storage - g.log.info("starting to disable shared storage") - count = 0 - while count < 80: + # Check if shared storage is enabled + # Disable if true + g.log.info("Checking if shared storage is mounted") + ret = is_shared_volume_mounted(self.mnode) + if ret: + g.log.info("Disabling shared storage") ret = disable_shared_storage(self.mnode) - if ret: - break - time.sleep(2) - count += 1 - - if not ret: - raise ExecutionError("Unexpected: Failed to disable " - "shared storage") - g.log.info("Expected: Successfully disabled shared storage") - - # Validate shared volume unmounted - g.log.info("Validate shared volume unmounted") - ret = is_shared_volume_unmounted(self.mnode) - if not ret: - raise ExecutionError("Failed to unmount shared storage") - g.log.info("Successfully unmounted shared storage") + if not ret: + raise ExecutionError("Failed to disable shared storage") + g.log.info("Successfully disabled shared storage") # Unmount and cleanup-volume g.log.info("Starting to Unmount and cleanup-volume") @@ -139,88 +124,90 @@ class SnapshotDeleteExistingScheduler(GlusterBaseClass): def test_snap_delete_existing_scheduler(self): # pylint: disable=too-many-statements """ + Description: + + Validating snapshot scheduler behavior when existing schedule + is deleted. + Steps: - 1. enable shared volume - 2. create a volume - 3. initialise snap scheduler on all nodes - 4. enable snap scheduler - 5. check snap scheduler status - 6. perform io on mounts - 7. schedule a job of creating snapshot - every 30 mins - 8. list jobs created - 9. delete scheduled job - 10. validate io is successful - 11. list job should not list - any existing snapshot jobs + * Enable shared volume + * Create a volume + * Initialise snap_scheduler on all nodes + * Enable snap_scheduler + * Validate snap_scheduler status + * Perform IO on mounts + * Schedule a job of creating snapshot every 30 mins + * Perform snap_scheduler list + * Delete scheduled job + * Validate IO is successful + * Perform snap_scheduler list """ # Initialise snap scheduler - g.log.info("Initialising snap scheduler on all servers") + g.log.info("Initialising snap_scheduler on all servers") count = 0 while count < 80: ret = scheduler_init(self.servers) if ret: break - time.sleep(2) + sleep(2) count += 1 self.assertTrue(ret, "Failed to initialise scheduler on all servers") g.log.info("Successfully initialised scheduler on all servers") # Enable snap scheduler - g.log.info("Enabling snap scheduler") + g.log.info("Enabling snap_scheduler") ret, _, _ = scheduler_enable(self.mnode) self.assertEqual(ret, 0, "Failed to enable scheduler on node %s" % self.mnode) g.log.info("Successfully enabled scheduler on node %s", self.mnode) - # Check snapshot scheduler status - g.log.info("checking status of snapshot scheduler") + # Validate snapshot scheduler status + g.log.info("Validating status of snap_scheduler") for server in self.servers: count = 0 while count < 40: ret, status, _ = scheduler_status(server) if status.strip().split(":")[2] == ' Enabled': break - time.sleep(2) + sleep(2) count += 2 self.assertEqual(status.strip().split(":")[2], ' Enabled', - "Failed to check status of scheduler") - g.log.info("Successfully checked scheduler status") + "Failed to validate status of scheduler") + g.log.info("Successfully validated scheduler status") - # write files on all mounts + # Write files on all mounts g.log.info("Starting IO on all mounts...") all_mounts_procs = [] for mount_obj in self.mounts: - cmd = ("python %s create_files " - "-f 10 --base-file-name file %s" % (self.script_upload_path, - mount_obj.mountpoint)) + cmd = ("/usr/bin/env python %s create_files " + "-f 10 --base-file-name file %s" % ( + self.script_upload_path, + mount_obj.mountpoint)) proc = g.run_async(mount_obj.client_system, cmd, user=mount_obj.user) all_mounts_procs.append(proc) - # add a job to schedule snapshot every 30 mins + # Add a job to schedule snapshot every 30 mins g.log.info("Starting to add new job") self.scheduler = r"*/30 * * * *" self.job_name = "Job1" ret, _, _ = scheduler_add_jobs(self.mnode, self.job_name, - self.scheduler, - self.volname) + self.scheduler, self.volname) self.assertEqual(ret, 0, "Failed to add job") g.log.info("Successfully added Job on volume %s", self.volname) - # scheduler list + # Perform snap_scheduler list g.log.info("Starting to list all scheduler jobs") ret, _, _ = scheduler_list(self.mnode) self.assertEqual(ret, 0, "Failed to list scheduler jobs") g.log.info("Successfully listed all jobs") - # delete scheduled job + # Delete scheduled job g.log.info("Starting to delete scheduled jobs") ret, _, _ = scheduler_delete(self.mnode, self.job_name) self.assertEqual(ret, 0, "Failed to delete scheduled job") - g.log.info("Successfully deleted scheduled job %s", - self.job_name) + g.log.info("Successfully deleted scheduled job %s", self.job_name) # Validate IO self.assertTrue( @@ -228,11 +215,11 @@ class SnapshotDeleteExistingScheduler(GlusterBaseClass): "IO failed on some of the clients" ) - # scheduler list (no active jobs should be there) + # Perform snap_scheduler list (no active jobs should be present) g.log.info("Starting to list all scheduler jobs") ret, out, _ = scheduler_list(self.mnode) self.assertEqual(ret, 0, "Failed to list scheduler jobs") ret1 = out.strip().split(":") - self.assertEqual(ret1[1], " No snapshots scheduled", "Unexpected:" - "Failed to delete scheduled job %s" % self.job_name) + self.assertEqual(ret1[1], " No snapshots scheduled", "Unexpected: " + "Jobs are getting listed even after being deleted") g.log.info("Expected: No snapshots Jobs scheduled") |