From c1a19ed78f8d00487819c01973a71ccb225a1e9d Mon Sep 17 00:00:00 2001 From: Shwetha-H-Panduranga Date: Mon, 6 Feb 2012 18:21:55 +0530 Subject: Modifying the testcases to reflect the changes made to the return value from the libraries.Adding new module for replace brick libraries Change-Id: I3a886cd799d11b948eb87dd929546bdde3561dd7 Signed-off-by: Shwetha-H-Panduranga --- TestUnits/cli/volume/replace_brick/testcases.py | 300 ++++++++++++++++-------- 1 file changed, 206 insertions(+), 94 deletions(-) (limited to 'TestUnits/cli/volume/replace_brick/testcases.py') diff --git a/TestUnits/cli/volume/replace_brick/testcases.py b/TestUnits/cli/volume/replace_brick/testcases.py index 06b7867..385d6c6 100644 --- a/TestUnits/cli/volume/replace_brick/testcases.py +++ b/TestUnits/cli/volume/replace_brick/testcases.py @@ -1,57 +1,63 @@ """testcases for cli/volume/replace_brick """ import os - import sys import time -import glusterutils +import parser +import afrutils +import atfutils import clientutils +import glusterutils import hostutils -import atfutils -import serverutils import managerutils -import parser +import rbutils +import serverutils +import validate from atfglobals import GlobalObj +from atfutils import commands filename = os.path.abspath(__file__) dir_path = os.path.dirname(filename) - -operation_success_messages = { - 'start' : "started successfully", - 'commit' : "commit successful", - 'status' : "Migration complete", - } +urandom = "/dev/urandom" def initialize(): """ + * Parse the test environment configuration file + * SSH to all Servers/Clients specified in testenv file """ 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_status = parser.parse_testenv_configfile(testenv_abspath) + if return_status is not 0: return return_status - if managerutils.ssh_connect_allhosts(): + + return_status = managerutils.ssh_connect_allhosts() + if return_status is not 0: return return_status return 0 def setup(): """ + * Set Active Volume """ - return_status = 1 - if atfutils.set_active_volume("volume1"): + return_status = atfutils.set_active_volume("volume1") + if return_status is not 0: return return_status + return 0 def reset_testenv(): - return_status = 1 - if clientutils.umountall(): - return return_status + output = clientutils.umountall() + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + glusterutils.volume_stop("server1", force=True) glusterutils.volume_delete("server1") glusterutils.glusterd_stop_allservers() @@ -62,17 +68,35 @@ def reset_testenv(): 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 + output = glusterutils.glusterd_start_allservers(force=True) + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + + output = glusterutils.peer_probe("server1") + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + + output = glusterutils.create_brick_allservers() + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + + output = glusterutils.volume_create("server1") + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + + output = glusterutils.volume_set("server1", + key="diagnostics.client-log-level", + value="DEBUG") + + output = glusterutils.volume_start("server1") + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + return 0 def bug2909(): @@ -81,99 +105,187 @@ def bug2909(): 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_status = initialize() + if return_status is not 0: return return_status - if reset_testenv(): - return return_status - if setup_testenv(): + return_status = setup() + if return_status is not 0: 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_status = reset_testenv() + if return_status is not 0: return return_status - time.sleep(30) - output = glusterutils.volume_replacebrick("server1", "brick1", - "brick3", "status") - if atfutils.validate_output(output, 0, expect_message): + return_status = setup_testenv() + if return_status is not 0: return return_status - output = glusterutils.volume_replacebrick("server1", "brick1", - "brick3", "commit") - if atfutils.validate_output(output, 0, "commit successful"): - return return_status + output = glusterutils.volume_replacebrick("server1", "brick1", "brick3", + "start") + expected_message = "started successfully" + validation_status = atfutils.validate_output(output, 0, expected_message) + if validation_status is not 0: + return validation_status + + output = glusterutils.volume_replacebrick("server1", "brick1", "brick3", + "status") + expected_message = "Number of files migrated = 0 Migration complete" + validation_status = atfutils.validate_output(output, 0, expected_message) + if validation_status is not 0: + return validation_status + + output = glusterutils.volume_replacebrick("server1", "brick1", "brick3", + "commit") + expected_message = "commit successful" + validation_status = atfutils.validate_output(output, 0, expected_message) + if validation_status is not 0: + return validation_status return 0 def bug3033(): """ + Changes to replace-brick and syntask interface """ - return_status = 1 - - if initialize(): - return return_status - if setup(): + return_status = initialize() + if return_status is not 0: return return_status - if reset_testenv(): + return_status = setup() + if return_status is not 0: 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_status = reset_testenv() + if return_status is not 0: 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_status = setup_testenv() + if return_status is not 0: return return_status - bricks = ['brick2', 'brick3'] + output = clientutils.mount("mount1") + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + + command = "mkdir -p {1..50}" + output = clientutils.execute_on_mount("mount1", command) + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + + output = glusterutils.volume_replacebrick("server1", "brick1", "brick3", + "start") + expected_message = "started successfully" + validation_status = atfutils.validate_output(output, 0, expected_message) + if validation_status is not 0: + return validation_status + + timeout = 30 + rb_completion_status = rbutils.wait_till_rb_completes(timeout, "server1", + "brick1", "brick3") + if rb_completion_status is not 0: + return rb_completion_status + + output = glusterutils.volume_replacebrick("server1", "brick1", "brick3", + "commit") + expected_message = "commit successful" + validation_status = atfutils.validate_output(output, 0, expected_message) + if validation_status is not 0: + return validation_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 + expected_output = "No such attribute" + validation_status = atfutils.validate_output(output, 0, + expected_output, + stream="stderr") + if validation_status is not 0: + return validation_status + + return 0 + +def bug3036(): + """ + self-heal problem in replace-brick + """ + input_file = urandom + file1 = "f1" + mounts = ["mount1"] + bricks = ["brick1", "brick2"] + new_bricks = ["brick2", "brick3"] + + return_status = initialize() + if return_status is not 0: + return return_status + + return_status = setup() + if return_status is not 0: + return return_status + + return_status = reset_testenv() + if return_status is not 0: + return return_status + + return_status = setup_testenv() + if return_status is not 0: + return return_status + + output = clientutils.mount("mount1") + assert_success_status = atfutils.assert_success(output["exitstatus"]) + if assert_success_status is not 0: + return assert_success_status + + output_file = file1 + command = ' '.join([commands['dd'], "if="+input_file, "of="+output_file, + "bs=2M", "count=1024"]) + output = clientutils.execute_on_mount("mount1", command) + expected_output = "2147483648" + validation_status = atfutils.validate_output(output, 0, expected_output, + stream="stderr") + if validation_status is not 0: + return validation_status + + command = ' '.join([commands['ls'], "-l", output_file]) + output = clientutils.execute_on_mount("mount1", command) + expected_output = "2147483648" + validation_status = atfutils.validate_output(output, 0, expected_output) + if validation_status is not 0: + return validation_status + return_status = validate.validate_on_bricks(bricks, command, 0, + expected_output) + if return_status is not 0: + return return_status + + output = glusterutils.volume_replacebrick("server1", "brick1", "brick3", + "start") + expected_message = "started successfully" + validation_status = atfutils.validate_output(output, 0, expected_message) + if validation_status is not 0: + return validation_status + + timeout = 60 + rb_completion_status = rbutils.wait_till_rb_completes(timeout, "server1", + "brick1", "brick3") + if rb_completion_status is not 0: + return rb_completion_status + + output = glusterutils.volume_replacebrick("server1", "brick1", "brick3", + "commit") + expected_message = "commit successful" + validation_status = atfutils.validate_output(output, 0, expected_message) + if validation_status is not 0: + return validation_status + + validation_status = validate.validate_md5sums(mounts, new_bricks) + if validation_status is not 0: + return validation_status return 0 -- cgit