diff --git a/docs/parsers/lspci.md b/docs/parsers/lspci.md index 1d982bd8..9378d41a 100644 --- a/docs/parsers/lspci.md +++ b/docs/parsers/lspci.md @@ -27,19 +27,98 @@ Schema: [ { - "lspci": string, - "bar": boolean, - "baz": integer + "slot": string, + "domain": string, + "domain_int": integer, + "bus": string, + "bus_int": integer, + "dev": string, + "dev_int": integer, + "function": string, + "function_int": integer, + "class": string, + "class_id": string, + "class_id_int": integer, + "vendor": string, + "vendor_id": string, + "vendor_id_int": integer, + "device": string, + "device_id": string, + "device_id_int": integer, + "svendor": string, + "svendor_id": string, + "svendor_id_int": integer, + "sdevice": string, + "sdevice_id": string, + "sdevice_id_int": integer, + "rev": string, + "physlot": string, + "physlot_int": integer, + "progif": string, + "progif_int": integer } ] Examples: - $ lspci | jc --lspci -p - [] + $ lspci -nnmmv | jc --lspci -p + [ + { + "slot": "ff:02:05.0", + "domain": "ff", + "domain_int": 255, + "bus": "02", + "bus_int": 2, + "dev": "05", + "dev_int": 5, + "function": "0", + "function_int": 0, + "class": "SATA controller", + "class_id": "0106", + "class_id_int": 262, + "vendor": "VMware", + "vendor_id": "15ad", + "vendor_id_int": 5549, + "device": "SATA AHCI controller", + "device_id": "07e0", + "device_id_int": 2016, + "svendor": "VMware", + "svendor_id": "15ad", + "svendor_id_int": 5549, + "sdevice": "SATA AHCI controller", + "sdevice_id": "07e0", + "sdevice_id_int": 2016, + "physlot": "37", + "physlot_int": 55, + "progif": "01", + "progif_int": 1 + }, + ... + ] - $ lspci | jc --lspci -p -r - [] + $ lspci -nnmmv | jc --lspci -p -r + [ + { + "slot": "ff:02:05.0", + "domain": "ff", + "bus": "02", + "dev": "05", + "function": "0", + "class": "SATA controller", + "class_id": "0106", + "vendor": "VMware", + "vendor_id": "15ad", + "device": "SATA AHCI controller", + "device_id": "07e0", + "svendor": "VMware", + "svendor_id": "15ad", + "sdevice": "SATA AHCI controller", + "sdevice_id": "07e0", + "physlot": "37", + "progif": "01" + }, + ... + ] diff --git a/jc/parsers/lspci.py b/jc/parsers/lspci.py index d8a9748c..55e703db 100644 --- a/jc/parsers/lspci.py +++ b/jc/parsers/lspci.py @@ -22,19 +22,98 @@ Schema: [ { - "lspci": string, - "bar": boolean, - "baz": integer + "slot": string, + "domain": string, + "domain_int": integer, + "bus": string, + "bus_int": integer, + "dev": string, + "dev_int": integer, + "function": string, + "function_int": integer, + "class": string, + "class_id": string, + "class_id_int": integer, + "vendor": string, + "vendor_id": string, + "vendor_id_int": integer, + "device": string, + "device_id": string, + "device_id_int": integer, + "svendor": string, + "svendor_id": string, + "svendor_id_int": integer, + "sdevice": string, + "sdevice_id": string, + "sdevice_id_int": integer, + "rev": string, + "physlot": string, + "physlot_int": integer, + "progif": string, + "progif_int": integer } ] Examples: - $ lspci | jc --lspci -p - [] + $ lspci -nnmmv | jc --lspci -p + [ + { + "slot": "ff:02:05.0", + "domain": "ff", + "domain_int": 255, + "bus": "02", + "bus_int": 2, + "dev": "05", + "dev_int": 5, + "function": "0", + "function_int": 0, + "class": "SATA controller", + "class_id": "0106", + "class_id_int": 262, + "vendor": "VMware", + "vendor_id": "15ad", + "vendor_id_int": 5549, + "device": "SATA AHCI controller", + "device_id": "07e0", + "device_id_int": 2016, + "svendor": "VMware", + "svendor_id": "15ad", + "svendor_id_int": 5549, + "sdevice": "SATA AHCI controller", + "sdevice_id": "07e0", + "sdevice_id_int": 2016, + "physlot": "37", + "physlot_int": 55, + "progif": "01", + "progif_int": 1 + }, + ... + ] - $ lspci | jc --lspci -p -r - [] + $ lspci -nnmmv | jc --lspci -p -r + [ + { + "slot": "ff:02:05.0", + "domain": "ff", + "bus": "02", + "dev": "05", + "function": "0", + "class": "SATA controller", + "class_id": "0106", + "vendor": "VMware", + "vendor_id": "15ad", + "device": "SATA AHCI controller", + "device_id": "07e0", + "svendor": "VMware", + "svendor_id": "15ad", + "sdevice": "SATA AHCI controller", + "sdevice_id": "07e0", + "physlot": "37", + "progif": "01" + }, + ... + ] """ import re from typing import List, Dict diff --git a/man/jc.1 b/man/jc.1 index fad13c4c..e3d2d27b 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-10-21 1.22.1 "JSON Convert" +.TH jc 1 2022-10-23 1.22.1 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS diff --git a/tests/fixtures/ubuntu-20.10/lspci-mmv.json b/tests/fixtures/ubuntu-20.10/lspci-mmv.json new file mode 100644 index 00000000..f7dee14e --- /dev/null +++ b/tests/fixtures/ubuntu-20.10/lspci-mmv.json @@ -0,0 +1 @@ +[{"slot":"00:00.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"00","dev_int":0,"function":"0","function_int":0,"class":"Host bridge","vendor":"Intel Corporation","device":"440BX/ZX/DX - 82443BX/ZX/DX Host bridge","svendor":"VMware","sdevice":"Virtual Machine Chipset","rev":"01"},{"slot":"00:01.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"01","dev_int":1,"function":"0","function_int":0,"class":"PCI bridge","vendor":"Intel Corporation","device":"440BX/ZX/DX - 82443BX/ZX/DX AGP bridge","rev":"01"},{"slot":"00:07.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"0","function_int":0,"class":"ISA bridge","vendor":"Intel Corporation","device":"82371AB/EB/MB PIIX4 ISA","svendor":"VMware","sdevice":"Virtual Machine Chipset","rev":"08"},{"slot":"00:07.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"1","function_int":1,"class":"IDE interface","vendor":"Intel Corporation","device":"82371AB/EB/MB PIIX4 IDE","svendor":"VMware","sdevice":"Virtual Machine Chipset","rev":"01","progif":"8a","progif_int":138},{"slot":"00:07.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"3","function_int":3,"class":"Bridge","vendor":"Intel Corporation","device":"82371AB/EB/MB PIIX4 ACPI","svendor":"VMware","sdevice":"Virtual Machine Chipset","rev":"08"},{"slot":"00:07.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"7","function_int":7,"class":"System peripheral","vendor":"VMware","device":"Virtual Machine Communication Interface","svendor":"VMware","sdevice":"Virtual Machine Communication Interface","rev":"10"},{"slot":"00:0f.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"0f","dev_int":15,"function":"0","function_int":0,"class":"VGA compatible controller","vendor":"VMware","device":"SVGA II Adapter","svendor":"VMware","sdevice":"SVGA II Adapter"},{"slot":"00:10.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"10","dev_int":16,"function":"0","function_int":0,"class":"SCSI storage controller","vendor":"Broadcom / LSI","device":"53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI","svendor":"VMware","sdevice":"LSI Logic Parallel SCSI Controller","rev":"01"},{"slot":"00:11.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"11","dev_int":17,"function":"0","function_int":0,"class":"PCI bridge","vendor":"VMware","device":"PCI bridge","rev":"02","progif":"01","progif_int":1},{"slot":"00:15.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"0","function_int":0,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:15.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"1","function_int":1,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:15.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"2","function_int":2,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:15.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"3","function_int":3,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:15.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"4","function_int":4,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:15.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"5","function_int":5,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:15.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"6","function_int":6,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:15.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"7","function_int":7,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:16.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"0","function_int":0,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:16.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"1","function_int":1,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:16.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"2","function_int":2,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:16.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"3","function_int":3,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:16.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"4","function_int":4,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:16.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"5","function_int":5,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:16.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"6","function_int":6,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:16.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"7","function_int":7,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:17.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"0","function_int":0,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:17.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"1","function_int":1,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:17.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"2","function_int":2,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:17.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"3","function_int":3,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:17.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"4","function_int":4,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:17.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"5","function_int":5,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:17.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"6","function_int":6,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:17.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"7","function_int":7,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:18.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"0","function_int":0,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:18.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"1","function_int":1,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:18.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"2","function_int":2,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:18.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"3","function_int":3,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:18.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"4","function_int":4,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:18.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"5","function_int":5,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:18.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"6","function_int":6,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"00:18.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"7","function_int":7,"class":"PCI bridge","vendor":"VMware","device":"PCI Express Root Port","rev":"01"},{"slot":"02:00.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"00","dev_int":0,"function":"0","function_int":0,"class":"USB controller","vendor":"VMware","device":"USB1.1 UHCI Controller","svendor":"VMware","sdevice":"USB1.1 UHCI Controller","physlot":"32","physlot_int":50},{"slot":"02:01.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"01","dev_int":1,"function":"0","function_int":0,"class":"Ethernet controller","vendor":"Intel Corporation","device":"82545EM Gigabit Ethernet Controller (Copper)","svendor":"VMware","sdevice":"PRO/1000 MT Single Port Adapter","physlot":"33","physlot_int":51,"rev":"01"},{"slot":"02:02.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"02","dev_int":2,"function":"0","function_int":0,"class":"Multimedia audio controller","vendor":"Ensoniq","device":"ES1371/ES1373 / Creative Labs CT2518","svendor":"Ensoniq","sdevice":"Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI]","physlot":"34","physlot_int":52,"rev":"02"},{"slot":"02:03.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"03","dev_int":3,"function":"0","function_int":0,"class":"USB controller","vendor":"VMware","device":"USB2 EHCI Controller","svendor":"VMware","sdevice":"USB2 EHCI Controller","physlot":"35","physlot_int":53,"progif":"20","progif_int":32},{"slot":"02:05.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"05","dev_int":5,"function":"0","function_int":0,"class":"SATA controller","vendor":"VMware","device":"SATA AHCI controller","svendor":"VMware","sdevice":"SATA AHCI controller","physlot":"37","physlot_int":55,"progif":"01","progif_int":1}] diff --git a/tests/fixtures/ubuntu-20.10/lspci-nmmv.json b/tests/fixtures/ubuntu-20.10/lspci-nmmv.json new file mode 100644 index 00000000..6fe8ebfe --- /dev/null +++ b/tests/fixtures/ubuntu-20.10/lspci-nmmv.json @@ -0,0 +1 @@ +[{"slot":"00:00.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"00","dev_int":0,"function":"0","function_int":0,"class_id":"0600","class_id_int":1536,"vendor_id":"8086","vendor_id_int":32902,"device_id":"7190","device_id_int":29072,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"1976","sdevice_id_int":6518,"rev":"01"},{"slot":"00:01.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"01","dev_int":1,"function":"0","function_int":0,"class_id":"0604","class_id_int":1540,"vendor_id":"8086","vendor_id_int":32902,"device_id":"7191","device_id_int":29073,"rev":"01"},{"slot":"00:07.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"0","function_int":0,"class_id":"0601","class_id_int":1537,"vendor_id":"8086","vendor_id_int":32902,"device_id":"7110","device_id_int":28944,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"1976","sdevice_id_int":6518,"rev":"08"},{"slot":"00:07.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"1","function_int":1,"class_id":"0101","class_id_int":257,"vendor_id":"8086","vendor_id_int":32902,"device_id":"7111","device_id_int":28945,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"1976","sdevice_id_int":6518,"rev":"01","progif":"8a","progif_int":138},{"slot":"00:07.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"3","function_int":3,"class_id":"0680","class_id_int":1664,"vendor_id":"8086","vendor_id_int":32902,"device_id":"7113","device_id_int":28947,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"1976","sdevice_id_int":6518,"rev":"08"},{"slot":"00:07.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"7","function_int":7,"class_id":"0880","class_id_int":2176,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"0740","device_id_int":1856,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"0740","sdevice_id_int":1856,"rev":"10"},{"slot":"00:0f.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"0f","dev_int":15,"function":"0","function_int":0,"class_id":"0300","class_id_int":768,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"0405","device_id_int":1029,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"0405","sdevice_id_int":1029},{"slot":"00:10.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"10","dev_int":16,"function":"0","function_int":0,"class_id":"0100","class_id_int":256,"vendor_id":"1000","vendor_id_int":4096,"device_id":"0030","device_id_int":48,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"1976","sdevice_id_int":6518,"rev":"01"},{"slot":"00:11.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"11","dev_int":17,"function":"0","function_int":0,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"0790","device_id_int":1936,"rev":"02","progif":"01","progif_int":1},{"slot":"00:15.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"0","function_int":0,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"1","function_int":1,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"2","function_int":2,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"3","function_int":3,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"4","function_int":4,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"5","function_int":5,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"6","function_int":6,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"7","function_int":7,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"0","function_int":0,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"1","function_int":1,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"2","function_int":2,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"3","function_int":3,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"4","function_int":4,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"5","function_int":5,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"6","function_int":6,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"7","function_int":7,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"0","function_int":0,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"1","function_int":1,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"2","function_int":2,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"3","function_int":3,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"4","function_int":4,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"5","function_int":5,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"6","function_int":6,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"7","function_int":7,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"0","function_int":0,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"1","function_int":1,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"2","function_int":2,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"3","function_int":3,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"4","function_int":4,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"5","function_int":5,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"6","function_int":6,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"7","function_int":7,"class_id":"0604","class_id_int":1540,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"02:00.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"00","dev_int":0,"function":"0","function_int":0,"class_id":"0c03","class_id_int":3075,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"0774","device_id_int":1908,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"1976","sdevice_id_int":6518,"physlot":"32","physlot_int":50},{"slot":"02:01.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"01","dev_int":1,"function":"0","function_int":0,"class_id":"0200","class_id_int":512,"vendor_id":"8086","vendor_id_int":32902,"device_id":"100f","device_id_int":4111,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"0750","sdevice_id_int":1872,"physlot":"33","physlot_int":51,"rev":"01"},{"slot":"02:02.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"02","dev_int":2,"function":"0","function_int":0,"class_id":"0401","class_id_int":1025,"vendor_id":"1274","vendor_id_int":4724,"device_id":"1371","device_id_int":4977,"svendor_id":"1274","svendor_id_int":4724,"sdevice_id":"1371","sdevice_id_int":4977,"physlot":"34","physlot_int":52,"rev":"02"},{"slot":"02:03.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"03","dev_int":3,"function":"0","function_int":0,"class_id":"0c03","class_id_int":3075,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"0770","device_id_int":1904,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"0770","sdevice_id_int":1904,"physlot":"35","physlot_int":53,"progif":"20","progif_int":32},{"slot":"02:05.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"05","dev_int":5,"function":"0","function_int":0,"class_id":"0106","class_id_int":262,"vendor_id":"15ad","vendor_id_int":5549,"device_id":"07e0","device_id_int":2016,"svendor_id":"15ad","svendor_id_int":5549,"sdevice_id":"07e0","sdevice_id_int":2016,"physlot":"37","physlot_int":55,"progif":"01","progif_int":1}] diff --git a/tests/fixtures/ubuntu-20.10/lspci-nnmmv.json b/tests/fixtures/ubuntu-20.10/lspci-nnmmv.json new file mode 100644 index 00000000..f666d747 --- /dev/null +++ b/tests/fixtures/ubuntu-20.10/lspci-nnmmv.json @@ -0,0 +1 @@ +[{"slot":"00:00.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"00","dev_int":0,"function":"0","function_int":0,"class":"Host bridge","class_id":"0600","class_id_int":1536,"vendor":"Intel Corporation","vendor_id":"8086","vendor_id_int":32902,"device":"440BX/ZX/DX - 82443BX/ZX/DX Host bridge","device_id":"7190","device_id_int":29072,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"Virtual Machine Chipset","sdevice_id":"1976","sdevice_id_int":6518,"rev":"01"},{"slot":"00:01.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"01","dev_int":1,"function":"0","function_int":0,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"Intel Corporation","vendor_id":"8086","vendor_id_int":32902,"device":"440BX/ZX/DX - 82443BX/ZX/DX AGP bridge","device_id":"7191","device_id_int":29073,"rev":"01"},{"slot":"00:07.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"0","function_int":0,"class":"ISA bridge","class_id":"0601","class_id_int":1537,"vendor":"Intel Corporation","vendor_id":"8086","vendor_id_int":32902,"device":"82371AB/EB/MB PIIX4 ISA","device_id":"7110","device_id_int":28944,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"Virtual Machine Chipset","sdevice_id":"1976","sdevice_id_int":6518,"rev":"08"},{"slot":"00:07.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"1","function_int":1,"class":"IDE interface","class_id":"0101","class_id_int":257,"vendor":"Intel Corporation","vendor_id":"8086","vendor_id_int":32902,"device":"82371AB/EB/MB PIIX4 IDE","device_id":"7111","device_id_int":28945,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"Virtual Machine Chipset","sdevice_id":"1976","sdevice_id_int":6518,"rev":"01","progif":"8a","progif_int":138},{"slot":"00:07.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"3","function_int":3,"class":"Bridge","class_id":"0680","class_id_int":1664,"vendor":"Intel Corporation","vendor_id":"8086","vendor_id_int":32902,"device":"82371AB/EB/MB PIIX4 ACPI","device_id":"7113","device_id_int":28947,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"Virtual Machine Chipset","sdevice_id":"1976","sdevice_id_int":6518,"rev":"08"},{"slot":"00:07.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"07","dev_int":7,"function":"7","function_int":7,"class":"System peripheral","class_id":"0880","class_id_int":2176,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"Virtual Machine Communication Interface","device_id":"0740","device_id_int":1856,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"Virtual Machine Communication Interface","sdevice_id":"0740","sdevice_id_int":1856,"rev":"10"},{"slot":"00:0f.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"0f","dev_int":15,"function":"0","function_int":0,"class":"VGA compatible controller","class_id":"0300","class_id_int":768,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"SVGA II Adapter","device_id":"0405","device_id_int":1029,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"SVGA II Adapter","sdevice_id":"0405","sdevice_id_int":1029},{"slot":"00:10.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"10","dev_int":16,"function":"0","function_int":0,"class":"SCSI storage controller","class_id":"0100","class_id_int":256,"vendor":"Broadcom / LSI","vendor_id":"1000","vendor_id_int":4096,"device":"53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI","device_id":"0030","device_id_int":48,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"LSI Logic Parallel SCSI Controller","sdevice_id":"1976","sdevice_id_int":6518,"rev":"01"},{"slot":"00:11.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"11","dev_int":17,"function":"0","function_int":0,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI bridge","device_id":"0790","device_id_int":1936,"rev":"02","progif":"01","progif_int":1},{"slot":"00:15.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"0","function_int":0,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"1","function_int":1,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"2","function_int":2,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"3","function_int":3,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"4","function_int":4,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"5","function_int":5,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"6","function_int":6,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:15.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"15","dev_int":21,"function":"7","function_int":7,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"0","function_int":0,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"1","function_int":1,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"2","function_int":2,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"3","function_int":3,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"4","function_int":4,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"5","function_int":5,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"6","function_int":6,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:16.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"16","dev_int":22,"function":"7","function_int":7,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"0","function_int":0,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"1","function_int":1,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"2","function_int":2,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"3","function_int":3,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"4","function_int":4,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"5","function_int":5,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"6","function_int":6,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:17.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"17","dev_int":23,"function":"7","function_int":7,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.0","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"0","function_int":0,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.1","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"1","function_int":1,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.2","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"2","function_int":2,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.3","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"3","function_int":3,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.4","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"4","function_int":4,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.5","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"5","function_int":5,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.6","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"6","function_int":6,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"00:18.7","domain":"00","domain_int":0,"bus":"00","bus_int":0,"dev":"18","dev_int":24,"function":"7","function_int":7,"class":"PCI bridge","class_id":"0604","class_id_int":1540,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"PCI Express Root Port","device_id":"07a0","device_id_int":1952,"rev":"01"},{"slot":"02:00.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"00","dev_int":0,"function":"0","function_int":0,"class":"USB controller","class_id":"0c03","class_id_int":3075,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"USB1.1 UHCI Controller","device_id":"0774","device_id_int":1908,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"USB1.1 UHCI Controller","sdevice_id":"1976","sdevice_id_int":6518,"physlot":"32","physlot_int":50},{"slot":"02:01.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"01","dev_int":1,"function":"0","function_int":0,"class":"Ethernet controller","class_id":"0200","class_id_int":512,"vendor":"Intel Corporation","vendor_id":"8086","vendor_id_int":32902,"device":"82545EM Gigabit Ethernet Controller (Copper)","device_id":"100f","device_id_int":4111,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"PRO/1000 MT Single Port Adapter","sdevice_id":"0750","sdevice_id_int":1872,"physlot":"33","physlot_int":51,"rev":"01"},{"slot":"02:02.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"02","dev_int":2,"function":"0","function_int":0,"class":"Multimedia audio controller","class_id":"0401","class_id_int":1025,"vendor":"Ensoniq","vendor_id":"1274","vendor_id_int":4724,"device":"ES1371/ES1373 / Creative Labs CT2518","device_id":"1371","device_id_int":4977,"svendor":"Ensoniq","svendor_id":"1274","svendor_id_int":4724,"sdevice":"Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI]","sdevice_id":"1371","sdevice_id_int":4977,"physlot":"34","physlot_int":52,"rev":"02"},{"slot":"02:03.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"03","dev_int":3,"function":"0","function_int":0,"class":"USB controller","class_id":"0c03","class_id_int":3075,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"USB2 EHCI Controller","device_id":"0770","device_id_int":1904,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"USB2 EHCI Controller","sdevice_id":"0770","sdevice_id_int":1904,"physlot":"35","physlot_int":53,"progif":"20","progif_int":32},{"slot":"02:05.0","domain":"00","domain_int":0,"bus":"02","bus_int":2,"dev":"05","dev_int":5,"function":"0","function_int":0,"class":"SATA controller","class_id":"0106","class_id_int":262,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"SATA AHCI controller","device_id":"07e0","device_id_int":2016,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"SATA AHCI controller","sdevice_id":"07e0","sdevice_id_int":2016,"physlot":"37","physlot_int":55,"progif":"01","progif_int":1},{"slot":"ff:02:05.0","domain":"ff","domain_int":255,"bus":"02","bus_int":2,"dev":"05","dev_int":5,"function":"0","function_int":0,"class":"SATA controller","class_id":"0106","class_id_int":262,"vendor":"VMware","vendor_id":"15ad","vendor_id_int":5549,"device":"SATA AHCI controller","device_id":"07e0","device_id_int":2016,"svendor":"VMware","svendor_id":"15ad","svendor_id_int":5549,"sdevice":"SATA AHCI controller","sdevice_id":"07e0","sdevice_id_int":2016,"physlot":"37","physlot_int":55,"progif":"01","progif_int":1}] diff --git a/tests/test_lspci.py b/tests/test_lspci.py new file mode 100644 index 00000000..3e93a1e2 --- /dev/null +++ b/tests/test_lspci.py @@ -0,0 +1,64 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.lspci + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'ubuntu_20_10_lspci_mmv': ( + 'fixtures/ubuntu-20.10/lspci-mmv.out', + 'fixtures/ubuntu-20.10/lspci-mmv.json'), + 'ubuntu_20_10_lspci_nmmv': ( + 'fixtures/ubuntu-20.10/lspci-nmmv.out', + 'fixtures/ubuntu-20.10/lspci-nmmv.json'), + 'ubuntu_20_10_lspci_nnmmv': ( + 'fixtures/ubuntu-20.10/lspci-nnmmv.out', + 'fixtures/ubuntu-20.10/lspci-nnmmv.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_lspci_nodata(self): + """ + Test 'lspci' with no data + """ + self.assertEqual(jc.parsers.lspci.parse('', quiet=True), []) + + def test_lspci_mmv_ubuntu_20_10(self): + """ + Test 'lspci -mmv' on Ubuntu 20.10 + """ + self.assertEqual(jc.parsers.lspci.parse(self.f_in['ubuntu_20_10_lspci_mmv'], quiet=True), + self.f_json['ubuntu_20_10_lspci_mmv']) + + def test_lspci_nmmv_ubuntu_20_10(self): + """ + Test 'lspci -nmmv' on Ubuntu 20.10 + """ + self.assertEqual(jc.parsers.lspci.parse(self.f_in['ubuntu_20_10_lspci_nmmv'], quiet=True), + self.f_json['ubuntu_20_10_lspci_nmmv']) + + def test_lspci_nnmmv_ubuntu_20_10(self): + """ + Test 'lspci -nnmmv' on Ubuntu 20.10 + """ + self.assertEqual(jc.parsers.lspci.parse(self.f_in['ubuntu_20_10_lspci_nnmmv'], quiet=True), + self.f_json['ubuntu_20_10_lspci_nnmmv']) + + +if __name__ == '__main__': + unittest.main()