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 01AD95954 for ; Fri, 7 Aug 2015 09:45:26 +0200 (CEST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP; 07 Aug 2015 00:45:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,628,1432623600"; d="scan'208";a="621029011" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by orsmga003.jf.intel.com with ESMTP; 07 Aug 2015 00:45:12 -0700 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id t777jA9n032142; Fri, 7 Aug 2015 15:45:10 +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 t777j7Yh001837; Fri, 7 Aug 2015 15:45:09 +0800 Received: (from huilongx@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id t777j70m001833; Fri, 7 Aug 2015 15:45:07 +0800 From: "huilong,xu" To: dts@dpdk.org Date: Fri, 7 Aug 2015 15:44:56 +0800 Message-Id: <1438933497-1741-5-git-send-email-huilongx.xu@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1438933497-1741-1-git-send-email-huilongx.xu@intel.com> References: <1438933497-1741-1-git-send-email-huilongx.xu@intel.com> Subject: [dts] [PATCH V2 4/5] add case skip result when case running 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 07:45: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 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