diff -r 9374c207cfee -r 9dcc6e7393f7 doc/api/python/ats3-pysrc.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/api/python/ats3-pysrc.html Fri Sep 11 15:39:31 2009 +0100
@@ -0,0 +1,632 @@
+
+
+
+
+ ats3
+
+
+
+
+
+
+
+
+
+
+
+ Package ats3
+
+
+
+
+
+
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22 """ATS3 test drop generation."""
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30 from optparse import OptionParser
+ 31 from xml . etree import ElementTree as et
+ 32 from xml . sax . saxutils import quoteattr
+ 33 import ats3 . testconfigurator as acp
+ 34 import ats3 . dropgenerator as adg
+ 35 import logging
+ 36 import os
+ 37 import re
+ 38 import zipfile
+ 39
+ 40 import ats3 . parsers as parser
+ 41 from path import path
+ 42
+ 43 _logger = logging . getLogger ( 'ats3' )
+ 44
+
46 """
+
47 ATS3 drop generation configuration.
+
48 """
+
49
+
51 """
+
52 Initialize from optparse configuration options.
+
53 """
+
54 self . _opts = opts
+
55 CParser = parser . CppParser ( )
+
56 temp_dict = { }
+
57 mmp_parser = parser . MmpFileParser ( )
+
58
+
59
+
60 self . build_drive = path ( self . _opts . build_drive )
+
61 self . file_store = path ( self . _opts . file_store )
+
62 self . flash_images = split_paths ( self . _opts . flash_images )
+
63 self . sis_files = split_paths ( self . _opts . sis_files )
+
64 self . config_file = self . _opts . config
+
65 self . tsrc_paths_dict = { }
+
66 main_comps = [ ]
+
67
+
68 for tsrc in tsrc_paths :
+
69 temp_dict = CParser . get_cpp_output ( path ( tsrc ) , "d" )
+
70 for t_key , t_value in temp_dict . items ( ) :
+
71 self . tsrc_paths_dict [ t_key ] = t_value
+
72
+
73
+
74 for main_component in self . tsrc_paths_dict . keys ( ) :
+
75 main_comps . append ( main_component )
+
76
+
77 self . tsrc_paths = main_comps
+
78
+
80 return getattr ( self . _opts , attr )
+
81
+
83 dump = "Configuration:\n"
+
84 seen = set ( )
+
85 for key , value in vars ( self ) . items ( ) :
+
86 if not key . startswith ( "_" ) :
+
87 dump += "\t%s = %s\n" % ( key , value )
+
88 seen . add ( key )
+
89 for key , value in vars ( self . _opts ) . items ( ) :
+
90 if key not in seen :
+
91 dump += "\t%s = %s\n" % ( key , value )
+
92 seen . add ( key )
+
93 return dump
+
94
+ 95
+
97 """
+
98 Tells ATS3 server what to test and how.
+
99
+
100 The ATS3 test plan from which the test.xml file can be written. The test
+
101 plan captures all the data related to a test run: flashing, installation
+
102 of data files and configuration files, test cases, and the notifications.
+
103
+
104 """
+
105
+
106 EMAIL_SUBJECT = ( u"ATS3 report for §RUN_NAME§ §RUN_START_DATE§ "
+
107 u"§RUN_START_TIME§" )
+
108 REPORT_PATH = u"§RUN_NAME§" + os . sep + u"§RUN_START_DATE§_§RUN_START_TIME§"
+
109
+
111 self . diamonds_build_url = config . diamonds_build_url
+
112 self . testrun_name = config . testrun_name
+
113 self . harness = config . harness
+
114 self . device_type = config . device_type
+
115 self . device_hwid = config . device_hwid
+
116 self . plan_name = config . plan_name
+
117 self . report_email = config . report_email
+
118 self . file_store = config . file_store
+
119 self . test_timeout = config . test_timeout
+
120 self . eunitexerunner_flags = config . eunitexerunner_flags
+
121 self . sets = [ ]
+
122 self . src_dst = [ ]
+
123 self . pmd_files = [ ]
+
124 self . trace_activation_files = [ ]
+
125 self . trace_enabled = self . to_bool ( config . trace_enabled )
+
126 self . ctc_enabled = self . to_bool ( config . ctc_enabled )
+
127 self . component_path = ""
+
128 self . custom_dir = None
+
129
+
131 param = str ( param ) . lower ( )
+
132 if "true" == param or "t" == param or "1" == param :
+
133 return "True"
+
134 else :
+
135 return "False"
+
136
+
137 - def insert_set ( self , data_files = None , config_files = None ,
+
138 engine_ini_file = None , image_files = None , sis_files = None ,
+
139 testmodule_files = None , test_timeout = None , eunitexerunner_flags = None , test_harness = None ,
+
140 src_dst = None , pmd_files = None , trace_activation_files = None , custom_dir = None , component_path = None ) :
+
141 """
+
142 Insert a test set into the test plan.
+
143 """
+
144
+
145 if not custom_dir is None :
+
146 self . custom_dir = custom_dir
+
147 if data_files is None :
+
148 data_files = [ ]
+
149 if config_files is None :
+
150 config_files = [ ]
+
151 if image_files is None :
+
152 image_files = [ ]
+
153 if sis_files is None :
+
154 sis_files = [ ]
+
155 if testmodule_files is None :
+
156 testmodule_files = [ ]
+
157 if test_timeout is None :
+
158 test_timeout = [ ]
+
159 if eunitexerunner_flags is None :
+
160 eunitexeruner_flags = [ ]
+
161 if test_harness is None :
+
162 test_harness = self . harness
+
163 if src_dst is None :
+
164 src_dst = [ ]
+
165 if pmd_files is None :
+
166 pmd_files = [ ]
+
167 if trace_activation_files is None :
+
168 trace_activation_files = [ ]
+
169 if component_path is None :
+
170 component_path = self . component_path
+
171
+
172 setd = dict ( name = "set%d" % len ( self . sets ) ,
+
173 image_files = image_files , engine_ini_file = engine_ini_file , ctc_enabled = self . ctc_enabled , component_path = component_path )
+
174
+
175 setd = dict ( setd , custom_dir = custom_dir )
+
176 if sis_files :
+
177 setd = dict ( setd , sis_files = sis_files , test_timeout = test_timeout , eunitexerunner_flags = eunitexerunner_flags , test_harness = test_harness , )
+
178 else :
+
179 setd = dict ( setd , data_files = data_files , config_files = config_files ,
+
180 testmodule_files = testmodule_files , test_timeout = test_timeout , eunitexerunner_flags = eunitexerunner_flags , test_harness = test_harness ,
+
181 src_dst = src_dst )
+
182 if self . trace_enabled != "" :
+
183 if self . trace_enabled . lower ( ) == "true" :
+
184 setd = dict ( setd , pmd_files = pmd_files ,
+
185 trace_path = self . file_store . joinpath ( self . REPORT_PATH , "traces" , setd [ "name" ] , "tracelog.blx" ) ,
+
186 trace_activation_files = trace_activation_files )
+
187 else :
+
188 setd = dict ( setd , pmd_files = [ ] ,
+
189 trace_path = "" , trace_activation_files = [ ] )
+
190 self . sets . append ( setd )
+
191
+
193 """setting up test harness for a plan"""
+
194 eunit = False
+
195 stif = False
+
196 stifunit = False
+
197 for setd in self . sets :
+
198 if setd [ "test_harness" ] == "STIF" :
+
199 stif = True
+
200 elif setd [ "test_harness" ] == "EUNIT" :
+
201 eunit = True
+
202 elif setd [ "test_harness" ] == "STIFUNIT" :
+
203 stifunit = True
+
204
+
205 if eunit and stif :
+
206 self . harness = "MULTI_HARNESS"
+
207 elif eunit :
+
208 self . harness = "EUNIT"
+
209 elif stif :
+
210 self . harness = "STIF"
+
211 elif stifunit :
+
212 self . harness = "STIFUNIT"
+
213
+
214 @ property
+
215 - def post_actions ( self ) :
+
216 """ATS3 post actions."""
+
217 actions = [ ]
+
218 report_path = self . file_store . joinpath ( self . REPORT_PATH )
+
219 email_action = ( "SendEmailAction" ,
+
220 ( ( "subject" , self . EMAIL_SUBJECT ) ,
+
221 ( "type" , "ATS3_REPORT" ) ,
+
222 ( "send-files" , "true" ) ,
+
223 ( "to" , self . report_email ) ) )
+
224 ats3_report = ( "FileStoreAction" ,
+
225 ( ( "to-folder" , report_path . joinpath ( "ATS3_REPORT" ) ) ,
+
226 ( "report-type" , "ATS3_REPORT" ) ,
+
227 ( "date-format" , "yyyyMMdd" ) ,
+
228 ( "time-format" , "HHmmss" ) ) )
+
229 stif_report = ( "FileStoreAction" ,
+
230 ( ( "to-folder" , report_path . joinpath ( "STIF_REPORT" ) ) ,
+
231 ( "report-type" , "STIF_COMPONENT_REPORT_ALL_CASES" ) ,
+
232 ( "run-log" , "true" ) ,
+
233 ( "date-format" , "yyyyMMdd" ) ,
+
234 ( "time-format" , "HHmmss" ) ) )
+
235 eunit_report = ( "FileStoreAction" ,
+
236 ( ( "to-folder" , report_path . joinpath ( "EUNIT_REPORT" ) ) ,
+
237 ( "report-type" , "EUNIT_COMPONENT_REPORT_ALL_CASES" ) ,
+
238 ( "run-log" , "true" ) ,
+
239 ( "date-format" , "yyyyMMdd" ) ,
+
240 ( "time-format" , "HHmmss" ) ) )
+
241 diamonds_action = ( "DiamondsAction" , ( ) )
+
242 if self . diamonds_build_url :
+
243 actions . append ( diamonds_action )
+
244 if self . file_store :
+
245 actions . append ( ats3_report )
+
246 if self . harness == "STIF" :
+
247 actions . append ( stif_report )
+
248 elif self . harness == "EUNIT" :
+
249 actions . append ( eunit_report )
+
250 if self . report_email :
+
251 actions . append ( email_action )
+
252 return actions
+
253
+
255 return self . __dict__ [ key ]
+
256
+257
+
259 """Create a test drop."""
+
260 _logger . debug ( "initialize test plan" )
+
261
+
262 test_plan = Ats3TestPlan ( config )
+
263 parser = acp . Ats3ComponentParser ( config )
+
264
+
265 for tsrc in config . tsrc_paths :
+
266 lst_check_harness = [ ]
+
267 _logger . info ( "inspecting tsrc path: %s" % tsrc )
+
268
+
269 for sub_component in config . tsrc_paths_dict [ tsrc ] [ 'content' ] . keys ( ) :
+
270 _harness_ = config . tsrc_paths_dict [ tsrc ] [ 'content' ] [ sub_component ] [ 'harness' ]
+
271 if _harness_ != "" :
+
272 lst_check_harness . append ( _harness_ )
+
273
+
274
+
275 if len ( lst_check_harness ) > 0 :
+
276 parser . insert_test_set ( test_plan , path ( tsrc ) , config . tsrc_paths_dict )
+
277
+
278 test_plan . set_plan_harness ( )
+
279
+
280 generator = adg . Ats3TestDropGenerator ( )
+
281 _logger . info ( "generating drop file: %s" % config . drop_file )
+
282 generator . generate ( test_plan , output_file = config . drop_file , config_file = config . config_file )
+
283
+
285 """
+
286 Split the string by delim, removing extra whitespace.
+
287 """
+
288 return [ path ( part . strip ( ) )
+
289 for part in arg . split ( delim ) if part . strip ( ) ]
+
290
+291
+292
+
294 """Main entry point."""
+
295 cli = OptionParser ( usage = "%prog [options] TSRC1 [TSRC2 [TSRC3 ...]]" )
+
296 cli . add_option ( "--build-drive" , help = "Build area root drive" )
+
297 cli . add_option ( "--data-dir" , help = "Data directory name" , action = "append" ,
+
298 default = [ ] )
+
299 cli . add_option ( "--device-type" , help = "Device type (e.g. 'PRODUCT')" ,
+
300 default = "unknown" )
+
301 cli . add_option ( "--device-hwid" , help = "Device hwid" ,
+
302 default = "" )
+
303 cli . add_option ( "--trace-enabled" , help = "Tracing enabled" , default = "False" )
+
304 cli . add_option ( "--ctc-enabled" , help = "CTC enabled" , default = "False" )
+
305 cli . add_option ( "--diamonds-build-url" , help = "Diamonds build url" )
+
306 cli . add_option ( "--drop-file" , help = "Name for the final drop zip file" ,
+
307 default = "ATS3Drop.zip" )
+
308 cli . add_option ( "--file-store" , help = "Destination path for reports." ,
+
309 default = "" )
+
310 cli . add_option ( "--flash-images" , help = "Paths to the flash image files" ,
+
311 default = "" )
+
312 cli . add_option ( "--minimum-flash-images" , help = "Minimum amount of flash images" ,
+
313 default = 2 )
+
314 cli . add_option ( "--harness" , help = "Test harness (default: %default)" ,
+
315 default = "" )
+
316 cli . add_option ( "--report-email" , help = "Email notification receivers" ,
+
317 default = "" )
+
318 cli . add_option ( "--plan-name" , help = "Name of the test plan" ,
+
319 default = "plan" )
+
320 cli . add_option ( "--sis-files" , help = "Paths to the sis files" ,
+
321 default = "" )
+
322 cli . add_option ( "--target-platform" , help = "Target platform (default: %default)" ,
+
323 default = "armv5 urel" )
+
324 cli . add_option ( "--test-timeout" , help = "Test execution timeout value (default: %default)" ,
+
325 default = "60" )
+
326 cli . add_option ( "--eunitexerunner-flags" , help = "Eunitexerunner flags" ,
+
327 default = "" )
+
328 cli . add_option ( "--testrun-name" , help = "Name of the test run" ,
+
329 default = "run" )
+
330 cli . add_option ( "--config" , help = "Path to the config file" ,
+
331 default = "" )
+
332 cli . add_option ( "--verbose" , help = "Increase output verbosity" ,
+
333 action = "store_true" , default = False )
+
334
+
335 opts , tsrc_paths = cli . parse_args ( )
+
336
+
337 if not tsrc_paths :
+
338 cli . error ( "no tsrc directories given" )
+
339 if not opts . flash_images :
+
340 cli . error ( "no flash image files given" )
+
341 if not opts . build_drive :
+
342 cli . error ( "no build drive given" )
+
343 if len ( opts . flash_images . split ( "," ) ) < int ( opts . minimum_flash_images ) :
+
344 cli . error ( "Not enough flash files: %i defined, %i needed" % ( len ( opts . flash_images . split ( "," ) ) , int ( opts . minimum_flash_images ) ) )
+
345
+
346 if opts . verbose :
+
347 _logger . setLevel ( logging . DEBUG )
+
348 logging . basicConfig ( level = logging . DEBUG )
+
349
+
350 config = Configuration ( opts , tsrc_paths )
+
351 create_drop ( config )
+
352
+353
+354 if __name__ == "__main__" :
+355 main ( )
+356
+
+
+
+
+
+
+
+
+
+