test suite reviews and discussions
 help / color / mirror / Atom feed
From: Yong Liu <yong.liu@intel.com>
To: dts@dpdk.org
Subject: [dts] [PATCH 1/3] Support check testing environment for test case
Date: Wed, 23 Sep 2015 14:40:32 +0800	[thread overview]
Message-ID: <1442990434-17295-1-git-send-email-yong.liu@intel.com> (raw)

From: Marvin Liu <yong.liu@intel.com>

This module will load supported cases information from dpdk_test_case_checklist.xls.
When checked environment not support this case, function case_support will return False.

Signed-off-by: Marvin Liu <yong.liu@intel.com>

diff --git a/framework/checkCase.py b/framework/checkCase.py
index b2e79a0..9e1dca8 100644
--- a/framework/checkCase.py
+++ b/framework/checkCase.py
@@ -5,6 +5,10 @@ from settings import nic_name_from_type
 filter_file = r'./conf/dpdk_test_case_checklist.xls'
 filter_case = []
 check_function_dict = {}
+support_file = r'./conf/dpdk_support_test_case.xls'
+support_case = []
+support_function_dict = {}
+
 
 class parse_file():
 
@@ -12,7 +16,10 @@ class parse_file():
         try:
             self.book = xlrd.open_workbook(filter_file)
             self.sheet = self.book.sheet_by_index(0)
+            self.support_book = xlrd.open_workbook(support_file)
+            self.support_sheet = self.support_book.sheet_by_index(0)
             self.init_check_function_dict()
+            self.init_support_function_dict()
         except:
             pass
 
@@ -20,22 +27,36 @@ class parse_file():
         '''
         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']:
+        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       
+                check_function_dict[row_data[i].lower()] = i
+
+    def init_support_function_dict(self):
+        '''
+        init support case function, and skip case message.
+        '''
+        row_data = self.support_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 support_function_dict:
+                    support_function_dict['message'] = [i]
+                else:
+                    support_function_dict['message'].append(i)
+            else:
+                support_function_dict[row_data[i].lower()] = i
 
     def set_filter_case(self):
-        for row in range(self.sheet.nrows):   
+        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):
+            for i in range(1, len(row_data) - 2):
                 tmp_filter.append(row_data[i].split(','))
 
             tmp_filter.append(row_data[-2])
@@ -43,12 +64,27 @@ class parse_file():
 
             filter_case.append(tmp_filter)
 
+    def set_support_case(self):
+        for row in range(self.support_sheet.nrows):
+            row_data = self.support_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])
+
+            support_case.append(tmp_filter)
+
+
 class check_case_skip():
+
     def __init__(self, Dut):
         self.dut = Dut
         self.comments = ''
 
-    def check_os(self,os_type):
+    def check_os(self, os_type):
         if 'all' == os_type[0].lower():
             return True
         dut_os_type = self.dut.get_os_type()
@@ -66,7 +102,7 @@ class check_case_skip():
         else:
             return False
 
-    def check_target(self,target):
+    def check_target(self, target):
         if 'all' == target[0].lower():
             return True
         if self.dut.target in target:
@@ -82,7 +118,7 @@ class check_case_skip():
                 for key in check_function_dict.keys():
                     try:
                         if 'message' == key:
-                            continue 
+                            continue
                         check_function = getattr(self, 'check_%s' % key)
                     except:
                         print "can't check %s type" % key
@@ -91,10 +127,67 @@ class check_case_skip():
                     else:
                         skip_flage = False
                         break
-                if skip_flage: 
+
+                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
+
+
+class check_case_support(check_case_skip):
+
+    def __init__(self, Dut):
+        self.dut = Dut
+        self.comments = ''
+
+    def case_support(self, case_name):
+        support_flag = True
+        for rule in support_case[1:]:
+            # check case name
+            if case_name == rule[0]:
+                for key in support_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[support_function_dict[key]]):
+                        support_flag = True
+                    else:
+                        support_flag = False
+                        break
+
+                if support_flag is False:
+                    if 'message' in support_function_dict:
+                        for i in support_function_dict['message']:
+                            self.comments += '%s,' % rule[i]
+                    return support_flag
+
+        return support_flag
+
+
+class simple_dut(object):
+
+    def __init__(self, os='', target='', nic=''):
+        self.ports_info = [{}]
+        self.os = os
+        self.target = target
+        self.ports_info[0]['type'] = nic
+
+    def get_os_type(self):
+        return self.os
+
+if __name__ == "__main__":
+    dut = simple_dut(
+        os="linux", target='x86_64-native-linuxapp-gcc', nic='8086:1572')
+    check_case = parse_file()
+    check_case.set_filter_case()
+    check_case.set_support_case()
+    check_case_inst = check_case_skip(dut)
+    support_case_inst = check_case_support(dut)
+    print support_case_inst.case_support("l2pkt_detect")
+    print support_case_inst.comments
-- 
1.9.3

             reply	other threads:[~2015-09-23  6:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-23  6:40 Yong Liu [this message]
2015-09-23  6:40 ` [dts] [PATCH 2/3] Add dpdk support case list execl file Yong Liu
2015-09-23  6:40 ` [dts] [PATCH 3/3] Framework: enable test case support check Yong Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1442990434-17295-1-git-send-email-yong.liu@intel.com \
    --to=yong.liu@intel.com \
    --cc=dts@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).