diff options
Diffstat (limited to 'libs/parser/parser.py')
-rw-r--r-- | libs/parser/parser.py | 73 |
1 files changed, 30 insertions, 43 deletions
diff --git a/libs/parser/parser.py b/libs/parser/parser.py index 6695b19..8d9f32c 100644 --- a/libs/parser/parser.py +++ b/libs/parser/parser.py @@ -1,7 +1,7 @@ """ Parser module contains parsers for parsing: *) TestrunInfo file *) TestEnvironment file -*) Testcaselist file. +*) Testcaselist file. """ import ConfigParser @@ -9,6 +9,7 @@ import re from collections import OrderedDict import os from atfglobals import GlobalObj +import pdb def verify_necessary_options(cp, section, necessary_options): """Helper function for all parsers to verify necessary options @@ -32,7 +33,7 @@ def verify_necessary_options(cp, section, necessary_options): (option, section)) all_options_found = False return all_options_found - + def parse_testrun_info_file(filename): """ @@ -60,20 +61,20 @@ def parse_testrun_info_file(filename): unmatched_sections.append(section) else: matched_sections.append(matched_obj.group(0)) - + if not found_all_sections: for section in unmatched_sections: logger.error("Section %s Not Found" % section) logger.error("Please define the above sections in TestRunInfo File") return 1 - + else: for section in matched_sections: Map = {} if re.match("keywords", section, re.IGNORECASE): Map = dict(cp.items(section)) testruninfo_obj.addKeywords(Map['keywords']) - + elif re.match("testunits", section, re.IGNORECASE): Map = dict(cp.items(section)) testunits = Map.values() @@ -100,7 +101,7 @@ def parse_testcaseslist_file(filename): return_status = 1 testcaseslist = [] logger = GlobalObj.getLoggerObj() - + if not os.path.exists(filename): logger.error("%s file not found." % filename) return return_status @@ -132,7 +133,7 @@ def parse_testcaseslist_file(filename): if re.match("^(<|>|=|<=|>=)", testcase['version']): condition, version = (x.strip() for x in testcase['version'].split()) - + if ((condition == "<=" and glusterversion <= version) or (condition == ">=" and glusterversion >= version) or (condition == "<" and glusterversion < version) or @@ -148,8 +149,8 @@ def parse_testcaseslist_file(filename): selected_testcases.append(testcase['testcaseid']) return selected_testcases - - + + def parse_testenv_configfile(filename): """ parse testenv.cfg file @@ -165,10 +166,11 @@ def parse_testenv_configfile(filename): "client" : "addClient", "mountdevice" : "addMountDevice", "mount" : "addMount", + "slave" : "addSlave", "defaults" : "addDefaults"} - section_pattern = re.compile('(export|server|brick|volume|client|mountdevice|mount)*') + section_pattern = re.compile('(export|server|brick|volume|client|mountdevice|mount|slave)*') logger = GlobalObj.getLoggerObj() - + if not cp.read(filename): logger.error("Error reading file ' %s '.File Not found " % filename) return 1 @@ -187,12 +189,12 @@ def parse_testenv_configfile(filename): funcname = sections_to_functions_mapping[result] function = getattr(env, funcname) necessary_options = [] - + if re.match('export', result): necessary_options = ["dir"] if verify_necessary_options(cp, section, necessary_options): dir_ = items.pop('dir') - function(section, dir_, **items) + function(section, dir_, **items) else: return 1 @@ -220,7 +222,7 @@ def parse_testenv_configfile(filename): function(section, hostname, user, password, glusterversion, **items) else: - return 1 + return 1 elif re.match('brick', result): necessary_options = ["hostname", "path"] @@ -240,18 +242,18 @@ def parse_testenv_configfile(filename): replica = items.pop('replica') else: replica = None - + if (items.has_key('stripe') and items['stripe']): stripe = items.pop('stripe') else: stripe = None - + if (items.has_key('transporttype') and items['transporttype']): transporttype = items.pop('transporttype') else: transporttype = None - + function(section, volumename, replica, stripe, transporttype, bricks) else: @@ -271,35 +273,20 @@ def parse_testenv_configfile(filename): dir_ = items.pop('dir') device = items.pop('device') function(section, client, dir_, device, **items) + else: + return 1 + elif re.match('slave', result): + necessary_options = ["hostname","path"] + if verify_necessary_options(cp, section, necessary_options): + path = items.pop('path') + hostname = items.pop('hostname') + function(section, hostname, path, **items) else: return 1 - return 0 - - + return 0 + + __all__ = ['parse_testrun_info_file', 'parse_testcaseslist_file', 'parse_testenv_configfile'] - - - - - - - - - - - - - - - - - - - - - - - |