def gluster_basic_test():
    tc.logger.info("Testing gluster volume create and mounting")
    volname = tc.config_data["VOLNAME"]
    mount_type = tc.config_data["MOUNT_TYPE"]
    mountpoint = tc.config_data["MOUNTPOINT"]
    mnode = tc.nodes[0]
    client = tc.clients[0]
    _rc = True
    ret = setup_vol()
    if not ret:
        tc.logger.error("Unable to setup the volume %s" % volname)
        return False
    tc.run(mnode, "gluster volume status %s" % volname)
    ret, _, _ = mount_volume(volname, mount_type, mountpoint, mclient=client)
    if ret != 0:
        tc.logger.error("mounting volume %s failed" % volname)
        _rc = False
    else:
        ret, _, _ = tc.run(client, "cp -r /etc %s" % mountpoint)
        if ret != 0:
            tc.logger.error("cp failed on the mountpoint")
            _rc = False
    umount_volume(client, mountpoint)
    ret = stop_volume(volname)
    if not ret:
        _rc = False
    ret = delete_volume(volname)
    if not ret:
        _rc = False
    return _rc
Example #2
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 #3
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 does not 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