diff -r 7685cec9fd3c -r f2ddfa555b0f doc/api/python/ats3.testconfigurator-pysrc.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/api/python/ats3.testconfigurator-pysrc.html Fri Sep 11 11:54:49 2009 +0100 @@ -0,0 +1,836 @@ + + + + + ats3.testconfigurator + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package ats3 :: + Module testconfigurator + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module ats3.testconfigurator

+
+  1  # -*- encoding: latin-1 -*- 
+  2   
+  3  #============================================================================  
+  4  #Name        : testconfigurator.py  
+  5  #Part of     : Helium  
+  6   
+  7  #Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+  8  #All rights reserved. 
+  9  #This component and the accompanying materials are made available 
+ 10  #under the terms of the License "Eclipse Public License v1.0" 
+ 11  #which accompanies this distribution, and is available 
+ 12  #at the URL "http://www.eclipse.org/legal/epl-v10.html". 
+ 13  # 
+ 14  #Initial Contributors: 
+ 15  #Nokia Corporation - initial contribution. 
+ 16  # 
+ 17  #Contributors: 
+ 18  # 
+ 19  #Description: 
+ 20  #=============================================================================== 
+ 21   
+ 22   
+ 23  from path import path 
+ 24  import ats3.parsers as parser 
+ 25  import logging 
+ 26  import os 
+ 27  import re 
+ 28  import subprocess 
+ 29   
+ 30  _logger = logging.getLogger('ats3') 
+ 31   
+
32 -class Ats3ComponentParser(object): +
33 """ + 34 Parse Symbian SW component for ATS3 testing related information. + 35 + 36 Parses a component's source directories for testing related settings and + 37 files, and generates a TestPlan out of the findings. + 38 + 39 """ + 40 +
41 - def __init__(self, config): +
42 + 43 self.target_platform = config.target_platform + 44 self.pkg_parser = parser.PkgFileParser(self.target_platform.replace(" ", "_")+".pkg") + 45 + 46 self.bld_parser = parser.BldFileParser() + 47 self.mmp_parser = parser.MmpFileParser() + 48 + 49 self.data_dirs = config.data_dir + 50 self.flash_images = [path(p) for p in config.flash_images] + 51 self.tsrc_dir = None + 52 self.build_drive = config.build_drive + 53 self.target_platform = config.target_platform + 54 self.sis_files = config.sis_files + 55 self.cfg_harness = config.harness + 56 self.test_timeout = config.test_timeout + 57 self.trace_enabled = config.trace_enabled + 58 self.excludable_dlls = [] + 59 self.custom_dir = None +
60 +
61 - def insert_testset_stif(self, src_dst, pkg_paths): +
62 """Inserts test set data to test plan for stif""" + 63 if not pkg_paths: + 64 try: + 65 + 66 tsrc_testdata_files = self.tsrc_data_files() + 67 for data_file in tsrc_testdata_files: + 68 if "\\mmc\\" in data_file.lower(): + 69 src_dst.append((data_file, path(r"e:\testing\data").joinpath(data_file.name), "data")) + 70 elif "\\c\\" in data_file.lower(): + 71 src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data")) + 72 else: + 73 src_dst.append((data_file, path(r"c:\testing\data").joinpath(data_file.name), "data")) + 74 except OSError: + 75 _logger.warning("No testdata folder" ) + 76 tsrc_testdata_files = None + 77 + 78 else: + 79 try: + 80 src_dst = pkg_paths + 81 except OSError: + 82 _logger.warning("No pkg file in tsrc/group directory ( %s )" % self.tsrc_pkg_dir) + 83 src_dst = [] + 84 except IndexError: + 85 _logger.warning("No pkg file in tsrc/group directory ( %s )" % self.tsrc_pkg_dir) + 86 src_dst = [] + 87 + 88 return src_dst +
89 +
90 - def insert_test_set(self, test_plan, tsrc_dir, _paths_dict_): +
91 """Parse tsrc directory, storing data into the test plan.""" + 92 self.tsrc_dir = path(tsrc_dir) # Store current test source dir. + 93 tsrc_testdata_files = [] + 94 tsrc_config_files = [] + 95 self.custom_dir = None + 96 engine_ini_file = None + 97 test_harness = self.cfg_harness + 98 src_dst = [] + 99 pmd_files = [] +100 trace_activation_files = [] +101 if not os.path.exists( self.tsrc_dir ): +102 _logger.error("Missing tsrc directory: %s", self.tsrc_dir) +103 else: +104 self.custom_dir = self.tsrc_dir.joinpath("custom") +105 _logger.debug("using customized testing from %s" % self.custom_dir) +106 if os.path.exists(self.tsrc_bld_dir.joinpath("group","bld.inf")): +107 mmp_files = self.bld_parser.get_test_mmp_files(self.tsrc_bld_dir.joinpath("group","bld.inf")) +108 else: +109 mmp_files = self.bld_parser.get_test_mmp_files(self.tsrc_bld_dir.joinpath("bld.inf")) +110 +111 for mmp in mmp_files: +112 test_harness = self.mmp_parser.get_harness(mmp) +113 +114 pkg_paths = self.pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive) +115 if self.trace_enabled == "True": +116 try: +117 pmd_files = self.tsrc_pmd_files() +118 except OSError: +119 _logger.warning("No pmd file in output-folder.") +120 try: +121 trace_activation_files = self.tsrc_trace_activation_files() +122 except OSError: +123 _logger.warning("No trace activation files in trace init folder") +124 if trace_activation_files and not pmd_files: +125 _logger.warning("Trace activation files available but NOT pmd file.") +126 elif pmd_files and not trace_activation_files: +127 _logger.warning("Pmd file available but NO trace activation files.") +128 +129 if test_harness == "STIF": +130 src_dst = self.insert_testset_stif(src_dst, pkg_paths) +131 +132 if test_harness == "STIFUNIT": +133 src_dst = self.insert_testset_stif(src_dst, pkg_paths) +134 +135 elif test_harness == "EUNIT": +136 try: +137 src_dst = self.pkg_parser.get_data_files(self.tsrc_pkg_files(_paths_dict_), self.build_drive) +138 +139 except OSError: +140 _logger.warning("No pkg file in tsrc/group directory ( %s )" % self.tsrc_pkg_dir) +141 src_dst = [] +142 except IndexError: +143 _logger.warning("No pkg file in tsrc/group directory ( %s )" % self.tsrc_pkg_dir) +144 src_dst = [] +145 try: +146 testmodule_files = self.tsrc_dll_files() +147 +148 for dll_file in testmodule_files: +149 if not self.check_dll_duplication(dll_file.name, src_dst): +150 _dll_type_ = self.mmp_parser.get_dll_type(self.tsrc_bld_dir) +151 +152 if dll_file.name in self.excludable_dlls: +153 src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "data:%s" % _dll_type_)) +154 else: +155 src_dst.append((dll_file, path(r"c:\sys\bin").joinpath(dll_file.name), "testmodule")) +156 +157 except OSError: +158 _logger.warning("No dll files in dll folders" ) +159 tsrc_testdata_files = None +160 temp_list = [] +161 if self.trace_enabled == "True": +162 test_plan.insert_set(data_files=tsrc_testdata_files, +163 config_files=tsrc_config_files, +164 engine_ini_file=engine_ini_file, +165 image_files=self.flash_images, +166 sis_files=self.sis_files, +167 #testmodule_files=self.tsrc_dll_files(), +168 test_timeout=list(self.test_timeout), +169 test_harness=test_harness, +170 src_dst=src_dst, +171 pmd_files=pmd_files, +172 trace_activation_files=trace_activation_files, +173 custom_dir=self.custom_dir, +174 component_path=tsrc_dir) +175 else: +176 test_plan.insert_set(image_files=self.flash_images, +177 sis_files=self.sis_files, +178 test_timeout=list(self.test_timeout), +179 test_harness=test_harness, +180 src_dst=src_dst, +181 custom_dir=self.custom_dir, +182 component_path=tsrc_dir) +
183 +
184 - def check_dll_duplication(self, _dll_file_, _src_dst_ ): +
185 """Checks if the dll is already in the dictionary, created by pkg file""" +186 for item in _src_dst_: +187 first, second, _ = item +188 return _dll_file_.lower() in first.lower() +
189 +190 @property +
191 - def tsrc_bld_dir(self): +
192 """Component's build directory.""" +193 return self.tsrc_dir +
194 +195 @property +
196 - def tsrc_conf_dir(self): +
197 """Component's configuration file directory.""" +198 return self.tsrc_dir.joinpath("conf") +
199 +200 @property +
201 - def tsrc_custom_dir(self): +
202 """Component's test customization directory.""" +203 return self.tsrc_dir.joinpath("custom") +
204 +205 +206 @property +
207 - def tsrc_data_dirs(self): +
208 """Component's data directories.""" +209 return [self.tsrc_dir.joinpath(d) for d in self.data_dirs] +
210 +211 @property +
212 - def tsrc_init_dir(self): +
213 """Component's initialization file directory.""" +214 return self.tsrc_dir.joinpath("init") +
215 +216 @property +
217 - def tsrc_pkg_dir(self): +
218 """Component's .pkg -file directory""" +219 return self.tsrc_dir +
220 +221 @property +
222 - def tsrc_trace_activation_dir(self): +
223 """Component's trace activation file directory""" +224 return self.tsrc_dir.joinpath("trace_init") +
225 +226 @property +
227 - def tsrc_pmd_dir(self): +
228 """Component's pmd file directory""" +229 pmd_dir = self.build_drive + os.sep +230 return pmd_dir.joinpath("output", "pmd") +
231 +
232 - def tsrc_pmd_files(self): +
233 """Component's trace pmd files from the {build_drive}\output directory""" +234 return list(self.tsrc_pmd_dir.walkfiles("*.pmd")) +
235 +
237 """Component's trace activation files, from the rtace_init directory.""" +238 return list(self.tsrc_trace_activation_dir.walkfiles("*.xml")) +
239 +
240 - def tsrc_config_files(self): +
241 """Component's configuration files, from the conf directory.""" +242 return list(self.tsrc_conf_dir.walkfiles("*.cfg")) +
243 +
244 - def tsrc_ini_files(self): +
245 """Component's initialiation files, from the ini directory.""" +246 return list(self.tsrc_init_dir.walkfiles("*.ini")) +
247 +
248 - def tsrc_data_files(self): +
249 """Component's data files, from data directories.""" +250 files = [] +251 files2 = [] +252 for data_dir in self.tsrc_data_dirs: +253 if data_dir.exists(): +254 files.extend(list(data_dir.walkfiles())) +255 +256 #Remove dist policy files +257 for data_file in files: +258 if data_file.name.lower() != "distribution.policy.s60": +259 files2.append(data_file) +260 return files2 +
261 +
262 - def tsrc_dll_files(self): +
263 """Component's DLL files, reported by ABLD BUILD.""" +264 +265 dlls = [] +266 orig_dir = os.getcwd() +267 try: +268 os.chdir(self.tsrc_bld_dir) +269 os.system("bldmake bldfiles") +270 #os.system("abld test build %s" % self.target_platform) +271 process = subprocess.Popen("abld -w test build %s" % self.target_platform, shell=True, stdout=subprocess.PIPE) +272 pipe = process.communicate()[0] +273 for line in pipe.split('\n'): +274 _logger.debug(line.strip()) +275 target = path(line.strip()) +276 if target.ext == ".dll": +277 +278 build_target = self.build_drive.joinpath(target).normpath() +279 if not build_target.exists(): +280 _logger.warning("not found: %s" % build_target) +281 else: +282 dlls.append(build_target) +283 finally: +284 os.chdir(orig_dir) +285 return dlls +
286 +
287 - def tsrc_pkg_files(self, _dict_): +
288 """Component's package files, from the group directory""" +289 pkg_dirs = [] +290 for sub_component in _dict_[self.tsrc_pkg_dir]['content'].keys(): +291 pkg_dirs.append(sub_component) +292 return pkg_dirs +
293 +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +