diff options
Diffstat (limited to 'TestUnits/cli/volume/replace_brick/testcases.py')
-rw-r--r-- | TestUnits/cli/volume/replace_brick/testcases.py | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/TestUnits/cli/volume/replace_brick/testcases.py b/TestUnits/cli/volume/replace_brick/testcases.py new file mode 100644 index 0000000..06b7867 --- /dev/null +++ b/TestUnits/cli/volume/replace_brick/testcases.py @@ -0,0 +1,179 @@ +"""testcases for cli/volume/replace_brick +""" +import os + +import sys +import time +import glusterutils +import clientutils +import hostutils +import atfutils +import serverutils +import managerutils +import parser +from atfglobals import GlobalObj + +filename = os.path.abspath(__file__) +dir_path = os.path.dirname(filename) + +operation_success_messages = { + 'start' : "started successfully", + 'commit' : "commit successful", + 'status' : "Migration complete", + } + +def initialize(): + """ + """ + logger = GlobalObj.getLoggerObj() + return_status = 1 + testenv_file = GlobalObj.testenv_file + testenv_abspath = os.path.join(dir_path, testenv_file) + + if not (os.path.isfile(testenv_abspath)): + logger.error("%s not found in %s" % (testenv_file, dir_path)) + + if parser.parse_testenv_configfile(testenv_abspath): + return return_status + if managerutils.ssh_connect_allhosts(): + return return_status + + return 0 + +def setup(): + """ + """ + return_status = 1 + if atfutils.set_active_volume("volume1"): + return return_status + return 0 + +def reset_testenv(): + return_status = 1 + if clientutils.umountall(): + return return_status + glusterutils.volume_stop("server1", force=True) + glusterutils.volume_delete("server1") + glusterutils.glusterd_stop_allservers() + glusterutils.glusterd_remove_dir_allservers() + glusterutils.glusterd_remove_logs_allservers() + return 0 + +def setup_testenv(): + """ + """ + return_status = 1 + if glusterutils.glusterd_start_allservers(force=True): + return return_status + if glusterutils.peer_probe("server1"): + return return_status + if glusterutils.create_brick_allservers(): + return return_status + if glusterutils.volume_create("server1"): + return return_status + if glusterutils.volume_start("server1"): + return return_status + return 0 + +def bug2909(): + """ + Note: for replace-brick , we need the fuse module on the servers. + The replace-brick 'start' operation shows successful. + But the replace-brick 'status' operation fails. + """ + return_status = 1 + + if initialize(): + return return_status + if setup(): + return return_status + + if reset_testenv(): + return return_status + if setup_testenv(): + return return_status + + + expect_message = "Number of files migrated = 0 Migration complete" + + output = glusterutils.volume_replacebrick("server1", "brick1", + "brick3", "start") + if atfutils.validate_output(output, 0, "started successfully"): + return return_status + + time.sleep(30) + output = glusterutils.volume_replacebrick("server1", "brick1", + "brick3", "status") + if atfutils.validate_output(output, 0, expect_message): + return return_status + + output = glusterutils.volume_replacebrick("server1", "brick1", + "brick3", "commit") + if atfutils.validate_output(output, 0, "commit successful"): + return return_status + + return 0 + +def bug3033(): + """ + """ + return_status = 1 + + if initialize(): + return return_status + if setup(): + return return_status + + if reset_testenv(): + return return_status + if setup_testenv(): + return return_status + + if clientutils.mount("mount1"): + return 1 + + base_command = "mkdir -p " + for x in range(1, 50): + command = base_command + str(x) + output = clientutils.execute_on_mount("mount1", command) + if output["exitstatus"]: + return return_status + + output = glusterutils.volume_replacebrick("server1", "brick1", + "brick3", "start") + + if atfutils.validate_output(output, 0, "started successfully"): + return return_status + + sleep_time = 10 + timeout = 12 + + while timeout: + time.sleep(sleep_time) + output = glusterutils.volume_replacebrick("server1", "brick1", + "brick3", "status") + if atfutils.validate_output(output, 0, "migration complete"): + timeout -= 1 + continue + else: + break + + output = glusterutils.volume_replacebrick("server1", "brick1", + "brick3", "commit") + if atfutils.validate_output(output, 0, "commit successful"): + return return_status + + bricks = ['brick2', 'brick3'] + + commands = ['getfattr -n trusted.glusterfs.pump-source-complete ', + 'getfattr -n trusted.glusterfs.pump-sink-complete ', + 'getfattr -n trusted.glusterfs.pump-path '] + + for brick in bricks: + for command in commands: + command = command + "<" + brick + ".path>" + output = serverutils.execute_on_brick(brick, command) + if atfutils.validate_output(output, 0, "No such attribute", stream="stderr"): + return return_status + + return 0 |