67
94
device = result.getDevice("CAPTURE")
68
95
self.assertTrue(device)
97
def test_openfirmware_network(self):
98
result = self.getResult("""
99
P: /devices/soc.0/ffe64000.ethernet
100
E: DEVPATH=/devices/soc.0/ffe64000.ethernet
102
E: MODALIAS=of:NethernetTXXXXXCXXXXX,XXXXX
103
E: OF_COMPATIBLE_0=XXXXX,XXXXX
107
E: SUBSYSTEM=platform
110
P: /devices/soc.0/ffe64000.ethernet/net/eth1
111
E: DEVPATH=/devices/soc.0/ffe64000.ethernet/net/eth1
117
device = result.getDevice("NETWORK")
118
self.assertTrue(device)
120
def _test_DELL_INSPIRON3521_TOUCHSCREEN(self):
122
Check devices category having the ID_INPUT_TOUCHSCREEN property
124
devices = self.parse("DELL_INSPIRON3521_TOUCHSCREEN")
125
self.assertEqual(len(devices), 59)
126
# Check the Accelerometer device category/product
127
self.assertEqual(devices[36].category, "TOUCHSCREEN")
128
self.assertEqual(devices[36].product, "ELAN Touchscreen")
129
self.assertEqual(self.count(devices, "VIDEO"), 1)
130
self.assertEqual(self.count(devices, "AUDIO"), 1)
131
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
132
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
133
self.assertEqual(self.count(devices, "CARDREADER"), 1)
134
self.assertEqual(self.count(devices, "CDROM"), 1)
135
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
136
self.assertEqual(self.count(devices, "MOUSE"), 0)
137
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
138
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 1)
139
self.assertEqual(self.count(devices, "RAID"), 0)
140
self.assertEqual(self.count(devices, "DISK"), 2)
141
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
142
self.assertEqual(self.count(devices, "NETWORK"), 1)
143
self.assertEqual(self.count(devices, "CAPTURE"), 1)
144
self.assertEqual(self.count(devices, "WIRELESS"), 1)
146
def test_DELL_LATITUDEE4310(self):
147
devices = self.parse("DELL_LATITUDEE4310")
148
self.assertEqual(len(devices), 75)
149
self.assertEqual(self.count(devices, "VIDEO"), 1)
150
self.assertEqual(self.count(devices, "AUDIO"), 2)
151
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
152
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
153
self.assertEqual(self.count(devices, "CARDREADER"), 1)
154
self.assertEqual(self.count(devices, "CDROM"), 1)
155
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
156
self.assertEqual(self.count(devices, "MOUSE"), 1)
157
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
158
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
159
self.assertEqual(self.count(devices, "CAPTURE"), 0)
160
self.assertEqual(self.count(devices, "RAID"), 1)
161
self.assertEqual(self.count(devices, "BLUETOOTH"), 0)
162
self.assertEqual(self.count(devices, "DISK"), 3)
163
self.assertEqual(self.count(devices, "NETWORK"), 1)
164
self.assertEqual(self.count(devices, "WIRELESS"), 1)
166
def test_DELL_LATITUDEE6430(self):
167
devices = self.parse("DELL_LATITUDEE6430")
168
self.assertEqual(len(devices), 78)
169
self.assertEqual(self.count(devices, "VIDEO"), 1)
170
self.assertEqual(self.count(devices, "AUDIO"), 2)
171
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
172
self.assertEqual(self.count(devices, "TOUCHPAD"), 0)
173
self.assertEqual(self.count(devices, "CARDREADER"), 1)
174
self.assertEqual(self.count(devices, "CDROM"), 1)
175
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
176
self.assertEqual(self.count(devices, "MOUSE"), 2)
177
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
178
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
179
self.assertEqual(self.count(devices, "RAID"), 1)
180
self.assertEqual(self.count(devices, "DISK"), 3)
181
# Check that a Bluetooth device is properly detected
182
# See https://bugs.launchpad.net/checkbox/+bug/1075052
183
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
184
self.assertEqual(self.count(devices, "NETWORK"), 1)
185
self.assertEqual(self.count(devices, "WIRELESS"), 1)
186
self.assertEqual(self.count(devices, "CAPTURE"), 1)
188
def test_DELL_OPTIPLEX9020AIO(self):
189
devices = self.parse("DELL_OPTIPLEX9020AIO")
190
self.assertEqual(len(devices), 62)
191
self.assertEqual(self.count(devices, "VIDEO"), 1)
192
self.assertEqual(self.count(devices, "AUDIO"), 4)
193
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
194
self.assertEqual(self.count(devices, "TOUCHPAD"), 0)
195
self.assertEqual(self.count(devices, "CARDREADER"), 3)
196
self.assertEqual(self.count(devices, "CDROM"), 1)
197
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
198
self.assertEqual(self.count(devices, "MOUSE"), 1)
199
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
200
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
201
self.assertEqual(self.count(devices, "CAPTURE"), 0)
202
self.assertEqual(self.count(devices, "BLUETOOTH"), 0)
203
self.assertEqual(self.count(devices, "RAID"), 1)
204
# At least one network device must be detected to solve
205
# https://bugs.launchpad.net/checkbox/+bug/1167733
206
self.assertEqual(self.count(devices, "NETWORK"), 1)
207
self.assertEqual(self.count(devices, "WIRELESS"), 1)
208
self.assertEqual(self.count(devices, "DISK"), 3)
210
def test_DELL_VOSTRO3460_FINGERPRINT(self):
212
This system has a fingerprint reader
215
138a Validity Sensors, Inc.
216
0011 VFS5011 Fingerprint Reader
218
devices = self.parse("DELL_VOSTRO3460_FINGERPRINT")
219
self.assertEqual(len(devices), 76)
220
self.assertEqual(devices[35].category, "OTHER")
221
self.assertEqual(devices[35].vendor_id, 0x0138a)
222
self.assertEqual(devices[35].product_id, 0x0011)
223
self.assertEqual(self.count(devices, "VIDEO"), 1)
224
self.assertEqual(self.count(devices, "AUDIO"), 2)
225
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
226
self.assertEqual(self.count(devices, "TOUCHPAD"), 0)
227
self.assertEqual(self.count(devices, "CARDREADER"), 1)
228
self.assertEqual(self.count(devices, "CDROM"), 1)
229
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
230
self.assertEqual(self.count(devices, "MOUSE"), 1)
231
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
232
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
233
self.assertEqual(self.count(devices, "DISK"), 1)
234
self.assertEqual(self.count(devices, "RAID"), 0)
235
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
236
self.assertEqual(self.count(devices, "NETWORK"), 2)
237
self.assertEqual(self.count(devices, "WIRELESS"), 1)
238
self.assertEqual(self.count(devices, "CAPTURE"), 1)
240
def test_DELL_VOSTROV131(self):
241
devices = self.parse("DELL_VOSTROV131")
242
expected_devices = [("RTL8111/8168 PCI Express Gigabit "
243
"Ethernet controller",
244
"NETWORK", "pci", 0x10EC, 0x8168),
245
("AR9285 Wireless Network Adapter (PCI-Express)",
246
"WIRELESS", "pci", 0x168C, 0x002B)
248
self.assertEqual(len(devices), 63)
249
self.assertEqual(self.count(devices, "VIDEO"), 1)
250
self.assertEqual(self.count(devices, "AUDIO"), 2)
251
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
252
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
253
self.assertEqual(self.count(devices, "CARDREADER"), 0)
254
self.assertEqual(self.count(devices, "CDROM"), 0)
255
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
256
self.assertEqual(self.count(devices, "MOUSE"), 0)
257
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
258
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
259
self.assertEqual(self.count(devices, "RAID"), 0)
260
self.assertEqual(self.count(devices, "DISK"), 3)
261
self.assertEqual(self.count(devices, "CAPTURE"), 1)
262
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
263
self.assertEqual(self.count(devices, "NETWORK"), 1)
264
self.assertEqual(self.count(devices, "WIRELESS"), 2)
265
self.verify_devices(devices, expected_devices)
267
def test_DELL_XPS1340(self):
268
devices = self.parse("DELL_XPS1340")
269
self.assertEqual(len(devices), 76)
270
self.assertEqual(self.count(devices, "VIDEO"), 2)
271
self.assertEqual(self.count(devices, "AUDIO"), 2)
272
self.assertEqual(self.count(devices, "KEYBOARD"), 3)
273
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
274
self.assertEqual(self.count(devices, "CARDREADER"), 1)
275
self.assertEqual(self.count(devices, "CDROM"), 1)
276
self.assertEqual(self.count(devices, "FIREWIRE"), 1)
277
self.assertEqual(self.count(devices, "MOUSE"), 0)
278
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
279
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
280
self.assertEqual(self.count(devices, "DISK"), 1)
281
self.assertEqual(self.count(devices, "CAPTURE"), 0)
282
self.assertEqual(self.count(devices, "RAID"), 0)
283
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
284
self.assertEqual(self.count(devices, "NETWORK"), 1)
285
self.assertEqual(self.count(devices, "WIRELESS"), 1)
287
def test_DELL_INSPIRON_7737_NVIDIA(self):
288
devices = self.parse("DELL_INSPIRON_7737_NVIDIA")
289
expected_devices = [(None,
290
"WIRELESS", "pci", 0x8086, 0x08b1),
292
"VIDEO", "pci", 0x10de, 0x0fe4),
294
"VIDEO", "pci", 0x8086, 0x0a16)
296
# The first video device is an NVIDIA GPU, which is too new
297
# to have a device name. The second one is the built-in Haswell
299
self.assertEqual(len(devices), 59)
300
self.assertEqual(self.count(devices, "WIRELESS"), 1)
301
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
302
self.assertEqual(self.count(devices, "NETWORK"), 1)
303
self.assertEqual(self.count(devices, "VIDEO"), 2)
304
self.assertEqual(self.count(devices, "AUDIO"), 4)
305
self.assertEqual(self.count(devices, "DISK"), 1)
306
self.verify_devices(devices, expected_devices)
308
def test_DELL_INSPIRON_3048_AMD(self):
309
devices = self.parse("DELL_INSPIRON_3048")
310
expected_devices = [(None,
311
"WIRELESS", "pci", 0x168c, 0x0036),
313
"VIDEO", "pci", 0x1002, 0x6664),
315
"VIDEO", "pci", 0x8086, 0x0402)
317
# The first video device is an AMD GPU, which is too new
318
# to have a device name. The second one is the built-in Haswell
320
self.assertEqual(len(devices), 63)
321
self.assertEqual(self.count(devices, "WIRELESS"), 1)
322
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
323
self.assertEqual(self.count(devices, "NETWORK"), 1)
324
self.assertEqual(self.count(devices, "AUDIO"), 4)
325
self.assertEqual(self.count(devices, "DISK"), 1)
326
self.assertEqual(self.count(devices, "VIDEO"), 2)
327
self.verify_devices(devices, expected_devices)
329
def test_HOME_MADE(self):
330
devices = self.parse("HOME_MADE")
331
self.assertEqual(len(devices), 72)
332
self.assertEqual(self.count(devices, "VIDEO"), 1)
333
self.assertEqual(self.count(devices, "AUDIO"), 4)
334
self.assertEqual(self.count(devices, "KEYBOARD"), 2)
335
self.assertEqual(self.count(devices, "TOUCHPAD"), 0)
336
self.assertEqual(self.count(devices, "CARDREADER"), 1)
337
self.assertEqual(self.count(devices, "CDROM"), 2)
338
self.assertEqual(self.count(devices, "FLOPPY"), 2)
339
self.assertEqual(self.count(devices, "FIREWIRE"), 1)
340
self.assertEqual(self.count(devices, "MOUSE"), 1)
341
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
342
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
343
self.assertEqual(self.count(devices, "CAPTURE"), 0)
344
self.assertEqual(self.count(devices, "RAID"), 0)
345
self.assertEqual(self.count(devices, "BLUETOOTH"), 0)
346
self.assertEqual(self.count(devices, "WIRELESS"), 0)
347
self.assertEqual(self.count(devices, "DISK"), 2)
348
self.assertEqual(self.count(devices, "NETWORK"), 1)
350
def test_HP_PAVILIONSLEEKBOOK14_ACCELEROMETER(self):
351
devices = self.parse("HP_PAVILIONSLEEKBOOK14_ACCELEROMETER")
352
self.assertEqual(len(devices), 58)
353
self.assertEqual(devices[56].product, "ST LIS3LV02DL Accelerometer")
354
self.assertEqual(devices[56].category, "ACCELEROMETER")
355
self.assertEqual(self.count(devices, "VIDEO"), 1)
356
self.assertEqual(self.count(devices, "AUDIO"), 2)
357
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
358
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
359
self.assertEqual(self.count(devices, "CARDREADER"), 1)
360
self.assertEqual(self.count(devices, "CDROM"), 0)
361
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
362
self.assertEqual(self.count(devices, "MOUSE"), 0)
363
self.assertEqual(self.count(devices, "ACCELEROMETER"), 1)
364
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
365
self.assertEqual(self.count(devices, "CAPTURE"), 0)
366
# Check that a Bluetooth device is properly detected on PCI bus
367
# See https://bugs.launchpad.net/checkbox/+bug/1036124
368
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
369
self.assertEqual(self.count(devices, "WIRELESS"), 1)
370
self.assertEqual(self.count(devices, "RAID"), 0)
371
self.assertEqual(self.count(devices, "DISK"), 1)
372
self.assertEqual(self.count(devices, "NETWORK"), 1)
374
def test_HP_PRO2110(self):
375
devices = self.parse("HP_PRO2110")
376
self.assertEqual(len(devices), 60)
377
# Check that the Avocent IBM 73P5832 is not a CAPTURE device
378
# See https://bugs.launchpad.net/checkbox/+bug/1065064
379
self.assertEqual(devices[33].product, "Avocent IBM 73P5832")
380
self.assertNotEqual(devices[33].category, "CAPTURE")
381
self.assertEqual(self.count(devices, "VIDEO"), 1)
382
self.assertEqual(self.count(devices, "AUDIO"), 2)
383
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
384
self.assertEqual(self.count(devices, "TOUCHPAD"), 0)
385
self.assertEqual(self.count(devices, "CARDREADER"), 4)
386
self.assertEqual(self.count(devices, "CDROM"), 1)
387
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
388
self.assertEqual(self.count(devices, "MOUSE"), 1)
389
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
390
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
391
self.assertEqual(self.count(devices, "CAPTURE"), 0)
392
self.assertEqual(self.count(devices, "BLUETOOTH"), 0)
393
self.assertEqual(self.count(devices, "WIRELESS"), 0)
394
self.assertEqual(self.count(devices, "RAID"), 0)
395
self.assertEqual(self.count(devices, "DISK"), 3)
396
self.assertEqual(self.count(devices, "NETWORK"), 1)
397
expected_devices = [(None, "VIDEO", "pci", 0x8086, 0x2E32)]
398
self.verify_devices(devices, expected_devices)
400
def test_HP_PROBOOK6550B_ACCELEROMETER(self):
401
devices = self.parse("HP_PROBOOK6550B_ACCELEROMETER")
402
expected_devices = [("Centrino Advanced-N 6200",
403
"WIRELESS", "pci", 0x8086, 0x4239),
404
("82577LC Gigabit Network Connection",
405
"NETWORK", "pci", 0x8086, 0x10EB)
407
self.assertEqual(len(devices), 80)
408
# Check the accelerometer device category/product
409
self.assertEqual(devices[78].product, "ST LIS3LV02DL Accelerometer")
410
self.assertEqual(devices[78].category, "ACCELEROMETER")
411
self.assertEqual(self.count(devices, "VIDEO"), 1)
412
self.assertEqual(self.count(devices, "AUDIO"), 2)
413
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
414
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
415
self.assertEqual(self.count(devices, "CARDREADER"), 1)
416
self.assertEqual(self.count(devices, "CDROM"), 1)
417
self.assertEqual(self.count(devices, "FIREWIRE"), 1)
418
self.assertEqual(self.count(devices, "MOUSE"), 1)
419
self.assertEqual(self.count(devices, "ACCELEROMETER"), 1)
420
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
421
self.assertEqual(self.count(devices, "RAID"), 0)
422
self.assertEqual(self.count(devices, "DISK"), 3)
423
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
424
self.assertEqual(self.count(devices, "NETWORK"), 1)
425
self.assertEqual(self.count(devices, "CAPTURE"), 1)
426
self.assertEqual(self.count(devices, "WIRELESS"), 1)
427
self.verify_devices(devices, expected_devices)
429
def test_LENOVO_E431(self):
430
devices = self.parse("LENOVO_E431")
431
self.assertEqual(len(devices), 65)
432
self.assertEqual(self.count(devices, "VIDEO"), 1)
433
self.assertEqual(self.count(devices, "AUDIO"), 2)
434
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
435
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
436
self.assertEqual(self.count(devices, "CARDREADER"), 1)
437
self.assertEqual(self.count(devices, "CDROM"), 1)
438
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
439
self.assertEqual(self.count(devices, "MOUSE"), 1)
440
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
441
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
442
self.assertEqual(self.count(devices, "DISK"), 1)
443
self.assertEqual(self.count(devices, "RAID"), 0)
444
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
445
self.assertEqual(self.count(devices, "CAPTURE"), 1)
446
self.assertEqual(self.count(devices, "NETWORK"), 1)
447
self.assertEqual(self.count(devices, "WIRELESS"), 1)
449
def test_LENOVO_E445(self):
450
devices = self.parse("LENOVO_E445")
451
self.assertEqual(len(devices), 78)
452
self.assertEqual(self.count(devices, "VIDEO"), 2)
453
self.assertEqual(self.count(devices, "AUDIO"), 4)
454
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
455
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
456
self.assertEqual(self.count(devices, "CARDREADER"), 1)
457
self.assertEqual(self.count(devices, "CDROM"), 1)
458
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
459
self.assertEqual(self.count(devices, "MOUSE"), 1)
460
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
461
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
462
self.assertEqual(self.count(devices, "DISK"), 1)
463
self.assertEqual(self.count(devices, "RAID"), 0)
464
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
465
self.assertEqual(self.count(devices, "CAPTURE"), 1)
466
self.assertEqual(self.count(devices, "NETWORK"), 1)
467
self.assertEqual(self.count(devices, "WIRELESS"), 1)
468
# System has two CPUs, AMD Richland [Radeon HD 8650G] and
469
# Sun PRO [Radeon HD 8570A/8570M]
470
expected_devices = [(None, "VIDEO", "pci", 0x1002, 0x990b),
471
(None, "VIDEO", "pci", 0x1002, 0x6663)]
472
self.verify_devices(devices, expected_devices)
474
def test_LENOVO_T430S(self):
475
devices = self.parse("LENOVO_T430S")
476
expected_devices = [("Centrino Ultimate-N 6300",
477
"WIRELESS", "pci", 0x8086, 0x4238),
478
("82579LM Gigabit Network Connection",
479
"NETWORK", "pci", 0x8086, 0x1502),
481
"NETWORK", "usb", 0x0bdb, 0x1926)
483
self.assertEqual(len(devices), 103)
484
# Check that the Thinkpad hotkeys are not a CAPTURE device
485
self.assertEqual(devices[102].product, "ThinkPad Extra Buttons")
486
self.assertEqual(devices[102].category, "OTHER")
487
# Check that the Ericsson MBM module is set as a NETWORK device with
488
# proper vendor/product names
489
self.assertEqual(devices[54].product, "H5321 gw")
492
"Ericsson Business Mobile Networks BV")
493
self.assertEqual(devices[54].category, "NETWORK")
494
self.assertEqual(self.count(devices, "VIDEO"), 1)
495
self.assertEqual(self.count(devices, "AUDIO"), 9)
496
# Logitech Illuminated keyboard + T430S keyboard + KVM
497
self.assertEqual(self.count(devices, "KEYBOARD"), 3)
498
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
499
self.assertEqual(self.count(devices, "CARDREADER"), 1)
500
self.assertEqual(self.count(devices, "CDROM"), 1)
501
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
502
self.assertEqual(self.count(devices, "MOUSE"), 1)
503
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
504
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
505
self.assertEqual(self.count(devices, "DISK"), 1)
506
self.assertEqual(self.count(devices, "RAID"), 0)
507
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
508
self.assertEqual(self.count(devices, "NETWORK"), 2)
509
self.assertEqual(self.count(devices, "CAPTURE"), 2)
510
self.assertEqual(self.count(devices, "WIRELESS"), 1)
511
self.verify_devices(devices, expected_devices)
513
def test_PANDABOARD(self):
514
devices = self.parse("PANDABOARD")
515
self.assertEqual(len(devices), 14)
516
# Check that the wireless product name is extracted from the platform
518
self.assertEqual(devices[2].product, "wl12xx")
519
self.assertEqual(self.count(devices, "VIDEO"), 0)
520
self.assertEqual(self.count(devices, "AUDIO"), 0)
521
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
522
self.assertEqual(self.count(devices, "TOUCHPAD"), 0)
523
self.assertEqual(self.count(devices, "CARDREADER"), 0)
524
self.assertEqual(self.count(devices, "CDROM"), 0)
525
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
526
self.assertEqual(self.count(devices, "MOUSE"), 0)
527
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
528
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
529
self.assertEqual(self.count(devices, "WIRELESS"), 1)
530
self.assertEqual(self.count(devices, "NETWORK"), 1)
531
self.assertEqual(self.count(devices, "BLUETOOTH"), 0)
532
self.assertEqual(self.count(devices, "CAPTURE"), 0)
533
self.assertEqual(self.count(devices, "RAID"), 0)
534
self.assertEqual(self.count(devices, "DISK"), 2)
536
def test_SAMSUNG_N310(self):
537
devices = self.parse("SAMSUNG_N310")
538
self.assertEqual(len(devices), 57)
539
self.assertEqual(self.count(devices, "VIDEO"), 1)
540
self.assertEqual(self.count(devices, "AUDIO"), 2)
541
self.assertEqual(self.count(devices, "KEYBOARD"), 1)
542
self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
543
self.assertEqual(self.count(devices, "CARDREADER"), 0)
544
self.assertEqual(self.count(devices, "CDROM"), 0)
545
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
546
self.assertEqual(self.count(devices, "MOUSE"), 0)
547
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
548
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
549
# Check that wireless device are properly detected even if the usb
551
# The PCI_CLASS is 20000 for the Atheros cards in this Samsung netbook
552
# but 28000 anywhere else.
553
# See https://bugs.launchpad.net/checkbox/+bug/855382
554
self.assertEqual(self.count(devices, "WIRELESS"), 1)
555
self.assertEqual(self.count(devices, "DISK"), 1)
556
self.assertEqual(self.count(devices, "RAID"), 0)
557
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
558
self.assertEqual(self.count(devices, "NETWORK"), 1)
559
self.assertEqual(self.count(devices, "CAPTURE"), 1)
561
def test_LENOVO_T420(self):
562
devices = self.parse("LENOVO_T420")
563
expected_devices = [("Centrino Advanced-N 6205 [Taylor Peak]",
564
"WIRELESS", "pci", 0x8086, 0x85),
565
("82579LM Gigabit Network Connection",
566
"NETWORK", "pci", 0x8086, 0x1502)
568
self.assertEqual(len(devices), 65)
569
self.assertEqual(self.count(devices, "WIRELESS"), 1)
570
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
571
self.assertEqual(self.count(devices, "NETWORK"), 1)
572
self.verify_devices(devices, expected_devices)
574
def test_HP_ENVY_15_MEDIATEK_BT(self):
575
devices = self.parse("HP_ENVY_15_MEDIATEK_BT")
577
(None, "WIRELESS", "pci", 0x14C3, 0x7630),
578
("RTL8111/8168B PCI Express Gigabit "
579
"Ethernet controller", "NETWORK", "pci",
581
(None, "BLUETOOTH", "usb", 0x0e8d, 0x763f)]
582
self.assertEqual(len(devices), 63)
583
self.assertEqual(self.count(devices, "WIRELESS"), 1)
584
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
585
self.assertEqual(self.count(devices, "NETWORK"), 1)
586
self.verify_devices(devices, expected_devices)
588
def test_HP_PAVILION14_NOTEBOOK_MEDIATEK_BT(self):
589
devices = self.parse("HP_PAVILION14_NOTEBOOK_MEDIATEK_BT")
591
(None, "WIRELESS", "pci", 0x14C3, 0x7630),
592
("RTL8101E/RTL8102E PCI Express Fast "
593
"Ethernet controller", "NETWORK", "pci",
595
(None, "BLUETOOTH", "usb", 0x0e8d, 0x763f)]
596
self.assertEqual(len(devices), 67)
597
self.verify_devices(devices, expected_devices)
598
self.assertEqual(self.count(devices, "WIRELESS"), 1)
599
self.assertEqual(self.count(devices, "BLUETOOTH"), 1)
600
self.assertEqual(self.count(devices, "NETWORK"), 1)
602
def test_CALXEDA_HIGHBANK(self):
603
#This is a very bare-bones SoC meant for server use
604
devices = self.parse("CALXEDA_HIGHBANK")
605
self.assertEqual(len(devices), 3)
606
self.assertEqual(self.count(devices, "VIDEO"), 0)
607
self.assertEqual(self.count(devices, "AUDIO"), 0)
608
self.assertEqual(self.count(devices, "KEYBOARD"), 0)
609
self.assertEqual(self.count(devices, "TOUCHPAD"), 0)
610
self.assertEqual(self.count(devices, "CARDREADER"), 0)
611
self.assertEqual(self.count(devices, "CDROM"), 0)
612
self.assertEqual(self.count(devices, "FIREWIRE"), 0)
613
self.assertEqual(self.count(devices, "MOUSE"), 0)
614
self.assertEqual(self.count(devices, "ACCELEROMETER"), 0)
615
self.assertEqual(self.count(devices, "TOUCHSCREEN"), 0)
616
self.assertEqual(self.count(devices, "WIRELESS"), 0)
617
self.assertEqual(self.count(devices, "NETWORK"), 2)
618
self.assertEqual(self.count(devices, "BLUETOOTH"), 0)
619
self.assertEqual(self.count(devices, "CAPTURE"), 0)
620
self.assertEqual(self.count(devices, "RAID"), 0)
621
self.assertEqual(self.count(devices, "DISK"), 1)
623
def verify_devices(self, devices, expected_device_list):
625
Verify we have exactly one of each device given in the list,
626
and that product name, category, bus, vendor_id and
628
The list contains a tuple with product name, category, bus,
631
[(name, category, bus, vendor_id, product_id)]
632
Note that name can be None, in which case we don't need the
633
name to match. All other attributes must have a value and match.
635
# See this bug, that prompted for closer inspection of
637
# https://bugs.launchpad.net/checkbox/+bug/1211521
638
for device in expected_device_list:
639
# Match by product and vendor ID
640
indices = [idx for idx, elem in enumerate(devices)
641
if elem.product_id == device[4] and
642
elem.vendor_id == device[3]]
643
# If we have a name to match, eliminate everyhing without
644
# that name (as they are bogus, uninteresting devices)
645
if device[0] is not None:
646
indices = [idx for idx in indices
647
if devices[idx].product == device[0]]
648
# Now do my validation checks
649
self.assertEqual(len(indices), 1,
650
"{} items of {} (id {}:{}) found".format(
655
if device[0] is not None:
656
self.assertEqual(devices[indices[0]].product, device[0],
657
"Bad product name for {}".format(device[0]))
658
self.assertEqual(devices[indices[0]].category, device[1],
659
"Bad category for {}".format(device[0]))
660
self.assertEqual(devices[indices[0]].bus, device[2],
661
"Bad bus for {}".format(device[0]))
662
self.assertEqual(devices[indices[0]].vendor_id, device[3],
663
"Bad vendor_id for {}".format(device[0]))
664
self.assertEqual(devices[indices[0]].product_id, device[4],
665
"Bad product_id for {}".format(device[0]))
71
668
class TestDecodeId(TestCase):