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 ++++++++++++++++------- TestUnits/cli/volume/replace_brick/testcaseslist | 1 + TestUnits/cli/volume/replace_brick/testunit.py | 46 +--- 3 files changed, 217 insertions(+), 130 deletions(-) (limited to 'TestUnits/cli/volume') 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 diff --git a/TestUnits/cli/volume/replace_brick/testcaseslist b/TestUnits/cli/volume/replace_brick/testcaseslist index a2abcc9..b49d780 100644 --- a/TestUnits/cli/volume/replace_brick/testcaseslist +++ b/TestUnits/cli/volume/replace_brick/testcaseslist @@ -4,3 +4,4 @@ ################################################################## bug2909 : >= 3 : art bug3033 : >= 3 : art +bug3036 : >= 3 : art diff --git a/TestUnits/cli/volume/replace_brick/testunit.py b/TestUnits/cli/volume/replace_brick/testunit.py index 222140c..9ec28d2 100644 --- a/TestUnits/cli/volume/replace_brick/testunit.py +++ b/TestUnits/cli/volume/replace_brick/testunit.py @@ -13,32 +13,6 @@ reload(testcases) filename = os.path.abspath(__file__) dir_path = os.path.dirname(filename) -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 execute(): """ """ @@ -67,20 +41,18 @@ def execute(): for testcase in testcaseslist: function_obj = getattr(testcases, testcase) if function_obj: - logger.debug("Starting Test: ' %s '" % testcase) + logger.info("Starting Test: %s" % testcase) return_status = function_obj() - if return_status: - logger.debug("TestCase '%s' Failed" % testcase) + if return_status is not 0: + logger.info("TestCase %s Failed" % testcase) failedtestcases +=1 else: - logger.debug("TestCase '%s' Passed" % testcase) + logger.info("TestCase %s Passed" % testcase) passedtestcases +=1 - logger.debug("Ending Test: '%s'" % testcase) + logger.info("Ending Test: %s" % testcase) else: logger.info("TestCase %s not defined in 'testcases' module" % testcase) - continue - logger.info("Selected %d : Passed %d, Failed %d" % (selectedtestcases, @@ -99,10 +71,12 @@ def cleanup(): def main(): """ """ - return_status = 1 - if execute(): + return_status = execute() + if return_status is not 0: return return_status - if cleanup(): + + return_status = cleanup() + if return_status is not 0: return return_status return 0 -- cgit