Skip to content

Commit d4ef5f7

Browse files
author
Filip Jagodzinski
committed
Tests: USB: Distinguish failure/error in basic test
1 parent bfcfb6c commit d4ef5f7

File tree

1 file changed

+91
-64
lines changed

1 file changed

+91
-64
lines changed

TESTS/host_tests/pyusb_basic.py

Lines changed: 91 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ def get_interface(dev, interface, alternate=0):
123123
usb.ENDPOINT_TYPE_INTERRUPT: 'INTERRUPT',
124124
usb.ENDPOINT_TYPE_ISOCHRONOUS: 'ISOCHRONOUS'}
125125

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+
126132
def format_local_error_msg(fmt):
127133
"""Return an error message formatted with the last traceback entry from this file.
128134
@@ -161,230 +167,244 @@ def _callback_control_basic_test(self, key, value, timestamp):
161167
self.log("Received product_id %s" % (product_id))
162168

163169
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))
165172
return
166173

167174
try:
168175
control_basic_test(dev, int(vendor_id), int(product_id), log=print)
169-
self.report_success()
176+
self.notify_success()
170177
except RuntimeError as exc:
171-
self.report_error(exc)
178+
self.notify_failure(exc)
172179
except usb.core.USBError as exc:
173180
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)
175182

176183

177184
def _callback_control_stall_test(self, key, value, timestamp):
178185
self.log("Received serial %s" % (value))
179186

180187
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))
182190
return
183191

184192
try:
185193
control_stall_test(dev, log=print)
186-
self.report_success()
194+
self.notify_success()
187195
except RuntimeError as exc:
188-
self.report_error(exc)
196+
self.notify_failure(exc)
189197
except usb.core.USBError as exc:
190198
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)
192200

193201

194202
def _callback_control_sizes_test(self, key, value, timestamp):
195203
self.log("Received serial %s" % (value))
196204

197205
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))
199208
return
200209

201210
try:
202211
control_sizes_test(dev, log=print)
203-
self.report_success()
212+
self.notify_success()
204213
except RuntimeError as exc:
205-
self.report_error(exc)
214+
self.notify_failure(exc)
206215
except usb.core.USBError as exc:
207216
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)
209218

210219

211220
def _callback_control_stress_test(self, key, value, timestamp):
212221
self.log("Received serial %s" % (value))
213222

214223
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))
216226
return
217227

218228
try:
219229
control_stress_test(dev, log=print)
220-
self.report_success()
230+
self.notify_success()
221231
except RuntimeError as exc:
222-
self.report_error(exc)
232+
self.notify_failure(exc)
223233
except usb.core.USBError as exc:
224234
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)
226236

227237
def _callback_device_reset_test(self, key, value, timestamp):
228238
self.log("Received serial %s" % (value))
229239

230240
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))
232243
return
233244

234245
try:
235246
self.device_reset_test.send(dev)
236-
self.report_success()
247+
self.notify_success()
237248
except RuntimeError as exc:
238-
self.report_error(exc)
249+
self.notify_failure(exc)
239250
except usb.core.USBError as exc:
240251
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)
242253

243254
def _callback_device_soft_reconnection_test(self, key, value, timestamp):
244255
self.log("Received serial %s" % (value))
245256

246257
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))
248260
return
249261

250262
try:
251263
self.device_soft_reconnection_test.send(dev)
252-
self.report_success()
264+
self.notify_success()
253265
except RuntimeError as exc:
254-
self.report_error(exc)
266+
self.notify_failure(exc)
255267
except usb.core.USBError as exc:
256268
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)
258270

259271

260272
def _callback_device_suspend_resume_test(self, key, value, timestamp):
261273
self.log("Received serial %s" % (value))
262274

263275
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))
265278
return
266279

267280
try:
268281
self.device_suspend_resume_test.send(dev)
269-
self.report_success()
282+
self.notify_success()
270283
except RuntimeError as exc:
271-
self.report_error(exc)
284+
self.notify_failure(exc)
272285
except usb.core.USBError as exc:
273286
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)
275288

276289

277290
def _callback_repeated_construction_destruction_test(self, key, value, timestamp):
278291
self.log("Received serial %s" % (value))
279292

280293
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))
282296
return
283297

284298
try:
285299
self.repeated_construction_destruction_test.send(dev)
286-
self.report_success()
300+
self.notify_success()
287301
except RuntimeError as exc:
288-
self.report_error(exc)
302+
self.notify_failure(exc)
289303
except usb.core.USBError as exc:
290304
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)
292306

293307
def _callback_ep_test_data_correctness(self, key, value, timestamp):
294308
self.log("Received serial %s" % (value))
295309

296310
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))
298313
return
299314

300315
try:
301316
ep_test_data_correctness(dev, log=print)
302-
self.report_success()
317+
self.notify_success()
303318
except RuntimeError as exc:
304-
self.report_error(exc)
319+
self.notify_failure(exc)
305320
except usb.core.USBError as exc:
306321
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)
308323

309324
def _callback_ep_test_halt(self, key, value, timestamp):
310325
self.log("Received serial %s" % (value))
311326

312327
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))
314330
return
315331

316332
try:
317333
ep_test_halt(dev, log=print)
318-
self.report_success()
334+
self.notify_success()
319335
except RuntimeError as exc:
320-
self.report_error(exc)
336+
self.notify_failure(exc)
321337
except usb.core.USBError as exc:
322338
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)
324340

325341
def _callback_ep_test_parallel_transfers(self, key, value, timestamp):
326342
self.log("Received serial %s" % (value))
327343

328344
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))
330347
return
331348

332349
try:
333350
ep_test_parallel_transfers(dev, log=print)
334-
self.report_success()
351+
self.notify_success()
335352
except RuntimeError as exc:
336-
self.report_error(exc)
353+
self.notify_failure(exc)
337354
except usb.core.USBError as exc:
338355
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)
340357

341358
def _callback_ep_test_parallel_transfers_ctrl(self, key, value, timestamp):
342359
self.log("Received serial %s" % (value))
343360

344361
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))
346364
return
347365

348366
try:
349367
ep_test_parallel_transfers_ctrl(dev, log=print)
350-
self.report_success()
368+
self.notify_success()
351369
except RuntimeError as exc:
352-
self.report_error(exc)
370+
self.notify_failure(exc)
353371
except usb.core.USBError as exc:
354372
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)
356374

357375
def _callback_ep_test_abort(self, key, value, timestamp):
358376
self.log("Received serial %s" % (value))
359377

360378
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))
362381
return
363382

364383
try:
365384
ep_test_abort(dev, log=print)
366-
self.report_success()
385+
self.notify_success()
367386
except RuntimeError as exc:
368-
self.report_error(exc)
387+
self.notify_failure(exc)
369388
except usb.core.USBError as exc:
370389
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)
372391

373392
def _callback_ep_test_data_toggle(self, key, value, timestamp):
374393
self.log("Received serial %s" % (value))
375394

376395
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))
378398
return
379399

380400
try:
381401
ep_test_data_toggle(dev, log=print)
382-
self.report_success()
402+
self.notify_success()
383403
except RuntimeError as exc:
384-
self.report_error(exc)
404+
self.notify_failure(exc)
385405
except usb.core.USBError as exc:
386406
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)
388408

389409
def _callback_reset_support(self, key, value, timestamp):
390410
status = "false" if sys.platform == "darwin" else "true"
@@ -398,18 +418,25 @@ def find_device(self, serial_number):
398418
if dev is not None:
399419
break
400420
time.sleep(0.1)
401-
if dev is None:
402-
self.log("Device not found")
403-
self.send_kv("failed", "0")
404421
return dev
405422

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)
406430

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."""
411433
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)
413440

414441
def setup(self):
415442
self.__result = False

0 commit comments

Comments
 (0)