@@ -123,6 +123,12 @@ def get_interface(dev, interface, alternate=0):
123
123
usb .ENDPOINT_TYPE_INTERRUPT : 'INTERRUPT' ,
124
124
usb .ENDPOINT_TYPE_ISOCHRONOUS : 'ISOCHRONOUS' }
125
125
126
+ # Greentea message keys used to notify DUT of test status
127
+ MSG_KEY_TEST_CASE_FAILED = 'fail'
128
+ MSG_KEY_TEST_CASE_PASSED = 'pass'
129
+ MSG_VALUE_DUMMY = '0'
130
+
131
+
126
132
def format_local_error_msg (fmt ):
127
133
"""Return an error message formatted with the last traceback entry from this file.
128
134
@@ -161,230 +167,244 @@ def _callback_control_basic_test(self, key, value, timestamp):
161
167
self .log ("Received product_id %s" % (product_id ))
162
168
163
169
dev = self .find_device (serial_number )
164
- if (dev == None ):
170
+ if dev is None :
171
+ self .notify_error ('USB device (SN={}) not found.' .format (serial_number ))
165
172
return
166
173
167
174
try :
168
175
control_basic_test (dev , int (vendor_id ), int (product_id ), log = print )
169
- self .report_success ()
176
+ self .notify_success ()
170
177
except RuntimeError as exc :
171
- self .report_error (exc )
178
+ self .notify_failure (exc )
172
179
except usb .core .USBError as exc :
173
180
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
174
- self .report_error (error_msg if error_msg is not None else exc )
181
+ self .notify_failure (error_msg if error_msg is not None else exc )
175
182
176
183
177
184
def _callback_control_stall_test (self , key , value , timestamp ):
178
185
self .log ("Received serial %s" % (value ))
179
186
180
187
dev = self .find_device (value )
181
- if (dev == None ):
188
+ if dev is None :
189
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
182
190
return
183
191
184
192
try :
185
193
control_stall_test (dev , log = print )
186
- self .report_success ()
194
+ self .notify_success ()
187
195
except RuntimeError as exc :
188
- self .report_error (exc )
196
+ self .notify_failure (exc )
189
197
except usb .core .USBError as exc :
190
198
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
191
- self .report_error (error_msg if error_msg is not None else exc )
199
+ self .notify_failure (error_msg if error_msg is not None else exc )
192
200
193
201
194
202
def _callback_control_sizes_test (self , key , value , timestamp ):
195
203
self .log ("Received serial %s" % (value ))
196
204
197
205
dev = self .find_device (value )
198
- if (dev == None ):
206
+ if dev is None :
207
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
199
208
return
200
209
201
210
try :
202
211
control_sizes_test (dev , log = print )
203
- self .report_success ()
212
+ self .notify_success ()
204
213
except RuntimeError as exc :
205
- self .report_error (exc )
214
+ self .notify_failure (exc )
206
215
except usb .core .USBError as exc :
207
216
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
208
- self .report_error (error_msg if error_msg is not None else exc )
217
+ self .notify_failure (error_msg if error_msg is not None else exc )
209
218
210
219
211
220
def _callback_control_stress_test (self , key , value , timestamp ):
212
221
self .log ("Received serial %s" % (value ))
213
222
214
223
dev = self .find_device (value )
215
- if (dev == None ):
224
+ if dev is None :
225
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
216
226
return
217
227
218
228
try :
219
229
control_stress_test (dev , log = print )
220
- self .report_success ()
230
+ self .notify_success ()
221
231
except RuntimeError as exc :
222
- self .report_error (exc )
232
+ self .notify_failure (exc )
223
233
except usb .core .USBError as exc :
224
234
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
225
- self .report_error (error_msg if error_msg is not None else exc )
235
+ self .notify_failure (error_msg if error_msg is not None else exc )
226
236
227
237
def _callback_device_reset_test (self , key , value , timestamp ):
228
238
self .log ("Received serial %s" % (value ))
229
239
230
240
dev = self .find_device (value )
231
- if (dev == None ):
241
+ if dev is None :
242
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
232
243
return
233
244
234
245
try :
235
246
self .device_reset_test .send (dev )
236
- self .report_success ()
247
+ self .notify_success ()
237
248
except RuntimeError as exc :
238
- self .report_error (exc )
249
+ self .notify_failure (exc )
239
250
except usb .core .USBError as exc :
240
251
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
241
- self .report_error (error_msg if error_msg is not None else exc )
252
+ self .notify_failure (error_msg if error_msg is not None else exc )
242
253
243
254
def _callback_device_soft_reconnection_test (self , key , value , timestamp ):
244
255
self .log ("Received serial %s" % (value ))
245
256
246
257
dev = self .find_device (value )
247
- if (dev == None ):
258
+ if dev is None :
259
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
248
260
return
249
261
250
262
try :
251
263
self .device_soft_reconnection_test .send (dev )
252
- self .report_success ()
264
+ self .notify_success ()
253
265
except RuntimeError as exc :
254
- self .report_error (exc )
266
+ self .notify_failure (exc )
255
267
except usb .core .USBError as exc :
256
268
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
257
- self .report_error (error_msg if error_msg is not None else exc )
269
+ self .notify_failure (error_msg if error_msg is not None else exc )
258
270
259
271
260
272
def _callback_device_suspend_resume_test (self , key , value , timestamp ):
261
273
self .log ("Received serial %s" % (value ))
262
274
263
275
dev = self .find_device (value )
264
- if (dev == None ):
276
+ if dev is None :
277
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
265
278
return
266
279
267
280
try :
268
281
self .device_suspend_resume_test .send (dev )
269
- self .report_success ()
282
+ self .notify_success ()
270
283
except RuntimeError as exc :
271
- self .report_error (exc )
284
+ self .notify_failure (exc )
272
285
except usb .core .USBError as exc :
273
286
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
274
- self .report_error (error_msg if error_msg is not None else exc )
287
+ self .notify_failure (error_msg if error_msg is not None else exc )
275
288
276
289
277
290
def _callback_repeated_construction_destruction_test (self , key , value , timestamp ):
278
291
self .log ("Received serial %s" % (value ))
279
292
280
293
dev = self .find_device (value )
281
- if (dev == None ):
294
+ if dev is None :
295
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
282
296
return
283
297
284
298
try :
285
299
self .repeated_construction_destruction_test .send (dev )
286
- self .report_success ()
300
+ self .notify_success ()
287
301
except RuntimeError as exc :
288
- self .report_error (exc )
302
+ self .notify_failure (exc )
289
303
except usb .core .USBError as exc :
290
304
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
291
- self .report_error (error_msg if error_msg is not None else exc )
305
+ self .notify_failure (error_msg if error_msg is not None else exc )
292
306
293
307
def _callback_ep_test_data_correctness (self , key , value , timestamp ):
294
308
self .log ("Received serial %s" % (value ))
295
309
296
310
dev = self .find_device (value )
297
- if (dev == None ):
311
+ if dev is None :
312
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
298
313
return
299
314
300
315
try :
301
316
ep_test_data_correctness (dev , log = print )
302
- self .report_success ()
317
+ self .notify_success ()
303
318
except RuntimeError as exc :
304
- self .report_error (exc )
319
+ self .notify_failure (exc )
305
320
except usb .core .USBError as exc :
306
321
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
307
- self .report_error (error_msg if error_msg is not None else exc )
322
+ self .notify_failure (error_msg if error_msg is not None else exc )
308
323
309
324
def _callback_ep_test_halt (self , key , value , timestamp ):
310
325
self .log ("Received serial %s" % (value ))
311
326
312
327
dev = self .find_device (value )
313
- if (dev == None ):
328
+ if dev is None :
329
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
314
330
return
315
331
316
332
try :
317
333
ep_test_halt (dev , log = print )
318
- self .report_success ()
334
+ self .notify_success ()
319
335
except RuntimeError as exc :
320
- self .report_error (exc )
336
+ self .notify_failure (exc )
321
337
except usb .core .USBError as exc :
322
338
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
323
- self .report_error (error_msg if error_msg is not None else exc )
339
+ self .notify_failure (error_msg if error_msg is not None else exc )
324
340
325
341
def _callback_ep_test_parallel_transfers (self , key , value , timestamp ):
326
342
self .log ("Received serial %s" % (value ))
327
343
328
344
dev = self .find_device (value )
329
- if (dev == None ):
345
+ if dev is None :
346
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
330
347
return
331
348
332
349
try :
333
350
ep_test_parallel_transfers (dev , log = print )
334
- self .report_success ()
351
+ self .notify_success ()
335
352
except RuntimeError as exc :
336
- self .report_error (exc )
353
+ self .notify_failure (exc )
337
354
except usb .core .USBError as exc :
338
355
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
339
- self .report_error (error_msg if error_msg is not None else exc )
356
+ self .notify_failure (error_msg if error_msg is not None else exc )
340
357
341
358
def _callback_ep_test_parallel_transfers_ctrl (self , key , value , timestamp ):
342
359
self .log ("Received serial %s" % (value ))
343
360
344
361
dev = self .find_device (value )
345
- if (dev == None ):
362
+ if dev is None :
363
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
346
364
return
347
365
348
366
try :
349
367
ep_test_parallel_transfers_ctrl (dev , log = print )
350
- self .report_success ()
368
+ self .notify_success ()
351
369
except RuntimeError as exc :
352
- self .report_error (exc )
370
+ self .notify_failure (exc )
353
371
except usb .core .USBError as exc :
354
372
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
355
- self .report_error (error_msg if error_msg is not None else exc )
373
+ self .notify_failure (error_msg if error_msg is not None else exc )
356
374
357
375
def _callback_ep_test_abort (self , key , value , timestamp ):
358
376
self .log ("Received serial %s" % (value ))
359
377
360
378
dev = self .find_device (value )
361
- if (dev == None ):
379
+ if dev is None :
380
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
362
381
return
363
382
364
383
try :
365
384
ep_test_abort (dev , log = print )
366
- self .report_success ()
385
+ self .notify_success ()
367
386
except RuntimeError as exc :
368
- self .report_error (exc )
387
+ self .notify_failure (exc )
369
388
except usb .core .USBError as exc :
370
389
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
371
- self .report_error (error_msg if error_msg is not None else exc )
390
+ self .notify_failure (error_msg if error_msg is not None else exc )
372
391
373
392
def _callback_ep_test_data_toggle (self , key , value , timestamp ):
374
393
self .log ("Received serial %s" % (value ))
375
394
376
395
dev = self .find_device (value )
377
- if (dev == None ):
396
+ if dev is None :
397
+ self .notify_error ('USB device (SN={}) not found.' .format (value ))
378
398
return
379
399
380
400
try :
381
401
ep_test_data_toggle (dev , log = print )
382
- self .report_success ()
402
+ self .notify_success ()
383
403
except RuntimeError as exc :
384
- self .report_error (exc )
404
+ self .notify_failure (exc )
385
405
except usb .core .USBError as exc :
386
406
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
387
- self .report_error (error_msg if error_msg is not None else exc )
407
+ self .notify_failure (error_msg if error_msg is not None else exc )
388
408
389
409
def _callback_reset_support (self , key , value , timestamp ):
390
410
status = "false" if sys .platform == "darwin" else "true"
@@ -398,18 +418,25 @@ def find_device(self, serial_number):
398
418
if dev is not None :
399
419
break
400
420
time .sleep (0.1 )
401
- if dev is None :
402
- self .log ("Device not found" )
403
- self .send_kv ("failed" , "0" )
404
421
return dev
405
422
423
+ def notify_success (self , value = None , msg = '' ):
424
+ """Report a host side test success to the DUT."""
425
+ if msg :
426
+ self .log ('TEST PASSED: {}' .format (msg ))
427
+ if value is None :
428
+ value = MSG_VALUE_DUMMY
429
+ self .send_kv (MSG_KEY_TEST_CASE_PASSED , value )
406
430
407
- def report_success (self ):
408
- self .send_kv ("pass" , "0" )
409
-
410
- def report_error (self , msg ):
431
+ def notify_failure (self , msg ):
432
+ """Report a host side test failure to the DUT."""
411
433
self .log ('TEST FAILED: {}' .format (msg ))
412
- self .send_kv ("failed" , "0" )
434
+ self .send_kv (MSG_KEY_TEST_CASE_FAILED , MSG_VALUE_DUMMY )
435
+
436
+ def notify_error (self , msg ):
437
+ """Terminate the test with an error msg."""
438
+ self .log ('TEST ERROR: {}' .format (msg ))
439
+ self .notify_complete (None )
413
440
414
441
def setup (self ):
415
442
self .__result = False
0 commit comments