summaryrefslogtreecommitdiffstats
path: root/TestUnits
diff options
context:
space:
mode:
authorShwetha-H-Panduranga <shwetha@gluster.com>2012-02-06 18:21:55 +0530
committerShwetha-H-Panduranga <shwetha@gluster.com>2012-03-05 12:19:03 +0530
commitc1a19ed78f8d00487819c01973a71ccb225a1e9d (patch)
tree9b5b49bedab1eaaf50358f9926d8d4d43c9d85a4 /TestUnits
parent94603abafce645dea8144b0c564805a44808fec9 (diff)
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 <shwetha@gluster.com>
Diffstat (limited to 'TestUnits')
-rw-r--r--TestUnits/cli/volume/replace_brick/testcases.py300
-rw-r--r--TestUnits/cli/volume/replace_brick/testcaseslist1
-rw-r--r--TestUnits/cli/volume/replace_brick/testunit.py46
3 files changed, 217 insertions, 130 deletions
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