From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id A647B5682 for ; Fri, 7 Aug 2015 08:03:26 +0200 (CEST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP; 06 Aug 2015 23:03:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,628,1432623600"; d="scan'208";a="778649008" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by fmsmga002.fm.intel.com with ESMTP; 06 Aug 2015 23:03:25 -0700 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id t7763Ngw008324; Fri, 7 Aug 2015 14:03:23 +0800 Received: from shecgisg003.sh.intel.com (localhost [127.0.0.1]) by shecgisg003.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id t7763KO5000917; Fri, 7 Aug 2015 14:03:23 +0800 Received: (from huilongx@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id t7763KY6000913; Fri, 7 Aug 2015 14:03:20 +0800 From: "huilong,xu" To: dts@dpdk.org Date: Fri, 7 Aug 2015 14:03:09 +0800 Message-Id: <1438927390-855-5-git-send-email-huilongx.xu@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1438927390-855-1-git-send-email-huilongx.xu@intel.com> References: <1438927390-855-1-git-send-email-huilongx.xu@intel.com> Subject: [dts] [PATCH V1 4/5] add checkCase module X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Aug 2015 06:03:27 -0000 From: huilong xu 1. add parse_file class for get check case info form execl file, and send check function list from tabel head. 2. add case_skip class for check case is skip or running. a)from talbe head get check function list. excep "case name", "wq request", "comments" b)when add a new check rule in excel file, you must add a check function in this clase, the function name is "check_rule" and parameter is a list. eg, add kernel rule in excel table head. you need add function check_kernerl(self,kernel_type) if you not add the function, it will ignore this rule. Signed-off-by: huilong xu --- framework/checkCase.py | 100 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 100 insertions(+), 0 deletions(-) create mode 100644 framework/checkCase.py diff --git a/framework/checkCase.py b/framework/checkCase.py new file mode 100644 index 0000000..b2e79a0 --- /dev/null +++ b/framework/checkCase.py @@ -0,0 +1,100 @@ +import xlrd + +from settings import nic_name_from_type + +filter_file = r'./conf/dpdk_test_case_checklist.xls' +filter_case = [] +check_function_dict = {} + +class parse_file(): + + def __init__(self): + try: + self.book = xlrd.open_workbook(filter_file) + self.sheet = self.book.sheet_by_index(0) + self.init_check_function_dict() + except: + pass + + def init_check_function_dict(self): + ''' + init check case functio, and skip case message. + ''' + row_data = self.sheet.row_values(0) + for i in range(1,len(row_data)): + if row_data[i].lower() in ['wq number', 'comments']: + if 'message' not in check_function_dict: + check_function_dict['message'] = [i] + else: + check_function_dict['message'].append(i) + else: + check_function_dict[row_data[i].lower()] = i + + def set_filter_case(self): + for row in range(self.sheet.nrows): + row_data = self.sheet.row_values(row) + # add case name + tmp_filter = [row_data[0]] + for i in range(1,len(row_data) - 2): + tmp_filter.append(row_data[i].split(',')) + + tmp_filter.append(row_data[-2]) + tmp_filter.append(row_data[-1]) + + filter_case.append(tmp_filter) + +class check_case_skip(): + def __init__(self, Dut): + self.dut = Dut + self.comments = '' + + def check_os(self,os_type): + if 'all' == os_type[0].lower(): + return True + dut_os_type = self.dut.get_os_type() + if dut_os_type in os_type: + return True + else: + return False + + def check_nic(self, nic_type): + if 'all' == nic_type[0].lower(): + return True + dut_nic_type = nic_name_from_type(self.dut.ports_info[0]['type']) + if dut_nic_type in nic_type: + return True + else: + return False + + def check_target(self,target): + if 'all' == target[0].lower(): + return True + if self.dut.target in target: + return True + else: + return False + + def case_skip(self, case_name): + skip_flage = False + for rule in filter_case[1:]: + # check case name + if case_name == rule[0]: + for key in check_function_dict.keys(): + try: + if 'message' == key: + continue + check_function = getattr(self, 'check_%s' % key) + except: + print "can't check %s type" % key + if check_function(rule[check_function_dict[key]]): + skip_flage = True + else: + skip_flage = False + break + if skip_flage: + if 'message' in check_function_dict: + for i in check_function_dict['message']: + self.comments += '%s,' % rule[i] + return skip_flage + + return skip_flage -- 1.7.4.4