summaryrefslogtreecommitdiffstats
path: root/TestUnits
diff options
context:
space:
mode:
Diffstat (limited to 'TestUnits')
-rw-r--r--TestUnits/cli/volume/top/testcases.py212
-rw-r--r--TestUnits/cli/volume/top/testcaseslist20
-rw-r--r--TestUnits/cli/volume/top/testunit.py114
3 files changed, 346 insertions, 0 deletions
diff --git a/TestUnits/cli/volume/top/testcases.py b/TestUnits/cli/volume/top/testcases.py
new file mode 100644
index 0000000..8a8a289
--- /dev/null
+++ b/TestUnits/cli/volume/top/testcases.py
@@ -0,0 +1,212 @@
+"""testcases for cli/volume/top
+"""
+
+import sys
+import time
+import glusterutils
+import clientutils
+import clitestsutils
+import hostutils
+import atfutils
+
+volume_top_usage = "Usage: volume top <VOLNAME> {[open|read|write|opendir|readdir] |[read-perf|write-perf bs <size> count <count>]} [brick <brick>] [list-cnt <count>]"
+
+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
+ if clientutils.mount("mount1"):
+ return return_status
+ return 0
+
+def validate_output(output, expected_exit_status, expected_output):
+ """
+ """
+ if expected_exit_status is 1:
+ exit_status = atfutils.assert_failure(**output)
+ else:
+ exit_status = atfutils.assert_success(**output)
+
+ output_status = atfutils.expect(str(output['stdoutdata']),
+ expected_output)
+ if output_status is True and (not exit_status):
+ return 0
+ else:
+ return 1
+
+def bug2645a():
+ """
+ """
+ command = "gluster volume top <volume1.volumename> write-perf bs 0 count 100"
+ expected_output = "block size should be an integer greater than zero"
+ expected_exit_status = 1
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+
+def bug2645b():
+ """
+ """
+ command = "gluster volume top <volume1.volumename> write-perf bs 1024 count 0"
+ expected_output = "count should be an integer greater than zero"
+ expected_exit_status = 1
+
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+def bug2645c():
+ """
+ """
+ command = "gluster volume top <volume1.volumename> write-perf bs 1024 count 100"
+ expected_output = ""
+ expected_exit_status = 0
+
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+def bug2771a():
+ """
+ """
+ command = "gluster volume top <volume1.volumename> write-perf list-cnt 10 brick <brick1.hostname>:<brick1.path> bs 2048"
+ expected_output = volume_top_usage
+ expected_exit_status = 1
+
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+def bug2771b():
+ """
+ """
+ command = "gluster volume top <volume1.volumename> read-perf list-cnt 99 bs 37 brick <brick1.hostname>:<brick1.path>"
+ expected_output = volume_top_usage
+ expected_exit_status = 1
+
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+def bug2771c():
+ """
+ """
+ command = "gluster volume top <volume1.volumename> read-perf list-cnt 99 bs 37 brick <brick1.hostname>:<brick1.path> bs 1024"
+ expected_output = volume_top_usage
+ expected_exit_status = 1
+
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+
+def bug2771d():
+ """
+ """
+ command = "gluster volume top <volume1.volumename> read-perf list-cnt 99 count 37 brick <brick1.hostname>:<brick1.path> count 10"
+ expected_output = volume_top_usage
+ expected_exit_status = 1
+
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+
+def bug2771e():
+ command = "gluster volume top <volume1.volumename> read-perf bs 1024 count 37 brick <brick1.hostname>:<brick1.path> list-cnt 10"
+ expected_output = ""
+ expected_exit_status = 0
+
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+def bug2771f():
+ """
+ """
+ command = "gluster volume top <volume1.volumename> read-perf list-cnt 10 count 37 brick <brick1.hostname>:<brick1.path> bs 1024"
+ expected_output = ""
+ expected_exit_status = 0
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+def bug2725a():
+ """
+ """
+ dir_name = 'a'
+ for i in range(1, 255):
+ dir_name += 'a'
+ pass
+
+ commands = []
+ commands.append("echo 'Hello World' > " + dir_name)
+ commands.append("find . | xargs touch")
+ for command in commands:
+ return_status = clientutils.execute_on_mount("mount1", command)
+ if return_status:
+ return return_status
+
+ command = "gluster volume top <volume1.volumename> open"
+ expected_output = ""
+ expected_exit_status = 0
+ output = hostutils.execute_command("server1", command)
+ return validate_output(output, expected_exit_status, expected_output)
+
+def bug2725b():
+ """
+ """
+ testcase_failed = False
+ dir_name = 'a'
+ for i in range(1, 255):
+ dir_name += 'a'
+ pass
+
+ commands = []
+ commands.append("echo 'Hello World' > " + dir_name)
+ commands.append("find . | xargs touch")
+ for command in commands:
+ return_status = clientutils.execute_on_mount("mount1", command)
+ if return_status:
+ return return_status
+
+ commands = []
+ commands.append("gluster volume top <volume1.volumename> open")
+ commands.append("gluster volume top <volume1.volumename> read")
+ commands.append("gluster volume top <volume1.volumename> write-perf bs 2048 count 1000 list-cnt 100")
+ expected_output = "Unable to decode response"
+ expected_exit_status = 1
+ for command in commands:
+ output = hostutils.execute_command("server1", command)
+ return_status = validate_output(output, expected_exit_status, expected_output)
+ if return_status:
+ testcase_failed = True
+
+ if testcase_failed:
+ return 1
+ else:
+ return 0
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TestUnits/cli/volume/top/testcaseslist b/TestUnits/cli/volume/top/testcaseslist
new file mode 100644
index 0000000..8545de2
--- /dev/null
+++ b/TestUnits/cli/volume/top/testcaseslist
@@ -0,0 +1,20 @@
+#################################################################
+# List of testcases for the self-heal feature of afr.
+# TestCaseId : Version : Keyword
+##################################################################
+bug2645a : >= 3 : art
+bug2645b : >= 3 : art
+bug2645c : >= 3 : art
+bug2771a : >= 3 : art
+bug2771b : >= 3 : art
+bug2771c : >= 3 : art
+bug2771d : >= 3 : art
+bug2771e : >= 3 : art
+bug2771f : >= 3 : art
+bug2725a : >= 3.3 : art
+bug2725b : 3.2 - 3.2.5 : art
+
+
+
+
+
diff --git a/TestUnits/cli/volume/top/testunit.py b/TestUnits/cli/volume/top/testunit.py
new file mode 100644
index 0000000..f0f6b5d
--- /dev/null
+++ b/TestUnits/cli/volume/top/testunit.py
@@ -0,0 +1,114 @@
+"""testunit.py is the main module for the testunit.
+
+This module "main" function is called from atfexecute to execute the testunit.
+"""
+from atfglobals import GlobalObj
+import os
+import parser
+import atfutils
+import managerutils
+import testcases
+
+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():
+ """
+ """
+ logger = GlobalObj.getLoggerObj()
+ return_status = 1
+ testcaseslist_file = GlobalObj.testcaseslist_file
+ testcaseslist_abspath = os.path.join(dir_path, testcaseslist_file)
+
+ if not (os.path.isfile(testcaseslist_abspath)):
+ logger.error("%s not found in %s" % (testcaseslist_file, dir_path))
+ return return_status
+
+ else:
+ testcaseslist = []
+ testcaseslist = parser.parse_testcaseslist_file(testcaseslist_abspath)
+ if not testcaseslist:
+ logger.error("Skipping TestUnit %s. No testcases to execute"
+ % dir_path)
+ return 0
+ else:
+ passedtestcases = 0
+ failedtestcases = 0
+ selectedtestcases = len(testcaseslist)
+
+ logger.info("Starting TestUnit: '%s' test execution" % dir_path)
+ testcases.reset_testenv()
+ testcases.setup_testenv()
+ for testcase in testcaseslist:
+ function_obj = getattr(testcases, testcase)
+ if function_obj:
+ logger.debug("Starting Test: ' %s '" % testcase)
+ return_status = function_obj()
+ if return_status:
+ logger.debug("TestCase '%s' Failed" % testcase)
+ failedtestcases +=1
+ else:
+ logger.debug("TestCase '%s' Passed" % testcase)
+ passedtestcases +=1
+ logger.debug("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,
+ passedtestcases,
+ failedtestcases))
+
+ logger.info("Ending TestUnit: '%s' test execution" % dir_path)
+
+ return 0
+
+def cleanup():
+ """
+ """
+ pass
+
+def main():
+ """
+ """
+ return_status = 1
+ if initialize():
+ return return_status
+ if setup():
+ return return_status
+ if execute():
+ return return_status
+ if cleanup():
+ return return_status
+
+ return 0