Skip to content

Commit 3c37831

Browse files
author
Filip Jagodzinski
committed
Tests: USB: Extract common code in basic test
1 parent d4ef5f7 commit 3c37831

File tree

1 file changed

+91
-210
lines changed

1 file changed

+91
-210
lines changed

TESTS/host_tests/pyusb_basic.py

Lines changed: 91 additions & 210 deletions
Original file line numberDiff line numberDiff line change
@@ -160,251 +160,132 @@ def format_local_error_msg(fmt):
160160

161161
class PyusbBasicTest(BaseHostTest):
162162

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))
172175
return
173-
174176
try:
175-
control_basic_test(dev, int(vendor_id), int(product_id), log=print)
177+
test_fun(usb_device, **test_fun_kwargs)
176178
self.notify_success()
177179
except RuntimeError as exc:
178180
self.notify_failure(exc)
179181
except usb.core.USBError as exc:
180182
error_msg = format_local_error_msg('[{filename}]:{line_number}, Dev-host transfer error ({exc_value}).')
181183
self.notify_failure(error_msg if error_msg is not None else exc)
182184

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+
)
183194

184195
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+
)
201201

202202
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+
)
219208

220209
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+
)
236215

237216
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+
)
253223

254224
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+
)
271231

272232
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+
)
289239

290240
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+
)
306247

307248
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+
)
323254

324255
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+
)
340261

341262
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+
)
357268

358269
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+
)
374275

375276
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+
)
391282

392283
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+
)
408289

409290
def _callback_reset_support(self, key, value, timestamp):
410291
status = "false" if sys.platform == "darwin" else "true"

0 commit comments

Comments
 (0)