summaryrefslogtreecommitdiffstats
path: root/TestUnits/cli/volume/replace_brick/testcases.py
diff options
context:
space:
mode:
Diffstat (limited to 'TestUnits/cli/volume/replace_brick/testcases.py')
-rw-r--r--TestUnits/cli/volume/replace_brick/testcases.py179
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