Example #1
0
def check_geo_arequal_status(master, mastervol, slave, slavevol, \
        timeout=600, mclient='', sclient=''):
    """
        checks the arequal checksum of master and slave

        Returns True if arequal checksum matches between master and slave
        Returns False if arequal checksum differs between master and slave
    """
    if mclient == '':
        mclient = tc.clients[0]
    if sclient == '':
        sclient = tc.clients[0]
    master_mount = '/mnt/master'
    slave_mount = '/mnt/slave'
    retm, _, _ = mount_volume(mastervol, mpoint=master_mount, mserver=master, \
            mclient=mclient)
    rets, _, _ = mount_volume(slavevol, mpoint=slave_mount, mserver=slave, \
            mclient=sclient)
    if retm != 0 or rets != 0:
        tc.logger.error("Failed to mount the master or slave volume")
        return False
    rc = False
    while timeout >= 0:
        retm = tc.run_async(mclient, "/usr/local/bin/arequal-checksum -p %s" \
                % master_mount)
        rets = tc.run_async(sclient, "/usr/local/bin/arequal-checksum -p %s" \
                % slave_mount)
        retm.wait()
        rets.wait()
        retm = retm.value()
        rets = rets.value()
        tc.logger.debug("The arequal-checksum of master is %s" % retm[1])
        tc.logger.debug("The arequal-checksum of slave is %s" % rets[1])
        if retm[0] != 0 or rets[0] != 0:
            tc.logger.error("arequal returned error. Check glusterfs logs")
        elif retm[1] != rets[1]:
            tc.logger.debug("arequal-checksum does not match master and slave")
        else:
            tc.logger.info("arequal-checksum of master and slave match")
            rc = True
            break
        time.sleep(120)
        timeout = timeout - 120
    umount_volume(mclient, master_mount)
    umount_volume(sclient, slave_mount)
    return rc
Example #2
0
def check_geo_filecount_status(master, mastervol, slave, slavevol, \
        timeout=1200, mclient='', sclient=''):
    """
        checks the number of files in master and slave

        Returns True if number of files are same in master and slave
        Returns False if number of files differ in master and slave
    """
    if mclient == '':
        mclient = tc.clients[0]
    if sclient == '':
        sclient = tc.clients[0]
    master_mount = '/mnt/master'
    slave_mount = '/mnt/slave'
    retm, _, _ = mount_volume(mastervol, mpoint=master_mount, \
            mserver=master, mclient=mclient)
    rets, _, _ = mount_volume(slavevol, mpoint=slave_mount, \
            mserver=slave, mclient=sclient)
    if retm != 0 or rets != 0:
        tc.logger.error("Failed to mount the master or slave volume")
        return False
    rc = False
    while timeout >= 0:
        retm = tc.run_async(mclient, "find %s | wc -l" % master_mount)
        rets = tc.run_async(sclient, "find %s | wc -l" % slave_mount)
        retm.wait()
        rets.wait()
        retm = retm.value()
        rets = rets.value()
        tc.logger.debug("The number of files in master is %s" % int(retm[1]))
        tc.logger.debug("The number of files in slave is %s" % int(rets[1]))
        if retm[0] != 0 or rets[0] != 0:
            tc.logger.error("find returned error. Please check glusterfs logs")
        elif int(retm[1]) != int(rets[1]):
            tc.logger.debug("filecount doesn't match between master and slave")
        else:
            tc.logger.info("filecount of master and slave match")
            rc = True
            break
        time.sleep(120)
        timeout = timeout - 120
    umount_volume(mclient, master_mount)
    umount_volume(sclient, slave_mount)
    return rc
