def test_volume_set_when_io_in_progress(self): """Set Volume options which changes the client graphs while IO is in progress. Description: - set volume option uss, shard to 'enable' and validate it is successful - validate IO to be successful """ # List of volume options to set volume_options_list = ["features.uss", "features.shard"] # enable and validate the volume options g.log.info("Setting the volume options: %s", volume_options_list) ret = enable_and_validate_volume_options(self.mnode, self.volname, volume_options_list, time_delay=30) self.assertTrue(ret, ("Unable to enable the volume options: %s", volume_options_list)) g.log.info("Successfully enabled all the volume options: %s", volume_options_list) # Validate IO ret = validate_io_procs(self.all_mounts_procs, self.mounts) self.io_validation_complete = True self.assertTrue(ret, "IO failed on some of the clients") # List all files and dirs created g.log.info("List all files and directories:") ret = list_all_files_and_dirs_mounts(self.mounts) self.assertTrue(ret, "Failed to list all files and dirs") g.log.info("Listing all files and directories is successful")
def test_snapshot_basic_commands_when_io_in_progress(self): """Create, List, Activate, Enable USS (User Serviceable Snapshot), Viewing Snap of the volume from mount, De-Activate when IO is in progress. """ snap_name = "snap_cvt" # Create Snapshot g.log.info("Creating snapshot %s of the volume %s", snap_name, self.volname) ret, _, _ = snap_create(self.mnode, self.volname, snap_name) self.assertEqual(ret, 0, ("Failed to create snapshot with name %s " " of the volume %s", snap_name, self.volname)) g.log.info("Successfully created snapshot %s of the volume %s", snap_name, self.volname) # List Snapshot g.log.info("Listing the snapshot created for the volume %s", self.volname) snap_list = get_snap_list(self.mnode) self.assertIsNotNone(snap_list, "Unable to get the Snapshot list") self.assertIn(snap_name, snap_list, ("snapshot %s not listed in Snapshot list", snap_name)) g.log.info("Successfully listed snapshot %s in gluster snapshot list", snap_name) # Activate the snapshot g.log.info("Activating snapshot %s of the volume %s", snap_name, self.volname) ret, _, _ = snap_activate(self.mnode, snap_name) self.assertEqual(ret, 0, ("Failed to activate snapshot with name %s " " of the volume %s", snap_name, self.volname)) g.log.info("Successfully activated snapshot %s of the volume %s", snap_name, self.volname) # Enable USS on the volume. uss_options = ["features.uss"] if self.mount_type == "cifs": uss_options.append("features.show-snapshot-directory") g.log.info("Enable uss options %s on the volume %s", uss_options, self.volname) ret = enable_and_validate_volume_options(self.mnode, self.volname, uss_options, time_delay=30) self.assertTrue(ret, ("Unable to enable uss options %s on volume %s", uss_options, self.volname)) g.log.info("Successfully enabled uss options %s on the volume: %s", uss_options, self.volname) # Viewing snapshot from mount g.log.info("Viewing Snapshot %s from mounts:", snap_name) ret = view_snaps_from_mount(self.mounts, snap_name) self.assertTrue(ret, ("Failed to View snap %s from mounts", snap_name)) g.log.info("Successfully viewed snap %s from mounts", snap_name) # De-Activate the snapshot g.log.info("Deactivating snapshot %s of the volume %s", snap_name, self.volname) ret, _, _ = snap_deactivate(self.mnode, snap_name) self.assertEqual(ret, 0, ("Failed to deactivate snapshot with name %s " " of the volume %s", snap_name, self.volname)) g.log.info("Successfully deactivated snapshot %s of the volume %s", snap_name, self.volname) # Viewing snapshot from mount (.snaps shouldn't be listed from mount) for mount_obj in self.mounts: g.log.info("Viewing Snapshot %s from mount %s:%s", snap_name, mount_obj.client_system, mount_obj.mountpoint) ret = view_snaps_from_mount(mount_obj, snap_name) self.assertFalse(ret, ("Still able to View snap %s from mount " "%s:%s", snap_name, mount_obj.client_system, mount_obj.mountpoint)) g.log.info("%s not listed under .snaps from mount %s:%s", snap_name, mount_obj.client_system, mount_obj.mountpoint) g.log.info( "%s not listed under .snaps from mounts after " "deactivating ", snap_name) # Validate IO g.log.info("Wait for IO to complete and validate IO ...") ret = validate_io_procs(self.all_mounts_procs, self.mounts) self.io_validation_complete = True self.assertTrue(ret, "IO failed on some of the clients") g.log.info("IO is successful on all mounts") # List all files and dirs created g.log.info("List all files and directories:") ret = list_all_files_and_dirs_mounts(self.mounts) self.assertTrue(ret, "Failed to list all files and dirs") g.log.info("Listing all files and directories is successful")