@@ -160,251 +160,132 @@ def format_local_error_msg(fmt):
160
160
161
161
class PyusbBasicTest (BaseHostTest ):
162
162
163
- def _callback_control_basic_test (self , key , value , timestamp ):
164
- serial_number , vendor_id , product_id = value .split (' ' )
165
- self .log ("Received serial %s" % (serial_number ))
166
- self .log ("Received vendor_id %s" % (vendor_id ))
167
- self .log ("Received product_id %s" % (product_id ))
168
-
169
- dev = self .find_device (serial_number )
170
- if dev is None :
171
- self .notify_error ('USB device (SN={}) not found.' .format (serial_number ))
163
+ def test_usb_device (self , usb_dev_serial_number , test_fun , ** test_fun_kwargs ):
164
+ """Find a USB device and execute a testing function.
165
+
166
+ Search is based on usb_dev_serial_number. If the device is found, the
167
+ test_fun is executed with its dev argument set to the device found and
168
+ all other kwargs set as specified by test_fun_kwargs.
169
+
170
+ The DUT is notified with either success, failure or error status.
171
+ """
172
+ usb_device = self .find_device (usb_dev_serial_number )
173
+ if usb_device is None :
174
+ self .notify_error ('USB device (SN={}) not found.' .format (usb_dev_serial_number ))
172
175
return
173
-
174
176
try :
175
- control_basic_test ( dev , int ( vendor_id ), int ( product_id ), log = print )
177
+ test_fun ( usb_device , ** test_fun_kwargs )
176
178
self .notify_success ()
177
179
except RuntimeError as exc :
178
180
self .notify_failure (exc )
179
181
except usb .core .USBError as exc :
180
182
error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
181
183
self .notify_failure (error_msg if error_msg is not None else exc )
182
184
185
+ def _callback_control_basic_test (self , key , value , timestamp ):
186
+ serial_number , vendor_id , product_id = value .split (' ' )
187
+ self .test_usb_device (
188
+ usb_dev_serial_number = serial_number ,
189
+ test_fun = control_basic_test ,
190
+ log = print ,
191
+ vendor_id = int (vendor_id ),
192
+ product_id = int (product_id )
193
+ )
183
194
184
195
def _callback_control_stall_test (self , key , value , timestamp ):
185
- self .log ("Received serial %s" % (value ))
186
-
187
- dev = self .find_device (value )
188
- if dev is None :
189
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
190
- return
191
-
192
- try :
193
- control_stall_test (dev , log = print )
194
- self .notify_success ()
195
- except RuntimeError as exc :
196
- self .notify_failure (exc )
197
- except usb .core .USBError as exc :
198
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
199
- self .notify_failure (error_msg if error_msg is not None else exc )
200
-
196
+ self .test_usb_device (
197
+ usb_dev_serial_number = value ,
198
+ test_fun = control_stall_test ,
199
+ log = print
200
+ )
201
201
202
202
def _callback_control_sizes_test (self , key , value , timestamp ):
203
- self .log ("Received serial %s" % (value ))
204
-
205
- dev = self .find_device (value )
206
- if dev is None :
207
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
208
- return
209
-
210
- try :
211
- control_sizes_test (dev , log = print )
212
- self .notify_success ()
213
- except RuntimeError as exc :
214
- self .notify_failure (exc )
215
- except usb .core .USBError as exc :
216
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
217
- self .notify_failure (error_msg if error_msg is not None else exc )
218
-
203
+ self .test_usb_device (
204
+ usb_dev_serial_number = value ,
205
+ test_fun = control_sizes_test ,
206
+ log = print
207
+ )
219
208
220
209
def _callback_control_stress_test (self , key , value , timestamp ):
221
- self .log ("Received serial %s" % (value ))
222
-
223
- dev = self .find_device (value )
224
- if dev is None :
225
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
226
- return
227
-
228
- try :
229
- control_stress_test (dev , log = print )
230
- self .notify_success ()
231
- except RuntimeError as exc :
232
- self .notify_failure (exc )
233
- except usb .core .USBError as exc :
234
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
235
- self .notify_failure (error_msg if error_msg is not None else exc )
210
+ self .test_usb_device (
211
+ usb_dev_serial_number = value ,
212
+ test_fun = control_stress_test ,
213
+ log = print
214
+ )
236
215
237
216
def _callback_device_reset_test (self , key , value , timestamp ):
238
- self .log ("Received serial %s" % (value ))
239
-
240
- dev = self .find_device (value )
241
- if dev is None :
242
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
243
- return
244
-
245
- try :
246
- self .device_reset_test .send (dev )
247
- self .notify_success ()
248
- except RuntimeError as exc :
249
- self .notify_failure (exc )
250
- except usb .core .USBError as exc :
251
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
252
- self .notify_failure (error_msg if error_msg is not None else exc )
217
+ self .test_usb_device (
218
+ usb_dev_serial_number = value ,
219
+ # Advance the coroutine to the next yield statement
220
+ # and send the usb_device to use.
221
+ test_fun = self .device_reset_test .send
222
+ )
253
223
254
224
def _callback_device_soft_reconnection_test (self , key , value , timestamp ):
255
- self .log ("Received serial %s" % (value ))
256
-
257
- dev = self .find_device (value )
258
- if dev is None :
259
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
260
- return
261
-
262
- try :
263
- self .device_soft_reconnection_test .send (dev )
264
- self .notify_success ()
265
- except RuntimeError as exc :
266
- self .notify_failure (exc )
267
- except usb .core .USBError as exc :
268
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
269
- self .notify_failure (error_msg if error_msg is not None else exc )
270
-
225
+ self .test_usb_device (
226
+ usb_dev_serial_number = value ,
227
+ # Advance the coroutine to the next yield statement
228
+ # and send the usb_device to use.
229
+ test_fun = self .device_soft_reconnection_test .send
230
+ )
271
231
272
232
def _callback_device_suspend_resume_test (self , key , value , timestamp ):
273
- self .log ("Received serial %s" % (value ))
274
-
275
- dev = self .find_device (value )
276
- if dev is None :
277
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
278
- return
279
-
280
- try :
281
- self .device_suspend_resume_test .send (dev )
282
- self .notify_success ()
283
- except RuntimeError as exc :
284
- self .notify_failure (exc )
285
- except usb .core .USBError as exc :
286
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
287
- self .notify_failure (error_msg if error_msg is not None else exc )
288
-
233
+ self .test_usb_device (
234
+ usb_dev_serial_number = value ,
235
+ # Advance the coroutine to the next yield statement
236
+ # and send the usb_device to use.
237
+ test_fun = self .device_suspend_resume_test .send
238
+ )
289
239
290
240
def _callback_repeated_construction_destruction_test (self , key , value , timestamp ):
291
- self .log ("Received serial %s" % (value ))
292
-
293
- dev = self .find_device (value )
294
- if dev is None :
295
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
296
- return
297
-
298
- try :
299
- self .repeated_construction_destruction_test .send (dev )
300
- self .notify_success ()
301
- except RuntimeError as exc :
302
- self .notify_failure (exc )
303
- except usb .core .USBError as exc :
304
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
305
- self .notify_failure (error_msg if error_msg is not None else exc )
241
+ self .test_usb_device (
242
+ usb_dev_serial_number = value ,
243
+ # Advance the coroutine to the next yield statement
244
+ # and send the usb_device to use.
245
+ test_fun = self .repeated_construction_destruction_test .send
246
+ )
306
247
307
248
def _callback_ep_test_data_correctness (self , key , value , timestamp ):
308
- self .log ("Received serial %s" % (value ))
309
-
310
- dev = self .find_device (value )
311
- if dev is None :
312
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
313
- return
314
-
315
- try :
316
- ep_test_data_correctness (dev , log = print )
317
- self .notify_success ()
318
- except RuntimeError as exc :
319
- self .notify_failure (exc )
320
- except usb .core .USBError as exc :
321
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
322
- self .notify_failure (error_msg if error_msg is not None else exc )
249
+ self .test_usb_device (
250
+ usb_dev_serial_number = value ,
251
+ test_fun = ep_test_data_correctness ,
252
+ log = print
253
+ )
323
254
324
255
def _callback_ep_test_halt (self , key , value , timestamp ):
325
- self .log ("Received serial %s" % (value ))
326
-
327
- dev = self .find_device (value )
328
- if dev is None :
329
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
330
- return
331
-
332
- try :
333
- ep_test_halt (dev , log = print )
334
- self .notify_success ()
335
- except RuntimeError as exc :
336
- self .notify_failure (exc )
337
- except usb .core .USBError as exc :
338
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
339
- self .notify_failure (error_msg if error_msg is not None else exc )
256
+ self .test_usb_device (
257
+ usb_dev_serial_number = value ,
258
+ test_fun = ep_test_halt ,
259
+ log = print
260
+ )
340
261
341
262
def _callback_ep_test_parallel_transfers (self , key , value , timestamp ):
342
- self .log ("Received serial %s" % (value ))
343
-
344
- dev = self .find_device (value )
345
- if dev is None :
346
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
347
- return
348
-
349
- try :
350
- ep_test_parallel_transfers (dev , log = print )
351
- self .notify_success ()
352
- except RuntimeError as exc :
353
- self .notify_failure (exc )
354
- except usb .core .USBError as exc :
355
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
356
- self .notify_failure (error_msg if error_msg is not None else exc )
263
+ self .test_usb_device (
264
+ usb_dev_serial_number = value ,
265
+ test_fun = ep_test_parallel_transfers ,
266
+ log = print
267
+ )
357
268
358
269
def _callback_ep_test_parallel_transfers_ctrl (self , key , value , timestamp ):
359
- self .log ("Received serial %s" % (value ))
360
-
361
- dev = self .find_device (value )
362
- if dev is None :
363
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
364
- return
365
-
366
- try :
367
- ep_test_parallel_transfers_ctrl (dev , log = print )
368
- self .notify_success ()
369
- except RuntimeError as exc :
370
- self .notify_failure (exc )
371
- except usb .core .USBError as exc :
372
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
373
- self .notify_failure (error_msg if error_msg is not None else exc )
270
+ self .test_usb_device (
271
+ usb_dev_serial_number = value ,
272
+ test_fun = ep_test_parallel_transfers_ctrl ,
273
+ log = print
274
+ )
374
275
375
276
def _callback_ep_test_abort (self , key , value , timestamp ):
376
- self .log ("Received serial %s" % (value ))
377
-
378
- dev = self .find_device (value )
379
- if dev is None :
380
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
381
- return
382
-
383
- try :
384
- ep_test_abort (dev , log = print )
385
- self .notify_success ()
386
- except RuntimeError as exc :
387
- self .notify_failure (exc )
388
- except usb .core .USBError as exc :
389
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
390
- self .notify_failure (error_msg if error_msg is not None else exc )
277
+ self .test_usb_device (
278
+ usb_dev_serial_number = value ,
279
+ test_fun = ep_test_abort ,
280
+ log = print
281
+ )
391
282
392
283
def _callback_ep_test_data_toggle (self , key , value , timestamp ):
393
- self .log ("Received serial %s" % (value ))
394
-
395
- dev = self .find_device (value )
396
- if dev is None :
397
- self .notify_error ('USB device (SN={}) not found.' .format (value ))
398
- return
399
-
400
- try :
401
- ep_test_data_toggle (dev , log = print )
402
- self .notify_success ()
403
- except RuntimeError as exc :
404
- self .notify_failure (exc )
405
- except usb .core .USBError as exc :
406
- error_msg = format_local_error_msg ('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).' )
407
- self .notify_failure (error_msg if error_msg is not None else exc )
284
+ self .test_usb_device (
285
+ usb_dev_serial_number = value ,
286
+ test_fun = ep_test_data_toggle ,
287
+ log = print
288
+ )
408
289
409
290
def _callback_reset_support (self , key , value , timestamp ):
410
291
status = "false" if sys .platform == "darwin" else "true"
0 commit comments