Example #3
0
    def run(self):
        rc = True
        dd_cmd = "dd if=%s count=%s " % (self.dd_input_file, self.dd_count)
        if self.dd_conv is not None:
            dd_cmd += "conv=%s " % self.dd_conv

        if self.dd_oflag is not None:
            dd_cmd += "oflag=%s " % self.dd_oflag

        all_mounts_cmd_runs = []
        for mount_obj in self.mounts:
            all_cmd_runs = []
            for i in range(1, (self.num_of_files + 1)):
                cmd_runs = []
                for j in range(1, (self.num_of_dd_writes_process + 1)):
                    cmd = dd_cmd + ("of=%s bs=%s" %
                                    (os.path.join(mount_obj.mountpoint,
                                                  self.filename + "_" + str(i)),
                                     random.choice(self.block_size)))
                    tc.logger.info("Executing Command: %s", cmd)
                    ret = tc.run_async(mount_obj.client_system, cmd)
                    cmd_runs.append(ret)
                all_cmd_runs.append(cmd_runs)
            all_mounts_cmd_runs.append(all_cmd_runs)

        for all_cmd_runs in all_mounts_cmd_runs:
            for cmd_runs in all_cmd_runs:
                for each_cmd_run in cmd_runs:
                    each_cmd_run.wait()

        rc = True
        for i, all_cmd_runs in enumerate(all_mounts_cmd_runs):
            for j, cmd_runs in enumerate(all_cmd_runs):
                for k, each_cmd_run in enumerate(cmd_runs):
                    ret, _, _ = each_cmd_run.value()
                    if ret != 0:
                        tc.logger.error("DD Writes failed on:  %s/%s/%s:%d" %
                                        (self.mounts[i].client_system,
                                         self.mounts[i].mountpoint,
                                         (self.filename + "_" + str(j)), k))
                        rc = False
        if not rc:
            tc.logger.error("DD Write failed on atleast one file")
            return False
        else:
            tc.logger.info("DD Write successfully passed on all the files")
            return True
Example #4
0
    def run(self):
        rc = True
        dd_cmd = "dd if=%s count=%s " % (self.dd_input_file, self.dd_count)
        if self.dd_conv is not None:
            dd_cmd += "conv=%s " % self.dd_conv

        if self.dd_oflag is not None:
            dd_cmd += "oflag=%s " % self.dd_oflag

        all_mounts_cmd_runs = []
        for mount_obj in self.mounts:
            all_cmd_runs = []
            for i in range(1, (self.num_of_files + 1)):
                cmd_runs = []
                for j in range(1, (self.num_of_dd_writes_process + 1)):
                    cmd = dd_cmd + ("of=%s bs=%s" % (os.path.join(
                        mount_obj.mountpoint, self.filename + "_" +
                        str(i)), random.choice(self.block_size)))
                    tc.logger.info("Executing Command: %s", cmd)
                    ret = tc.run_async(mount_obj.client_system, cmd)
                    cmd_runs.append(ret)
                all_cmd_runs.append(cmd_runs)
            all_mounts_cmd_runs.append(all_cmd_runs)

        for all_cmd_runs in all_mounts_cmd_runs:
            for cmd_runs in all_cmd_runs:
                for each_cmd_run in cmd_runs:
                    each_cmd_run.wait()

        rc = True
        for i, all_cmd_runs in enumerate(all_mounts_cmd_runs):
            for j, cmd_runs in enumerate(all_cmd_runs):
                for k, each_cmd_run in enumerate(cmd_runs):
                    ret, _, _ = each_cmd_run.value()
                    if ret != 0:
                        tc.logger.error("DD Writes failed on:  %s/%s/%s:%d" %
                                        (self.mounts[i].client_system,
                                         self.mounts[i].mountpoint,
                                         (self.filename + "_" + str(j)), k))
                        rc = False
        if not rc:
            tc.logger.error("DD Write failed on atleast one file")
            return False
        else:
            tc.logger.info("DD Write successfully passed on all the files")
            return True
Example #5
0
    def run(self):
        retstat = 0
        tc.logger.info("Run command on all servers via run_async()")

        rasyncs = {}
        results = {}
        command = 'ls -ail; hostname'
        for node in tc.nodes:
            rasyncs[node] = tc.run_async(node, command)
            if not rasyncs[node]:
                retstat = retstat | rcode

        for node, proc in rasyncs.items():
            rcode, rout, rerr = proc.value()
            retstat = retstat | rcode

        if retstat == 0:
            return True

        return False
Example #6
0
-T %d -t %s --fop=%s %s 1>/dev/null 2>&1"
            % (int(num_multi), int(breadth), int(depth), maxsize, minsize, int(num_threads), file_type, fop, path)
        )
    elif dir_struct == "single":
        cmd = (
            "crefi -n %d --max=%s --min=%s --random -T %d -t %s --fop=%s %s \
1>/dev/null 2>&1"
            % (int(num_single), maxsize, minsize, int(num_threads), file_type, fop, path)
        )
    else:
        tc.logger.error("Unknown fop or dir structure")
        return False
    if fop == "rm":
        cmd = "rm -rf %s/*" % path
    if async:
        ret_obj = tc.run_async(client, cmd)
        return ret_obj
    else:
        ret, _, _ = tc.run(client, cmd)
        if ret != 0:
            return False
        else:
            return True


def check_geo_filecount_status(master, mastervol, slave, slavevol, timeout=1200, mclient="", sclient=""):
    """
        checks the number of files in master and slave

        Returns True if number of files are same in master and slave
        Returns False if number of files differ in master and slave