From 27b820afb57381e9c61e258f470f2a1c5227581e Mon Sep 17 00:00:00 2001 From: Shwetha-H-Panduranga Date: Tue, 20 Dec 2011 22:03:08 +0530 Subject: Automating Bug2645, Bug2771, Bug2725 --- TestUnits/cli/volume/top/testcases.py | 212 +++++++++++++++++++++++++++++++++ TestUnits/cli/volume/top/testcaseslist | 20 ++++ TestUnits/cli/volume/top/testunit.py | 114 ++++++++++++++++++ 3 files changed, 346 insertions(+) create mode 100644 TestUnits/cli/volume/top/testcases.py create mode 100644 TestUnits/cli/volume/top/testcaseslist create mode 100644 TestUnits/cli/volume/top/testunit.py (limited to 'TestUnits/cli/volume/top') 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 {[open|read|write|opendir|readdir] |[read-perf|write-perf bs count ]} [brick ] [list-cnt ]" + +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 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 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 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 write-perf list-cnt 10 brick : 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 read-perf list-cnt 99 bs 37 brick :" + 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 read-perf list-cnt 99 bs 37 brick : 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 read-perf list-cnt 99 count 37 brick : 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 read-perf bs 1024 count 37 brick : 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 read-perf list-cnt 10 count 37 brick : 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 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 open") + commands.append("gluster volume top read") + commands.append("gluster volume top 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 -- cgit