@@ -334,8 +338,11 @@
Title |
DHID |
Unique Identifiers |
-
Status |
+
Lifecycle Status |
+
Allocated Status |
+
Physical Status |
Update |
+
|
@@ -351,12 +358,19 @@
/>
+
{% if dev.get_type_logo() %}
{% endif %}
-
{{ dev.verbose_name }}
+ {% if dev.lots | length > 0 %}
+
+ {% for lot in dev.lots %}
+ {{ lot.name }}
+ {% endfor %}
+
+ {% endif %}
|
@@ -370,7 +384,14 @@
{% endfor %}
|
{% if dev.status %}{{ dev.status.type }}{% endif %} |
+ {% if dev.allocated_status %}{{ dev.allocated_status.type }}{% endif %} |
+ {% if dev.physical_status %}{{ dev.physical_status.type }}{% endif %} |
{{ dev.updated.strftime('%H:%M %d-%m-%Y') }} |
+
+
+
+
+ |
{% endfor %}
@@ -430,9 +451,9 @@
-
+
{% endblock main %}
diff --git a/ereuse_devicehub/templates/labels/label_list.html b/ereuse_devicehub/templates/labels/label_list.html
index 7d184477..4f843ea0 100644
--- a/ereuse_devicehub/templates/labels/label_list.html
+++ b/ereuse_devicehub/templates/labels/label_list.html
@@ -47,6 +47,7 @@
Type |
Provider |
Device |
+
Created |
@@ -62,6 +63,7 @@
{% endif %}
+ {{ tag.created.strftime('%H:%M %d-%m-%Y') }} |
{% endfor %}
diff --git a/ereuse_devicehub/templates/workbench/settings.html b/ereuse_devicehub/templates/workbench/settings.html
new file mode 100644
index 00000000..6c762f70
--- /dev/null
+++ b/ereuse_devicehub/templates/workbench/settings.html
@@ -0,0 +1,43 @@
+{% extends "ereuse_devicehub/base_site.html" %}
+{% block main %}
+
+
+
{{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
Download your settings for Workbench
+
Please select one of this options
+
+
+
+
Download the settings only for register devices.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock main %}
diff --git a/ereuse_devicehub/templates/workbench/wbSettings.ini b/ereuse_devicehub/templates/workbench/wbSettings.ini
new file mode 100644
index 00000000..8ce2cf40
--- /dev/null
+++ b/ereuse_devicehub/templates/workbench/wbSettings.ini
@@ -0,0 +1,4 @@
+[settings]
+
+TOKEN = {{ token }}
+URL = {{ url }}
diff --git a/ereuse_devicehub/views.py b/ereuse_devicehub/views.py
index bee12ad0..018a85a9 100644
--- a/ereuse_devicehub/views.py
+++ b/ereuse_devicehub/views.py
@@ -49,7 +49,7 @@ class LogoutView(View):
return flask.redirect(flask.url_for('core.login'))
-class GenericMixView(View):
+class GenericMixin(View):
decorators = [login_required]
def get_lots(self):
@@ -74,7 +74,7 @@ class GenericMixView(View):
return self.context
-class UserProfileView(GenericMixView):
+class UserProfileView(GenericMixin):
decorators = [login_required]
template_name = 'ereuse_devicehub/user_profile.html'
diff --git a/ereuse_devicehub/workbench/__init__.py b/ereuse_devicehub/workbench/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/ereuse_devicehub/workbench/views.py b/ereuse_devicehub/workbench/views.py
new file mode 100644
index 00000000..f70885ce
--- /dev/null
+++ b/ereuse_devicehub/workbench/views.py
@@ -0,0 +1,76 @@
+import time
+
+import flask
+from flask import Blueprint
+from flask import current_app as app
+from flask import g, make_response, request
+from flask_login import login_required
+
+from ereuse_devicehub import auth
+from ereuse_devicehub.db import db
+from ereuse_devicehub.resources.enums import SessionType
+from ereuse_devicehub.resources.user.models import Session
+from ereuse_devicehub.views import GenericMixin
+
+workbench = Blueprint('workbench', __name__, url_prefix='/workbench')
+
+
+class SettingsView(GenericMixin):
+ decorators = [login_required]
+ template_name = 'workbench/settings.html'
+ page_title = "Workbench Settings"
+
+ def dispatch_request(self):
+ self.get_context()
+ self.context.update(
+ {
+ 'page_title': self.page_title,
+ }
+ )
+
+ self.opt = request.values.get('opt')
+ if self.opt in ['register']:
+ return self.download()
+
+ return flask.render_template(self.template_name, **self.context)
+
+ def download(self):
+ url = "https://{}/api/inventory/".format(app.config['HOST'])
+ self.wbContext = {
+ 'token': self.get_token(),
+ 'url': url,
+ }
+ options = {"register": self.register}
+ return options[self.opt]()
+
+ def register(self):
+ data = flask.render_template('workbench/wbSettings.ini', **self.wbContext)
+ return self.response_download(data)
+
+ def response_download(self, data):
+ bfile = str.encode(data)
+ output = make_response(bfile)
+ output.headers['Content-Disposition'] = 'attachment; filename=settings.ini'
+ output.headers['Content-type'] = 'text/plain'
+ return output
+
+ def get_token(self):
+ if not g.user.sessions:
+ ses = Session(user=g.user)
+ db.session.add(ses)
+ db.session.commit()
+
+ tk = ''
+ now = time.time()
+ for s in g.user.sessions:
+ if s.type == SessionType.Internal and (s.expired == 0 or s.expired > now):
+ tk = s.token
+ break
+
+ assert tk != ''
+
+ token = auth.Auth.encode(tk)
+ return token
+
+
+workbench.add_url_rule('/settings/', view_func=SettingsView.as_view('settings'))
diff --git a/examples/app.py b/examples/app.py
index af45cb1a..5a7e9fbb 100644
--- a/examples/app.py
+++ b/examples/app.py
@@ -11,12 +11,14 @@ from ereuse_devicehub.devicehub import Devicehub
from ereuse_devicehub.inventory.views import devices
from ereuse_devicehub.labels.views import labels
from ereuse_devicehub.views import core
+from ereuse_devicehub.workbench.views import workbench
app = Devicehub(inventory=DevicehubConfig.DB_SCHEMA)
app.register_blueprint(core)
app.register_blueprint(devices)
app.register_blueprint(labels)
app.register_blueprint(api)
+app.register_blueprint(workbench)
# configure & enable CSRF of Flask-WTF
# NOTE: enable by blueprint to exclude API views
diff --git a/package.json b/package.json
index 219a75f4..4cb22b4e 100644
--- a/package.json
+++ b/package.json
@@ -3,12 +3,15 @@
"version": "1.0.0",
"description": "Devicehub is a distributed IT Asset Management System focused in reusing devices, created under the project [eReuse.org](https://www.ereuse.org)",
"main": "index.js",
+ "browserslist": "> 0.25%, not dead",
"directories": {
"doc": "docs",
"example": "examples",
"test": "tests"
},
"devDependencies": {
+ "@babel/cli": "^7.17.10",
+ "@babel/preset-env": "^7.17.10",
"eslint": "^8.13.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^8.5.0",
@@ -17,12 +20,14 @@
},
"scripts": {
"lint:report": "eslint ereuse_devicehub --ext .js --output-file eslint_report.json --format json",
- "lint:fix": "eslint ereuse_devicehub --ext .js --fix"
+ "lint:fix": "eslint ereuse_devicehub --ext .js --fix",
+ "babel": "babel ereuse_devicehub/static/js/main_inventory.js --out-file ereuse_devicehub/static/js/main_inventory.build.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
+ "@babel/core": "^7.17.10",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-react": "^7.29.4",
"eslint-plugin-react-hooks": "^4.4.0"
diff --git a/tests/conftest.py b/tests/conftest.py
index 1a389612..23573d81 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -26,6 +26,7 @@ from ereuse_devicehub.resources.enums import SessionType
from ereuse_devicehub.resources.tag import Tag
from ereuse_devicehub.resources.user.models import Session, User
from ereuse_devicehub.views import core
+from ereuse_devicehub.workbench.views import workbench
STARTT = datetime(year=2000, month=1, day=1, hour=1)
"""A dummy starting time to use in tests."""
@@ -61,6 +62,7 @@ def _app(config: TestConfig) -> Devicehub:
app.register_blueprint(devices)
app.register_blueprint(labels)
app.register_blueprint(api)
+ app.register_blueprint(workbench)
app.config["SQLALCHEMY_RECORD_QUERIES"] = True
app.config['PROFILE'] = True
# app.wsgi_app = ProfilerMiddleware(app.wsgi_app, restrictions=[30])
diff --git a/tests/files/2022-03-31_19h47m53s_46895LX05688KN264LZ934Y09963Q_snapshot.json b/tests/files/2022-03-31_19h47m53s_46895LX05688KN264LZ934Y09963Q_snapshot.json
new file mode 100644
index 00000000..eee58e16
--- /dev/null
+++ b/tests/files/2022-03-31_19h47m53s_46895LX05688KN264LZ934Y09963Q_snapshot.json
@@ -0,0 +1,2429 @@
+{
+ "timestamp": "2022-03-31 19:47:53.482140",
+ "type": "Snapshot",
+ "uuid": "696547a3-7700-44de-a66b-e0f9262c41a5",
+ "sid": "46895LX05688KN264LZ934Y09963Q",
+ "software": "Workbench",
+ "version": "2022.03.00",
+ "data": {
+ "lshw": {
+ "id": "__",
+ "class": "system",
+ "claimed": true,
+ "handle": "DMI:000C",
+ "description": "Notebook",
+ "product": "20HRCTO1WW (LENOVO_MT_20HR_BU_Think_FM_ThinkPad X1 Carbon 5th)",
+ "vendor": "LENOVO",
+ "version": "ThinkPad X1 Carbon 5th",
+ "serial": "PF0QMY5N",
+ "width": 64,
+ "configuration": {
+ "administrator_password": "disabled",
+ "chassis": "notebook",
+ "family": "ThinkPad X1 Carbon 5th",
+ "power-on_password": "disabled",
+ "sku": "LENOVO_MT_20HR_BU_Think_FM_ThinkPad X1 Carbon 5th",
+ "uuid": "305f33cc-33ca-11b2-a85c-aad0993c0c99"
+ },
+ "capabilities": {
+ "smbios-3.0.0": "SMBIOS version 3.0.0",
+ "dmi-3.0.0": "DMI version 3.0.0",
+ "smp": "Symmetric Multi-Processing",
+ "vsyscall32": "32-bit processes"
+ },
+ "children": [
+ {
+ "id": "core",
+ "class": "bus",
+ "claimed": true,
+ "handle": "DMI:000D",
+ "description": "Motherboard",
+ "product": "20HRCTO1WW",
+ "vendor": "LENOVO",
+ "physid": "0",
+ "version": "SDK0J40709 WIN",
+ "serial": "L3HF74S00AZ",
+ "slot": "Not Available",
+ "children": [
+ {
+ "id": "memory",
+ "class": "memory",
+ "claimed": true,
+ "handle": "DMI:0003",
+ "description": "System Memory",
+ "physid": "3",
+ "slot": "System board or motherboard",
+ "units": "bytes",
+ "size": 17045651456,
+ "children": [
+ {
+ "id": "bank:0",
+ "class": "memory",
+ "claimed": true,
+ "handle": "DMI:0004",
+ "description": "Row of chips LPDDR3 Synchronous Unbuffered (Unregistered) 1867 MHz (0,5 ns) [empty]",
+ "product": "K4EBE304EB-EGCF",
+ "vendor": "Samsung",
+ "physid": "0",
+ "serial": "00000000",
+ "slot": "ChannelA-DIMM0",
+ "width": 64,
+ "clock": 1867000000
+ },
+ {
+ "id": "bank:1",
+ "class": "memory",
+ "claimed": true,
+ "handle": "DMI:0005",
+ "description": "Row of chips LPDDR3 Synchronous Unbuffered (Unregistered) 1867 MHz (0,5 ns) [empty]",
+ "product": "K4EBE304EB-EGCF",
+ "vendor": "Samsung",
+ "physid": "1",
+ "serial": "00000000",
+ "slot": "ChannelB-DIMM0",
+ "width": 64,
+ "clock": 1867000000
+ }
+ ]
+ },
+ {
+ "id": "cache:0",
+ "class": "memory",
+ "claimed": true,
+ "handle": "DMI:0007",
+ "description": "L1 cache",
+ "physid": "7",
+ "slot": "L1 Cache",
+ "units": "bytes",
+ "size": 131072,
+ "capacity": 131072,
+ "configuration": {
+ "level": "1"
+ },
+ "capabilities": {
+ "synchronous": "Synchronous",
+ "internal": "Internal",
+ "write-back": "Write-back",
+ "unified": "Unified cache"
+ }
+ },
+ {
+ "id": "cache:1",
+ "class": "memory",
+ "claimed": true,
+ "handle": "DMI:0008",
+ "description": "L2 cache",
+ "physid": "8",
+ "slot": "L2 Cache",
+ "units": "bytes",
+ "size": 524288,
+ "capacity": 524288,
+ "configuration": {
+ "level": "2"
+ },
+ "capabilities": {
+ "synchronous": "Synchronous",
+ "internal": "Internal",
+ "write-back": "Write-back",
+ "unified": "Unified cache"
+ }
+ },
+ {
+ "id": "cache:2",
+ "class": "memory",
+ "claimed": true,
+ "handle": "DMI:0009",
+ "description": "L3 cache",
+ "physid": "9",
+ "slot": "L3 Cache",
+ "units": "bytes",
+ "size": 4194304,
+ "capacity": 4194304,
+ "configuration": {
+ "level": "3"
+ },
+ "capabilities": {
+ "synchronous": "Synchronous",
+ "internal": "Internal",
+ "write-back": "Write-back",
+ "unified": "Unified cache"
+ }
+ },
+ {
+ "id": "cpu",
+ "class": "processor",
+ "claimed": true,
+ "handle": "DMI:000A",
+ "description": "CPU",
+ "product": "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz",
+ "vendor": "Intel Corp.",
+ "physid": "a",
+ "businfo": "cpu@0",
+ "version": "6.142.9",
+ "serial": "None",
+ "slot": "U3E1",
+ "units": "Hz",
+ "size": 3493648000,
+ "capacity": 3500000000,
+ "width": 64,
+ "clock": 100000000,
+ "configuration": {
+ "cores": "2",
+ "enabledcores": "2",
+ "microcode": "78",
+ "threads": "4"
+ },
+ "capabilities": {
+ "lm": "64bits extensions (x86-64)",
+ "fpu": "mathematical co-processor",
+ "fpu_exception": "FPU exceptions reporting",
+ "wp": true,
+ "vme": "virtual mode extensions",
+ "de": "debugging extensions",
+ "pse": "page size extensions",
+ "tsc": "time stamp counter",
+ "msr": "model-specific registers",
+ "pae": "4GB+ memory addressing (Physical Address Extension)",
+ "mce": "machine check exceptions",
+ "cx8": "compare and exchange 8-byte",
+ "apic": "on-chip advanced programmable interrupt controller (APIC)",
+ "sep": "fast system calls",
+ "mtrr": "memory type range registers",
+ "pge": "page global enable",
+ "mca": "machine check architecture",
+ "cmov": "conditional move instruction",
+ "pat": "page attribute table",
+ "pse36": "36-bit page size extensions",
+ "clflush": true,
+ "dts": "debug trace and EMON store MSRs",
+ "acpi": "thermal control (ACPI)",
+ "mmx": "multimedia extensions (MMX)",
+ "fxsr": "fast floating point save/restore",
+ "sse": "streaming SIMD extensions (SSE)",
+ "sse2": "streaming SIMD extensions (SSE2)",
+ "ss": "self-snoop",
+ "ht": "HyperThreading",
+ "tm": "thermal interrupt and status",
+ "pbe": "pending break event",
+ "syscall": "fast system calls",
+ "nx": "no-execute bit (NX)",
+ "pdpe1gb": true,
+ "rdtscp": true,
+ "x86-64": "64bits extensions (x86-64)",
+ "constant_tsc": true,
+ "art": true,
+ "arch_perfmon": true,
+ "pebs": true,
+ "bts": true,
+ "rep_good": true,
+ "nopl": true,
+ "xtopology": true,
+ "nonstop_tsc": true,
+ "cpuid": true,
+ "aperfmperf": true,
+ "pni": true,
+ "pclmulqdq": true,
+ "dtes64": true,
+ "monitor": true,
+ "ds_cpl": true,
+ "vmx": true,
+ "est": true,
+ "tm2": true,
+ "ssse3": true,
+ "sdbg": true,
+ "fma": true,
+ "cx16": true,
+ "xtpr": true,
+ "pdcm": true,
+ "pcid": true,
+ "sse4_1": true,
+ "sse4_2": true,
+ "x2apic": true,
+ "movbe": true,
+ "popcnt": true,
+ "aes": true,
+ "xsave": true,
+ "avx": true,
+ "f16c": true,
+ "rdrand": true,
+ "lahf_lm": true,
+ "abm": true,
+ "3dnowprefetch": true,
+ "cpuid_fault": true,
+ "epb": true,
+ "invpcid_single": true,
+ "pti": true,
+ "tpr_shadow": true,
+ "vnmi": true,
+ "flexpriority": true,
+ "ept": true,
+ "vpid": true,
+ "ept_ad": true,
+ "fsgsbase": true,
+ "tsc_adjust": true,
+ "bmi1": true,
+ "avx2": true,
+ "smep": true,
+ "bmi2": true,
+ "erms": true,
+ "invpcid": true,
+ "mpx": true,
+ "rdseed": true,
+ "adx": true,
+ "smap": true,
+ "clflushopt": true,
+ "intel_pt": true,
+ "xsaveopt": true,
+ "xsavec": true,
+ "xgetbv1": true,
+ "xsaves": true,
+ "dtherm": true,
+ "ida": true,
+ "arat": true,
+ "pln": true,
+ "pts": true,
+ "hwp": true,
+ "hwp_notify": true,
+ "hwp_act_window": true,
+ "hwp_epp": true,
+ "cpufreq": "CPU Frequency scaling"
+ }
+ },
+ {
+ "id": "firmware",
+ "class": "memory",
+ "claimed": true,
+ "description": "BIOS",
+ "vendor": "LENOVO",
+ "physid": "b",
+ "version": "N1MET31W (1.16 )",
+ "date": "03/10/2017",
+ "units": "bytes",
+ "size": 131072,
+ "capacity": 16777216,
+ "capabilities": {
+ "pci": "PCI bus",
+ "pnp": "Plug-and-Play",
+ "upgrade": "BIOS EEPROM can be upgraded",
+ "shadowing": "BIOS shadowing",
+ "cdboot": "Booting from CD-ROM/DVD",
+ "bootselect": "Selectable boot path",
+ "edd": "Enhanced Disk Drive extensions",
+ "int13floppy720": "3.5\" 720KB floppy",
+ "int5printscreen": "Print Screen key",
+ "int9keyboard": "i8042 keyboard controller",
+ "int14serial": "INT14 serial line control",
+ "int17printer": "INT17 printer control",
+ "int10video": "INT10 CGA/Mono video",
+ "acpi": "ACPI",
+ "usb": "USB legacy emulation",
+ "biosbootspecification": "BIOS boot specification",
+ "uefi": "UEFI specification is supported"
+ }
+ },
+ {
+ "id": "pci",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:00",
+ "description": "Host bridge",
+ "product": "Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers",
+ "vendor": "Intel Corporation",
+ "physid": "100",
+ "businfo": "pci@0000:00:00.0",
+ "version": "02",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "skl_uncore"
+ },
+ "children": [
+ {
+ "id": "display",
+ "class": "display",
+ "claimed": true,
+ "handle": "PCI:0000:00:02.0",
+ "description": "VGA compatible controller",
+ "product": "HD Graphics 620",
+ "vendor": "Intel Corporation",
+ "physid": "2",
+ "businfo": "pci@0000:00:02.0",
+ "logicalname": "/dev/fb0",
+ "version": "02",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "depth": "32",
+ "driver": "i915",
+ "latency": "0",
+ "resolution": "1920,1080"
+ },
+ "capabilities": {
+ "pciexpress": "PCI Express",
+ "msi": "Message Signalled Interrupts",
+ "pm": "Power Management",
+ "vga_controller": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing",
+ "rom": "extension ROM",
+ "fb": "framebuffer"
+ }
+ },
+ {
+ "id": "generic:0",
+ "class": "generic",
+ "handle": "PCI:0000:00:08.0",
+ "description": "System peripheral",
+ "product": "Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model",
+ "vendor": "Intel Corporation",
+ "physid": "8",
+ "businfo": "pci@0000:00:08.0",
+ "version": "00",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "latency": "0"
+ },
+ "capabilities": {
+ "msi": "Message Signalled Interrupts",
+ "pm": "Power Management",
+ "cap_list": "PCI capabilities listing"
+ }
+ },
+ {
+ "id": "usb",
+ "class": "bus",
+ "claimed": true,
+ "handle": "PCI:0000:00:14.0",
+ "description": "USB controller",
+ "product": "Sunrise Point-LP USB 3.0 xHCI Controller",
+ "vendor": "Intel Corporation",
+ "physid": "14",
+ "businfo": "pci@0000:00:14.0",
+ "version": "21",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "xhci_hcd",
+ "latency": "0"
+ },
+ "capabilities": {
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "xhci": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "usbhost:0",
+ "class": "bus",
+ "claimed": true,
+ "handle": "USB:1:1",
+ "product": "xHCI Host Controller",
+ "vendor": "Linux 5.4.72-gentoo-x86_64 xhci-hcd",
+ "physid": "0",
+ "businfo": "usb@1",
+ "logicalname": "usb1",
+ "version": "5.04",
+ "configuration": {
+ "driver": "hub",
+ "slots": "12",
+ "speed": "480Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.00": "USB 2.0"
+ },
+ "children": [
+ {
+ "id": "usb:0",
+ "class": "communication",
+ "claimed": true,
+ "handle": "USB:1:2",
+ "description": "Bluetooth wireless interface",
+ "vendor": "Intel Corp.",
+ "physid": "7",
+ "businfo": "usb@1:7",
+ "version": "0.10",
+ "configuration": {
+ "driver": "btusb",
+ "maxpower": "100mA",
+ "speed": "12Mbit/s"
+ },
+ "capabilities": {
+ "bluetooth": "Bluetooth wireless radio",
+ "usb-2.00": "USB 2.0"
+ }
+ },
+ {
+ "id": "usb:1",
+ "class": "multimedia",
+ "claimed": true,
+ "handle": "USB:1:3",
+ "description": "Video",
+ "product": "Integrated Camera: Integrated C",
+ "vendor": "8SSC20F27049L1GZ6CB00MH",
+ "physid": "8",
+ "businfo": "usb@1:8",
+ "logicalname": [
+ "input9",
+ "/dev/input/event8"
+ ],
+ "version": "0.16",
+ "serial": "200901010001",
+ "configuration": {
+ "driver": "uvcvideo",
+ "maxpower": "500mA",
+ "speed": "480Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.00": "USB 2.0",
+ "usb": "USB"
+ }
+ },
+ {
+ "id": "usb:2",
+ "class": "generic",
+ "handle": "USB:1:4",
+ "description": "Generic USB device",
+ "vendor": "Validity Sensors, Inc.",
+ "physid": "9",
+ "businfo": "usb@1:9",
+ "version": "1.64",
+ "serial": "d6aa80ed14a7",
+ "configuration": {
+ "maxpower": "100mA",
+ "speed": "12Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.00": "USB 2.0"
+ }
+ }
+ ]
+ },
+ {
+ "id": "usbhost:1",
+ "class": "bus",
+ "claimed": true,
+ "handle": "USB:2:1",
+ "product": "xHCI Host Controller",
+ "vendor": "Linux 5.4.72-gentoo-x86_64 xhci-hcd",
+ "physid": "1",
+ "businfo": "usb@2",
+ "logicalname": "usb2",
+ "version": "5.04",
+ "configuration": {
+ "driver": "hub",
+ "slots": "6",
+ "speed": "5000Mbit/s"
+ },
+ "capabilities": {
+ "usb-3.00": true
+ }
+ }
+ ]
+ },
+ {
+ "id": "generic:1",
+ "class": "generic",
+ "claimed": true,
+ "handle": "PCI:0000:00:14.2",
+ "description": "Signal processing controller",
+ "product": "Sunrise Point-LP Thermal subsystem",
+ "vendor": "Intel Corporation",
+ "physid": "14.2",
+ "businfo": "pci@0000:00:14.2",
+ "version": "21",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "intel_pch_thermal",
+ "latency": "0"
+ },
+ "capabilities": {
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "cap_list": "PCI capabilities listing"
+ }
+ },
+ {
+ "id": "communication",
+ "class": "communication",
+ "claimed": true,
+ "handle": "PCI:0000:00:16.0",
+ "description": "Communication controller",
+ "product": "Sunrise Point-LP CSME HECI #1",
+ "vendor": "Intel Corporation",
+ "physid": "16",
+ "businfo": "pci@0000:00:16.0",
+ "version": "21",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "mei_me",
+ "latency": "0"
+ },
+ "capabilities": {
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ }
+ },
+ {
+ "id": "pci:0",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:02",
+ "description": "PCI bridge",
+ "product": "Sunrise Point-LP PCI Express Root Port #1",
+ "vendor": "Intel Corporation",
+ "physid": "1c",
+ "businfo": "pci@0000:00:1c.0",
+ "version": "f1",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pciexpress": "PCI Express",
+ "msi": "Message Signalled Interrupts",
+ "pm": "Power Management",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "generic",
+ "class": "bus",
+ "claimed": true,
+ "handle": "PCI:0000:02:00.0",
+ "description": "MMC Host",
+ "product": "RTS525A PCI Express Card Reader",
+ "vendor": "Realtek Semiconductor Co., Ltd.",
+ "physid": "0",
+ "businfo": "pci@0000:02:00.0",
+ "logicalname": "mmc0",
+ "version": "01",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "rtsx_pci",
+ "latency": "0"
+ },
+ "capabilities": {
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ }
+ }
+ ]
+ },
+ {
+ "id": "pci:1",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:04",
+ "description": "PCI bridge",
+ "product": "Sunrise Point-LP PCI Express Root Port #3",
+ "vendor": "Intel Corporation",
+ "physid": "1c.2",
+ "businfo": "pci@0000:00:1c.2",
+ "version": "f1",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pciexpress": "PCI Express",
+ "msi": "Message Signalled Interrupts",
+ "pm": "Power Management",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "network",
+ "class": "network",
+ "claimed": true,
+ "handle": "PCI:0000:04:00.0",
+ "description": "Wireless interface",
+ "product": "Wireless 8265 / 8275",
+ "vendor": "Intel Corporation",
+ "physid": "0",
+ "businfo": "pci@0000:04:00.0",
+ "logicalname": "wlp4s0",
+ "version": "88",
+ "serial": "00:28:f8:a6:d5:7e",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "broadcast": "yes",
+ "driver": "iwlwifi",
+ "driverversion": "5.4.72-gentoo-x86_64",
+ "firmware": "36.ad812ee0.0",
+ "ip": "192.168.1.39",
+ "latency": "0",
+ "link": "yes",
+ "multicast": "yes",
+ "wireless": "IEEE 802.11"
+ },
+ "capabilities": {
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing",
+ "ethernet": true,
+ "physical": "Physical interface",
+ "wireless": "Wireless-LAN"
+ }
+ }
+ ]
+ },
+ {
+ "id": "pci:2",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:05",
+ "description": "PCI bridge",
+ "product": "Sunrise Point-LP PCI Express Root Port #5",
+ "vendor": "Intel Corporation",
+ "physid": "1c.4",
+ "businfo": "pci@0000:00:1c.4",
+ "version": "f1",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pciexpress": "PCI Express",
+ "msi": "Message Signalled Interrupts",
+ "pm": "Power Management",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "nvme",
+ "class": "storage",
+ "claimed": true,
+ "handle": "PCI:0000:05:00.0",
+ "description": "NVMe device",
+ "product": "SAMSUNG MZVLW1T0HMLH-000L7",
+ "vendor": "Samsung Electronics Co Ltd",
+ "physid": "0",
+ "businfo": "pci@0000:05:00.0",
+ "logicalname": "/dev/nvme0",
+ "version": "6L7QCXY7",
+ "serial": "S35ANX0J401001",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "nvme",
+ "latency": "0",
+ "nqn": "nqn.2014.08.org.nvmexpress:144d144dS35ANX0J401001 SAMSUNG MZVLW1T0HMLH-000L7",
+ "state": "live"
+ },
+ "capabilities": {
+ "nvme": true,
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "msix": "MSI-X",
+ "nvm_express": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "namespace",
+ "class": "disk",
+ "claimed": true,
+ "handle": "GUID:a240de2f-0a5b-4704-907b-266b2b0272aa",
+ "description": "NVMe disk",
+ "physid": "1",
+ "businfo": "nvme@0:1",
+ "logicalname": "/dev/nvme0n1",
+ "units": "bytes",
+ "size": 1024209543168,
+ "configuration": {
+ "guid": "a240de2f-0a5b-4704-907b-266b2b0272aa",
+ "logicalsectorsize": "512",
+ "sectorsize": "512",
+ "wwid": "eui.002538b471b40718"
+ },
+ "capabilities": {
+ "gpt-1.00": "GUID Partition Table version 1.00",
+ "partitioned": "Partitioned disk",
+ "partitioned:gpt": "GUID partition table"
+ },
+ "children": [
+ {
+ "id": "volume:0",
+ "class": "volume",
+ "claimed": true,
+ "handle": "GUID:631d2564-60c5-4ba8-8fdc-f9f9a9fe8342",
+ "description": "Windows FAT volume",
+ "vendor": "mkfs.fat",
+ "physid": "1",
+ "businfo": "nvme@0:1,1",
+ "logicalname": [
+ "/dev/nvme0n1p1",
+ "/boot/efi"
+ ],
+ "dev": "259:1",
+ "version": "FAT32",
+ "serial": "b0c3-af95",
+ "size": 998227968,
+ "capacity": 999292416,
+ "configuration": {
+ "FATs": "2",
+ "filesystem": "fat",
+ "mount.fstype": "vfat",
+ "mount.options": "rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro",
+ "name": "EFI",
+ "state": "mounted"
+ },
+ "capabilities": {
+ "boot": "Contains boot code",
+ "fat": "Windows FAT",
+ "initialized": "initialized volume"
+ }
+ },
+ {
+ "id": "volume:1",
+ "class": "volume",
+ "claimed": true,
+ "handle": "GUID:52951680-c216-4d41-8990-fa1077a8b4a6",
+ "description": "EXT4 volume",
+ "vendor": "Linux",
+ "physid": "2",
+ "businfo": "nvme@0:1,2",
+ "logicalname": [
+ "/dev/nvme0n1p2",
+ "/"
+ ],
+ "dev": "259:2",
+ "version": "1.0",
+ "serial": "789e6c5c-7e98-4971-be6e-5772b2427751",
+ "size": 249999998976,
+ "capacity": 249999999488,
+ "configuration": {
+ "created": "2020-11-07 14:20:41",
+ "filesystem": "ext4",
+ "label": "GENTOO",
+ "lastmountpoint": "/",
+ "modified": "2020-11-08 08:10:25",
+ "mount.fstype": "ext4",
+ "mount.options": "rw,relatime,errors=remount-ro",
+ "mounted": "2022-03-15 08:04:31",
+ "name": "ROOT",
+ "state": "mounted"
+ },
+ "capabilities": {
+ "journaled": true,
+ "extended_attributes": "Extended Attributes",
+ "large_files": "4GB+ files",
+ "huge_files": "16TB+ files",
+ "dir_nlink": "directories with 65000+ subdirs",
+ "recover": "needs recovery",
+ "64bit": "64bit filesystem",
+ "extents": "extent-based allocation",
+ "ext4": true,
+ "ext2": "EXT2/EXT3",
+ "initialized": "initialized volume"
+ }
+ },
+ {
+ "id": "volume:2",
+ "class": "volume",
+ "claimed": true,
+ "handle": "GUID:dcdda707-de03-4d98-9c9c-5978faadaea3",
+ "description": "swap partition",
+ "vendor": "NetBSD",
+ "physid": "3",
+ "businfo": "nvme@0:1,3",
+ "logicalname": "/dev/nvme0n1p3",
+ "dev": "259:3",
+ "serial": "dcdda707-de03-4d98-9c9c-5978faadaea3",
+ "capacity": 2999975424,
+ "configuration": {
+ "name": "SWAP BSD"
+ },
+ "capabilities": {
+ "nofs": "No filesystem"
+ }
+ },
+ {
+ "id": "volume:3",
+ "class": "volume",
+ "claimed": true,
+ "handle": "GUID:cf6b5554-fc7f-449d-8a23-dc18e923d85b",
+ "description": "Linux swap volume",
+ "vendor": "Linux",
+ "physid": "4",
+ "businfo": "nvme@0:1,4",
+ "logicalname": "/dev/nvme0n1p4",
+ "dev": "259:4",
+ "version": "1",
+ "serial": "0e61b980-1d5b-4e02-9414-7c3c3d9b9c57",
+ "size": 2999243520,
+ "capacity": 2999975424,
+ "configuration": {
+ "filesystem": "swap",
+ "pagesize": "4095"
+ },
+ "capabilities": {
+ "nofs": "No filesystem",
+ "swap": "Linux swap",
+ "initialized": "initialized volume"
+ }
+ },
+ {
+ "id": "volume:4",
+ "class": "volume",
+ "claimed": true,
+ "handle": "GUID:3fc34104-ca09-4c3d-b153-7dd09de4185a",
+ "description": "FFS partition",
+ "vendor": "NetBSD",
+ "physid": "5",
+ "businfo": "nvme@0:1,5",
+ "logicalname": "/dev/nvme0n1p5",
+ "dev": "259:5",
+ "serial": "3fc34104-ca09-4c3d-b153-7dd09de4185a",
+ "capacity": 200000142848,
+ "configuration": {
+ "name": "Devuan"
+ }
+ },
+ {
+ "id": "volume:5",
+ "class": "volume",
+ "claimed": true,
+ "handle": "GUID:02d94658-530e-c844-ab78-ac48b52b48f9",
+ "description": "ZFS partition",
+ "vendor": "FreeBSD",
+ "physid": "6",
+ "businfo": "nvme@0:1,6",
+ "logicalname": "/dev/nvme0n1p6",
+ "dev": "259:6",
+ "serial": "02d94658-530e-c844-ab78-ac48b52b48f9",
+ "capacity": 567208647680
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "pci:3",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:06",
+ "description": "PCI bridge",
+ "product": "Sunrise Point-LP PCI Express Root Port #9",
+ "vendor": "Intel Corporation",
+ "physid": "1d",
+ "businfo": "pci@0000:00:1d.0",
+ "version": "f1",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pciexpress": "PCI Express",
+ "msi": "Message Signalled Interrupts",
+ "pm": "Power Management",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "pci",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:07",
+ "description": "PCI bridge",
+ "product": "JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]",
+ "vendor": "Intel Corporation",
+ "physid": "0",
+ "businfo": "pci@0000:06:00.0",
+ "version": "02",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "pci:0",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:08",
+ "description": "PCI bridge",
+ "product": "JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]",
+ "vendor": "Intel Corporation",
+ "physid": "0",
+ "businfo": "pci@0000:07:00.0",
+ "version": "02",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ }
+ },
+ {
+ "id": "pci:1",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:09",
+ "description": "PCI bridge",
+ "product": "JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]",
+ "vendor": "Intel Corporation",
+ "physid": "1",
+ "businfo": "pci@0000:07:01.0",
+ "version": "02",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ }
+ },
+ {
+ "id": "pci:2",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:3c",
+ "description": "PCI bridge",
+ "product": "JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]",
+ "vendor": "Intel Corporation",
+ "physid": "2",
+ "businfo": "pci@0000:07:02.0",
+ "version": "02",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "usb",
+ "class": "bus",
+ "claimed": true,
+ "handle": "PCI:0000:3c:00.0",
+ "description": "USB controller",
+ "product": "JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016]",
+ "vendor": "Intel Corporation",
+ "physid": "0",
+ "businfo": "pci@0000:3c:00.0",
+ "version": "02",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "xhci_hcd",
+ "latency": "0"
+ },
+ "capabilities": {
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "xhci": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "usbhost:0",
+ "class": "bus",
+ "claimed": true,
+ "handle": "USB:3:1",
+ "product": "xHCI Host Controller",
+ "vendor": "Linux 5.4.72-gentoo-x86_64 xhci-hcd",
+ "physid": "0",
+ "businfo": "usb@3",
+ "logicalname": "usb3",
+ "version": "5.04",
+ "configuration": {
+ "driver": "hub",
+ "slots": "2",
+ "speed": "480Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.00": "USB 2.0"
+ },
+ "children": [
+ {
+ "id": "usb",
+ "class": "bus",
+ "claimed": true,
+ "handle": "USB:3:2",
+ "description": "USB hub",
+ "product": "USB2.0 Hub",
+ "vendor": "VIA Labs, Inc.",
+ "physid": "2",
+ "businfo": "usb@3:2",
+ "version": "4.73",
+ "configuration": {
+ "driver": "hub",
+ "slots": "5",
+ "speed": "480Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.10": true
+ },
+ "children": [
+ {
+ "id": "usb:0",
+ "class": "bus",
+ "claimed": true,
+ "handle": "USB:3:3",
+ "description": "USB hub",
+ "product": "USB2.0 Hub",
+ "vendor": "VIA Labs, Inc.",
+ "physid": "1",
+ "businfo": "usb@3:2.1",
+ "version": "4.73",
+ "configuration": {
+ "driver": "hub",
+ "slots": "5",
+ "speed": "480Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.10": true
+ },
+ "children": [
+ {
+ "id": "usb:0",
+ "class": "input",
+ "claimed": true,
+ "handle": "USB:3:6",
+ "description": "Mouse",
+ "product": "Razer Razer DeathAdder V2",
+ "vendor": "Razer",
+ "physid": "2",
+ "businfo": "usb@3:2.1.2",
+ "logicalname": [
+ "input174",
+ "/dev/input/event17",
+ "/dev/input/mouse2",
+ "input175",
+ "/dev/input/event18",
+ "input176",
+ "/dev/input/event19",
+ "input177",
+ "/dev/input/event20",
+ "input178",
+ "/dev/input/event21",
+ "input179",
+ "/dev/input/event22",
+ "input179::capslock",
+ "input179::numlock",
+ "input179::scrolllock"
+ ],
+ "version": "2.00",
+ "configuration": {
+ "driver": "usbhid",
+ "maxpower": "100mA",
+ "speed": "12Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.00": "USB 2.0",
+ "usb": "USB"
+ }
+ },
+ {
+ "id": "usb:1",
+ "class": "input",
+ "claimed": true,
+ "handle": "USB:3:8",
+ "description": "Keyboard",
+ "product": "Razer Razer Huntsman Mini Consumer Control",
+ "vendor": "Razer",
+ "physid": "3",
+ "businfo": "usb@3:2.1.3",
+ "logicalname": [
+ "input180",
+ "/dev/input/event23",
+ "input180::capslock",
+ "input180::numlock",
+ "input180::scrolllock",
+ "input181",
+ "/dev/input/event24",
+ "input181::capslock",
+ "input181::numlock",
+ "input181::scrolllock",
+ "input182",
+ "/dev/input/event25",
+ "input183",
+ "/dev/input/event26",
+ "input184",
+ "/dev/input/event27",
+ "input185",
+ "/dev/input/event28",
+ "/dev/input/mouse3",
+ "input186",
+ "/dev/input/event29"
+ ],
+ "version": "2.00",
+ "serial": "00000000001A",
+ "configuration": {
+ "driver": "usbhid",
+ "maxpower": "500mA",
+ "speed": "12Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.00": "USB 2.0",
+ "usb": "USB"
+ }
+ },
+ {
+ "id": "usb:2",
+ "class": "generic",
+ "handle": "USB:3:9",
+ "description": "Generic USB device",
+ "product": "USB Billboard Device",
+ "vendor": "VIA Labs, Inc.",
+ "physid": "5",
+ "businfo": "usb@3:2.1.5",
+ "version": "0.01",
+ "serial": "0000000000000001",
+ "configuration": {
+ "maxpower": "100mA",
+ "speed": "480Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.01": true
+ }
+ }
+ ]
+ },
+ {
+ "id": "usb:1",
+ "class": "generic",
+ "handle": "USB:3:4",
+ "description": "Generic USB device",
+ "product": "USB 2.0 BILLBOARD",
+ "vendor": "VLI Inc.",
+ "physid": "3",
+ "businfo": "usb@3:2.3",
+ "version": "14.24",
+ "serial": "0000000000000001",
+ "configuration": {
+ "speed": "12Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.01": true
+ }
+ },
+ {
+ "id": "usb:2",
+ "class": "generic",
+ "handle": "USB:3:7",
+ "description": "Generic USB device",
+ "product": "USB Billboard Device",
+ "vendor": "VIA Labs, Inc.",
+ "physid": "5",
+ "businfo": "usb@3:2.5",
+ "version": "0.01",
+ "serial": "0000000000000001",
+ "configuration": {
+ "maxpower": "100mA",
+ "speed": "480Mbit/s"
+ },
+ "capabilities": {
+ "usb-2.01": true
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "usbhost:1",
+ "class": "bus",
+ "claimed": true,
+ "handle": "USB:4:1",
+ "product": "xHCI Host Controller",
+ "vendor": "Linux 5.4.72-gentoo-x86_64 xhci-hcd",
+ "physid": "1",
+ "businfo": "usb@4",
+ "logicalname": "usb4",
+ "version": "5.04",
+ "configuration": {
+ "driver": "hub",
+ "slots": "2",
+ "speed": "10000Mbit/s"
+ },
+ "capabilities": {
+ "usb-3.10": true
+ },
+ "children": [
+ {
+ "id": "usb",
+ "class": "bus",
+ "claimed": true,
+ "handle": "USB:4:2",
+ "description": "USB hub",
+ "product": "USB3.0 Hub",
+ "vendor": "VIA Labs, Inc.",
+ "physid": "2",
+ "businfo": "usb@4:2",
+ "version": "4.73",
+ "configuration": {
+ "driver": "hub",
+ "slots": "4",
+ "speed": "5000Mbit/s"
+ },
+ "capabilities": {
+ "usb-3.10": true
+ },
+ "children": [
+ {
+ "id": "usb:0",
+ "class": "bus",
+ "claimed": true,
+ "handle": "USB:4:3",
+ "description": "USB hub",
+ "product": "USB3.0 Hub",
+ "vendor": "VIA Labs, Inc.",
+ "physid": "1",
+ "businfo": "usb@4:2.1",
+ "version": "4.73",
+ "configuration": {
+ "driver": "hub",
+ "slots": "4",
+ "speed": "5000Mbit/s"
+ },
+ "capabilities": {
+ "usb-3.10": true
+ }
+ },
+ {
+ "id": "usb:1",
+ "class": "storage",
+ "claimed": true,
+ "handle": "SCSI:00",
+ "description": "Mass storage device",
+ "product": "Mass Storage Device",
+ "vendor": "Generic",
+ "physid": "2",
+ "businfo": "usb@4:2.2",
+ "logicalname": "scsi0",
+ "version": "1.00",
+ "serial": "058F84688461",
+ "configuration": {
+ "driver": "usb-storage",
+ "maxpower": "800mA",
+ "speed": "5000Mbit/s"
+ },
+ "capabilities": {
+ "usb-3.00": true,
+ "scsi": "SCSI",
+ "emulated": "Emulated device",
+ "scsi-host": "SCSI host adapter"
+ },
+ "children": [
+ {
+ "id": "disk:0",
+ "class": "disk",
+ "claimed": true,
+ "handle": "SCSI:00:00:00:00",
+ "description": "SCSI Disk",
+ "product": "SD/MMC",
+ "vendor": "Generic-",
+ "physid": "0.0.0",
+ "businfo": "scsi@0:0.0.0",
+ "logicalname": "/dev/sda",
+ "dev": "8:0",
+ "version": "1.00",
+ "serial": "AU8461",
+ "configuration": {
+ "ansiversion": "6",
+ "logicalsectorsize": "512",
+ "sectorsize": "512"
+ },
+ "capabilities": {
+ "removable": "support is removable"
+ },
+ "children": [
+ {
+ "id": "medium",
+ "class": "disk",
+ "claimed": true,
+ "physid": "0",
+ "logicalname": "/dev/sda",
+ "dev": "8:0"
+ }
+ ]
+ },
+ {
+ "id": "disk:1",
+ "class": "disk",
+ "claimed": true,
+ "handle": "SCSI:00:00:00:01",
+ "description": "SCSI Disk",
+ "product": "Micro SD/M2",
+ "vendor": "Generic-",
+ "physid": "0.0.1",
+ "businfo": "scsi@0:0.0.1",
+ "logicalname": "/dev/sdb",
+ "dev": "8:16",
+ "version": "1.08",
+ "serial": "AU8461",
+ "configuration": {
+ "ansiversion": "6",
+ "logicalsectorsize": "512",
+ "sectorsize": "512"
+ },
+ "capabilities": {
+ "removable": "support is removable"
+ },
+ "children": [
+ {
+ "id": "medium",
+ "class": "disk",
+ "claimed": true,
+ "physid": "0",
+ "logicalname": "/dev/sdb",
+ "dev": "8:16"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "usb:2",
+ "class": "generic",
+ "claimed": true,
+ "handle": "USB:4:5",
+ "description": "Generic USB device",
+ "product": "USB 10/100/1000 LAN",
+ "vendor": "Realtek",
+ "physid": "4",
+ "businfo": "usb@4:2.4",
+ "version": "31.00",
+ "serial": "001000001",
+ "configuration": {
+ "driver": "r8152",
+ "maxpower": "288mA",
+ "speed": "5000Mbit/s"
+ },
+ "capabilities": {
+ "usb-3.00": true
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "pci:3",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCIBUS:0000:3d",
+ "description": "PCI bridge",
+ "product": "JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]",
+ "vendor": "Intel Corporation",
+ "physid": "4",
+ "businfo": "pci@0000:07:04.0",
+ "version": "02",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "pcieport"
+ },
+ "capabilities": {
+ "pci": true,
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "pciexpress": "PCI Express",
+ "normal_decode": true,
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "isa",
+ "class": "bridge",
+ "claimed": true,
+ "handle": "PCI:0000:00:1f.0",
+ "description": "ISA bridge",
+ "product": "Sunrise Point-LP LPC Controller",
+ "vendor": "Intel Corporation",
+ "physid": "1f",
+ "businfo": "pci@0000:00:1f.0",
+ "version": "21",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "latency": "0"
+ },
+ "capabilities": {
+ "isa": true,
+ "bus_master": "bus mastering"
+ },
+ "children": [
+ {
+ "id": "pnp00:00",
+ "class": "system",
+ "claimed": true,
+ "product": "Motherboard registers",
+ "physid": "0",
+ "configuration": {
+ "driver": "system"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:01",
+ "class": "system",
+ "claimed": true,
+ "product": "Motherboard registers",
+ "physid": "1",
+ "configuration": {
+ "driver": "system"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:02",
+ "class": "system",
+ "claimed": true,
+ "product": "Motherboard registers",
+ "physid": "2",
+ "configuration": {
+ "driver": "system"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:03",
+ "class": "system",
+ "claimed": true,
+ "product": "AT Real-Time Clock",
+ "physid": "3",
+ "configuration": {
+ "driver": "rtc_cmos"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:04",
+ "class": "generic",
+ "claimed": true,
+ "product": "PnP device INT3f0d",
+ "physid": "4",
+ "configuration": {
+ "driver": "system"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:05",
+ "class": "generic",
+ "claimed": true,
+ "product": "PnP device LEN0071",
+ "physid": "5",
+ "configuration": {
+ "driver": "i8042 kbd"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:06",
+ "class": "generic",
+ "claimed": true,
+ "product": "PnP device LEN0072",
+ "physid": "6",
+ "configuration": {
+ "driver": "i8042 aux"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:07",
+ "class": "system",
+ "claimed": true,
+ "product": "Motherboard registers",
+ "physid": "7",
+ "configuration": {
+ "driver": "system"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:08",
+ "class": "system",
+ "claimed": true,
+ "product": "Motherboard registers",
+ "physid": "8",
+ "configuration": {
+ "driver": "system"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:09",
+ "class": "system",
+ "claimed": true,
+ "product": "Motherboard registers",
+ "physid": "9",
+ "configuration": {
+ "driver": "system"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ },
+ {
+ "id": "pnp00:0a",
+ "class": "system",
+ "claimed": true,
+ "product": "System Board",
+ "physid": "a",
+ "configuration": {
+ "driver": "system"
+ },
+ "capabilities": {
+ "pnp": true
+ }
+ }
+ ]
+ },
+ {
+ "id": "memory",
+ "class": "memory",
+ "handle": "PCI:0000:00:1f.2",
+ "description": "Memory controller",
+ "product": "Sunrise Point-LP PMC",
+ "vendor": "Intel Corporation",
+ "physid": "1f.2",
+ "businfo": "pci@0000:00:1f.2",
+ "version": "21",
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "latency": "0"
+ }
+ },
+ {
+ "id": "multimedia",
+ "class": "multimedia",
+ "claimed": true,
+ "handle": "PCI:0000:00:1f.3",
+ "description": "Audio device",
+ "product": "Sunrise Point-LP HD Audio",
+ "vendor": "Intel Corporation",
+ "physid": "1f.3",
+ "businfo": "pci@0000:00:1f.3",
+ "logicalname": [
+ "card0",
+ "/dev/snd/controlC0",
+ "/dev/snd/hwC0D0",
+ "/dev/snd/hwC0D2",
+ "/dev/snd/pcmC0D0c",
+ "/dev/snd/pcmC0D0p",
+ "/dev/snd/pcmC0D10p",
+ "/dev/snd/pcmC0D3p",
+ "/dev/snd/pcmC0D7p",
+ "/dev/snd/pcmC0D8p",
+ "/dev/snd/pcmC0D9p"
+ ],
+ "version": "21",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "snd_hda_intel",
+ "latency": "64"
+ },
+ "capabilities": {
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing"
+ },
+ "children": [
+ {
+ "id": "input:0",
+ "class": "input",
+ "claimed": true,
+ "product": "HDA Intel PCH Mic",
+ "physid": "0",
+ "logicalname": [
+ "input11",
+ "/dev/input/event10"
+ ]
+ },
+ {
+ "id": "input:1",
+ "class": "input",
+ "claimed": true,
+ "product": "HDA Intel PCH Headphone",
+ "physid": "1",
+ "logicalname": [
+ "input12",
+ "/dev/input/event11"
+ ]
+ },
+ {
+ "id": "input:2",
+ "class": "input",
+ "claimed": true,
+ "product": "HDA Intel PCH HDMI/DP,pcm=3",
+ "physid": "2",
+ "logicalname": [
+ "input13",
+ "/dev/input/event12"
+ ]
+ },
+ {
+ "id": "input:3",
+ "class": "input",
+ "claimed": true,
+ "product": "HDA Intel PCH HDMI/DP,pcm=7",
+ "physid": "3",
+ "logicalname": [
+ "input14",
+ "/dev/input/event13"
+ ]
+ },
+ {
+ "id": "input:4",
+ "class": "input",
+ "claimed": true,
+ "product": "HDA Intel PCH HDMI/DP,pcm=8",
+ "physid": "4",
+ "logicalname": [
+ "input15",
+ "/dev/input/event14"
+ ]
+ },
+ {
+ "id": "input:5",
+ "class": "input",
+ "claimed": true,
+ "product": "HDA Intel PCH HDMI/DP,pcm=9",
+ "physid": "5",
+ "logicalname": [
+ "input16",
+ "/dev/input/event15"
+ ]
+ },
+ {
+ "id": "input:6",
+ "class": "input",
+ "claimed": true,
+ "product": "HDA Intel PCH HDMI/DP,pcm=10",
+ "physid": "6",
+ "logicalname": [
+ "input17",
+ "/dev/input/event16"
+ ]
+ }
+ ]
+ },
+ {
+ "id": "serial",
+ "class": "bus",
+ "claimed": true,
+ "handle": "PCI:0000:00:1f.4",
+ "description": "SMBus",
+ "product": "Sunrise Point-LP SMBus",
+ "vendor": "Intel Corporation",
+ "physid": "1f.4",
+ "businfo": "pci@0000:00:1f.4",
+ "version": "21",
+ "width": 64,
+ "clock": 33000000,
+ "configuration": {
+ "driver": "i801_smbus",
+ "latency": "0"
+ }
+ },
+ {
+ "id": "network",
+ "class": "network",
+ "claimed": true,
+ "handle": "PCI:0000:00:1f.6",
+ "description": "Ethernet interface",
+ "product": "Ethernet Connection (4) I219-V",
+ "vendor": "Intel Corporation",
+ "physid": "1f.6",
+ "businfo": "pci@0000:00:1f.6",
+ "logicalname": "enp0s31f6",
+ "version": "21",
+ "serial": "54:e1:ad:11:fb:b7",
+ "units": "bit/s",
+ "capacity": 1000000000,
+ "width": 32,
+ "clock": 33000000,
+ "configuration": {
+ "autonegotiation": "on",
+ "broadcast": "yes",
+ "driver": "e1000e",
+ "driverversion": "3.2.6-k",
+ "firmware": "0.1-4",
+ "latency": "0",
+ "link": "no",
+ "multicast": "yes",
+ "port": "twisted pair"
+ },
+ "capabilities": {
+ "pm": "Power Management",
+ "msi": "Message Signalled Interrupts",
+ "bus_master": "bus mastering",
+ "cap_list": "PCI capabilities listing",
+ "ethernet": true,
+ "physical": "Physical interface",
+ "tp": "twisted pair",
+ "10bt": "10Mbit/s",
+ "10bt-fd": "10Mbit/s (full duplex)",
+ "100bt": "100Mbit/s",
+ "100bt-fd": "100Mbit/s (full duplex)",
+ "1000bt-fd": "1Gbit/s (full duplex)",
+ "autonegotiation": "Auto-negotiation"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "battery",
+ "class": "power",
+ "claimed": true,
+ "handle": "DMI:0023",
+ "product": "01AV429",
+ "vendor": "LGC",
+ "physid": "1",
+ "slot": "Front",
+ "units": "mWh",
+ "capacity": 57000,
+ "configuration": {
+ "voltage": "11,6V"
+ }
+ },
+ {
+ "id": "input:0",
+ "class": "input",
+ "claimed": true,
+ "product": "Sleep Button",
+ "physid": "2",
+ "logicalname": [
+ "input0",
+ "/dev/input/event0"
+ ],
+ "capabilities": {
+ "platform": true
+ }
+ },
+ {
+ "id": "input:1",
+ "class": "input",
+ "claimed": true,
+ "product": "Lid Switch",
+ "physid": "3",
+ "logicalname": [
+ "input1",
+ "/dev/input/event1"
+ ],
+ "capabilities": {
+ "platform": true
+ }
+ },
+ {
+ "id": "input:2",
+ "class": "input",
+ "claimed": true,
+ "product": "PC Speaker",
+ "physid": "4",
+ "logicalname": [
+ "input10",
+ "/dev/input/event9"
+ ],
+ "capabilities": {
+ "isa": "ISA bus"
+ }
+ },
+ {
+ "id": "input:3",
+ "class": "input",
+ "claimed": true,
+ "product": "Power Button",
+ "physid": "5",
+ "logicalname": [
+ "input2",
+ "/dev/input/event2"
+ ],
+ "capabilities": {
+ "platform": true
+ }
+ },
+ {
+ "id": "input:4",
+ "class": "input",
+ "claimed": true,
+ "product": "AT Translated Set 2 keyboard",
+ "physid": "6",
+ "logicalname": [
+ "input3",
+ "/dev/input/event3",
+ "input3::capslock",
+ "input3::numlock",
+ "input3::scrolllock"
+ ],
+ "capabilities": {
+ "i8042": "i8042 PC AT keyboard controller"
+ }
+ },
+ {
+ "id": "input:5",
+ "class": "input",
+ "claimed": true,
+ "product": "SynPS/2 Synaptics TouchPad",
+ "physid": "7",
+ "logicalname": [
+ "input5",
+ "/dev/input/event4",
+ "/dev/input/mouse0"
+ ],
+ "capabilities": {
+ "i8042": "i8042 PC AT keyboard controller"
+ }
+ },
+ {
+ "id": "input:6",
+ "class": "input",
+ "claimed": true,
+ "product": "TPPS/2 Elan TrackPoint",
+ "physid": "8",
+ "logicalname": [
+ "input6",
+ "/dev/input/event5",
+ "/dev/input/mouse1"
+ ],
+ "capabilities": {
+ "i8042": "i8042 PC AT keyboard controller"
+ }
+ },
+ {
+ "id": "input:7",
+ "class": "input",
+ "claimed": true,
+ "product": "ThinkPad Extra Buttons",
+ "physid": "9",
+ "logicalname": [
+ "input7",
+ "/dev/input/event6"
+ ],
+ "capabilities": {
+ "platform": true
+ }
+ },
+ {
+ "id": "input:8",
+ "class": "input",
+ "claimed": true,
+ "product": "Video Bus",
+ "physid": "a",
+ "logicalname": [
+ "input8",
+ "/dev/input/event7"
+ ],
+ "capabilities": {
+ "platform": true
+ }
+ },
+ {
+ "id": "network",
+ "class": "network",
+ "claimed": true,
+ "description": "Ethernet interface",
+ "physid": "b",
+ "businfo": "usb@4:2.4",
+ "logicalname": "enp60s0u2u4",
+ "serial": "48:65:ee:17:57:1a",
+ "units": "bit/s",
+ "size": 100000000,
+ "capacity": 1000000000,
+ "configuration": {
+ "autonegotiation": "on",
+ "broadcast": "yes",
+ "driver": "r8152",
+ "driverversion": "v1.10.11",
+ "duplex": "full",
+ "ip": "192.168.1.35",
+ "link": "yes",
+ "multicast": "yes",
+ "port": "MII",
+ "speed": "100Mbit/s"
+ },
+ "capabilities": {
+ "ethernet": true,
+ "physical": "Physical interface",
+ "tp": "twisted pair",
+ "mii": "Media Independant Interface",
+ "10bt": "10Mbit/s",
+ "10bt-fd": "10Mbit/s (full duplex)",
+ "100bt": "100Mbit/s",
+ "100bt-fd": "100Mbit/s (full duplex)",
+ "1000bt": "1Gbit/s",
+ "1000bt-fd": "1Gbit/s (full duplex)",
+ "autonegotiation": "Auto-negotiation"
+ }
+ }
+ ]
+ },
+ "dmidecode": "# dmidecode 3.2\nGetting SMBIOS data from sysfs.\nSMBIOS 3.0.0 present.\nTable at 0x4F10E000.\n\nHandle 0x0000, DMI type 222, 16 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tDE 10 00 00 01 00 99 00 03 10 01 20 02 30 03 00\n\tStrings:\n\t\tMemory Init Complete\n\t\tEnd of DXE Phase\n\t\tBIOS Boot Complete\n\nHandle 0x0001, DMI type 14, 8 bytes\nGroup Associations\n\tName: Intel(R) Silicon View Technology\n\tItems: 1\n\t\t0x0000 (OEM-specific)\n\nHandle 0x0002, DMI type 134, 13 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t86 0D 02 00 27 04 17 20 00 00 00 00 00\n\nHandle 0x0003, DMI type 16, 23 bytes\nPhysical Memory Array\n\tLocation: System Board Or Motherboard\n\tUse: System Memory\n\tError Correction Type: None\n\tMaximum Capacity: 16 GB\n\tError Information Handle: Not Provided\n\tNumber Of Devices: 2\n\nHandle 0x0004, DMI type 17, 40 bytes\nMemory Device\n\tArray Handle: 0x0003\n\tError Information Handle: Not Provided\n\tTotal Width: 64 bits\n\tData Width: 64 bits\n\tSize: 8192 MB\n\tForm Factor: Row Of Chips\n\tSet: None\n\tLocator: ChannelA-DIMM0\n\tBank Locator: BANK 0\n\tType: LPDDR3\n\tType Detail: Synchronous Unbuffered (Unregistered)\n\tSpeed: 1867 MT/s\n\tManufacturer: Samsung\n\tSerial Number: 00000000\n\tAsset Tag: None\n\tPart Number: K4EBE304EB-EGCF \n\tRank: 2\n\tConfigured Memory Speed: 1867 MT/s\n\tMinimum Voltage: Unknown\n\tMaximum Voltage: Unknown\n\tConfigured Voltage: 1.2 V\n\nHandle 0x0005, DMI type 17, 40 bytes\nMemory Device\n\tArray Handle: 0x0003\n\tError Information Handle: Not Provided\n\tTotal Width: 64 bits\n\tData Width: 64 bits\n\tSize: 8192 MB\n\tForm Factor: Row Of Chips\n\tSet: None\n\tLocator: ChannelB-DIMM0\n\tBank Locator: BANK 2\n\tType: LPDDR3\n\tType Detail: Synchronous Unbuffered (Unregistered)\n\tSpeed: 1867 MT/s\n\tManufacturer: Samsung\n\tSerial Number: 00000000\n\tAsset Tag: None\n\tPart Number: K4EBE304EB-EGCF \n\tRank: 2\n\tConfigured Memory Speed: 1867 MT/s\n\tMinimum Voltage: Unknown\n\tMaximum Voltage: Unknown\n\tConfigured Voltage: 1.2 V\n\nHandle 0x0006, DMI type 19, 31 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x00000000000\n\tEnding Address: 0x003FFFFFFFF\n\tRange Size: 16 GB\n\tPhysical Array Handle: 0x0003\n\tPartition Width: 2\n\nHandle 0x0007, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: L1 Cache\n\tConfiguration: Enabled, Not Socketed, Level 1\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 128 kB\n\tMaximum Size: 128 kB\n\tSupported SRAM Types:\n\t\tSynchronous\n\tInstalled SRAM Type: Synchronous\n\tSpeed: Unknown\n\tError Correction Type: Parity\n\tSystem Type: Unified\n\tAssociativity: 8-way Set-associative\n\nHandle 0x0008, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: L2 Cache\n\tConfiguration: Enabled, Not Socketed, Level 2\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 512 kB\n\tMaximum Size: 512 kB\n\tSupported SRAM Types:\n\t\tSynchronous\n\tInstalled SRAM Type: Synchronous\n\tSpeed: Unknown\n\tError Correction Type: Single-bit ECC\n\tSystem Type: Unified\n\tAssociativity: 4-way Set-associative\n\nHandle 0x0009, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: L3 Cache\n\tConfiguration: Enabled, Not Socketed, Level 3\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 4096 kB\n\tMaximum Size: 4096 kB\n\tSupported SRAM Types:\n\t\tSynchronous\n\tInstalled SRAM Type: Synchronous\n\tSpeed: Unknown\n\tError Correction Type: Multi-bit ECC\n\tSystem Type: Unified\n\tAssociativity: 16-way Set-associative\n\nHandle 0x000A, DMI type 4, 48 bytes\nProcessor Information\n\tSocket Designation: U3E1\n\tType: Central Processor\n\tFamily: Core i7\n\tManufacturer: Intel(R) Corporation\n\tID: E9 06 08 00 FF FB EB BF\n\tSignature: Type 0, Family 6, Model 142, Stepping 9\n\tFlags:\n\t\tFPU (Floating-point unit on-chip)\n\t\tVME (Virtual mode extension)\n\t\tDE (Debugging extension)\n\t\tPSE (Page size extension)\n\t\tTSC (Time stamp counter)\n\t\tMSR (Model specific registers)\n\t\tPAE (Physical address extension)\n\t\tMCE (Machine check exception)\n\t\tCX8 (CMPXCHG8 instruction supported)\n\t\tAPIC (On-chip APIC hardware supported)\n\t\tSEP (Fast system call)\n\t\tMTRR (Memory type range registers)\n\t\tPGE (Page global enable)\n\t\tMCA (Machine check architecture)\n\t\tCMOV (Conditional move instruction supported)\n\t\tPAT (Page attribute table)\n\t\tPSE-36 (36-bit page size extension)\n\t\tCLFSH (CLFLUSH instruction supported)\n\t\tDS (Debug store)\n\t\tACPI (ACPI supported)\n\t\tMMX (MMX technology supported)\n\t\tFXSR (FXSAVE and FXSTOR instructions supported)\n\t\tSSE (Streaming SIMD extensions)\n\t\tSSE2 (Streaming SIMD extensions 2)\n\t\tSS (Self-snoop)\n\t\tHTT (Multi-threading)\n\t\tTM (Thermal monitor supported)\n\t\tPBE (Pending break enabled)\n\tVersion: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz\n\tVoltage: 1.0 V\n\tExternal Clock: 100 MHz\n\tMax Speed: 2900 MHz\n\tCurrent Speed: 2700 MHz\n\tStatus: Populated, Enabled\n\tUpgrade: Other\n\tL1 Cache Handle: 0x0007\n\tL2 Cache Handle: 0x0008\n\tL3 Cache Handle: 0x0009\n\tSerial Number: None\n\tAsset Tag: None\n\tPart Number: None\n\tCore Count: 2\n\tCore Enabled: 2\n\tThread Count: 4\n\tCharacteristics:\n\t\t64-bit capable\n\t\tMulti-Core\n\t\tHardware Thread\n\t\tExecute Protection\n\t\tEnhanced Virtualization\n\t\tPower/Performance Control\n\nHandle 0x000B, DMI type 0, 24 bytes\nBIOS Information\n\tVendor: LENOVO\n\tVersion: N1MET31W (1.16 )\n\tRelease Date: 03/10/2017\n\tAddress: 0xE0000\n\tRuntime Size: 128 kB\n\tROM Size: 16 MB\n\tCharacteristics:\n\t\tPCI is supported\n\t\tPNP is supported\n\t\tBIOS is upgradeable\n\t\tBIOS shadowing is allowed\n\t\tBoot from CD is supported\n\t\tSelectable boot is supported\n\t\tEDD is supported\n\t\t3.5\"/720 kB floppy services are supported (int 13h)\n\t\tPrint screen service is supported (int 5h)\n\t\t8042 keyboard services are supported (int 9h)\n\t\tSerial services are supported (int 14h)\n\t\tPrinter services are supported (int 17h)\n\t\tCGA/mono video services are supported (int 10h)\n\t\tACPI is supported\n\t\tUSB legacy is supported\n\t\tBIOS boot specification is supported\n\t\tTargeted content distribution is supported\n\t\tUEFI is supported\n\tBIOS Revision: 1.16\n\tFirmware Revision: 1.11\n\nHandle 0x000C, DMI type 1, 27 bytes\nSystem Information\n\tManufacturer: LENOVO\n\tProduct Name: 20HRCTO1WW\n\tVersion: ThinkPad X1 Carbon 5th\n\tSerial Number: PF0QMY5N\n\tUUID: 305f33cc-33ca-11b2-a85c-aad0993c0c99\n\tWake-up Type: Power Switch\n\tSKU Number: LENOVO_MT_20HR_BU_Think_FM_ThinkPad X1 Carbon 5th\n\tFamily: ThinkPad X1 Carbon 5th\n\nHandle 0x000D, DMI type 2, 15 bytes\nBase Board Information\n\tManufacturer: LENOVO\n\tProduct Name: 20HRCTO1WW\n\tVersion: SDK0J40709 WIN\n\tSerial Number: L3HF74S00AZ\n\tAsset Tag: Not Available\n\tFeatures:\n\t\tBoard is a hosting board\n\t\tBoard is replaceable\n\tLocation In Chassis: Not Available\n\tChassis Handle: 0x0000\n\tType: Motherboard\n\tContained Object Handles: 0\n\nHandle 0x000E, DMI type 3, 22 bytes\nChassis Information\n\tManufacturer: LENOVO\n\tType: Notebook\n\tLock: Not Present\n\tVersion: None\n\tSerial Number: PF0QMY5N\n\tAsset Tag: No Asset Information\n\tBoot-up State: Unknown\n\tPower Supply State: Unknown\n\tThermal State: Unknown\n\tSecurity Status: Unknown\n\tOEM Information: 0x00000000\n\tHeight: Unspecified\n\tNumber Of Power Cords: Unspecified\n\tContained Elements: 0\n\tSKU Number: Not Specified\n\nHandle 0x000F, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Available\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 1\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0010, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Available\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 2\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0011, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Available\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 3\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0012, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Available\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 4\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0013, DMI type 126, 9 bytes\nInactive\n\nHandle 0x0014, DMI type 126, 9 bytes\nInactive\n\nHandle 0x0015, DMI type 126, 9 bytes\nInactive\n\nHandle 0x0016, DMI type 126, 9 bytes\nInactive\n\nHandle 0x0017, DMI type 126, 9 bytes\nInactive\n\nHandle 0x0018, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Available\n\tInternal Connector Type: None\n\tExternal Reference Designator: Ethernet\n\tExternal Connector Type: RJ-45\n\tPort Type: Network Port\n\nHandle 0x0019, DMI type 126, 9 bytes\nInactive\n\nHandle 0x001A, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Available\n\tInternal Connector Type: None\n\tExternal Reference Designator: Hdmi\n\tExternal Connector Type: Other\n\tPort Type: Video Port\n\nHandle 0x001B, DMI type 126, 9 bytes\nInactive\n\nHandle 0x001C, DMI type 126, 9 bytes\nInactive\n\nHandle 0x001D, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Available\n\tInternal Connector Type: None\n\tExternal Reference Designator: Headphone/Microphone Combo Jack1\n\tExternal Connector Type: Mini Jack (headphones)\n\tPort Type: Audio Port\n\nHandle 0x001E, DMI type 126, 9 bytes\nInactive\n\nHandle 0x001F, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: Media Card Slot\n\tType: Other\n\tCurrent Usage: Available\n\tLength: Other\n\tCharacteristics:\n\t\tHot-plug devices are supported\n\tBus Address: 0000:00:00.0\n\nHandle 0x0020, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: SimCard Slot\n\tType: Other\n\tCurrent Usage: Available\n\tLength: Other\n\tCharacteristics: None\n\tBus Address: 0000:00:00.0\n\nHandle 0x0021, DMI type 12, 5 bytes\nSystem Configuration Options\n\nHandle 0x0022, DMI type 13, 22 bytes\nBIOS Language Information\n\tLanguage Description Format: Abbreviated\n\tInstallable Languages: 1\n\t\ten-US\n\tCurrently Installed Language: en-US\n\nHandle 0x0023, DMI type 22, 26 bytes\nPortable Battery\n\tLocation: Front\n\tManufacturer: LGC\n\tName: 01AV429\n\tDesign Capacity: 57000 mWh\n\tDesign Voltage: 11580 mV\n\tSBDS Version: 03.01\n\tMaximum Error: Unknown\n\tSBDS Serial Number: 0431\n\tSBDS Manufacture Date: 2017-03-29\n\tSBDS Chemistry: LiP\n\tOEM-specific Information: 0x00000000\n\nHandle 0x0024, DMI type 126, 26 bytes\nInactive\n\nHandle 0x0025, DMI type 133, 5 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t85 05 25 00 01\n\tStrings:\n\t\tKHOIHGIUCCHHII\n\nHandle 0x0026, DMI type 135, 19 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t87 13 26 00 54 50 07 02 42 41 59 20 49 2F 4F 20\n\t\t04 00 00\n\nHandle 0x0027, DMI type 130, 20 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t82 14 27 00 24 41 4D 54 00 00 00 00 00 A5 AF 02\n\t\tC0 00 00 00\n\nHandle 0x0028, DMI type 131, 64 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t83 40 28 00 31 00 00 00 0B 00 00 00 00 00 0A 00\n\t\tF8 00 58 9D 00 00 00 00 01 00 00 00 06 00 0B 00\n\t\tAC 04 0A 00 00 00 00 00 FE 00 D8 15 00 00 00 00\n\t\t00 00 00 00 22 00 00 00 76 50 72 6F 00 00 00 00\n\nHandle 0x0029, DMI type 221, 26 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tDD 1A 29 00 03 01 00 01 05 00 00 00 02 00 00 00\n\t\t00 4E 00 03 00 00 05 00 00 00\n\tStrings:\n\t\tReference Code - CPU\n\t\tuCode Version\n\t\tTXT ACM version\n\nHandle 0x002A, DMI type 221, 26 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tDD 1A 2A 00 03 01 00 01 05 00 00 00 02 00 0B 00\n\t\t00 0A 00 03 04 0B 06 0A AC 04\n\tStrings:\n\t\tReference Code - ME 11.0\n\t\tMEBx version\n\t\tME Firmware Version\n\t\tConsumer SKU\n\nHandle 0x002B, DMI type 221, 75 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tDD 4B 2B 00 0A 01 00 01 05 00 00 00 02 03 FF FF\n\t\tFF FF FF 04 00 FF FF FF 21 00 05 00 FF FF FF 21\n\t\t00 06 00 02 0A 00 00 00 07 00 3E 00 00 00 00 08\n\t\t00 34 00 00 00 00 09 00 0B 00 00 00 00 0A 00 3E\n\t\t00 00 00 00 0B 00 34 00 00 00 00\n\tStrings:\n\t\tReference Code - SKL PCH\n\t\tPCH-CRID Status\n\t\tDisabled\n\t\tPCH-CRID Original Value\n\t\tPCH-CRID New Value\n\t\tOPROM - RST - RAID\n\t\tSKL PCH H Bx Hsio Version\n\t\tSKL PCH H Dx Hsio Version\n\t\tKBL PCH H Ax Hsio Version\n\t\tSKL PCH LP Bx Hsio Version\n\t\tSKL PCH LP Cx Hsio Version\n\nHandle 0x002C, DMI type 221, 54 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tDD 36 2C 00 07 01 00 01 05 00 00 00 02 00 01 05\n\t\t00 00 00 03 00 01 05 00 00 00 04 05 FF FF FF FF\n\t\tFF 06 00 FF FF FF 02 00 07 00 FF FF FF 02 00 08\n\t\t00 FF FF FF 04 02\n\tStrings:\n\t\tReference Code - SA - System Agent\n\t\tReference Code - MRC\n\t\tSA - PCIe Version\n\t\tSA-CRID Status\n\t\tEnabled \n\t\tSA-CRID Original Value\n\t\tSA-CRID New Value\n\t\tOPROM - VBIOS\n\nHandle 0x002D, DMI type 15, 31 bytes\nSystem Event Log\n\tArea Length: 34 bytes\n\tHeader Start Offset: 0x0000\n\tHeader Length: 16 bytes\n\tData Start Offset: 0x0010\n\tAccess Method: General-purpose non-volatile data functions\n\tAccess Address: 0x00F0\n\tStatus: Valid, Not Full\n\tChange Token: 0x00000001\n\tHeader Format: Type 1\n\tSupported Log Type Descriptors: 4\n\tDescriptor 1: POST error\n\tData Format 1: POST results bitmap\n\tDescriptor 2: PCI system error\n\tData Format 2: None\n\tDescriptor 3: System reconfigured\n\tData Format 3: None\n\tDescriptor 4: Log area reset/cleared\n\tData Format 4: None\n\nHandle 0x002E, DMI type 24, 5 bytes\nHardware Security\n\tPower-On Password Status: Disabled\n\tKeyboard Password Status: Not Implemented\n\tAdministrator Password Status: Disabled\n\tFront Panel Reset Status: Not Implemented\n\nHandle 0x002F, DMI type 132, 7 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t84 07 2F 00 01 D8 36\n\nHandle 0x0030, DMI type 18, 23 bytes\n32-bit Memory Error Information\n\tType: OK\n\tGranularity: Unknown\n\tOperation: Unknown\n\tVendor Syndrome: Unknown\n\tMemory Array Address: Unknown\n\tDevice Address: Unknown\n\tResolution: Unknown\n\nHandle 0x0031, DMI type 21, 7 bytes\nBuilt-in Pointing Device\n\tType: Track Point\n\tInterface: PS/2\n\tButtons: 3\n\nHandle 0x0032, DMI type 21, 7 bytes\nBuilt-in Pointing Device\n\tType: Touch Pad\n\tInterface: PS/2\n\tButtons: 2\n\nHandle 0x0033, DMI type 131, 22 bytes\nThinkVantage Technologies\n\tVersion: 1\n\tDiagnostics: No\n\nHandle 0x0034, DMI type 136, 6 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t88 06 34 00 5A 5A\n\nHandle 0x0035, DMI type 140, 19 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t8C 13 35 00 4C 45 4E 4F 56 4F 0B 04 01 B2 00 4D\n\t\t53 20 00\n\nHandle 0x0036, DMI type 140, 19 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t8C 13 36 00 4C 45 4E 4F 56 4F 0B 05 01 05 00 00\n\t\t00 00 00\n\nHandle 0x0037, DMI type 140, 23 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t8C 17 37 00 4C 45 4E 4F 56 4F 0B 06 01 8A 13 00\n\t\t00 00 00 00 00 00 00\n\nHandle 0x0038, DMI type 14, 8 bytes\nGroup Associations\n\tName: $MEI\n\tItems: 1\n\t\t0x0000 (OEM-specific)\n\nHandle 0x0039, DMI type 219, 81 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tDB 51 39 00 01 03 01 45 02 00 A0 06 01 00 66 20\n\t\t00 00 00 00 40 08 00 01 1F 00 00 C9 0A 40 44 02\n\t\tFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF\n\t\tFF FF FF FF FF FF FF FF 03 00 00 00 80 00 00 00\n\t\t00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n\t\t00\n\tStrings:\n\t\tMEI1\n\t\tMEI2\n\t\tMEI3\n\nHandle 0x003A, DMI type 140, 15 bytes\nThinkPad Embedded Controller Program\n\tVersion ID: N1MHT22W\n\tRelease Date: 03/10/2017\n\nHandle 0x003B, DMI type 140, 43 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t8C 2B 3B 00 4C 45 4E 4F 56 4F 0B 08 01 FF FF FF\n\t\tFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF\n\t\tFF FF FF FF FF FF FF FF FF FF FF\n\nHandle 0x003C, DMI type 135, 18 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t87 12 3C 00 54 50 07 01 01 00 01 00 00 00 01 00\n\t\t00 00\n\nHandle 0xFEFF, DMI type 127, 4 bytes\nEnd Of Table\n\n",
+ "hwinfo": "01: None 00.0: 10105 BIOS\n [Created at bios.186]\n Unique ID: rdCR.lZF+r4EgHp4\n Hardware Class: bios\n BIOS Keyboard LED Status:\n Scroll Lock: off\n Num Lock: off\n Caps Lock: off\n Base Memory: 628 kB\n PnP BIOS: @@@0000\n BIOS32 Service Directory Entry: 0xfd000\n SMBIOS Version: 3.0\n Type 222 Record: #0\n Data 00: de 10 00 00 01 00 99 00 03 10 01 20 02 30 03 00\n String 1: \"Memory Init Complete\"\n String 2: \"End of DXE Phase\"\n String 3: \"BIOS Boot Complete\"\n Group Associations: #1\n Group Name: \"Intel(R) Silicon View Technology\"\n Items: #0\n Type 134 Record: #2\n Data 00: 86 0d 02 00 27 04 17 20 00 00 00 00 00\n Physical Memory Array: #3\n Use: 0x03 (System memory)\n Location: 0x03 (Motherboard)\n Slots: 2\n Max. Size: 16 GB\n ECC: 0x03 (None)\n Memory Device: #4\n Location: \"ChannelA-DIMM0\"\n Bank: \"BANK 0\"\n Manufacturer: \"Samsung\"\n Serial: \"00000000\"\n Asset Tag: \"None\"\n Part Number: \"K4EBE304EB-EGCF\"\n Memory Array: #3\n Form Factor: 0x0b (Row of Chips)\n Type: 0x1d (Other)\n Type Detail: 0x4080 (Synchronous)\n Data Width: 64 bits\n Size: 8 GB\n Speed: 1867 MHz\n Memory Device: #5\n Location: \"ChannelB-DIMM0\"\n Bank: \"BANK 2\"\n Manufacturer: \"Samsung\"\n Serial: \"00000000\"\n Asset Tag: \"None\"\n Part Number: \"K4EBE304EB-EGCF\"\n Memory Array: #3\n Form Factor: 0x0b (Row of Chips)\n Type: 0x1d (Other)\n Type Detail: 0x4080 (Synchronous)\n Data Width: 64 bits\n Size: 8 GB\n Speed: 1867 MHz\n Memory Array Mapping: #6\n Memory Array: #3\n Partition Width: 2\n Start Address: 0x0000000000000000\n End Address: 0x0000000400000000\n Cache Info: #7\n Designation: \"L1 Cache\"\n Level: L1\n State: Enabled\n Mode: 0x01 (Write Back)\n Location: 0x00 (Internal, Not Socketed)\n ECC: 0x04 (Parity)\n Type: 0x05 (Unified)\n Associativity: 0x07 (8-way Set-Associative)\n Max. Size: 128 kB\n Current Size: 128 kB\n Supported SRAM Types: 0x0020 (Synchronous)\n Current SRAM Type: 0x0020 (Synchronous)\n Cache Info: #8\n Designation: \"L2 Cache\"\n Level: L2\n State: Enabled\n Mode: 0x01 (Write Back)\n Location: 0x00 (Internal, Not Socketed)\n ECC: 0x05 (Single-bit)\n Type: 0x05 (Unified)\n Associativity: 0x05 (4-way Set-Associative)\n Max. Size: 512 kB\n Current Size: 512 kB\n Supported SRAM Types: 0x0020 (Synchronous)\n Current SRAM Type: 0x0020 (Synchronous)\n Cache Info: #9\n Designation: \"L3 Cache\"\n Level: L3\n State: Enabled\n Mode: 0x01 (Write Back)\n Location: 0x00 (Internal, Not Socketed)\n ECC: 0x06 (Multi-bit)\n Type: 0x05 (Unified)\n Associativity: 0x08 (16-way Set-Associative)\n Max. Size: 4096 kB\n Current Size: 4096 kB\n Supported SRAM Types: 0x0020 (Synchronous)\n Current SRAM Type: 0x0020 (Synchronous)\n Processor Info: #10\n Socket: \"U3E1\"\n Socket Type: 0x01 (Other)\n Socket Status: Populated\n Type: 0x03 (CPU)\n Family: 0xc6 (Other)\n Manufacturer: \"Intel(R) Corporation\"\n Version: \"Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz\"\n Serial: \"None\"\n Asset Tag: \"None\"\n Part Number: \"None\"\n Processor ID: 0xbfebfbff000806e9\n Status: 0x01 (Enabled)\n Voltage: 1.0 V\n External Clock: 100 MHz\n Max. Speed: 2900 MHz\n Current Speed: 2700 MHz\n L1 Cache: #7\n L2 Cache: #8\n L3 Cache: #9\n BIOS Info: #11\n Vendor: \"LENOVO\"\n Version: \"N1MET31W (1.16 )\"\n Date: \"03/10/2017\"\n Start Address: 0xe0000\n ROM Size: 16384 kB\n Features: 0x0d03001200007d099a80\n PCI supported\n PnP supported\n BIOS flashable\n BIOS shadowing allowed\n CD boot supported\n Selectable boot supported\n EDD spec supported\n 720kB Floppy supported\n Print Screen supported\n 8042 Keyboard Services supported\n Serial Services supported\n Printer Services supported\n CGA/Mono Video supported\n ACPI supported\n USB Legacy supported\n BIOS Boot Spec supported\n System Info: #12\n Manufacturer: \"LENOVO\"\n Product: \"20HRCTO1WW\"\n Version: \"ThinkPad X1 Carbon 5th\"\n Serial: \"PF0QMY5N\"\n UUID: 305f33cc-33ca-11b2-a85c-aad0993c0c99\n Wake-up: 0x06 (Power Switch)\n Board Info: #13\n Manufacturer: \"LENOVO\"\n Product: \"20HRCTO1WW\"\n Version: \"SDK0J40709 WIN\"\n Serial: \"L3HF74S00AZ\"\n Asset Tag: \"Not Available\"\n Type: 0x0a (Motherboard)\n Features: 0x09\n Hosting Board\n Replaceable\n Location: \"Not Available\"\n Chassis Info: #14\n Manufacturer: \"LENOVO\"\n Version: \"None\"\n Serial: \"PF0QMY5N\"\n Asset Tag: \"No Asset Information\"\n Type: 0x0a (Notebook)\n Bootup State: 0x02 (Unknown)\n Power Supply State: 0x02 (Unknown)\n Thermal State: 0x02 (Unknown)\n Security Status: 0x02 (Unknown)\n Port Connector: #15\n Type: 0x10 (USB)\n Internal Designator: \"Not Available\"\n External Designator: \"USB 1\"\n External Connector: 0x12 (Access Bus [USB])\n Port Connector: #16\n Type: 0x10 (USB)\n Internal Designator: \"Not Available\"\n External Designator: \"USB 2\"\n External Connector: 0x12 (Access Bus [USB])\n Port Connector: #17\n Type: 0x10 (USB)\n Internal Designator: \"Not Available\"\n External Designator: \"USB 3\"\n External Connector: 0x12 (Access Bus [USB])\n Port Connector: #18\n Type: 0x10 (USB)\n Internal Designator: \"Not Available\"\n External Designator: \"USB 4\"\n External Connector: 0x12 (Access Bus [USB])\n Inactive Record: #19\n Data 00: 7e 09 13 00 01 00 02 12 10\n String 1: \"Not Available\"\n String 2: \"USB 5\"\n Inactive Record: #20\n Data 00: 7e 09 14 00 01 00 02 12 10\n String 1: \"Not Available\"\n String 2: \"USB 6\"\n Inactive Record: #21\n Data 00: 7e 09 15 00 01 00 02 12 10\n String 1: \"Not Available\"\n String 2: \"USB 7\"\n Inactive Record: #22\n Data 00: 7e 09 16 00 01 00 02 12 10\n String 1: \"Not Available\"\n String 2: \"USB 8\"\n Inactive Record: #23\n Data 00: 7e 09 17 00 01 00 02 12 10\n String 1: \"Not Available\"\n String 2: \"USB 9\"\n Port Connector: #24\n Type: 0x1f (Network Port)\n Internal Designator: \"Not Available\"\n External Designator: \"Ethernet\"\n External Connector: 0x0b (RJ-45)\n Inactive Record: #25\n Data 00: 7e 09 19 00 01 00 02 07 1c\n String 1: \"Not Available\"\n String 2: \"External Monitor\"\n Port Connector: #26\n Type: 0x1c (Video Port)\n Internal Designator: \"Not Available\"\n External Designator: \"Hdmi\"\n External Connector: 0xff (Other)\n Inactive Record: #27\n Data 00: 7e 09 1b 00 01 00 02 ff 1c\n String 1: \"Not Available\"\n String 2: \"DisplayPort/DVI-D\"\n Inactive Record: #28\n Data 00: 7e 09 1c 00 01 00 02 ff 1c\n String 1: \"Not Available\"\n String 2: \"DisplayPort/HDMI\"\n Port Connector: #29\n Type: 0x1d (Audio Port)\n Internal Designator: \"Not Available\"\n External Designator: \"Headphone/Microphone Combo Jack1\"\n External Connector: 0x1f (Mini-jack [headphones])\n Inactive Record: #30\n Data 00: 7e 09 1e 00 01 00 02 1f 1d\n String 1: \"Not Available\"\n String 2: \"Headphone/Microphone Combo Jack2\"\n System Slot: #31\n Designation: \"Media Card Slot\"\n Type: 0x01 (Other)\n Bus Width: 0x01 (Other)\n Status: 0x03 (Available)\n Length: 0x01 (Other)\n Slot ID: 0\n Characteristics: 0x0200 (Hot-Plug)\n System Slot: #32\n Designation: \"SimCard Slot\"\n Type: 0x01 (Other)\n Bus Width: 0x01 (Other)\n Status: 0x03 (Available)\n Length: 0x01 (Other)\n Slot ID: 0\n System Config Options (Jumpers & Switches) #33:\n Language Info: #34\n Languages: en-US\n Current: en-US\n Type 22 Record: #35\n Data 00: 16 1a 23 00 01 02 00 00 03 02 44 16 3c 2d 04 ff\n Data 10: 31 04 7d 4a 05 0a 00 00 00 00\n String 1: \"Front\"\n String 2: \"LGC\"\n String 3: \"01AV429\"\n String 4: \"03.01\"\n String 5: \"LiP\"\n Inactive Record: #36\n Data 00: 7e 1a 24 00 01 02 00 00 03 02 00 00 00 00 04 ff\n Data 10: 00 00 00 00 05 0a 00 00 00 00\n Type 133 Record: #37\n Data 00: 85 05 25 00 01\n String 1: \"KHOIHGIUCCHHII\"\n Type 135 Record: #38\n Data 00: 87 13 26 00 54 50 07 02 42 41 59 20 49 2f 4f 20\n Data 10: 04 00 00\n Type 130 Record: #39\n Data 00: 82 14 27 00 24 41 4d 54 00 00 00 00 00 a5 af 02\n Data 10: c0 00 00 00\n Type 131 Record: #40\n Data 00: 83 40 28 00 31 00 00 00 0b 00 00 00 00 00 0a 00\n Data 10: f8 00 58 9d 00 00 00 00 01 00 00 00 06 00 0b 00\n Data 20: ac 04 0a 00 00 00 00 00 fe 00 d8 15 00 00 00 00\n Data 30: 00 00 00 00 22 00 00 00 76 50 72 6f 00 00 00 00\n Type 221 Record: #41\n Data 00: dd 1a 29 00 03 01 00 01 05 00 00 00 02 00 00 00\n Data 10: 00 4e 00 03 00 00 05 00 00 00\n String 1: \"Reference Code - CPU\"\n String 2: \"uCode Version\"\n String 3: \"TXT ACM version\"\n Type 221 Record: #42\n Data 00: dd 1a 2a 00 03 01 00 01 05 00 00 00 02 00 0b 00\n Data 10: 00 0a 00 03 04 0b 06 0a ac 04\n String 1: \"Reference Code - ME 11.0\"\n String 2: \"MEBx version\"\n String 3: \"ME Firmware Version\"\n String 4: \"Consumer SKU\"\n Type 221 Record: #43\n Data 00: dd 4b 2b 00 0a 01 00 01 05 00 00 00 02 03 ff ff\n Data 10: ff ff ff 04 00 ff ff ff 21 00 05 00 ff ff ff 21\n Data 20: 00 06 00 02 0a 00 00 00 07 00 3e 00 00 00 00 08\n Data 30: 00 34 00 00 00 00 09 00 0b 00 00 00 00 0a 00 3e\n Data 40: 00 00 00 00 0b 00 34 00 00 00 00\n String 1: \"Reference Code - SKL PCH\"\n String 2: \"PCH-CRID Status\"\n String 3: \"Disabled\"\n String 4: \"PCH-CRID Original Value\"\n String 5: \"PCH-CRID New Value\"\n String 6: \"OPROM - RST - RAID\"\n String 7: \"SKL PCH H Bx Hsio Version\"\n String 8: \"SKL PCH H Dx Hsio Version\"\n String 9: \"KBL PCH H Ax Hsio Version\"\n String 10: \"SKL PCH LP Bx Hsio Version\"\n String 11: \"SKL PCH LP Cx Hsio Version\"\n Type 221 Record: #44\n Data 00: dd 36 2c 00 07 01 00 01 05 00 00 00 02 00 01 05\n Data 10: 00 00 00 03 00 01 05 00 00 00 04 05 ff ff ff ff\n Data 20: ff 06 00 ff ff ff 02 00 07 00 ff ff ff 02 00 08\n Data 30: 00 ff ff ff 04 02\n String 1: \"Reference Code - SA - System Agent\"\n String 2: \"Reference Code - MRC\"\n String 3: \"SA - PCIe Version\"\n String 4: \"SA-CRID Status\"\n String 5: \"Enabled\"\n String 6: \"SA-CRID Original Value\"\n String 7: \"SA-CRID New Value\"\n String 8: \"OPROM - VBIOS\"\n Type 15 Record: #45\n Data 00: 0f 1f 2d 00 22 00 00 00 10 00 04 01 01 00 00 00\n Data 10: f0 00 00 00 01 04 02 08 04 0a 00 14 00 16 00\n Hardware Security: #46\n Power-on Password: 0x00 (Disabled)\n Keyboard Password: 0x02 (Not Implemented)\n Admin Password: 0x00 (Disabled)\n Front Panel Reset: 0x02 (Not Implemented)\n Type 132 Record: #47\n Data 00: 84 07 2f 00 01 d8 36\n 32bit-Memory Error Info: #48\n Type: 0x03 (OK)\n Granularity: 0x02 (Unknown)\n Operation: 0x02 (Unknown)\n Pointing Device: #49\n Type: 0x05 (Track Point)\n Interface: 0x04 (PS/2)\n Buttons: 3\n Pointing Device: #50\n Type: 0x07 (Touch Pad)\n Interface: 0x04 (PS/2)\n Buttons: 2\n Type 131 Record: #51\n Data 00: 83 16 33 00 01 00 00 00 00 00 00 00 00 00 00 00\n Data 10: 00 00 00 00 00 01\n String 1: \"TVT-Enablement\"\n Type 136 Record: #52\n Data 00: 88 06 34 00 5a 5a\n Type 140 Record: #53\n Data 00: 8c 13 35 00 4c 45 4e 4f 56 4f 0b 04 01 b2 00 4d\n Data 10: 53 20 00\n Type 140 Record: #54\n Data 00: 8c 13 36 00 4c 45 4e 4f 56 4f 0b 05 01 05 00 00\n Data 10: 00 00 00\n Type 140 Record: #55\n Data 00: 8c 17 37 00 4c 45 4e 4f 56 4f 0b 06 01 8a 13 00\n Data 10: 00 00 00 00 00 00 00\n Group Associations: #56\n Group Name: \"$MEI\"\n Items: #0\n Type 219 Record: #57\n Data 00: db 51 39 00 01 03 01 45 02 00 a0 06 01 00 66 20\n Data 10: 00 00 00 00 40 08 00 01 1f 00 00 c9 0a 40 44 02\n Data 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff\n Data 30: ff ff ff ff ff ff ff ff 03 00 00 00 80 00 00 00\n Data 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n Data 50: 00\n String 1: \"MEI1\"\n String 2: \"MEI2\"\n String 3: \"MEI3\"\n Type 140 Record: #58\n Data 00: 8c 0f 3a 00 4c 45 4e 4f 56 4f 0b 07 01 01 02\n String 1: \"N1MHT22W\"\n String 2: \"03/10/2017\"\n Type 140 Record: #59\n Data 00: 8c 2b 3b 00 4c 45 4e 4f 56 4f 0b 08 01 ff ff ff\n Data 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff\n Data 20: ff ff ff ff ff ff ff ff ff ff ff\n Type 135 Record: #60\n Data 00: 87 12 3c 00 54 50 07 01 01 00 01 00 00 00 01 00\n Data 10: 00 00\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n02: None 00.0: 10107 System\n [Created at sys.64]\n Unique ID: rdCR.n_7QNeEnh23\n Hardware Class: system\n Model: \"System\"\n Formfactor: \"laptop\"\n Driver Info #0:\n Driver Status: thermal,fan are not active\n Driver Activation Cmd: \"modprobe thermal; modprobe fan\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n03: None 00.0: 10104 FPU\n [Created at misc.191]\n Unique ID: rdCR.EMpH5pjcahD\n Hardware Class: unknown\n Model: \"FPU\"\n I/O Ports: 0xf0-0xff (rw)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n04: None 00.0: 0801 DMA controller (8237)\n [Created at misc.205]\n Unique ID: rdCR.f5u1ucRm+H9\n Hardware Class: unknown\n Model: \"DMA controller\"\n I/O Ports: 0x00-0xcf7 (rw)\n I/O Ports: 0xc0-0xdf (rw)\n I/O Ports: 0x80-0x8f (rw)\n DMA: 4\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n05: None 00.0: 0800 PIC (8259)\n [Created at misc.218]\n Unique ID: rdCR.8uRK7LxiIA2\n Hardware Class: unknown\n Model: \"PIC\"\n I/O Ports: 0x20-0x21 (rw)\n I/O Ports: 0xa0-0xa1 (rw)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n06: None 00.0: 0900 Keyboard controller\n [Created at misc.250]\n Unique ID: rdCR.9N+EecqykME\n Hardware Class: unknown\n Model: \"Keyboard controller\"\n I/O Port: 0x60 (rw)\n I/O Port: 0x64 (rw)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n11: None 00.0: 10102 Main Memory\n [Created at memory.74]\n Unique ID: rdCR.CxwsZFjVASF\n Hardware Class: memory\n Model: \"Main Memory\"\n Memory Range: 0x00000000-0x3da21bfff (rw)\n Memory Size: 15 GB\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n12: PCI 1f.2: 0580 Memory controller\n [Created at pci.386]\n Unique ID: w7Y8.GTc4jyafHt3\n SysFS ID: /devices/pci0000:00/0000:00:1f.2\n SysFS BusID: 0000:00:1f.2\n Hardware Class: unknown\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d21 \"Sunrise Point-LP PMC\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x21\n Memory Range: 0xec344000-0xec347fff (rw,non-prefetchable,disabled)\n Module Alias: \"pci:v00008086d00009D21sv000017AAsd0000224Fbc05sc80i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n13: PCI 1c.0: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: z8Q3.qOtgiL+BYA2\n SysFS ID: /devices/pci0000:00/0000:00:1c.0\n SysFS BusID: 0000:00:1c.0\n Hardware Class: bridge\n Model: \"Intel Sunrise Point-LP PCI Express Root Port #1\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d10 \"Sunrise Point-LP PCI Express Root Port #1\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \n Revision: 0xf1\n Driver: \"pcieport\"\n IRQ: 122 (no events)\n Module Alias: \"pci:v00008086d00009D10sv000017AAsd0000224Fbc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n14: PCI 08.0: 0880 System peripheral\n [Created at pci.386]\n Unique ID: RE4e.UOzyR3R8EPE\n SysFS ID: /devices/pci0000:00/0000:00:08.0\n SysFS BusID: 0000:00:08.0\n Hardware Class: unknown\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x1911 \"Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Memory Range: 0xec348000-0xec348fff (rw,non-prefetchable,disabled)\n IRQ: 255 (no events)\n Module Alias: \"pci:v00008086d00001911sv000017AAsd0000224Fbc08sc80i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n15: PCI 701.0: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: fR8M.a2VhDObw5K1\n Parent ID: vTuk.a2VhDObw5K1\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:01.0\n SysFS BusID: 0000:07:01.0\n Hardware Class: bridge\n Model: \"Intel JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x15d3 \"JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n SubVendor: pci 0x2222 \n SubDevice: pci 0x1111 \n Revision: 0x02\n Driver: \"pcieport\"\n IRQ: 139 (no events)\n Module Alias: \"pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #23 (PCI bridge)\n\n16: PCI 1f.0: 0601 ISA bridge\n [Created at pci.386]\n Unique ID: BUZT.9w51+S+DfB4\n SysFS ID: /devices/pci0000:00/0000:00:1f.0\n SysFS BusID: 0000:00:1f.0\n Hardware Class: bridge\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d58 \"Sunrise Point-LP LPC Controller\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x21\n Module Alias: \"pci:v00008086d00009D58sv000017AAsd0000224Fbc06sc01i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n17: PCI 200.0: ff00 Unclassified device\n [Created at pci.386]\n Unique ID: B35A.sRQkqsLaUO8\n Parent ID: z8Q3.qOtgiL+BYA2\n SysFS ID: /devices/pci0000:00/0000:00:1c.0/0000:02:00.0\n SysFS BusID: 0000:02:00.0\n Hardware Class: unknown\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x10ec \"Realtek Semiconductor Co., Ltd.\"\n Device: pci 0x525a \"RTS525A PCI Express Card Reader\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x01\n Driver: \"rtsx_pci\"\n Driver Modules: \"rtsx_pci\"\n Memory Range: 0xec200000-0xec200fff (rw,non-prefetchable)\n IRQ: 134 (455 events)\n Module Alias: \"pci:v000010ECd0000525Asv000017AAsd0000224FbcFFsc00i00\"\n Driver Info #0:\n Driver Status: rtsx_pci is active\n Driver Activation Cmd: \"modprobe rtsx_pci\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #13 (PCI bridge)\n\n18: PCI 704.0: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: umHm.a2VhDObw5K1\n Parent ID: vTuk.a2VhDObw5K1\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:04.0\n SysFS BusID: 0000:07:04.0\n Hardware Class: bridge\n Model: \"Intel JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x15d3 \"JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n SubVendor: pci 0x2222 \n SubDevice: pci 0x1111 \n Revision: 0x02\n Driver: \"pcieport\"\n IRQ: 141 (no events)\n Module Alias: \"pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #23 (PCI bridge)\n\n19: PCI 16.0: 0780 Communication controller\n [Created at pci.386]\n Unique ID: WnlC.BoJelhg+KQ4\n SysFS ID: /devices/pci0000:00/0000:00:16.0\n SysFS BusID: 0000:00:16.0\n Hardware Class: unknown\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d3a \"Sunrise Point-LP CSME HECI #1\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x21\n Driver: \"mei_me\"\n Driver Modules: \"mei_me\"\n Memory Range: 0xec34a000-0xec34afff (rw,non-prefetchable)\n IRQ: 127 (39 events)\n Module Alias: \"pci:v00008086d00009D3Asv000017AAsd0000224Fbc07sc80i00\"\n Driver Info #0:\n Driver Status: mei_me is active\n Driver Activation Cmd: \"modprobe mei_me\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n20: PCI 700.0: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: aK5u.a2VhDObw5K1\n Parent ID: vTuk.a2VhDObw5K1\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:00.0\n SysFS BusID: 0000:07:00.0\n Hardware Class: bridge\n Model: \"Intel JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x15d3 \"JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n SubVendor: pci 0x2222 \n SubDevice: pci 0x1111 \n Revision: 0x02\n Driver: \"pcieport\"\n IRQ: 138 (no events)\n Module Alias: \"pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #23 (PCI bridge)\n\n21: PCI 1f.3: 0403 Audio device\n [Created at pci.386]\n Unique ID: nS1_.2kTLVjATLd3\n SysFS ID: /devices/pci0000:00/0000:00:1f.3\n SysFS BusID: 0000:00:1f.3\n Hardware Class: sound\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d71 \"Sunrise Point-LP HD Audio\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x21\n Driver: \"snd_hda_intel\"\n Driver Modules: \"snd_hda_intel\"\n Memory Range: 0xec340000-0xec343fff (rw,non-prefetchable)\n Memory Range: 0xec330000-0xec33ffff (rw,non-prefetchable)\n IRQ: 137 (881 events)\n Module Alias: \"pci:v00008086d00009D71sv000017AAsd0000224Fbc04sc03i00\"\n Driver Info #0:\n Driver Status: snd_hda_intel is active\n Driver Activation Cmd: \"modprobe snd_hda_intel\"\n Driver Info #1:\n Driver Status: snd_soc_skl is active\n Driver Activation Cmd: \"modprobe snd_soc_skl\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n22: PCI 00.0: 0600 Host bridge\n [Created at pci.386]\n Unique ID: qLht.nHID6wzEQZB\n SysFS ID: /devices/pci0000:00/0000:00:00.0\n SysFS BusID: 0000:00:00.0\n Hardware Class: bridge\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x5904 \"Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x02\n Driver: \"skl_uncore\"\n Driver Modules: \"intel_uncore\"\n Module Alias: \"pci:v00008086d00005904sv000017AAsd0000224Fbc06sc00i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n23: PCI 600.0: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: vTuk.a2VhDObw5K1\n Parent ID: 1GTX.yiQgYrH3mp3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0\n SysFS BusID: 0000:06:00.0\n Hardware Class: bridge\n Model: \"Intel JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x15d3 \"JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n SubVendor: pci 0x2222 \n SubDevice: pci 0x1111 \n Revision: 0x02\n Driver: \"pcieport\"\n IRQ: 16 (no events)\n Module Alias: \"pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #25 (PCI bridge)\n\n24: PCI 500.0: 0108 Non-Volatile memory controller (NVM Express)\n [Created at pci.386]\n Unique ID: Ddhb.6HVdCPE4AT5\n Parent ID: QSNP.u2fgddT0fi3\n SysFS ID: /devices/pci0000:00/0000:00:1c.4/0000:05:00.0\n SysFS BusID: 0000:05:00.0\n Hardware Class: storage\n Model: \"Samsung Electronics SM963 2.5\" NVMe PCIe SSD\"\n Vendor: pci 0x144d \"Samsung Electronics Co Ltd\"\n Device: pci 0xa804 \"NVMe SSD Controller SM961/PM961/SM963\"\n SubVendor: pci 0x144d \"Samsung Electronics Co Ltd\"\n SubDevice: pci 0xa801 \"SM963 2.5\" NVMe PCIe SSD\"\n Driver: \"nvme\"\n Driver Modules: \"nvme\"\n Memory Range: 0xec000000-0xec003fff (rw,non-prefetchable)\n IRQ: 16 (no events)\n Module Alias: \"pci:v0000144Dd0000A804sv0000144Dsd0000A801bc01sc08i02\"\n Driver Info #0:\n Driver Status: nvme is active\n Driver Activation Cmd: \"modprobe nvme\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #29 (PCI bridge)\n\n25: PCI 1d.0: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: 1GTX.yiQgYrH3mp3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0\n SysFS BusID: 0000:00:1d.0\n Hardware Class: bridge\n Model: \"Intel Sunrise Point-LP PCI Express Root Port #9\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d18 \"Sunrise Point-LP PCI Express Root Port #9\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \n Revision: 0xf1\n Driver: \"pcieport\"\n IRQ: 125 (no events)\n Module Alias: \"pci:v00008086d00009D18sv000017AAsd0000224Fbc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n26: PCI 702.0: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: kYBq.a2VhDObw5K1\n Parent ID: vTuk.a2VhDObw5K1\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0\n SysFS BusID: 0000:07:02.0\n Hardware Class: bridge\n Model: \"Intel JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x15d3 \"JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016]\"\n SubVendor: pci 0x2222 \n SubDevice: pci 0x1111 \n Revision: 0x02\n Driver: \"pcieport\"\n IRQ: 140 (no events)\n Module Alias: \"pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #23 (PCI bridge)\n\n27: PCI 14.2: 1180 Signal processing controller\n [Created at pci.386]\n Unique ID: 5Dex.ivM2aMDw+KC\n SysFS ID: /devices/pci0000:00/0000:00:14.2\n SysFS BusID: 0000:00:14.2\n Hardware Class: unknown\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d31 \"Sunrise Point-LP Thermal subsystem\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x21\n Driver: \"intel_pch_thermal\"\n Driver Modules: \"intel_pch_thermal\"\n Memory Range: 0xec349000-0xec349fff (rw,non-prefetchable)\n IRQ: 18 (no events)\n Module Alias: \"pci:v00008086d00009D31sv000017AAsd0000224Fbc11sc80i00\"\n Driver Info #0:\n Driver Status: intel_pch_thermal is active\n Driver Activation Cmd: \"modprobe intel_pch_thermal\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n28: PCI 1f.6: 0200 Ethernet controller\n [Created at pci.386]\n Unique ID: AhzA.SRCP7pKsA81\n SysFS ID: /devices/pci0000:00/0000:00:1f.6\n SysFS BusID: 0000:00:1f.6\n Hardware Class: network\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x15d8 \"Ethernet Connection (4) I219-V\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x21\n Driver: \"e1000e\"\n Driver Modules: \"e1000e\"\n Device File: enp0s31f6\n Memory Range: 0xec300000-0xec31ffff (rw,non-prefetchable)\n IRQ: 133 (19143 events)\n HW Address: 54:e1:ad:11:fb:b7\n Permanent HW Address: 54:e1:ad:11:fb:b7\n Link detected: no\n Module Alias: \"pci:v00008086d000015D8sv000017AAsd0000224Fbc02sc00i00\"\n Driver Info #0:\n Driver Status: e1000e is active\n Driver Activation Cmd: \"modprobe e1000e\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n29: PCI 1c.4: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: QSNP.u2fgddT0fi3\n SysFS ID: /devices/pci0000:00/0000:00:1c.4\n SysFS BusID: 0000:00:1c.4\n Hardware Class: bridge\n Model: \"Intel Sunrise Point-LP PCI Express Root Port #5\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d14 \"Sunrise Point-LP PCI Express Root Port #5\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \n Revision: 0xf1\n Driver: \"pcieport\"\n IRQ: 124 (no events)\n Module Alias: \"pci:v00008086d00009D14sv000017AAsd0000224Fbc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n30: PCI 400.0: 0282 WLAN controller\n [Created at pci.386]\n Unique ID: YVtp.cbEpR7q1Jd1\n Parent ID: hoOk.sDmAgUEcbx2\n SysFS ID: /devices/pci0000:00/0000:00:1c.2/0000:04:00.0\n SysFS BusID: 0000:04:00.0\n Hardware Class: network\n Model: \"Intel Dual Band Wireless-AC 8265\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x24fd \"Wireless 8265 / 8275\"\n SubVendor: pci 0x8086 \"Intel Corporation\"\n SubDevice: pci 0x1130 \"Dual Band Wireless-AC 8265\"\n Revision: 0x88\n Driver: \"iwlwifi\"\n Driver Modules: \"iwlwifi\"\n Device File: wlp4s0\n Features: WLAN\n Memory Range: 0xec100000-0xec101fff (rw,non-prefetchable)\n IRQ: 136 (24360384 events)\n HW Address: 00:28:f8:a6:d5:7e\n Permanent HW Address: 00:28:f8:a6:d5:7e\n Link detected: yes\n WLAN channels: 1 2 3 4 5 6 7 8 9 10 11 12 13 36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140\n WLAN frequencies: 2.412 2.417 2.422 2.427 2.432 2.437 2.442 2.447 2.452 2.457 2.462 2.467 2.472 5.18 5.2 5.22 5.24 5.26 5.28 5.3 5.32 5.5 5.52 5.54 5.56 5.58 5.6 5.62 5.64 5.66 5.68 5.7\n WLAN encryption modes: WEP40 WEP104 TKIP CCMP\n WLAN authentication modes: open sharedkey wpa-psk wpa-eap\n Module Alias: \"pci:v00008086d000024FDsv00008086sd00001130bc02sc80i00\"\n Driver Info #0:\n Driver Status: iwlwifi is active\n Driver Activation Cmd: \"modprobe iwlwifi\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #35 (PCI bridge)\n\n31: PCI 3c00.0: 0c03 USB Controller (XHCI)\n [Created at pci.386]\n Unique ID: Hy9f.QAjUSygQ+G7\n Parent ID: kYBq.a2VhDObw5K1\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0\n SysFS BusID: 0000:3c:00.0\n Hardware Class: usb controller\n Model: \"Intel JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016]\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x15d4 \"JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016]\"\n SubVendor: pci 0x2222 \n SubDevice: pci 0x1111 \n Revision: 0x02\n Driver: \"xhci_hcd\"\n Driver Modules: \"xhci_pci\"\n Memory Range: 0xd3f00000-0xd3f0ffff (rw,non-prefetchable)\n IRQ: 142 (5895716 events)\n Module Alias: \"pci:v00008086d000015D4sv00002222sd00001111bc0Csc03i30\"\n Driver Info #0:\n Driver Status: xhci_pci is active\n Driver Activation Cmd: \"modprobe xhci_pci\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #26 (PCI bridge)\n\n32: PCI 02.0: 0300 VGA compatible controller (VGA)\n [Created at pci.386]\n Unique ID: _Znp.0IdyCMQBatD\n SysFS ID: /devices/pci0000:00/0000:00:02.0\n SysFS BusID: 0000:00:02.0\n Hardware Class: graphics card\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x5916 \"HD Graphics 620\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x02\n Driver: \"i915\"\n Driver Modules: \"i915\"\n Memory Range: 0xeb000000-0xebffffff (rw,non-prefetchable)\n Memory Range: 0x60000000-0x6fffffff (ro,non-prefetchable)\n I/O Ports: 0xe000-0xe03f (rw)\n Memory Range: 0x000c0000-0x000dffff (rw,non-prefetchable,disabled)\n IRQ: 135 (619635007 events)\n Module Alias: \"pci:v00008086d00005916sv000017AAsd0000224Fbc03sc00i00\"\n Driver Info #0:\n Driver Status: i915 is active\n Driver Activation Cmd: \"modprobe i915\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n33: PCI 14.0: 0c03 USB Controller (XHCI)\n [Created at pci.386]\n Unique ID: MZfG.uG+UK2yqXF2\n SysFS ID: /devices/pci0000:00/0000:00:14.0\n SysFS BusID: 0000:00:14.0\n Hardware Class: usb controller\n Model: \"Intel Sunrise Point-LP USB 3.0 xHCI Controller\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d2f \"Sunrise Point-LP USB 3.0 xHCI Controller\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \n Revision: 0x21\n Driver: \"xhci_hcd\"\n Driver Modules: \"xhci_pci\"\n Memory Range: 0xec320000-0xec32ffff (rw,non-prefetchable)\n IRQ: 126 (89557890 events)\n Module Alias: \"pci:v00008086d00009D2Fsv000017AAsd0000224Fbc0Csc03i30\"\n Driver Info #0:\n Driver Status: xhci_pci is active\n Driver Activation Cmd: \"modprobe xhci_pci\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n34: PCI 1f.4: 0c05 SMBus\n [Created at pci.386]\n Unique ID: fnWp._i9ff7R7CN8\n SysFS ID: /devices/pci0000:00/0000:00:1f.4\n SysFS BusID: 0000:00:1f.4\n Hardware Class: unknown\n Model: \"Lenovo ThinkPad X1 Carbon 5th Gen\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d23 \"Sunrise Point-LP SMBus\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \"ThinkPad X1 Carbon 5th Gen\"\n Revision: 0x21\n Driver: \"i801_smbus\"\n Driver Modules: \"i2c_i801\"\n Memory Range: 0xec34b000-0xec34b0ff (rw,non-prefetchable)\n I/O Ports: 0xefa0-0xefbf (rw)\n IRQ: 16 (no events)\n Module Alias: \"pci:v00008086d00009D23sv000017AAsd0000224Fbc0Csc05i00\"\n Driver Info #0:\n Driver Status: i2c_i801 is active\n Driver Activation Cmd: \"modprobe i2c_i801\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n35: PCI 1c.2: 0604 PCI bridge (Normal decode)\n [Created at pci.386]\n Unique ID: hoOk.sDmAgUEcbx2\n SysFS ID: /devices/pci0000:00/0000:00:1c.2\n SysFS BusID: 0000:00:1c.2\n Hardware Class: bridge\n Model: \"Intel Sunrise Point-LP PCI Express Root Port #3\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x9d12 \"Sunrise Point-LP PCI Express Root Port #3\"\n SubVendor: pci 0x17aa \"Lenovo\"\n SubDevice: pci 0x224f \n Revision: 0xf1\n Driver: \"pcieport\"\n IRQ: 123 (no events)\n Module Alias: \"pci:v00008086d00009D12sv000017AAsd0000224Fbc06sc04i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n36: None 00.0: 10002 LCD Monitor\n [Created at monitor.125]\n Unique ID: rdCR.gDNynEL4dRB\n Parent ID: _Znp.0IdyCMQBatD\n Hardware Class: monitor\n Model: \"AUO LCD Monitor\"\n Vendor: AUO \"AUO\"\n Device: eisa 0x313d \n Resolution: 1920x1080@60Hz\n Size: 309x174 mm\n Year of Manufacture: 2016\n Week of Manufacture: 0\n Detailed Timings #0:\n Resolution: 1920x1080\n Horizontal: 1920 1936 1952 2104 (+16 +32 +184) -hsync\n Vertical: 1080 1083 1097 1116 (+3 +17 +36) -vsync\n Frequencies: 141.00 MHz, 67.02 kHz, 60.05 Hz\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #32 (VGA compatible controller)\n\n37: None 01.0: 10002 LCD Monitor\n [Created at monitor.125]\n Unique ID: wkFv.3eFRZPYqQnB\n Parent ID: _Znp.0IdyCMQBatD\n Hardware Class: monitor\n Model: \"SAMSUNG LC27T55\"\n Vendor: SAM \"SAMSUNG\"\n Device: eisa 0x701e \"LC27T55\"\n Serial ID: \"HNAR401779\"\n Resolution: 720x400@70Hz\n Resolution: 640x480@60Hz\n Resolution: 640x480@67Hz\n Resolution: 640x480@72Hz\n Resolution: 640x480@75Hz\n Resolution: 800x600@56Hz\n Resolution: 800x600@60Hz\n Resolution: 800x600@72Hz\n Resolution: 800x600@75Hz\n Resolution: 832x624@75Hz\n Resolution: 1024x768@60Hz\n Resolution: 1024x768@70Hz\n Resolution: 1024x768@75Hz\n Resolution: 1280x1024@75Hz\n Resolution: 1280x720@60Hz\n Resolution: 1280x1024@60Hz\n Resolution: 1920x1080@60Hz\n Size: 609x349 mm\n Year of Manufacture: 2021\n Week of Manufacture: 17\n Detailed Timings #0:\n Resolution: 1920x1080\n Horizontal: 1920 2008 2052 2200 (+88 +132 +280) +hsync\n Vertical: 1080 1084 1089 1125 (+4 +9 +45) +vsync\n Frequencies: 148.50 MHz, 67.50 kHz, 60.00 Hz\n Driver Info #0:\n Max. Resolution: 1920x1080\n Vert. Sync Range: 48-75 Hz\n Hor. Sync Range: 30-84 kHz\n Bandwidth: 148 MHz\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #32 (VGA compatible controller)\n\n38: PCI 00.0: 10600 Disk\n [Created at block.245]\n Unique ID: wLCS.AfVvhtt5p16\n Parent ID: Ddhb.6HVdCPE4AT5\n SysFS ID: /class/block/nvme0n1\n SysFS BusID: nvme0\n SysFS Device Link: /devices/pci0000:00/0000:00:1c.4/0000:05:00.0/nvme/nvme0\n Hardware Class: disk\n Model: \"Samsung Electronics SM963 2.5\" NVMe PCIe SSD\"\n Vendor: pci 0x144d \"Samsung Electronics Co Ltd\"\n Device: pci 0xa804 \"NVMe SSD Controller SM961/PM961/SM963\"\n SubVendor: pci 0x144d \"Samsung Electronics Co Ltd\"\n SubDevice: pci 0xa801 \"SM963 2.5\" NVMe PCIe SSD\"\n Driver: \"nvme\"\n Driver Modules: \"nvme\"\n Device File: /dev/nvme0n1\n Device Number: block 259:0\n Geometry (Logical): CHS 976762/64/32\n Size: 2000409264 sectors a 512 bytes\n Capacity: 953 GB (1024209543168 bytes)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #24 (Non-Volatile memory controller)\n\n39: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: cS_q.SE1wIdpsiiC\n Parent ID: wLCS.AfVvhtt5p16\n SysFS ID: /class/block/nvme0n1/nvme0n1p1\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/nvme0n1p1\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #38 (Disk)\n\n40: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: 3eEv.SE1wIdpsiiC\n Parent ID: wLCS.AfVvhtt5p16\n SysFS ID: /class/block/nvme0n1/nvme0n1p2\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/nvme0n1p2\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #38 (Disk)\n\n41: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: XpUz.SE1wIdpsiiC\n Parent ID: wLCS.AfVvhtt5p16\n SysFS ID: /class/block/nvme0n1/nvme0n1p3\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/nvme0n1p3\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #38 (Disk)\n\n42: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: __k1.SE1wIdpsiiC\n Parent ID: wLCS.AfVvhtt5p16\n SysFS ID: /class/block/nvme0n1/nvme0n1p4\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/nvme0n1p4\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #38 (Disk)\n\n43: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: RA+5.SE1wIdpsiiC\n Parent ID: wLCS.AfVvhtt5p16\n SysFS ID: /class/block/nvme0n1/nvme0n1p5\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/nvme0n1p5\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #38 (Disk)\n\n44: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: uLFA.SE1wIdpsiiC\n Parent ID: wLCS.AfVvhtt5p16\n SysFS ID: /class/block/nvme0n1/nvme0n1p6\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/nvme0n1p6\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #38 (Disk)\n\n45: SCSI 00.1: 10600 Disk\n [Created at block.256]\n Unique ID: JLNk.rd_zLqy6FGE\n Parent ID: Hy9f.QAjUSygQ+G7\n SysFS ID: /class/block/sdb\n SysFS BusID: 0:0:0:1\n SysFS Device Link: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb4/4-2/4-2.2/4-2.2:1.0/host0/target0:0:0/0:0:0:1\n Hardware Class: disk\n Model: \"Generic Micro SD/M2\"\n Vendor: usb 0x058f \"Generic-\"\n Device: usb 0x8468 \"Micro SD/M2\"\n Revision: \"1.08\"\n Serial ID: \"AU8461\"\n Driver: \"usb-storage\", \"sd\"\n Driver Modules: \"usb_storage\", \"sd_mod\"\n Device File: /dev/sdb (/dev/sg1)\n Device Number: block 8:16-8:31 (char 21:1)\n Geometry (Logical): CHS 1024/0/62\n Module Alias: \"usb:v058Fp8468d0100dc00dsc00dp00ic08isc06ip50in00\"\n Driver Info #0:\n Driver Status: uas is active\n Driver Activation Cmd: \"modprobe uas\"\n Driver Info #1:\n Driver Status: usb_storage is active\n Driver Activation Cmd: \"modprobe usb_storage\"\n Drive status: no medium\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #31 (USB Controller)\n\n46: SCSI 00.0: 10600 Disk\n [Created at block.256]\n Unique ID: R7kM.cEqnUHU+UjE\n Parent ID: Hy9f.QAjUSygQ+G7\n SysFS ID: /class/block/sda\n SysFS BusID: 0:0:0:0\n SysFS Device Link: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb4/4-2/4-2.2/4-2.2:1.0/host0/target0:0:0/0:0:0:0\n Hardware Class: disk\n Model: \"Generic SD/MMC\"\n Vendor: usb 0x058f \"Generic-\"\n Device: usb 0x8468 \"SD/MMC\"\n Revision: \"1.00\"\n Serial ID: \"AU8461\"\n Driver: \"usb-storage\", \"sd\"\n Driver Modules: \"usb_storage\", \"sd_mod\"\n Device File: /dev/sda (/dev/sg0)\n Device Number: block 8:0-8:15 (char 21:0)\n Geometry (Logical): CHS 1024/0/62\n Drive status: no medium\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #31 (USB Controller)\n\n47: USB 00.3: 0000 Unclassified device\n [Created at usb.122]\n Unique ID: zF+l.vQCI4RMGVj7\n Parent ID: BkVc.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.1/3-2.1.2/3-2.1.2:1.3\n SysFS BusID: 3-2.1.2:1.3\n Hardware Class: unknown\n Model: \"Razer RZ01-0321 Gaming Mouse [DeathAdder V2]\"\n Hotplug: USB\n Vendor: usb 0x1532 \"Razer USA, Ltd\"\n Device: usb 0x0084 \"RZ01-0321 Gaming Mouse [DeathAdder V2]\"\n Revision: \"2.00\"\n Driver: \"usbhid\"\n Driver Modules: \"usbhid\"\n Speed: 12 Mbps\n Module Alias: \"usb:v1532p0084d0200dc00dsc00dp00ic03isc00ip02in03\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #68 (Hub)\n\n48: USB 00.0: 0000 Unclassified device\n [Created at usb.122]\n Unique ID: POWV.SKi3BMEP1zB\n Parent ID: k4bc.2DFUsyrieMD\n SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0\n SysFS BusID: 1-9:1.0\n Hardware Class: unknown\n Model: \"Validity Sensors Unclassified device\"\n Hotplug: USB\n Vendor: usb 0x138a \"Validity Sensors, Inc.\"\n Device: usb 0x0097 \n Revision: \"1.64\"\n Serial ID: \"d6aa80ed14a7\"\n Speed: 12 Mbps\n Module Alias: \"usb:v138Ap0097d0164dcFFdsc10dpFFicFFisc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #64 (Hub)\n\n49: USB 00.0: 0000 Unclassified device\n [Created at usb.122]\n Unique ID: xJFn.LX0JUh335qA\n Parent ID: mZxt.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.3/3-2.3:2.0\n SysFS BusID: 3-2.3:2.0\n Hardware Class: unknown\n Model: \"VIA USB 2.0 BILLBOARD\"\n Hotplug: USB\n Vendor: usb 0x2109 \"VIA Labs, Inc.\"\n Device: usb 0x0103 \"USB 2.0 BILLBOARD\"\n Revision: \"14.24\"\n Serial ID: \"0000000000000001\"\n Speed: 12 Mbps\n Module Alias: \"usb:v2109p0103d1424dc11dsc00dp00ic11isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #66 (Hub)\n\n50: USB 00.0: 10a00 Hub\n [Created at usb.122]\n Unique ID: rg_L.AneSAPsLcPF\n Parent ID: zPk0.i7wpDO9tkR0\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb4/4-2/4-2:1.0\n SysFS BusID: 4-2:1.0\n Hardware Class: hub\n Model: \"VIA USB3.0 Hub\"\n Hotplug: USB\n Vendor: usb 0x2109 \"VIA Labs, Inc.\"\n Device: usb 0x0817 \"USB3.0 Hub\"\n Revision: \"4.73\"\n Driver: \"hub\"\n Driver Modules: \"usbcore\"\n Module Alias: \"usb:v2109p0817d0473dc09dsc00dp03ic09isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #60 (Hub)\n\n52: USB 00.0: 0200 Ethernet controller\n [Created at usb.122]\n Unique ID: Bcd3.pPU9FHDlTRC\n Parent ID: rg_L.AneSAPsLcPF\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb4/4-2/4-2.4/4-2.4:1.0\n SysFS BusID: 4-2.4:1.0\n Hardware Class: network\n Model: \"Realtek RTL8153 Gigabit Ethernet Adapter\"\n Hotplug: USB\n Vendor: usb 0x0bda \"Realtek Semiconductor Corp.\"\n Device: usb 0x8153 \"RTL8153 Gigabit Ethernet Adapter\"\n Revision: \"31.00\"\n Serial ID: \"001000001\"\n Driver: \"r8152\"\n Driver Modules: \"r8152\"\n Device File: enp60s0u2u4\n HW Address: 48:65:ee:17:57:1a\n Permanent HW Address: 48:65:ee:17:57:1a\n Link detected: yes\n Module Alias: \"usb:v0BDAp8153d3100dc00dsc00dp00icFFiscFFip00in00\"\n Driver Info #0:\n Driver Status: r8152 is active\n Driver Activation Cmd: \"modprobe r8152\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #50 (Hub)\n\n53: USB 00.1: 0000 Unclassified device\n [Created at usb.122]\n Unique ID: QR8P.XP6vQjDsZa1\n Parent ID: k4bc.2DFUsyrieMD\n SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.1\n SysFS BusID: 1-8:1.1\n Hardware Class: unknown\n Model: \"Lite-On Integrated Camera\"\n Hotplug: USB\n Vendor: usb 0x04ca \"Lite-On Technology Corp.\"\n Device: usb 0x7067 \"Integrated Camera\"\n Revision: \"0.16\"\n Serial ID: \"200901010001\"\n Driver: \"uvcvideo\"\n Driver Modules: \"uvcvideo\"\n Speed: 480 Mbps\n Module Alias: \"usb:v04CAp7067d0016dcEFdsc02dp01ic0Eisc02ip00in01\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #64 (Hub)\n\n54: USB 00.0: 10a00 Hub\n [Created at usb.122]\n Unique ID: uIhY.pnncnQNBpD7\n Parent ID: Hy9f.QAjUSygQ+G7\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-0:1.0\n SysFS BusID: 3-0:1.0\n Hardware Class: hub\n Model: \"Linux Foundation 2.0 root hub\"\n Hotplug: USB\n Vendor: usb 0x1d6b \"Linux Foundation\"\n Device: usb 0x0002 \"2.0 root hub\"\n Revision: \"5.04\"\n Serial ID: \"0000:3c:00.0\"\n Driver: \"hub\"\n Driver Modules: \"usbcore\"\n Speed: 480 Mbps\n Module Alias: \"usb:v1D6Bp0002d0504dc09dsc00dp01ic09isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #31 (USB Controller)\n\n55: USB 00.3: 0000 Unclassified device\n [Created at usb.122]\n Unique ID: POdw.uBlpLnsCFz5\n Parent ID: BkVc.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.1/3-2.1.3/3-2.1.3:1.3\n SysFS BusID: 3-2.1.3:1.3\n Hardware Class: unknown\n Model: \"Razer Huntsman Mini\"\n Hotplug: USB\n Vendor: usb 0x1532 \"Razer USA, Ltd\"\n Device: usb 0x0257 \"Razer Huntsman Mini\"\n Revision: \"2.00\"\n Serial ID: \"00000000001A\"\n Driver: \"usbhid\"\n Driver Modules: \"usbhid\"\n Device File: /dev/input/event29\n Device Number: char 13:93\n Speed: 12 Mbps\n Module Alias: \"usb:v1532p0257d0200dc00dsc00dp00ic03isc00ip01in03\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #68 (Hub)\n\n57: USB 00.0: 10a00 Hub\n [Created at usb.122]\n Unique ID: tClZ.AneSAPsLcPF\n Parent ID: rg_L.AneSAPsLcPF\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb4/4-2/4-2.1/4-2.1:1.0\n SysFS BusID: 4-2.1:1.0\n Hardware Class: hub\n Model: \"VIA USB3.0 Hub\"\n Hotplug: USB\n Vendor: usb 0x2109 \"VIA Labs, Inc.\"\n Device: usb 0x0817 \"USB3.0 Hub\"\n Revision: \"4.73\"\n Driver: \"hub\"\n Driver Modules: \"usbcore\"\n Module Alias: \"usb:v2109p0817d0473dc09dsc00dp03ic09isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #50 (Hub)\n\n58: USB 00.0: 0000 Unclassified device\n [Created at usb.122]\n Unique ID: w673.mAuzP6z8zSE\n Parent ID: BkVc.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.1/3-2.1.5/3-2.1.5:1.0\n SysFS BusID: 3-2.1.5:1.0\n Hardware Class: unknown\n Model: \"VIA USB Billboard Device\"\n Hotplug: USB\n Vendor: usb 0x2109 \"VIA Labs, Inc.\"\n Device: usb 0x8817 \"USB Billboard Device\"\n Revision: \"0.01\"\n Serial ID: \"0000000000000001\"\n Speed: 480 Mbps\n Module Alias: \"usb:v2109p8817d0001dcFEdsc00dp00ic11isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #68 (Hub)\n\n59: USB 00.0: 11500 Bluetooth Device\n [Created at usb.122]\n Unique ID: X7GA.GS0ueMFUyi1\n Parent ID: k4bc.2DFUsyrieMD\n SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0\n SysFS BusID: 1-7:1.0\n Hardware Class: bluetooth\n Model: \"Intel Bluetooth wireless interface\"\n Hotplug: USB\n Vendor: usb 0x8087 \"Intel Corp.\"\n Device: usb 0x0a2b \"Bluetooth wireless interface\"\n Revision: \"0.10\"\n Driver: \"btusb\"\n Driver Modules: \"btusb\"\n Speed: 12 Mbps\n Module Alias: \"usb:v8087p0A2Bd0010dcE0dsc01dp01icE0isc01ip01in00\"\n Driver Info #0:\n Driver Status: btusb is active\n Driver Activation Cmd: \"modprobe btusb\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #64 (Hub)\n\n60: USB 00.0: 10a00 Hub\n [Created at usb.122]\n Unique ID: zPk0.i7wpDO9tkR0\n Parent ID: Hy9f.QAjUSygQ+G7\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb4/4-0:1.0\n SysFS BusID: 4-0:1.0\n Hardware Class: hub\n Model: \"Linux Foundation 3.0 root hub\"\n Hotplug: USB\n Vendor: usb 0x1d6b \"Linux Foundation\"\n Device: usb 0x0003 \"3.0 root hub\"\n Revision: \"5.04\"\n Serial ID: \"0000:3c:00.0\"\n Driver: \"hub\"\n Driver Modules: \"usbcore\"\n Module Alias: \"usb:v1D6Bp0003d0504dc09dsc00dp03ic09isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #31 (USB Controller)\n\n61: USB 00.2: 10800 Keyboard\n [Created at usb.122]\n Unique ID: W4lh.AK78juYgagD\n Parent ID: BkVc.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.1/3-2.1.2/3-2.1.2:1.2\n SysFS BusID: 3-2.1.2:1.2\n Hardware Class: keyboard\n Model: \"Razer RZ01-0321 Gaming Mouse [DeathAdder V2]\"\n Hotplug: USB\n Vendor: usb 0x1532 \"Razer USA, Ltd\"\n Device: usb 0x0084 \"RZ01-0321 Gaming Mouse [DeathAdder V2]\"\n Revision: \"2.00\"\n Driver: \"usbhid\"\n Driver Modules: \"usbhid\"\n Device File: /dev/input/event22\n Device Number: char 13:86\n Speed: 12 Mbps\n Module Alias: \"usb:v1532p0084d0200dc00dsc00dp00ic03isc01ip01in02\"\n Driver Info #0:\n XkbRules: xfree86\n XkbModel: pc104\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #68 (Hub)\n\n63: USB 00.0: 10503 USB Mouse\n [Created at usb.122]\n Unique ID: cjEZ.v2dnE7+mQmC\n Parent ID: BkVc.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.1/3-2.1.2/3-2.1.2:1.0\n SysFS BusID: 3-2.1.2:1.0\n Hardware Class: mouse\n Model: \"Razer RZ01-0321 Gaming Mouse [DeathAdder V2]\"\n Hotplug: USB\n Vendor: usb 0x1532 \"Razer USA, Ltd\"\n Device: usb 0x0084 \"RZ01-0321 Gaming Mouse [DeathAdder V2]\"\n Revision: \"2.00\"\n Compatible to: int 0x0210 0x0025\n Driver: \"usbhid\"\n Driver Modules: \"usbhid\"\n Device File: /dev/input/mice (/dev/input/mouse2)\n Device Files: /dev/input/mice, /dev/input/mouse2, /dev/input/event17\n Device Number: char 13:63 (char 13:34)\n Speed: 12 Mbps\n Module Alias: \"usb:v1532p0084d0200dc00dsc00dp00ic03isc01ip02in00\"\n Driver Info #0:\n Buttons: 5\n Wheels: 2\n XFree86 Protocol: explorerps/2\n GPM Protocol: exps2\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #68 (Hub)\n\n64: USB 00.0: 10a00 Hub\n [Created at usb.122]\n Unique ID: k4bc.2DFUsyrieMD\n Parent ID: MZfG.uG+UK2yqXF2\n SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0\n SysFS BusID: 1-0:1.0\n Hardware Class: hub\n Model: \"Linux Foundation 2.0 root hub\"\n Hotplug: USB\n Vendor: usb 0x1d6b \"Linux Foundation\"\n Device: usb 0x0002 \"2.0 root hub\"\n Revision: \"5.04\"\n Serial ID: \"0000:00:14.0\"\n Driver: \"hub\"\n Driver Modules: \"usbcore\"\n Speed: 480 Mbps\n Module Alias: \"usb:v1D6Bp0002d0504dc09dsc00dp01ic09isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #33 (USB Controller)\n\n66: USB 00.0: 10a00 Hub\n [Created at usb.122]\n Unique ID: mZxt.g5rjI1SjqE3\n Parent ID: uIhY.pnncnQNBpD7\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2:1.0\n SysFS BusID: 3-2:1.0\n Hardware Class: hub\n Model: \"VIA USB2.0 Hub\"\n Hotplug: USB\n Vendor: usb 0x2109 \"VIA Labs, Inc.\"\n Device: usb 0x2817 \"USB2.0 Hub\"\n Revision: \"4.73\"\n Driver: \"hub\"\n Driver Modules: \"usbcore\"\n Speed: 480 Mbps\n Module Alias: \"usb:v2109p2817d0473dc09dsc00dp02ic09isc00ip02in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #54 (Hub)\n\n68: USB 00.0: 10a00 Hub\n [Created at usb.122]\n Unique ID: BkVc.g5rjI1SjqE3\n Parent ID: mZxt.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.1/3-2.1:1.0\n SysFS BusID: 3-2.1:1.0\n Hardware Class: hub\n Model: \"VIA USB2.0 Hub\"\n Hotplug: USB\n Vendor: usb 0x2109 \"VIA Labs, Inc.\"\n Device: usb 0x2817 \"USB2.0 Hub\"\n Revision: \"4.73\"\n Driver: \"hub\"\n Driver Modules: \"usbcore\"\n Speed: 480 Mbps\n Module Alias: \"usb:v2109p2817d0473dc09dsc00dp02ic09isc00ip02in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #66 (Hub)\n\n69: USB 00.0: 0000 Unclassified device\n [Created at usb.122]\n Unique ID: xF0H.mAuzP6z8zSE\n Parent ID: mZxt.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.5/3-2.5:1.0\n SysFS BusID: 3-2.5:1.0\n Hardware Class: unknown\n Model: \"VIA USB Billboard Device\"\n Hotplug: USB\n Vendor: usb 0x2109 \"VIA Labs, Inc.\"\n Device: usb 0x8817 \"USB Billboard Device\"\n Revision: \"0.01\"\n Serial ID: \"0000000000000001\"\n Speed: 480 Mbps\n Module Alias: \"usb:v2109p8817d0001dcFEdsc00dp00ic11isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #66 (Hub)\n\n70: USB 00.0: 10800 Keyboard\n [Created at usb.122]\n Unique ID: 2ssj.XoA0EArn++0\n Parent ID: BkVc.g5rjI1SjqE3\n SysFS ID: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb3/3-2/3-2.1/3-2.1.3/3-2.1.3:1.0\n SysFS BusID: 3-2.1.3:1.0\n Hardware Class: keyboard\n Model: \"Razer Huntsman Mini\"\n Hotplug: USB\n Vendor: usb 0x1532 \"Razer USA, Ltd\"\n Device: usb 0x0257 \"Razer Huntsman Mini\"\n Revision: \"2.00\"\n Serial ID: \"00000000001A\"\n Driver: \"usbhid\"\n Driver Modules: \"usbhid\"\n Device File: /dev/input/event23\n Device Number: char 13:87\n Speed: 12 Mbps\n Module Alias: \"usb:v1532p0257d0200dc00dsc00dp00ic03isc01ip01in00\"\n Driver Info #0:\n XkbRules: xfree86\n XkbModel: pc104\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #68 (Hub)\n\n72: USB 00.0: 10a00 Hub\n [Created at usb.122]\n Unique ID: pBe4.xYNhIwdOaa6\n Parent ID: MZfG.uG+UK2yqXF2\n SysFS ID: /devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0\n SysFS BusID: 2-0:1.0\n Hardware Class: hub\n Model: \"Linux Foundation 3.0 root hub\"\n Hotplug: USB\n Vendor: usb 0x1d6b \"Linux Foundation\"\n Device: usb 0x0003 \"3.0 root hub\"\n Revision: \"5.04\"\n Serial ID: \"0000:00:14.0\"\n Driver: \"hub\"\n Driver Modules: \"usbcore\"\n Module Alias: \"usb:v1D6Bp0003d0504dc09dsc00dp03ic09isc00ip00in00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #33 (USB Controller)\n\n73: PS/2 00.0: 10800 Keyboard\n [Created at input.226]\n Unique ID: 9ui9.+49ps10DtUF\n Hardware Class: keyboard\n Model: \"AT Translated Set 2 keyboard\"\n Vendor: 0x0001 \n Device: 0x0001 \"AT Translated Set 2 keyboard\"\n Compatible to: int 0x0211 0x0001\n Device File: /dev/input/event3\n Device Number: char 13:67\n Driver Info #0:\n XkbRules: xfree86\n XkbModel: pc104\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n74: PS/2 00.0: 10500 PS/2 Mouse\n [Created at input.249]\n Unique ID: AH6Q.Y_f5kDtfqz2\n Hardware Class: mouse\n Model: \"SynPS/2 Synaptics TouchPad\"\n Vendor: 0x0002 \n Device: 0x0007 \"SynPS/2 Synaptics TouchPad\"\n Compatible to: int 0x0210 0x0001\n Device File: /dev/input/mice (/dev/input/mouse0)\n Device Files: /dev/input/mice, /dev/input/mouse0, /dev/input/event4\n Device Number: char 13:63 (char 13:32)\n Driver Info #0:\n Buttons: 1\n Wheels: 0\n XFree86 Protocol: explorerps/2\n GPM Protocol: exps2\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n75: PS/2 00.0: 10500 PS/2 Mouse\n [Created at input.249]\n Unique ID: AH6Q.7qlGUQk7T34\n Hardware Class: mouse\n Model: \"TPPS/2 Elan TrackPoint\"\n Vendor: 0x0002 \n Device: 0x000a \"TPPS/2 Elan TrackPoint\"\n Compatible to: int 0x0210 0x0003\n Device File: /dev/input/mice (/dev/input/mouse1)\n Device Files: /dev/input/mice, /dev/input/mouse1, /dev/input/event5\n Device Number: char 13:63 (char 13:33)\n Driver Info #0:\n Buttons: 3\n Wheels: 0\n XFree86 Protocol: explorerps/2\n GPM Protocol: exps2\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n76: None 00.0: 10103 CPU\n [Created at cpu.462]\n Unique ID: rdCR.j8NaKXDZtZ6\n Hardware Class: cpu\n Arch: X86-64\n Vendor: \"GenuineIntel\"\n Model: 6.142.9 \"Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz\"\n Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,pdpe1gb,rdtscp,lm,constant_tsc,art,arch_perfmon,pebs,bts,rep_good,nopl,xtopology,nonstop_tsc,cpuid,aperfmperf,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,est,tm2,ssse3,sdbg,fma,cx16,xtpr,pdcm,pcid,sse4_1,sse4_2,x2apic,movbe,popcnt,aes,xsave,avx,f16c,rdrand,lahf_lm,abm,3dnowprefetch,cpuid_fault,epb,invpcid_single,pti,tpr_shadow,vnmi,flexpriority,ept,vpid,ept_ad,fsgsbase,tsc_adjust,bmi1,avx2,smep,bmi2,erms,invpcid,mpx,rdseed,adx,smap,clflushopt,intel_pt,xsaveopt,xsavec,xgetbv1,xsaves,dtherm,ida,arat,pln,pts,hwp,hwp_notify,hwp_act_window,hwp_epp\n Clock: 3180 MHz\n BogoMips: 5802.42\n Cache: 4096 kb\n Units/Processor: 16\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n77: None 01.0: 10103 CPU\n [Created at cpu.462]\n Unique ID: wkFv.j8NaKXDZtZ6\n Hardware Class: cpu\n Arch: X86-64\n Vendor: \"GenuineIntel\"\n Model: 6.142.9 \"Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz\"\n Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,pdpe1gb,rdtscp,lm,constant_tsc,art,arch_perfmon,pebs,bts,rep_good,nopl,xtopology,nonstop_tsc,cpuid,aperfmperf,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,est,tm2,ssse3,sdbg,fma,cx16,xtpr,pdcm,pcid,sse4_1,sse4_2,x2apic,movbe,popcnt,aes,xsave,avx,f16c,rdrand,lahf_lm,abm,3dnowprefetch,cpuid_fault,epb,invpcid_single,pti,tpr_shadow,vnmi,flexpriority,ept,vpid,ept_ad,fsgsbase,tsc_adjust,bmi1,avx2,smep,bmi2,erms,invpcid,mpx,rdseed,adx,smap,clflushopt,intel_pt,xsaveopt,xsavec,xgetbv1,xsaves,dtherm,ida,arat,pln,pts,hwp,hwp_notify,hwp_act_window,hwp_epp\n Clock: 2125 MHz\n BogoMips: 5802.42\n Cache: 4096 kb\n Units/Processor: 16\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n78: None 02.0: 10103 CPU\n [Created at cpu.462]\n Unique ID: +rIN.j8NaKXDZtZ6\n Hardware Class: cpu\n Arch: X86-64\n Vendor: \"GenuineIntel\"\n Model: 6.142.9 \"Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz\"\n Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,pdpe1gb,rdtscp,lm,constant_tsc,art,arch_perfmon,pebs,bts,rep_good,nopl,xtopology,nonstop_tsc,cpuid,aperfmperf,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,est,tm2,ssse3,sdbg,fma,cx16,xtpr,pdcm,pcid,sse4_1,sse4_2,x2apic,movbe,popcnt,aes,xsave,avx,f16c,rdrand,lahf_lm,abm,3dnowprefetch,cpuid_fault,epb,invpcid_single,pti,tpr_shadow,vnmi,flexpriority,ept,vpid,ept_ad,fsgsbase,tsc_adjust,bmi1,avx2,smep,bmi2,erms,invpcid,mpx,rdseed,adx,smap,clflushopt,intel_pt,xsaveopt,xsavec,xgetbv1,xsaves,dtherm,ida,arat,pln,pts,hwp,hwp_notify,hwp_act_window,hwp_epp\n Clock: 2566 MHz\n BogoMips: 5802.42\n Cache: 4096 kb\n Units/Processor: 16\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n79: None 03.0: 10103 CPU\n [Created at cpu.462]\n Unique ID: 4zLr.j8NaKXDZtZ6\n Hardware Class: cpu\n Arch: X86-64\n Vendor: \"GenuineIntel\"\n Model: 6.142.9 \"Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz\"\n Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,pdpe1gb,rdtscp,lm,constant_tsc,art,arch_perfmon,pebs,bts,rep_good,nopl,xtopology,nonstop_tsc,cpuid,aperfmperf,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,est,tm2,ssse3,sdbg,fma,cx16,xtpr,pdcm,pcid,sse4_1,sse4_2,x2apic,movbe,popcnt,aes,xsave,avx,f16c,rdrand,lahf_lm,abm,3dnowprefetch,cpuid_fault,epb,invpcid_single,pti,tpr_shadow,vnmi,flexpriority,ept,vpid,ept_ad,fsgsbase,tsc_adjust,bmi1,avx2,smep,bmi2,erms,invpcid,mpx,rdseed,adx,smap,clflushopt,intel_pt,xsaveopt,xsavec,xgetbv1,xsaves,dtherm,ida,arat,pln,pts,hwp,hwp_notify,hwp_act_window,hwp_epp\n Clock: 3038 MHz\n BogoMips: 5802.42\n Cache: 4096 kb\n Units/Processor: 16\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n80: None 00.0: 10701 Ethernet\n [Created at net.126]\n Unique ID: E98i.ndpeucax6V1\n Parent ID: YVtp.cbEpR7q1Jd1\n SysFS ID: /class/net/wlp4s0\n SysFS Device Link: /devices/pci0000:00/0000:00:1c.2/0000:04:00.0\n Hardware Class: network interface\n Model: \"Ethernet network interface\"\n Driver: \"iwlwifi\"\n Driver Modules: \"iwlwifi\"\n Device File: wlp4s0\n HW Address: 00:28:f8:a6:d5:7e\n Permanent HW Address: 00:28:f8:a6:d5:7e\n Link detected: yes\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #30 (WLAN controller)\n\n81: None 00.0: 10700 Loopback\n [Created at net.126]\n Unique ID: ZsBS.GQNx7L4uPNA\n SysFS ID: /class/net/lo\n Hardware Class: network interface\n Model: \"Loopback network interface\"\n Device File: lo\n Link detected: yes\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n82: None 00.0: 10701 Ethernet\n [Created at net.126]\n Unique ID: 23b5.ndpeucax6V1\n Parent ID: AhzA.SRCP7pKsA81\n SysFS ID: /class/net/enp0s31f6\n SysFS Device Link: /devices/pci0000:00/0000:00:1f.6\n Hardware Class: network interface\n Model: \"Ethernet network interface\"\n Driver: \"e1000e\"\n Driver Modules: \"e1000e\"\n Device File: enp0s31f6\n HW Address: 54:e1:ad:11:fb:b7\n Permanent HW Address: 54:e1:ad:11:fb:b7\n Link detected: no\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #28 (Ethernet controller)\n\n83: None 00.0: 10701 Ethernet\n [Created at net.126]\n Unique ID: WF3Z.ndpeucax6V1\n Parent ID: Bcd3.pPU9FHDlTRC\n SysFS ID: /class/net/enp60s0u2u4\n SysFS Device Link: /devices/pci0000:00/0000:00:1d.0/0000:06:00.0/0000:07:02.0/0000:3c:00.0/usb4/4-2/4-2.4/4-2.4:1.0\n Hardware Class: network interface\n Model: \"Ethernet network interface\"\n Driver: \"r8152\"\n Driver Modules: \"r8152\"\n Device File: enp60s0u2u4\n HW Address: 48:65:ee:17:57:1a\n Permanent HW Address: 48:65:ee:17:57:1a\n Link detected: yes\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #52 (Ethernet controller)\n",
+ "smart": [
+ {
+ "device": {
+ "info_name": "/dev/nvme0n1",
+ "name": "/dev/nvme0n1",
+ "protocol": "NVMe",
+ "type": "nvme"
+ },
+ "firmware_version": "6L7QCXY7",
+ "json_format_version": [
+ 1,
+ 0
+ ],
+ "local_time": {
+ "asctime": "Thu Mar 31 19:47:53 2022 CEST",
+ "time_t": 1648748873
+ },
+ "logical_block_size": 512,
+ "model_name": "SAMSUNG MZVLW1T0HMLH-000L7",
+ "nvme_controller_id": 2,
+ "nvme_ieee_oui_identifier": 9528,
+ "nvme_namespaces": [
+ {
+ "capacity": {
+ "blocks": 2000409264,
+ "blocks_s": "2000409264",
+ "bytes": 1024209543168,
+ "bytes_le": [
+ 0,
+ 96,
+ 165,
+ 119,
+ 238
+ ],
+ "bytes_s": "1024209543168"
+ },
+ "eui64": {
+ "ext_id": 775001736984,
+ "oui": 9528
+ },
+ "formatted_lba_size": 512,
+ "id": 1,
+ "size": {
+ "blocks": 2000409264,
+ "blocks_s": "2000409264",
+ "bytes": 1024209543168,
+ "bytes_le": [
+ 0,
+ 96,
+ 165,
+ 119,
+ 238
+ ],
+ "bytes_s": "1024209543168"
+ },
+ "utilization": {
+ "blocks": 1467365608,
+ "blocks_s": "1467365608",
+ "bytes": 751291191296,
+ "bytes_le": [
+ 0,
+ 208,
+ 113,
+ 236,
+ 174
+ ],
+ "bytes_s": "751291191296"
+ }
+ }
+ ],
+ "nvme_number_of_namespaces": 1,
+ "nvme_pci_vendor": {
+ "id": 5197,
+ "subsystem_id": 5197
+ },
+ "nvme_smart_health_information_log": {
+ "available_spare": 100,
+ "available_spare_threshold": 10,
+ "controller_busy_time": 2377,
+ "controller_busy_time_le": [
+ 73,
+ 9
+ ],
+ "controller_busy_time_s": "2377",
+ "critical_comp_time": 0,
+ "critical_warning": 0,
+ "data_units_read": 14418200,
+ "data_units_read_le": [
+ 24,
+ 1,
+ 220
+ ],
+ "data_units_read_s": "14418200",
+ "data_units_written": 65181364,
+ "data_units_written_le": [
+ 180,
+ 150,
+ 226,
+ 3
+ ],
+ "data_units_written_s": "65181364",
+ "host_reads": 291650797,
+ "host_reads_le": [
+ 237,
+ 60,
+ 98,
+ 17
+ ],
+ "host_reads_s": "291650797",
+ "host_writes": 1828049982,
+ "host_writes_le": [
+ 62,
+ 212,
+ 245,
+ 108
+ ],
+ "host_writes_s": "1828049982",
+ "media_errors": 0,
+ "media_errors_s": "0",
+ "num_err_log_entries": 2891,
+ "num_err_log_entries_le": [
+ 75,
+ 11
+ ],
+ "num_err_log_entries_s": "2891",
+ "percentage_used": 2,
+ "power_cycles": 5320,
+ "power_cycles_le": [
+ 200,
+ 20
+ ],
+ "power_cycles_s": "5320",
+ "power_on_hours": 6032,
+ "power_on_hours_le": [
+ 144,
+ 23
+ ],
+ "power_on_hours_s": "6032",
+ "temperature": 40,
+ "temperature_sensors": [
+ 40,
+ 48
+ ],
+ "unsafe_shutdowns": 286,
+ "unsafe_shutdowns_le": [
+ 30,
+ 1
+ ],
+ "unsafe_shutdowns_s": "286",
+ "warning_temp_time": 0
+ },
+ "nvme_total_capacity": 1024209543168,
+ "nvme_total_capacity_le": [
+ 0,
+ 96,
+ 165,
+ 119,
+ 238
+ ],
+ "nvme_total_capacity_s": "1024209543168",
+ "nvme_unallocated_capacity": 0,
+ "nvme_unallocated_capacity_s": "0",
+ "nvme_version": {
+ "string": "1.2",
+ "value": 66048
+ },
+ "power_cycle_count": 5320,
+ "power_on_time": {
+ "hours": 6032
+ },
+ "serial_number": "S35ANX0J401001",
+ "smart_status": {
+ "nvme": {
+ "value": 0
+ },
+ "passed": true
+ },
+ "smartctl": {
+ "argv": [
+ "smartctl",
+ "-x",
+ "--json=cosviu",
+ "/dev/nvme0n1"
+ ],
+ "build_info": "(local build)",
+ "exit_status": 0,
+ "output": [
+ "smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.4.72-gentoo-x86_64] (local build)",
+ "Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org",
+ "",
+ "=== START OF INFORMATION SECTION ===",
+ "Model Number: SAMSUNG MZVLW1T0HMLH-000L7",
+ "Serial Number: S35ANX0J401001",
+ "Firmware Version: 6L7QCXY7",
+ "PCI Vendor/Subsystem ID: 0x144d",
+ "IEEE OUI Identifier: 0x002538",
+ "Total NVM Capacity: 1.024.209.543.168 [1,02 TB]",
+ "Unallocated NVM Capacity: 0",
+ "Controller ID: 2",
+ "NVMe Version: 1.2",
+ "Number of Namespaces: 1",
+ "Namespace 1 Size/Capacity: 1.024.209.543.168 [1,02 TB]",
+ "Namespace 1 Utilization: 751.291.191.296 [751 GB]",
+ "Namespace 1 Formatted LBA Size: 512",
+ "Namespace 1 IEEE EUI-64: 002538 b471b40718",
+ "Local Time is: Thu Mar 31 19:47:53 2022 CEST",
+ "Firmware Updates (0x16): 3 Slots, no Reset required",
+ "Optional Admin Commands (0x0017): Security Format Frmw_DL Self_Test",
+ "Optional NVM Commands (0x001f): Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat",
+ "Log Page Attributes (0x03): S/H_per_NS Cmd_Eff_Lg",
+ "Warning Comp. Temp. Threshold: 69 Celsius",
+ "Critical Comp. Temp. Threshold: 72 Celsius",
+ "",
+ "Supported Power States",
+ "St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat",
+ " 0 + 7.60W - - 0 0 0 0 0 0",
+ " 1 + 6.00W - - 1 1 1 1 0 0",
+ " 2 + 5.10W - - 2 2 2 2 0 0",
+ " 3 - 0.0400W - - 3 3 3 3 210 1500",
+ " 4 - 0.0050W - - 4 4 4 4 2200 6000",
+ "",
+ "Supported LBA Sizes (NSID 0x1)",
+ "Id Fmt Data Metadt Rel_Perf",
+ " 0 + 512 0 0",
+ "",
+ "=== START OF SMART DATA SECTION ===",
+ "SMART overall-health self-assessment test result: PASSED",
+ "",
+ "SMART/Health Information (NVMe Log 0x02)",
+ "Critical Warning: 0x00",
+ "Temperature: 40 Celsius",
+ "Available Spare: 100%",
+ "Available Spare Threshold: 10%",
+ "Percentage Used: 2%",
+ "Data Units Read: 14.418.200 [7,38 TB]",
+ "Data Units Written: 65.181.364 [33,3 TB]",
+ "Host Read Commands: 291.650.797",
+ "Host Write Commands: 1.828.049.982",
+ "Controller Busy Time: 2.377",
+ "Power Cycles: 5.320",
+ "Power On Hours: 6.032",
+ "Unsafe Shutdowns: 286",
+ "Media and Data Integrity Errors: 0",
+ "Error Information Log Entries: 2.891",
+ "Warning Comp. Temperature Time: 0",
+ "Critical Comp. Temperature Time: 0",
+ "Temperature Sensor 1: 40 Celsius",
+ "Temperature Sensor 2: 48 Celsius",
+ "",
+ "Error Information (NVMe Log 0x01, 16 of 64 entries)",
+ "Num ErrCount SQId CmdId Status PELoc LBA NSID VS",
+ " 0 2891 0 0x1016 0x4004 - 0 0 -",
+ " 1 2890 0 0x0008 0x4004 - 0 0 -",
+ " 2 2889 0 0x0008 0x4004 - 0 0 -",
+ " 3 2888 0 0x0008 0x4004 - 0 0 -",
+ " 4 2887 0 0x0008 0x4004 - 0 0 -",
+ " 5 2886 0 0x0008 0x4004 - 0 0 -",
+ " 6 2885 0 0x0008 0x4004 - 0 0 -",
+ " 7 2884 0 0x0008 0x4004 - 0 0 -",
+ " 8 2883 0 0x0008 0x4004 - 0 0 -",
+ " 9 2882 0 0x0008 0x4004 - 0 0 -",
+ " 10 2881 0 0x0008 0x4004 - 0 0 -",
+ " 11 2880 0 0x0008 0x4004 - 0 0 -",
+ " 12 2879 0 0x0008 0x4004 - 0 0 -",
+ " 13 2878 0 0x0008 0x4004 - 0 0 -",
+ " 14 2877 0 0x0008 0x4004 - 0 0 -",
+ " 15 2876 0 0x0008 0x4004 - 0 0 -",
+ "... (48 entries not read)",
+ ""
+ ],
+ "platform_info": "x86_64-linux-5.4.72-gentoo-x86_64",
+ "svn_revision": "5155",
+ "uint128_precision_bits": 128,
+ "version": [
+ 7,
+ 2
+ ]
+ },
+ "smartctl_0001_i": "smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.4.72-gentoo-x86_64] (local build)",
+ "smartctl_0002_i": "Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org",
+ "smartctl_0004_u": "=== START OF INFORMATION SECTION ===",
+ "smartctl_0005_i": "Model Number: SAMSUNG MZVLW1T0HMLH-000L7",
+ "smartctl_0006_i": "Serial Number: S35ANX0J401001",
+ "smartctl_0007_i": "Firmware Version: 6L7QCXY7",
+ "smartctl_0008_i": "PCI Vendor/Subsystem ID: 0x144d",
+ "smartctl_0009_i": "IEEE OUI Identifier: 0x002538",
+ "smartctl_0010_i": "Total NVM Capacity: 1.024.209.543.168 [1,02 TB]",
+ "smartctl_0011_i": "Unallocated NVM Capacity: 0",
+ "smartctl_0012_i": "Controller ID: 2",
+ "smartctl_0013_i": "NVMe Version: 1.2",
+ "smartctl_0014_i": "Number of Namespaces: 1",
+ "smartctl_0015_i": "Namespace 1 Size/Capacity: 1.024.209.543.168 [1,02 TB]",
+ "smartctl_0016_i": "Namespace 1 Utilization: 751.291.191.296 [751 GB]",
+ "smartctl_0017_i": "Namespace 1 Formatted LBA Size: 512",
+ "smartctl_0018_i": "Namespace 1 IEEE EUI-64: 002538 b471b40718",
+ "smartctl_0019_i": "Local Time is: Thu Mar 31 19:47:53 2022 CEST",
+ "smartctl_0020_u": "Firmware Updates (0x16): 3 Slots, no Reset required",
+ "smartctl_0021_u": "Optional Admin Commands (0x0017): Security Format Frmw_DL Self_Test",
+ "smartctl_0022_u": "Optional NVM Commands (0x001f): Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat",
+ "smartctl_0023_u": "Log Page Attributes (0x03): S/H_per_NS Cmd_Eff_Lg",
+ "smartctl_0024_u": "Warning Comp. Temp. Threshold: 69 Celsius",
+ "smartctl_0025_u": "Critical Comp. Temp. Threshold: 72 Celsius",
+ "smartctl_0027_u": "Supported Power States",
+ "smartctl_0028_u": "St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat",
+ "smartctl_0029_u": " 0 + 7.60W - - 0 0 0 0 0 0",
+ "smartctl_0030_u": " 1 + 6.00W - - 1 1 1 1 0 0",
+ "smartctl_0031_u": " 2 + 5.10W - - 2 2 2 2 0 0",
+ "smartctl_0032_u": " 3 - 0.0400W - - 3 3 3 3 210 1500",
+ "smartctl_0033_u": " 4 - 0.0050W - - 4 4 4 4 2200 6000",
+ "smartctl_0035_u": "Supported LBA Sizes (NSID 0x1)",
+ "smartctl_0036_u": "Id Fmt Data Metadt Rel_Perf",
+ "smartctl_0037_u": " 0 + 512 0 0",
+ "smartctl_0039_u": "=== START OF SMART DATA SECTION ===",
+ "smartctl_0040_i": "SMART overall-health self-assessment test result: PASSED",
+ "smartctl_0042_i": "SMART/Health Information (NVMe Log 0x02)",
+ "smartctl_0043_i": "Critical Warning: 0x00",
+ "smartctl_0044_i": "Temperature: 40 Celsius",
+ "smartctl_0045_i": "Available Spare: 100%",
+ "smartctl_0046_i": "Available Spare Threshold: 10%",
+ "smartctl_0047_i": "Percentage Used: 2%",
+ "smartctl_0048_i": "Data Units Read: 14.418.200 [7,38 TB]",
+ "smartctl_0049_i": "Data Units Written: 65.181.364 [33,3 TB]",
+ "smartctl_0050_i": "Host Read Commands: 291.650.797",
+ "smartctl_0051_i": "Host Write Commands: 1.828.049.982",
+ "smartctl_0052_i": "Controller Busy Time: 2.377",
+ "smartctl_0053_i": "Power Cycles: 5.320",
+ "smartctl_0054_i": "Power On Hours: 6.032",
+ "smartctl_0055_i": "Unsafe Shutdowns: 286",
+ "smartctl_0056_i": "Media and Data Integrity Errors: 0",
+ "smartctl_0057_i": "Error Information Log Entries: 2.891",
+ "smartctl_0058_i": "Warning Comp. Temperature Time: 0",
+ "smartctl_0059_i": "Critical Comp. Temperature Time: 0",
+ "smartctl_0060_i": "Temperature Sensor 1: 40 Celsius",
+ "smartctl_0061_i": "Temperature Sensor 2: 48 Celsius",
+ "smartctl_0063_u": "Error Information (NVMe Log 0x01, 16 of 64 entries)",
+ "smartctl_0064_u": "Num ErrCount SQId CmdId Status PELoc LBA NSID VS",
+ "smartctl_0065_u": " 0 2891 0 0x1016 0x4004 - 0 0 -",
+ "smartctl_0066_u": " 1 2890 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0067_u": " 2 2889 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0068_u": " 3 2888 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0069_u": " 4 2887 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0070_u": " 5 2886 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0071_u": " 6 2885 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0072_u": " 7 2884 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0073_u": " 8 2883 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0074_u": " 9 2882 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0075_u": " 10 2881 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0076_u": " 11 2880 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0077_u": " 12 2879 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0078_u": " 13 2878 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0079_u": " 14 2877 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0080_u": " 15 2876 0 0x0008 0x4004 - 0 0 -",
+ "smartctl_0081_u": "... (48 entries not read)",
+ "temperature": {
+ "current": 40
+ },
+ "user_capacity": {
+ "blocks": 2000409264,
+ "blocks_s": "2000409264",
+ "bytes": 1024209543168,
+ "bytes_le": [
+ 0,
+ 96,
+ 165,
+ 119,
+ 238
+ ],
+ "bytes_s": "1024209543168"
+ }
+ }
+ ]
+ }
+}
diff --git a/tests/files/2022-04-01_05h49m25s_O88RXQ27ZW7YJV3JPM79O0MOLWJQ3_snapshot.json b/tests/files/2022-04-01_05h49m25s_O88RXQ27ZW7YJV3JPM79O0MOLWJQ3_snapshot.json
new file mode 100644
index 00000000..e69d3ca6
--- /dev/null
+++ b/tests/files/2022-04-01_05h49m25s_O88RXQ27ZW7YJV3JPM79O0MOLWJQ3_snapshot.json
@@ -0,0 +1,508 @@
+{
+ "timestamp": "2022-04-01 05:49:25.051400",
+ "type": "Snapshot",
+ "uuid": "f62e6581-b39b-4768-b426-b6e382c53e2d",
+ "sid": "O88RXQ27ZW7YJV3JPM79O0MOLWJQ3",
+ "software": "Workbench",
+ "version": "2022.03.00",
+ "data": {
+ "lshw": "[\n{\n \"id\" : \"wb\",\n \"class\" : \"system\",\n \"claimed\" : true,\n \"handle\" : \"DMI:0100\",\n \"description\" : \"Computer\",\n \"product\" : \"Standard PC (i440FX + PIIX, 1996)\",\n \"vendor\" : \"QEMU\",\n \"version\" : \"pc-i440fx-5.2\",\n \"width\" : 64,\n \"configuration\" : {\n \"boot\" : \"normal\"\n },\n \"capabilities\" : {\n \"smbios-2.8\" : \"SMBIOS version 2.8\",\n \"dmi-2.8\" : \"DMI version 2.8\",\n \"vsyscall32\" : \"32-bit processes\"\n } {\n \"id\" : \"core\",\n \"class\" : \"bus\",\n \"claimed\" : true,\n \"description\" : \"Motherboard\",\n \"physid\" : \"0\" {\n \"id\" : \"firmware\",\n \"class\" : \"memory\",\n \"claimed\" : true,\n \"description\" : \"BIOS\",\n \"vendor\" : \"SeaBIOS\",\n \"physid\" : \"0\",\n \"version\" : \"?-20190711_202441-buildvm-armv7-10.arm.fedoraproject.org-2.fc31\",\n \"date\" : \"04/01/2014\",\n \"units\" : \"bytes\",\n \"size\" : 98304\n },\n {\n \"id\" : \"cpu\",\n \"class\" : \"processor\",\n \"claimed\" : true,\n \"handle\" : \"DMI:0400\",\n \"description\" : \"CPU\",\n \"product\" : \"Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz\",\n \"vendor\" : \"Intel Corp.\",\n \"physid\" : \"400\",\n \"businfo\" : \"cpu@0\",\n \"version\" : \"pc-i440fx-5.2\",\n \"slot\" : \"CPU 0\",\n \"units\" : \"Hz\",\n \"size\" : 2000000000,\n \"capacity\" : 2000000000,\n \"width\" : 64,\n \"configuration\" : {\n \"cores\" : \"1\",\n \"enabledcores\" : \"1\",\n \"threads\" : \"1\"\n },\n \"capabilities\" : {\n \"fpu\" : \"mathematical co-processor\",\n \"fpu_exception\" : \"FPU exceptions reporting\",\n \"wp\" : true,\n \"vme\" : \"virtual mode extensions\",\n \"de\" : \"debugging extensions\",\n \"pse\" : \"page size extensions\",\n \"tsc\" : \"time stamp counter\",\n \"msr\" : \"model-specific registers\",\n \"pae\" : \"4GB+ memory addressing (Physical Address Extension)\",\n \"mce\" : \"machine check exceptions\",\n \"cx8\" : \"compare and exchange 8-byte\",\n \"apic\" : \"on-chip advanced programmable interrupt controller (APIC)\",\n \"sep\" : \"fast system calls\",\n \"mtrr\" : \"memory type range registers\",\n \"pge\" : \"page global enable\",\n \"mca\" : \"machine check architecture\",\n \"cmov\" : \"conditional move instruction\",\n \"pat\" : \"page attribute table\",\n \"pse36\" : \"36-bit page size extensions\",\n \"clflush\" : true,\n \"mmx\" : \"multimedia extensions (MMX)\",\n \"fxsr\" : \"fast floating point save/restore\",\n \"sse\" : \"streaming SIMD extensions (SSE)\",\n \"sse2\" : \"streaming SIMD extensions (SSE2)\",\n \"ss\" : \"self-snoop\",\n \"syscall\" : \"fast system calls\",\n \"nx\" : \"no-execute bit (NX)\",\n \"pdpe1gb\" : true,\n \"rdtscp\" : true,\n \"x86-64\" : \"64bits extensions (x86-64)\",\n \"constant_tsc\" : true,\n \"arch_perfmon\" : true,\n \"rep_good\" : true,\n \"nopl\" : true,\n \"xtopology\" : true,\n \"cpuid\" : true,\n \"tsc_known_freq\" : true,\n \"pni\" : true,\n \"pclmulqdq\" : true,\n \"vmx\" : true,\n \"ssse3\" : true,\n \"fma\" : true,\n \"cx16\" : true,\n \"pcid\" : true,\n \"sse4_1\" : true,\n \"sse4_2\" : true,\n \"x2apic\" : true,\n \"movbe\" : true,\n \"popcnt\" : true,\n \"tsc_deadline_timer\" : true,\n \"aes\" : true,\n \"xsave\" : true,\n \"avx\" : true,\n \"f16c\" : true,\n \"rdrand\" : true,\n \"hypervisor\" : true,\n \"lahf_lm\" : true,\n \"abm\" : true,\n \"3dnowprefetch\" : true,\n \"cpuid_fault\" : true,\n \"invpcid_single\" : true,\n \"pti\" : true,\n \"tpr_shadow\" : true,\n \"vnmi\" : true,\n \"flexpriority\" : true,\n \"ept\" : true,\n \"vpid\" : true,\n \"ept_ad\" : true,\n \"fsgsbase\" : true,\n \"tsc_adjust\" : true,\n \"bmi1\" : true,\n \"avx2\" : true,\n \"smep\" : true,\n \"bmi2\" : true,\n \"erms\" : true,\n \"invpcid\" : true,\n \"mpx\" : true,\n \"rdseed\" : true,\n \"adx\" : true,\n \"smap\" : true,\n \"clflushopt\" : true,\n \"xsaveopt\" : true,\n \"xsavec\" : true,\n \"xgetbv1\" : true,\n \"xsaves\" : true,\n \"arat\" : true,\n \"umip\" : true,\n \"arch_capabilities\" : true\n }\n },\n {\n \"id\" : \"memory\",\n \"class\" : \"memory\",\n \"claimed\" : true,\n \"handle\" : \"DMI:1000\",\n \"description\" : \"System Memory\",\n \"physid\" : \"1000\",\n \"units\" : \"bytes\",\n \"size\" : 4294967296,\n \"configuration\" : {\n \"errordetection\" : \"multi-bit-ecc\"\n },\n \"capabilities\" : {\n \"ecc\" : \"Multi-bit error-correcting code (ECC)\"\n } {\n \"id\" : \"bank\",\n \"class\" : \"memory\",\n \"claimed\" : true,\n \"handle\" : \"DMI:1100\",\n \"description\" : \"DIMM RAM\",\n \"vendor\" : \"QEMU\",\n \"physid\" : \"0\",\n \"slot\" : \"DIMM 0\",\n \"units\" : \"bytes\",\n \"size\" : 4294967296\n },\n\n },\n {\n \"id\" : \"pci\",\n \"class\" : \"bridge\",\n \"claimed\" : true,\n \"handle\" : \"PCIBUS:0000:00\",\n \"description\" : \"Host bridge\",\n \"product\" : \"440FX - 82441FX PMC [Natoma]\",\n \"vendor\" : \"Intel Corporation\",\n \"physid\" : \"100\",\n \"businfo\" : \"pci@0000:00:00.0\",\n \"version\" : \"02\",\n \"width\" : 32,\n \"clock\" : 33000000 {\n \"id\" : \"isa\",\n \"class\" : \"bridge\",\n \"claimed\" : true,\n \"handle\" : \"PCI:0000:00:01.0\",\n \"description\" : \"ISA bridge\",\n \"product\" : \"82371SB PIIX3 ISA [Natoma/Triton II]\",\n \"vendor\" : \"Intel Corporation\",\n \"physid\" : \"1\",\n \"businfo\" : \"pci@0000:00:01.0\",\n \"version\" : \"00\",\n \"width\" : 32,\n \"clock\" : 33000000,\n \"configuration\" : {\n \"latency\" : \"0\"\n },\n \"capabilities\" : {\n \"isa\" : true\n }\n },\n {\n \"id\" : \"ide\",\n \"class\" : \"storage\",\n \"claimed\" : true,\n \"handle\" : \"PCI:0000:00:01.1\",\n \"description\" : \"IDE interface\",\n \"product\" : \"82371SB PIIX3 IDE [Natoma/Triton II]\",\n \"vendor\" : \"Intel Corporation\",\n \"physid\" : \"1.1\",\n \"businfo\" : \"pci@0000:00:01.1\",\n \"logicalname\" : [\"scsi0\", \"scsi1\"],\n \"version\" : \"00\",\n \"width\" : 32,\n \"clock\" : 33000000,\n \"configuration\" : {\n \"driver\" : \"ata_piix\",\n \"latency\" : \"0\"\n },\n \"capabilities\" : {\n \"ide\" : true,\n \"isa_compat_mode\" : \"ISA compatibility mode\",\n \"bus_master\" : \"bus mastering\",\n \"emulated\" : \"Emulated device\"\n } {\n \"id\" : \"disk\",\n \"class\" : \"disk\",\n \"claimed\" : true,\n \"handle\" : \"SCSI:00:00:00:00\",\n \"description\" : \"ATA Disk\",\n \"product\" : \"QEMU HARDDISK\",\n \"physid\" : \"0\",\n \"businfo\" : \"scsi@0:0.0.0\",\n \"logicalname\" : \"/dev/sda\",\n \"dev\" : \"8:0\",\n \"version\" : \"2.5+\",\n \"serial\" : \"QM00001\",\n \"units\" : \"bytes\",\n \"size\" : 42949673472,\n \"configuration\" : {\n \"ansiversion\" : \"5\",\n \"logicalsectorsize\" : \"512\",\n \"sectorsize\" : \"512\",\n \"signature\" : \"c338ebd4\"\n },\n \"capabilities\" : {\n \"partitioned\" : \"Partitioned disk\",\n \"partitioned:dos\" : \"MS-DOS partition table\"\n } {\n \"id\" : \"volume:0\",\n \"class\" : \"volume\",\n \"claimed\" : true,\n \"description\" : \"EXT4 volume\",\n \"vendor\" : \"Linux\",\n \"physid\" : \"1\",\n \"businfo\" : \"scsi@0:0.0.0,1\",\n \"logicalname\" : \"/dev/sda1\",\n \"dev\" : \"8:1\",\n \"version\" : \"1.0\",\n \"serial\" : \"666140b3-42b9-4940-8d82-7d894261231f\",\n \"size\" : 4293918720,\n \"capacity\" : 4293918720,\n \"configuration\" : {\n \"created\" : \"2020-09-18 14:01:52\",\n \"filesystem\" : \"ext4\",\n \"lastmountpoint\" : \"/\",\n \"modified\" : \"2022-01-29 15:42:10\",\n \"mounted\" : \"2022-01-29 15:42:10\",\n \"state\" : \"clean\"\n },\n \"capabilities\" : {\n \"primary\" : \"Primary partition\",\n \"bootable\" : \"Bootable partition (active)\",\n \"journaled\" : true,\n \"extended_attributes\" : \"Extended Attributes\",\n \"large_files\" : \"4GB+ files\",\n \"huge_files\" : \"16TB+ files\",\n \"dir_nlink\" : \"directories with 65000+ subdirs\",\n \"recover\" : \"needs recovery\",\n \"64bit\" : \"64bit filesystem\",\n \"extents\" : \"extent-based allocation\",\n \"ext4\" : true,\n \"ext2\" : \"EXT2/EXT3\",\n \"initialized\" : \"initialized volume\"\n }\n },\n {\n \"id\" : \"volume:1\",\n \"class\" : \"volume\",\n \"claimed\" : true,\n \"description\" : \"Extended partition\",\n \"physid\" : \"2\",\n \"businfo\" : \"scsi@0:0.0.0,2\",\n \"logicalname\" : \"/dev/sda2\",\n \"dev\" : \"8:2\",\n \"size\" : 38652609536,\n \"capacity\" : 38652609536,\n \"capabilities\" : {\n \"primary\" : \"Primary partition\",\n \"extended\" : \"Extended partition\",\n \"partitioned\" : \"Partitioned disk\",\n \"partitioned:extended\" : \"Extended partition\"\n } {\n \"id\" : \"logicalvolume:0\",\n \"class\" : \"volume\",\n \"claimed\" : true,\n \"description\" : \"Linux swap volume\",\n \"physid\" : \"5\",\n \"logicalname\" : \"/dev/sda5\",\n \"dev\" : \"8:5\",\n \"version\" : \"1\",\n \"serial\" : \"5149082d-e5ab-4ccb-b75d-52a8b4da4fc8\",\n \"size\" : 4292870144,\n \"capacity\" : 4292870144,\n \"configuration\" : {\n \"filesystem\" : \"swap\",\n \"pagesize\" : \"4096\"\n },\n \"capabilities\" : {\n \"nofs\" : \"No filesystem\",\n \"swap\" : \"Linux swap\",\n \"initialized\" : \"initialized volume\"\n }\n },\n {\n \"id\" : \"logicalvolume:1\",\n \"class\" : \"volume\",\n \"claimed\" : true,\n \"description\" : \"EXT4 volume\",\n \"vendor\" : \"Linux\",\n \"physid\" : \"6\",\n \"logicalname\" : [\"/dev/sda6\", \"/\"],\n \"dev\" : \"8:6\",\n \"version\" : \"1.0\",\n \"serial\" : \"cc4fd343-e6f4-4376-937e-f5d2fbcb48c7\",\n \"size\" : 34358689792,\n \"capacity\" : 34358689792,\n \"configuration\" : {\n \"created\" : \"2022-04-01 05:25:42\",\n \"filesystem\" : \"ext4\",\n \"lastmountpoint\" : \"/\",\n \"modified\" : \"2022-04-01 05:27:52\",\n \"mount.fstype\" : \"ext4\",\n \"mount.options\" : \"rw,relatime,errors=remount-ro\",\n \"mounted\" : \"2022-04-01 05:27:52\",\n \"state\" : \"mounted\"\n },\n \"capabilities\" : {\n \"journaled\" : true,\n \"extended_attributes\" : \"Extended Attributes\",\n \"large_files\" : \"4GB+ files\",\n \"huge_files\" : \"16TB+ files\",\n \"dir_nlink\" : \"directories with 65000+ subdirs\",\n \"recover\" : \"needs recovery\",\n \"64bit\" : \"64bit filesystem\",\n \"extents\" : \"extent-based allocation\",\n \"ext4\" : true,\n \"ext2\" : \"EXT2/EXT3\",\n \"initialized\" : \"initialized volume\"\n }\n },\n\n },\n\n },\n {\n \"id\" : \"cdrom\",\n \"class\" : \"disk\",\n \"claimed\" : true,\n \"handle\" : \"SCSI:01:00:00:00\",\n \"description\" : \"DVD reader\",\n \"product\" : \"QEMU DVD-ROM\",\n \"vendor\" : \"QEMU\",\n \"physid\" : \"1\",\n \"businfo\" : \"scsi@1:0.0.0\",\n \"logicalname\" : [\"/dev/cdrom\", \"/dev/dvd\", \"/dev/sr0\"],\n \"dev\" : \"11:0\",\n \"version\" : \"2.5+\",\n \"configuration\" : {\n \"ansiversion\" : \"5\",\n \"status\" : \"nodisc\"\n },\n \"capabilities\" : {\n \"removable\" : \"support is removable\",\n \"audio\" : \"Audio CD playback\",\n \"dvd\" : \"DVD playback\"\n }\n },\n\n },\n {\n \"id\" : \"bridge\",\n \"class\" : \"bridge\",\n \"claimed\" : true,\n \"handle\" : \"PCI:0000:00:01.3\",\n \"description\" : \"Bridge\",\n \"product\" : \"82371AB/EB/MB PIIX4 ACPI\",\n \"vendor\" : \"Intel Corporation\",\n \"physid\" : \"1.3\",\n \"businfo\" : \"pci@0000:00:01.3\",\n \"version\" : \"03\",\n \"width\" : 32,\n \"clock\" : 33000000,\n \"configuration\" : {\n \"driver\" : \"piix4_smbus\",\n \"latency\" : \"0\"\n },\n \"capabilities\" : {\n \"bridge\" : true\n }\n },\n {\n \"id\" : \"display\",\n \"class\" : \"display\",\n \"claimed\" : true,\n \"handle\" : \"PCI:0000:00:02.0\",\n \"description\" : \"VGA compatible controller\",\n \"physid\" : \"2\",\n \"businfo\" : \"pci@0000:00:02.0\",\n \"version\" : \"02\",\n \"width\" : 32,\n \"clock\" : 33000000,\n \"configuration\" : {\n \"driver\" : \"bochs-drm\",\n \"latency\" : \"0\"\n },\n \"capabilities\" : {\n \"vga_controller\" : true,\n \"bus_master\" : \"bus mastering\",\n \"rom\" : \"extension ROM\"\n }\n },\n {\n \"id\" : \"network\",\n \"class\" : \"network\",\n \"claimed\" : true,\n \"handle\" : \"PCI:0000:00:03.0\",\n \"description\" : \"Ethernet interface\",\n \"product\" : \"82540EM Gigabit Ethernet Controller\",\n \"vendor\" : \"Intel Corporation\",\n \"physid\" : \"3\",\n \"businfo\" : \"pci@0000:00:03.0\",\n \"logicalname\" : \"ens3\",\n \"version\" : \"03\",\n \"serial\" : \"52:54:00:12:34:56\",\n \"units\" : \"bit/s\",\n \"size\" : 1000000000,\n \"capacity\" : 1000000000,\n \"width\" : 32,\n \"clock\" : 33000000,\n \"configuration\" : {\n \"autonegotiation\" : \"on\",\n \"broadcast\" : \"yes\",\n \"driver\" : \"e1000\",\n \"driverversion\" : \"5.10.0-13-amd64\",\n \"duplex\" : \"full\",\n \"ip\" : \"10.0.2.15\",\n \"latency\" : \"0\",\n \"link\" : \"yes\",\n \"multicast\" : \"yes\",\n \"port\" : \"twisted pair\",\n \"speed\" : \"1Gbit/s\"\n },\n \"capabilities\" : {\n \"bus_master\" : \"bus mastering\",\n \"rom\" : \"extension ROM\",\n \"ethernet\" : true,\n \"physical\" : \"Physical interface\",\n \"tp\" : \"twisted pair\",\n \"10bt\" : \"10Mbit/s\",\n \"10bt-fd\" : \"10Mbit/s (full duplex)\",\n \"100bt\" : \"100Mbit/s\",\n \"100bt-fd\" : \"100Mbit/s (full duplex)\",\n \"1000bt-fd\" : \"1Gbit/s (full duplex)\",\n \"autonegotiation\" : \"Auto-negotiation\"\n }\n },\n\n },\n {\n \"id\" : \"pnp00:00\",\n \"class\" : \"input\",\n \"claimed\" : true,\n \"product\" : \"PnP device PNP0303\",\n \"physid\" : \"1\",\n \"configuration\" : {\n \"driver\" : \"i8042 kbd\"\n },\n \"capabilities\" : {\n \"pnp\" : true\n }\n },\n {\n \"id\" : \"pnp00:01\",\n \"class\" : \"input\",\n \"claimed\" : true,\n \"product\" : \"PnP device PNP0f13\",\n \"physid\" : \"2\",\n \"configuration\" : {\n \"driver\" : \"i8042 aux\"\n },\n \"capabilities\" : {\n \"pnp\" : true\n }\n },\n {\n \"id\" : \"pnp00:02\",\n \"class\" : \"storage\",\n \"claimed\" : true,\n \"product\" : \"PnP device PNP0700\",\n \"physid\" : \"3\",\n \"capabilities\" : {\n \"pnp\" : true\n }\n },\n {\n \"id\" : \"pnp00:03\",\n \"class\" : \"printer\",\n \"claimed\" : true,\n \"product\" : \"PnP device PNP0400\",\n \"physid\" : \"4\",\n \"configuration\" : {\n \"driver\" : \"parport_pc\"\n },\n \"capabilities\" : {\n \"pnp\" : true\n }\n },\n {\n \"id\" : \"pnp00:04\",\n \"class\" : \"communication\",\n \"claimed\" : true,\n \"product\" : \"PnP device PNP0501\",\n \"physid\" : \"5\",\n \"configuration\" : {\n \"driver\" : \"serial\"\n },\n \"capabilities\" : {\n \"pnp\" : true\n }\n },\n {\n \"id\" : \"pnp00:05\",\n \"class\" : \"system\",\n \"claimed\" : true,\n \"product\" : \"PnP device PNP0b00\",\n \"physid\" : \"6\",\n \"configuration\" : {\n \"driver\" : \"rtc_cmos\"\n },\n \"capabilities\" : {\n \"pnp\" : true\n }\n },\n\n },\n\n]\n\n",
+ "dmidecode": "# dmidecode 3.3\nGetting SMBIOS data from sysfs.\nSMBIOS 2.8 present.\n10 structures occupying 462 bytes.\nTable at 0x000F5A90.\n\nHandle 0x0000, DMI type 0, 24 bytes\nBIOS Information\n\tVendor: SeaBIOS\n\tVersion: ?-20190711_202441-buildvm-armv7-10.arm.fedoraproject.org-2.fc31\n\tRelease Date: 04/01/2014\n\tAddress: 0xE8000\n\tRuntime Size: 96 kB\n\tROM Size: 64 kB\n\tCharacteristics:\n\t\tBIOS characteristics not supported\n\t\tTargeted content distribution is supported\n\tBIOS Revision: 0.0\n\nHandle 0x0100, DMI type 1, 27 bytes\nSystem Information\n\tManufacturer: QEMU\n\tProduct Name: Standard PC (i440FX + PIIX, 1996)\n\tVersion: pc-i440fx-5.2\n\tSerial Number: Not Specified\n\tUUID: Not Settable\n\tWake-up Type: Power Switch\n\tSKU Number: Not Specified\n\tFamily: Not Specified\n\nHandle 0x0300, DMI type 3, 22 bytes\nChassis Information\n\tManufacturer: QEMU\n\tType: Other\n\tLock: Not Present\n\tVersion: pc-i440fx-5.2\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tBoot-up State: Safe\n\tPower Supply State: Safe\n\tThermal State: Safe\n\tSecurity Status: Unknown\n\tOEM Information: 0x00000000\n\tHeight: Unspecified\n\tNumber Of Power Cords: Unspecified\n\tContained Elements: 0\n\tSKU Number: Not Specified\n\nHandle 0x0400, DMI type 4, 42 bytes\nProcessor Information\n\tSocket Designation: CPU 0\n\tType: Central Processor\n\tFamily: Other\n\tManufacturer: QEMU\n\tID: E9 06 08 00 FF FB 8B 0F\n\tVersion: pc-i440fx-5.2\n\tVoltage: Unknown\n\tExternal Clock: Unknown\n\tMax Speed: 2000 MHz\n\tCurrent Speed: 2000 MHz\n\tStatus: Populated, Enabled\n\tUpgrade: Other\n\tL1 Cache Handle: Not Provided\n\tL2 Cache Handle: Not Provided\n\tL3 Cache Handle: Not Provided\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tCore Count: 1\n\tCore Enabled: 1\n\tThread Count: 1\n\tCharacteristics: None\n\nHandle 0x1000, DMI type 16, 23 bytes\nPhysical Memory Array\n\tLocation: Other\n\tUse: System Memory\n\tError Correction Type: Multi-bit ECC\n\tMaximum Capacity: 4 GB\n\tError Information Handle: Not Provided\n\tNumber Of Devices: 1\n\nHandle 0x1100, DMI type 17, 40 bytes\nMemory Device\n\tArray Handle: 0x1000\n\tError Information Handle: Not Provided\n\tTotal Width: Unknown\n\tData Width: Unknown\n\tSize: 4 GB\n\tForm Factor: DIMM\n\tSet: None\n\tLocator: DIMM 0\n\tBank Locator: Not Specified\n\tType: RAM\n\tType Detail: Other\n\tSpeed: Unknown\n\tManufacturer: QEMU\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: Unknown\n\tConfigured Memory Speed: Unknown\n\tMinimum Voltage: Unknown\n\tMaximum Voltage: Unknown\n\tConfigured Voltage: Unknown\n\nHandle 0x1300, DMI type 19, 31 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x00000000000\n\tEnding Address: 0x000BFFFFFFF\n\tRange Size: 3 GB\n\tPhysical Array Handle: 0x1000\n\tPartition Width: 1\n\nHandle 0x1301, DMI type 19, 31 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x00100000000\n\tEnding Address: 0x0013FFFFFFF\n\tRange Size: 1 GB\n\tPhysical Array Handle: 0x1000\n\tPartition Width: 1\n\nHandle 0x2000, DMI type 32, 11 bytes\nSystem Boot Information\n\tStatus: No errors detected\n\nHandle 0x7F00, DMI type 127, 4 bytes\nEnd Of Table\n\n",
+ "hwinfo": "01: None 00.0: 0102 Floppy disk controller\n [Created at floppy.112]\n Unique ID: rdCR.3wRL2_g4d2B\n Hardware Class: storage\n Model: \"Floppy disk controller\"\n I/O Port: 0x3f2 (rw)\n I/O Ports: 0x3f4-0x3f5 (rw)\n I/O Port: 0x3f7 (rw)\n DMA: 2\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n02: Floppy 00.0: 10603 Floppy Disk\n [Created at floppy.127]\n Unique ID: sPPV.oZ89vuho4Y3\n Parent ID: rdCR.3wRL2_g4d2B\n Hardware Class: floppy\n Model: \"Floppy Disk\"\n Device File: /dev/fd0\n Size: 3.5 ''\n Size: 5760 sectors a 512 bytes\n Capacity: 0 GB (2949120 bytes)\n Drive status: no medium\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #1 (Floppy disk controller)\n\n03: None 00.0: 10105 BIOS\n [Created at bios.186]\n Unique ID: rdCR.lZF+r4EgHp4\n Hardware Class: bios\n BIOS Keyboard LED Status:\n Scroll Lock: off\n Num Lock: off\n Caps Lock: off\n Serial Port 0: 0x3f8\n Parallel Port 0: 0x378\n Base Memory: 639 kB\n PnP BIOS: @@@0000\n MP spec rev 1.4 info:\n OEM id: \"BOCHSCPU\"\n Product id: \"0.1\"\n 1 CPUs (0 disabled)\n BIOS32 Service Directory Entry: 0xfd243\n SMBIOS Version: 2.8\n BIOS Info: #0\n Vendor: \"SeaBIOS\"\n Version: \"?-20190711_202441-buildvm-armv7-10.arm.fedoraproject.org-2.fc31\"\n Date: \"04/01/2014\"\n Start Address: 0xe8000\n ROM Size: 64 kB\n Features: 0x04000000000000000008\n System Info: #256\n Manufacturer: \"QEMU\"\n Product: \"Standard PC (i440FX + PIIX, 1996)\"\n Version: \"pc-i440fx-5.2\"\n UUID: undefined\n Wake-up: 0x06 (Power Switch)\n Chassis Info: #768\n Manufacturer: \"QEMU\"\n Version: \"pc-i440fx-5.2\"\n Type: 0x01 (Other)\n Bootup State: 0x03 (Safe)\n Power Supply State: 0x03 (Safe)\n Thermal State: 0x03 (Safe)\n Security Status: 0x02 (Unknown)\n Processor Info: #1024\n Socket: \"CPU 0\"\n Socket Type: 0x01 (Other)\n Socket Status: Populated\n Type: 0x03 (CPU)\n Family: 0x01 (Other)\n Manufacturer: \"QEMU\"\n Version: \"pc-i440fx-5.2\"\n Processor ID: 0x0f8bfbff000806e9\n Status: 0x01 (Enabled)\n Max. Speed: 2000 MHz\n Current Speed: 2000 MHz\n Physical Memory Array: #4096\n Use: 0x03 (System memory)\n Location: 0x01 (Other)\n Slots: 1\n Max. Size: 4 GB\n ECC: 0x06 (Multi-bit)\n Memory Device: #4352\n Location: \"DIMM 0\"\n Manufacturer: \"QEMU\"\n Memory Array: #4096\n Form Factor: 0x09 (DIMM)\n Type: 0x07 (RAM)\n Type Detail: 0x0002 (Other)\n Data Width: 0 bits\n Size: 4 GB\n Memory Array Mapping: #4864\n Memory Array: #4096\n Partition Width: 1\n Start Address: 0x00000000\n End Address: 0xc0000000\n Memory Array Mapping: #4865\n Memory Array: #4096\n Partition Width: 1\n Start Address: 0x0000000100000000\n End Address: 0x0000000140000000\n Type 32 Record: #8192\n Data 00: 20 0b 00 20 00 00 00 00 00 00 00\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n04: None 00.0: 10107 System\n [Created at sys.64]\n Unique ID: rdCR.n_7QNeEnh23\n Hardware Class: system\n Model: \"System\"\n Formfactor: \"desktop\"\n Driver Info #0:\n Driver Status: thermal,fan are not active\n Driver Activation Cmd: \"modprobe thermal; modprobe fan\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n05: None 00.0: 10104 FPU\n [Created at misc.191]\n Unique ID: rdCR.EMpH5pjcahD\n Hardware Class: unknown\n Model: \"FPU\"\n I/O Ports: 0xf0-0xff (rw)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n06: None 00.0: 0801 DMA controller (8237)\n [Created at misc.205]\n Unique ID: rdCR.f5u1ucRm+H9\n Hardware Class: unknown\n Model: \"DMA controller\"\n I/O Ports: 0x00-0xcf7 (rw)\n I/O Ports: 0xc0-0xdf (rw)\n I/O Ports: 0x80-0x8f (rw)\n DMA: 4\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n07: None 00.0: 0800 PIC (8259)\n [Created at misc.218]\n Unique ID: rdCR.8uRK7LxiIA2\n Hardware Class: unknown\n Model: \"PIC\"\n I/O Ports: 0x20-0x21 (rw)\n I/O Ports: 0xa0-0xa1 (rw)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n08: None 00.0: 0900 Keyboard controller\n [Created at misc.250]\n Unique ID: rdCR.9N+EecqykME\n Hardware Class: unknown\n Model: \"Keyboard controller\"\n I/O Port: 0x60 (rw)\n I/O Port: 0x64 (rw)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n09: None 00.0: 0701 Parallel controller (SPP)\n [Created at misc.261]\n Unique ID: YMnp.ecK7NLYWZ5D\n Hardware Class: unknown\n Model: \"Parallel controller\"\n Device File: /dev/lp0\n I/O Ports: 0x378-0x37a (rw)\n I/O Ports: 0x37b-0x37f (rw)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n10: None 00.0: 10400 PS/2 Controller\n [Created at misc.303]\n Unique ID: rdCR.DziBbWO85o5\n Hardware Class: unknown\n Model: \"PS/2 Controller\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n12: None 00.0: 10102 Main Memory\n [Created at memory.74]\n Unique ID: rdCR.CxwsZFjVASF\n Hardware Class: memory\n Model: \"Main Memory\"\n Memory Range: 0x00000000-0xf5b80fff (rw)\n Memory Size: 3 GB + 768 MB\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n13: PCI 01.0: 0601 ISA bridge\n [Created at pci.386]\n Unique ID: vSkL.ucdhKwLeeAA\n SysFS ID: /devices/pci0000:00/0000:00:01.0\n SysFS BusID: 0000:00:01.0\n Hardware Class: bridge\n Model: \"Red Hat Qemu virtual machine\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x7000 \"82371SB PIIX3 ISA [Natoma/Triton II]\"\n SubVendor: pci 0x1af4 \"Red Hat, Inc.\"\n SubDevice: pci 0x1100 \"Qemu virtual machine\"\n Module Alias: \"pci:v00008086d00007000sv00001AF4sd00001100bc06sc01i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n14: PCI 00.0: 0600 Host bridge\n [Created at pci.386]\n Unique ID: qLht.YeL3TKDjrxE\n SysFS ID: /devices/pci0000:00/0000:00:00.0\n SysFS BusID: 0000:00:00.0\n Hardware Class: bridge\n Model: \"Red Hat Qemu virtual machine\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x1237 \"440FX - 82441FX PMC [Natoma]\"\n SubVendor: pci 0x1af4 \"Red Hat, Inc.\"\n SubDevice: pci 0x1100 \"Qemu virtual machine\"\n Revision: 0x02\n Module Alias: \"pci:v00008086d00001237sv00001AF4sd00001100bc06sc00i00\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n15: PCI 01.3: 0680 Bridge\n [Created at pci.386]\n Unique ID: VRCs.M9Cc8lcQjE2\n SysFS ID: /devices/pci0000:00/0000:00:01.3\n SysFS BusID: 0000:00:01.3\n Hardware Class: bridge\n Model: \"Red Hat Qemu virtual machine\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x7113 \"82371AB/EB/MB PIIX4 ACPI\"\n SubVendor: pci 0x1af4 \"Red Hat, Inc.\"\n SubDevice: pci 0x1100 \"Qemu virtual machine\"\n Revision: 0x03\n Driver: \"piix4_smbus\"\n Driver Modules: \"i2c_piix4\"\n IRQ: 9 (no events)\n Module Alias: \"pci:v00008086d00007113sv00001AF4sd00001100bc06sc80i00\"\n Driver Info #0:\n Driver Status: i2c_piix4 is active\n Driver Activation Cmd: \"modprobe i2c_piix4\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n16: PCI 03.0: 0200 Ethernet controller\n [Created at pci.386]\n Unique ID: RNcY.amjFVOTKCI8\n SysFS ID: /devices/pci0000:00/0000:00:03.0\n SysFS BusID: 0000:00:03.0\n Hardware Class: network\n Model: \"Red Hat QEMU Virtual Machine\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x100e \"82540EM Gigabit Ethernet Controller\"\n SubVendor: pci 0x1af4 \"Red Hat, Inc.\"\n SubDevice: pci 0x1100 \"QEMU Virtual Machine\"\n Revision: 0x03\n Driver: \"e1000\"\n Driver Modules: \"e1000\"\n Device File: ens3\n Memory Range: 0xfebc0000-0xfebdffff (rw,non-prefetchable)\n I/O Ports: 0xc000-0xc03f (rw)\n Memory Range: 0xfeb80000-0xfebbffff (ro,non-prefetchable,disabled)\n IRQ: 11 (76590 events)\n HW Address: 52:54:00:12:34:56\n Permanent HW Address: 52:54:00:12:34:56\n Link detected: yes\n Module Alias: \"pci:v00008086d0000100Esv00001AF4sd00001100bc02sc00i00\"\n Driver Info #0:\n Driver Status: e1000 is active\n Driver Activation Cmd: \"modprobe e1000\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n17: PCI 01.1: 0101 IDE interface (ISA Compatibility mode-only controller, supports bus mastering)\n [Created at pci.386]\n Unique ID: mnDB.3sKqaxiizg6\n SysFS ID: /devices/pci0000:00/0000:00:01.1\n SysFS BusID: 0000:00:01.1\n Hardware Class: storage\n Model: \"Red Hat Qemu virtual machine\"\n Vendor: pci 0x8086 \"Intel Corporation\"\n Device: pci 0x7010 \"82371SB PIIX3 IDE [Natoma/Triton II]\"\n SubVendor: pci 0x1af4 \"Red Hat, Inc.\"\n SubDevice: pci 0x1100 \"Qemu virtual machine\"\n Driver: \"ata_piix\"\n Driver Modules: \"ata_piix\"\n I/O Ports: 0x1f0-0x1f7 (rw)\n I/O Port: 0x3f6 (rw)\n I/O Ports: 0x170-0x177 (rw)\n I/O Port: 0x376 (rw)\n I/O Ports: 0xc040-0xc04f (rw)\n Module Alias: \"pci:v00008086d00007010sv00001AF4sd00001100bc01sc01i80\"\n Driver Info #0:\n Driver Status: ata_piix is active\n Driver Activation Cmd: \"modprobe ata_piix\"\n Driver Info #1:\n Driver Status: ata_generic is active\n Driver Activation Cmd: \"modprobe ata_generic\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n18: PCI 02.0: 0300 VGA compatible controller (VGA)\n [Created at pci.386]\n Unique ID: _Znp.WspiKb87LiA\n SysFS ID: /devices/pci0000:00/0000:00:02.0\n SysFS BusID: 0000:00:02.0\n Hardware Class: graphics card\n Model: \"VGA compatible controller\"\n Vendor: pci 0x1234 \n Device: pci 0x1111 \n SubVendor: pci 0x1af4 \"Red Hat, Inc.\"\n SubDevice: pci 0x1100 \n Revision: 0x02\n Driver: \"bochs-drm\"\n Driver Modules: \"bochs_drm\"\n Memory Range: 0xfd000000-0xfdffffff (ro,non-prefetchable)\n Memory Range: 0xfebf0000-0xfebf0fff (rw,non-prefetchable)\n Memory Range: 0x000c0000-0x000dffff (rw,non-prefetchable,disabled)\n I/O Ports: 0x3c0-0x3df (rw)\n Module Alias: \"pci:v00001234d00001111sv00001AF4sd00001100bc03sc00i00\"\n Driver Info #0:\n Driver Status: bochs_drm is active\n Driver Activation Cmd: \"modprobe bochs_drm\"\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n19: None 00.0: 10002 LCD Monitor\n [Created at monitor.125]\n Unique ID: rdCR.AenZDShaZ_5\n Parent ID: _Znp.WspiKb87LiA\n Hardware Class: monitor\n Model: \"QEMU Monitor\"\n Vendor: RHT \n Device: eisa 0x1234 \"QEMU Monitor\"\n Resolution: 640x480@60Hz\n Resolution: 800x600@60Hz\n Resolution: 1024x768@60Hz\n Resolution: 2048x1152@60Hz\n Resolution: 1920x1080@60Hz\n Size: 260x195 mm\n Year of Manufacture: 2014\n Week of Manufacture: 42\n Detailed Timings #0:\n Resolution: 1024x768\n Horizontal: 1024 1280 1310 1382 (+256 +286 +358) -hsync\n Vertical: 768 771 774 794 (+3 +6 +26) -vsync\n Frequencies: 82.29 MHz, 59.54 kHz, 74.99 Hz\n Driver Info #0:\n Max. Resolution: 2048x1152\n Vert. Sync Range: 50-125 Hz\n Hor. Sync Range: 30-160 kHz\n Bandwidth: 82 MHz\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #18 (VGA compatible controller)\n\n20: None 00.0: 0700 Serial controller (16550)\n [Created at serial.74]\n Unique ID: S_Uw.3fyvFV+mbWD\n Hardware Class: unknown\n Model: \"16550A\"\n Device: \"16550A\"\n Device File: /dev/ttyS0\n I/O Ports: 0x3f8-0x3ff (rw)\n IRQ: 4 (1 event)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n21: SCSI 100.0: 10602 CD-ROM (DVD)\n [Created at block.249]\n Unique ID: KD9E.53N0UD4ozwD\n Parent ID: mnDB.3sKqaxiizg6\n SysFS ID: /class/block/sr0\n SysFS BusID: 1:0:0:0\n SysFS Device Link: /devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0\n Hardware Class: cdrom\n Model: \"QEMU DVD-ROM\"\n Vendor: \"QEMU\"\n Device: \"QEMU DVD-ROM\"\n Revision: \"2.5+\"\n Driver: \"ata_piix\", \"sr\"\n Driver Modules: \"ata_piix\", \"sr_mod\"\n Device File: /dev/sr0 (/dev/sg1)\n Device Files: /dev/sr0, /dev/disk/by-path/pci-0000:00:01.1-ata-2.0, /dev/dvd, /dev/cdrom, /dev/disk/by-path/pci-0000:00:01.1-ata-2, /dev/disk/by-id/ata-QEMU_DVD-ROM_QM00003\n Device Number: block 11:0 (char 21:1)\n Features: DVD, MRW, MRW-W\n Drive status: no medium\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #17 (IDE interface)\n Drive Speed: 4\n\n22: None 00.0: 10600 Disk\n [Created at block.245]\n Unique ID: kwWm.Fxp0d3BezAE\n SysFS ID: /class/block/fd0\n SysFS BusID: floppy.0\n SysFS Device Link: /devices/platform/floppy.0\n Hardware Class: disk\n Model: \"Disk\"\n Driver: \"floppy\"\n Driver Modules: \"floppy\"\n Device File: /dev/fd0\n Device Number: block 2:0\n Size: 8 sectors a 512 bytes\n Capacity: 0 GB (4096 bytes)\n Drive status: no medium\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n23: IDE 00.0: 10600 Disk\n [Created at block.245]\n Unique ID: 3OOL.W8iGvCekDp8\n Parent ID: mnDB.3sKqaxiizg6\n SysFS ID: /class/block/sda\n SysFS BusID: 0:0:0:0\n SysFS Device Link: /devices/pci0000:00/0000:00:01.1/ata1/host0/target0:0:0/0:0:0:0\n Hardware Class: disk\n Model: \"QEMU HARDDISK\"\n Vendor: \"QEMU\"\n Device: \"HARDDISK\"\n Revision: \"2.5+\"\n Serial ID: \"QM00001\"\n Driver: \"ata_piix\", \"sd\"\n Driver Modules: \"ata_piix\", \"sd_mod\"\n Device File: /dev/sda\n Device Files: /dev/sda, /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001, /dev/disk/by-path/pci-0000:00:01.1-ata-1.0, /dev/disk/by-path/pci-0000:00:01.1-ata-1\n Device Number: block 8:0-8:15\n Geometry (Logical): CHS 5221/255/63\n Size: 83886081 sectors a 512 bytes\n Capacity: 40 GB (42949673472 bytes)\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #17 (IDE interface)\n\n24: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: bdUI.SE1wIdpsiiC\n Parent ID: 3OOL.W8iGvCekDp8\n SysFS ID: /class/block/sda/sda1\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/sda1\n Device Files: /dev/sda1, /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part1, /dev/disk/by-uuid/666140b3-42b9-4940-8d82-7d894261231f, /dev/disk/by-path/pci-0000:00:01.1-ata-1-part1, /dev/disk/by-partuuid/c338ebd4-01, /dev/disk/by-path/pci-0000:00:01.1-ata-1.0-part1\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #23 (Disk)\n\n25: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: 2pkM.SE1wIdpsiiC\n Parent ID: 3OOL.W8iGvCekDp8\n SysFS ID: /class/block/sda/sda2\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/sda2\n Device Files: /dev/sda2, /dev/disk/by-path/pci-0000:00:01.1-ata-1-part2, /dev/disk/by-partuuid/c338ebd4-02, /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part2, /dev/disk/by-path/pci-0000:00:01.1-ata-1.0-part2\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #23 (Disk)\n\n26: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: QLVZ.SE1wIdpsiiC\n Parent ID: 3OOL.W8iGvCekDp8\n SysFS ID: /class/block/sda/sda5\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/sda5\n Device Files: /dev/sda5, /dev/disk/by-uuid/5149082d-e5ab-4ccb-b75d-52a8b4da4fc8, /dev/disk/by-path/pci-0000:00:01.1-ata-1.0-part5, /dev/disk/by-path/pci-0000:00:01.1-ata-1-part5, /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part5, /dev/disk/by-partuuid/c338ebd4-05\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #23 (Disk)\n\n27: None 00.0: 11300 Partition\n [Created at block.434]\n Unique ID: tWld.SE1wIdpsiiC\n Parent ID: 3OOL.W8iGvCekDp8\n SysFS ID: /class/block/sda/sda6\n Hardware Class: partition\n Model: \"Partition\"\n Device File: /dev/sda6\n Device Files: /dev/sda6, /dev/disk/by-partuuid/c338ebd4-06, /dev/disk/by-path/pci-0000:00:01.1-ata-1.0-part6, /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part6, /dev/disk/by-path/pci-0000:00:01.1-ata-1-part6, /dev/disk/by-uuid/cc4fd343-e6f4-4376-937e-f5d2fbcb48c7\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #23 (Disk)\n\n28: PS/2 00.0: 10800 Keyboard\n [Created at input.226]\n Unique ID: nLyy.+49ps10DtUF\n Hardware Class: keyboard\n Model: \"AT Translated Set 2 keyboard\"\n Vendor: 0x0001 \n Device: 0x0001 \"AT Translated Set 2 keyboard\"\n Compatible to: int 0x0211 0x0001\n Device File: /dev/input/event0\n Device Files: /dev/input/event0, /dev/input/by-path/platform-i8042-serio-0-event-kbd\n Device Number: char 13:64\n Driver Info #0:\n XkbRules: xfree86\n XkbModel: pc104\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n29: PS/2 00.0: 10500 PS/2 Mouse\n [Created at input.249]\n Unique ID: AH6Q.mYF0pYoTCW7\n Hardware Class: mouse\n Model: \"VirtualPS/2 VMware VMMouse\"\n Vendor: 0x0002 \n Device: 0x0013 \"VirtualPS/2 VMware VMMouse\"\n Compatible to: int 0x0210 0x0003\n Device File: /dev/input/mice (/dev/input/mouse0)\n Device Files: /dev/input/mice, /dev/input/mouse0, /dev/input/event1, /dev/input/by-path/platform-i8042-serio-1-mouse\n Device Number: char 13:63 (char 13:32)\n Driver Info #0:\n Buttons: 3\n Wheels: 0\n XFree86 Protocol: explorerps/2\n GPM Protocol: exps2\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n30: PS/2 00.0: 10500 PS/2 Mouse\n [Created at input.249]\n Unique ID: AH6Q.++hSeDccb2F\n Hardware Class: mouse\n Model: \"VirtualPS/2 VMware VMMouse\"\n Vendor: 0x0002 \n Device: 0x0013 \"VirtualPS/2 VMware VMMouse\"\n Compatible to: int 0x0210 0x0012\n Device File: /dev/input/mice (/dev/input/mouse1)\n Device Files: /dev/input/mice, /dev/input/mouse1, /dev/input/event2, /dev/input/by-path/platform-i8042-serio-1-event-mouse\n Device Number: char 13:63 (char 13:33)\n Driver Info #0:\n Buttons: 2\n Wheels: 1\n XFree86 Protocol: explorerps/2\n GPM Protocol: exps2\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n31: None 00.0: 10103 CPU\n [Created at cpu.465]\n Unique ID: rdCR.j8NaKXDZtZ6\n Hardware Class: cpu\n Arch: X86-64\n Vendor: \"GenuineIntel\"\n Model: 6.142.9 \"Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz\"\n Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,mmx,fxsr,sse,sse2,ss,syscall,nx,pdpe1gb,rdtscp,lm,constant_tsc,arch_perfmon,rep_good,nopl,xtopology,cpuid,tsc_known_freq,pni,pclmulqdq,vmx,ssse3,fma,cx16,pcid,sse4_1,sse4_2,x2apic,movbe,popcnt,tsc_deadline_timer,aes,xsave,avx,f16c,rdrand,hypervisor,lahf_lm,abm,3dnowprefetch,cpuid_fault,invpcid_single,pti,tpr_shadow,vnmi,flexpriority,ept,vpid,ept_ad,fsgsbase,tsc_adjust,bmi1,avx2,smep,bmi2,erms,invpcid,mpx,rdseed,adx,smap,clflushopt,xsaveopt,xsavec,xgetbv1,xsaves,arat,umip,arch_capabilities\n Clock: 2904 MHz\n BogoMips: 5808.00\n Cache: 16384 kb\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n\n32: None 03.0: 10701 Ethernet\n [Created at net.126]\n Unique ID: U2Mp.ndpeucax6V1\n Parent ID: RNcY.amjFVOTKCI8\n SysFS ID: /class/net/ens3\n SysFS Device Link: /devices/pci0000:00/0000:00:03.0\n Hardware Class: network interface\n Model: \"Ethernet network interface\"\n Driver: \"e1000\"\n Driver Modules: \"e1000\"\n Device File: ens3\n HW Address: 52:54:00:12:34:56\n Permanent HW Address: 52:54:00:12:34:56\n Link detected: yes\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n Attached to: #16 (Ethernet controller)\n\n33: None 00.0: 10700 Loopback\n [Created at net.126]\n Unique ID: ZsBS.GQNx7L4uPNA\n SysFS ID: /class/net/lo\n Hardware Class: network interface\n Model: \"Loopback network interface\"\n Device File: lo\n Link detected: yes\n Config Status: cfg=new, avail=yes, need=no, active=unknown\n",
+ "smart": [
+ {
+ "json_format_version": [
+ 1,
+ 0
+ ],
+ "smartctl": {
+ "argv": [
+ "smartctl",
+ "-x",
+ "--json=cosviu",
+ "/dev/fd0"
+ ],
+ "build_info": "(local build)",
+ "exit_status": 1,
+ "messages": [
+ {
+ "severity": "error",
+ "string": "/dev/fd0: Unable to detect device type"
+ }
+ ],
+ "output": [
+ "smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-13-amd64] (local build)",
+ "Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org",
+ "",
+ "/dev/fd0: Unable to detect device type",
+ "Please specify device type with the -d option.",
+ "",
+ "Use smartctl -h to get a usage summary",
+ ""
+ ],
+ "platform_info": "x86_64-linux-5.10.0-13-amd64",
+ "svn_revision": "5155",
+ "version": [
+ 7,
+ 2
+ ]
+ },
+ "smartctl_0001_i": "smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-13-amd64] (local build)",
+ "smartctl_0002_i": "Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org",
+ "smartctl_0004_i": "/dev/fd0: Unable to detect device type",
+ "smartctl_0005_u": "Please specify device type with the -d option.",
+ "smartctl_0007_u": "Use smartctl -h to get a usage summary"
+ },
+ {
+ "ata_smart_attributes": {
+ "revision": 1,
+ "table": [
+ {
+ "flags": {
+ "auto_keep": false,
+ "error_rate": false,
+ "event_count": false,
+ "performance": false,
+ "prefailure": true,
+ "string": "PO---- ",
+ "updated_online": true,
+ "value": 3
+ },
+ "id": 1,
+ "name": "Raw_Read_Error_Rate",
+ "raw": {
+ "string": "0",
+ "value": 0
+ },
+ "thresh": 6,
+ "value": 100,
+ "when_failed": "",
+ "worst": 100
+ },
+ {
+ "flags": {
+ "auto_keep": false,
+ "error_rate": false,
+ "event_count": false,
+ "performance": false,
+ "prefailure": true,
+ "string": "PO---- ",
+ "updated_online": true,
+ "value": 3
+ },
+ "id": 3,
+ "name": "Spin_Up_Time",
+ "raw": {
+ "string": "16",
+ "value": 16
+ },
+ "thresh": 0,
+ "value": 100,
+ "when_failed": "",
+ "worst": 100
+ },
+ {
+ "flags": {
+ "auto_keep": false,
+ "error_rate": false,
+ "event_count": false,
+ "performance": false,
+ "prefailure": false,
+ "string": "-O---- ",
+ "updated_online": true,
+ "value": 2
+ },
+ "id": 4,
+ "name": "Start_Stop_Count",
+ "raw": {
+ "string": "100",
+ "value": 100
+ },
+ "thresh": 20,
+ "value": 100,
+ "when_failed": "",
+ "worst": 100
+ },
+ {
+ "flags": {
+ "auto_keep": false,
+ "error_rate": false,
+ "event_count": false,
+ "performance": false,
+ "prefailure": true,
+ "string": "PO---- ",
+ "updated_online": true,
+ "value": 3
+ },
+ "id": 5,
+ "name": "Reallocated_Sector_Ct",
+ "raw": {
+ "string": "0",
+ "value": 0
+ },
+ "thresh": 36,
+ "value": 100,
+ "when_failed": "",
+ "worst": 100
+ },
+ {
+ "flags": {
+ "auto_keep": false,
+ "error_rate": false,
+ "event_count": false,
+ "performance": false,
+ "prefailure": true,
+ "string": "PO---- ",
+ "updated_online": true,
+ "value": 3
+ },
+ "id": 9,
+ "name": "Power_On_Hours",
+ "raw": {
+ "string": "1",
+ "value": 1
+ },
+ "thresh": 0,
+ "value": 100,
+ "when_failed": "",
+ "worst": 100
+ },
+ {
+ "flags": {
+ "auto_keep": false,
+ "error_rate": false,
+ "event_count": false,
+ "performance": false,
+ "prefailure": true,
+ "string": "PO---- ",
+ "updated_online": true,
+ "value": 3
+ },
+ "id": 12,
+ "name": "Power_Cycle_Count",
+ "raw": {
+ "string": "0",
+ "value": 0
+ },
+ "thresh": 0,
+ "value": 100,
+ "when_failed": "",
+ "worst": 100
+ },
+ {
+ "flags": {
+ "auto_keep": false,
+ "error_rate": false,
+ "event_count": false,
+ "performance": false,
+ "prefailure": true,
+ "string": "PO---- ",
+ "updated_online": true,
+ "value": 3
+ },
+ "id": 190,
+ "name": "Airflow_Temperature_Cel",
+ "raw": {
+ "string": "31 (Min/Max 31/31)",
+ "value": 522125343
+ },
+ "thresh": 50,
+ "value": 69,
+ "when_failed": "",
+ "worst": 69
+ }
+ ]
+ },
+ "ata_smart_data": {
+ "capabilities": {
+ "attribute_autosave_enabled": true,
+ "conveyance_self_test_supported": false,
+ "error_logging_supported": true,
+ "exec_offline_immediate_supported": true,
+ "gp_logging_supported": false,
+ "offline_is_aborted_upon_new_cmd": false,
+ "offline_surface_scan_supported": true,
+ "selective_self_test_supported": false,
+ "self_tests_supported": true,
+ "values": [
+ 25,
+ 3
+ ]
+ },
+ "offline_data_collection": {
+ "completion_seconds": 288,
+ "status": {
+ "passed": true,
+ "string": "was completed without error",
+ "value": 130
+ }
+ },
+ "self_test": {
+ "polling_minutes": {
+ "extended": 54,
+ "short": 2
+ },
+ "status": {
+ "passed": true,
+ "string": "completed without error",
+ "value": 0
+ }
+ }
+ },
+ "ata_smart_error_log": {
+ "summary": {
+ "count": 0,
+ "revision": 1
+ }
+ },
+ "ata_smart_self_test_log": {
+ "standard": {
+ "count": 0,
+ "revision": 1
+ }
+ },
+ "ata_version": {
+ "major_value": 240,
+ "minor_value": 22,
+ "string": "ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000"
+ },
+ "device": {
+ "info_name": "/dev/sda [SAT]",
+ "name": "/dev/sda",
+ "protocol": "ATA",
+ "type": "sat"
+ },
+ "firmware_version": "2.5+",
+ "in_smartctl_database": false,
+ "json_format_version": [
+ 1,
+ 0
+ ],
+ "local_time": {
+ "asctime": "Fri Apr 1 05:49:25 2022 EDT",
+ "time_t": 1648806565
+ },
+ "logical_block_size": 512,
+ "model_name": "QEMU HARDDISK",
+ "physical_block_size": 512,
+ "power_cycle_count": 0,
+ "power_on_time": {
+ "hours": 1
+ },
+ "serial_number": "QM00001",
+ "smart_status": {
+ "passed": true
+ },
+ "smartctl": {
+ "argv": [
+ "smartctl",
+ "-x",
+ "--json=cosviu",
+ "/dev/sda"
+ ],
+ "build_info": "(local build)",
+ "exit_status": 4,
+ "output": [
+ "smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-13-amd64] (local build)",
+ "Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org",
+ "",
+ "=== START OF INFORMATION SECTION ===",
+ "Device Model: QEMU HARDDISK",
+ "Serial Number: QM00001",
+ "Firmware Version: 2.5+",
+ "User Capacity: 42,949,673,472 bytes [42.9 GB]",
+ "Sector Size: 512 bytes logical/physical",
+ "TRIM Command: Available, deterministic",
+ "Device is: Not in smartctl database [for details use: -P showall]",
+ "ATA Version is: ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000",
+ "Local Time is: Fri Apr 1 05:49:25 2022 EDT",
+ "SMART support is: Available - device has SMART capability.",
+ "SMART support is: Enabled",
+ "AAM feature is: Unavailable",
+ "APM feature is: Unavailable",
+ "Rd look-ahead is: Unavailable",
+ "Write cache is: Enabled",
+ "DSN feature is: Unavailable",
+ "ATA Security is: Unavailable",
+ "Wt Cache Reorder: Unavailable",
+ "",
+ "=== START OF READ SMART DATA SECTION ===",
+ "SMART overall-health self-assessment test result: PASSED",
+ "",
+ "General SMART Values:",
+ "Offline data collection status: (0x82)\tOffline data collection activity",
+ "\t\t\t\t\twas completed without error.",
+ "\t\t\t\t\tAuto Offline Data Collection: Enabled.",
+ "Self-test execution status: ( 0)\tThe previous self-test routine completed",
+ "\t\t\t\t\twithout error or no self-test has ever ",
+ "\t\t\t\t\tbeen run.",
+ "Total time to complete Offline ",
+ "data collection: \t\t( 288) seconds.",
+ "Offline data collection",
+ "capabilities: \t\t\t (0x19) SMART execute Offline immediate.",
+ "\t\t\t\t\tNo Auto Offline data collection support.",
+ "\t\t\t\t\tSuspend Offline collection upon new",
+ "\t\t\t\t\tcommand.",
+ "\t\t\t\t\tOffline surface scan supported.",
+ "\t\t\t\t\tSelf-test supported.",
+ "\t\t\t\t\tNo Conveyance Self-test supported.",
+ "\t\t\t\t\tNo Selective Self-test supported.",
+ "SMART capabilities: (0x0003)\tSaves SMART data before entering",
+ "\t\t\t\t\tpower-saving mode.",
+ "\t\t\t\t\tSupports SMART auto save timer.",
+ "Error logging capability: (0x01)\tError logging supported.",
+ "\t\t\t\t\tNo General Purpose Logging support.",
+ "Short self-test routine ",
+ "recommended polling time: \t ( 2) minutes.",
+ "Extended self-test routine",
+ "recommended polling time: \t ( 54) minutes.",
+ "",
+ "SMART Attributes Data Structure revision number: 1",
+ "Vendor Specific SMART Attributes with Thresholds:",
+ "ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE",
+ " 1 Raw_Read_Error_Rate PO---- 100 100 006 - 0",
+ " 3 Spin_Up_Time PO---- 100 100 000 - 16",
+ " 4 Start_Stop_Count -O---- 100 100 020 - 100",
+ " 5 Reallocated_Sector_Ct PO---- 100 100 036 - 0",
+ " 9 Power_On_Hours PO---- 100 100 000 - 1",
+ " 12 Power_Cycle_Count PO---- 100 100 000 - 0",
+ "190 Airflow_Temperature_Cel PO---- 069 069 050 - 31 (Min/Max 31/31)",
+ " ||||||_ K auto-keep",
+ " |||||__ C event count",
+ " ||||___ R error rate",
+ " |||____ S speed/performance",
+ " ||_____ O updated online",
+ " |______ P prefailure warning",
+ "",
+ "Read SMART Log Directory failed: scsi error badly formed scsi parameters",
+ "",
+ "General Purpose Log Directory not supported",
+ "",
+ "SMART Extended Comprehensive Error Log (GP Log 0x03) not supported",
+ "",
+ "SMART Error Log Version: 1",
+ "No Errors Logged",
+ "",
+ "SMART Extended Self-test Log (GP Log 0x07) not supported",
+ "",
+ "SMART Self-test log structure revision number 1",
+ "No self-tests have been logged. [To run self-tests, use: smartctl -t]",
+ "",
+ "Selective Self-tests/Logging not supported",
+ "",
+ "SCT Commands not supported",
+ "",
+ "Device Statistics (GP/SMART Log 0x04) not supported",
+ "",
+ "Pending Defects log (GP Log 0x0c) not supported",
+ "",
+ "SATA Phy Event Counters (GP Log 0x11) not supported",
+ ""
+ ],
+ "platform_info": "x86_64-linux-5.10.0-13-amd64",
+ "svn_revision": "5155",
+ "version": [
+ 7,
+ 2
+ ]
+ },
+ "smartctl_0001_i": "smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-13-amd64] (local build)",
+ "smartctl_0002_i": "Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org",
+ "smartctl_0004_u": "=== START OF INFORMATION SECTION ===",
+ "smartctl_0005_i": "Device Model: QEMU HARDDISK",
+ "smartctl_0006_i": "Serial Number: QM00001",
+ "smartctl_0007_i": "Firmware Version: 2.5+",
+ "smartctl_0008_i": "User Capacity: 42,949,673,472 bytes [42.9 GB]",
+ "smartctl_0009_i": "Sector Size: 512 bytes logical/physical",
+ "smartctl_0010_i": "TRIM Command: Available, deterministic",
+ "smartctl_0011_i": "Device is: Not in smartctl database [for details use: -P showall]",
+ "smartctl_0012_i": "ATA Version is: ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000",
+ "smartctl_0013_i": "Local Time is: Fri Apr 1 05:49:25 2022 EDT",
+ "smartctl_0014_u": "SMART support is: Available - device has SMART capability.",
+ "smartctl_0015_u": "SMART support is: Enabled",
+ "smartctl_0016_u": "AAM feature is: Unavailable",
+ "smartctl_0017_u": "APM feature is: Unavailable",
+ "smartctl_0018_u": "Rd look-ahead is: Unavailable",
+ "smartctl_0019_i": "Write cache is: Enabled",
+ "smartctl_0020_u": "DSN feature is: Unavailable",
+ "smartctl_0021_u": "ATA Security is: Unavailable",
+ "smartctl_0022_u": "Wt Cache Reorder: Unavailable",
+ "smartctl_0024_u": "=== START OF READ SMART DATA SECTION ===",
+ "smartctl_0025_i": "SMART overall-health self-assessment test result: PASSED",
+ "smartctl_0027_i": "General SMART Values:",
+ "smartctl_0028_i": "Offline data collection status: (0x82)\tOffline data collection activity",
+ "smartctl_0029_i": "\t\t\t\t\twas completed without error.",
+ "smartctl_0030_u": "\t\t\t\t\tAuto Offline Data Collection: Enabled.",
+ "smartctl_0031_i": "Self-test execution status: ( 0)\tThe previous self-test routine completed",
+ "smartctl_0032_i": "\t\t\t\t\twithout error or no self-test has ever ",
+ "smartctl_0033_i": "\t\t\t\t\tbeen run.",
+ "smartctl_0034_i": "Total time to complete Offline ",
+ "smartctl_0035_i": "data collection: \t\t( 288) seconds.",
+ "smartctl_0036_i": "Offline data collection",
+ "smartctl_0037_i": "capabilities: \t\t\t (0x19) SMART execute Offline immediate.",
+ "smartctl_0038_u": "\t\t\t\t\tNo Auto Offline data collection support.",
+ "smartctl_0039_i": "\t\t\t\t\tSuspend Offline collection upon new",
+ "smartctl_0040_i": "\t\t\t\t\tcommand.",
+ "smartctl_0041_i": "\t\t\t\t\tOffline surface scan supported.",
+ "smartctl_0042_i": "\t\t\t\t\tSelf-test supported.",
+ "smartctl_0043_i": "\t\t\t\t\tNo Conveyance Self-test supported.",
+ "smartctl_0044_i": "\t\t\t\t\tNo Selective Self-test supported.",
+ "smartctl_0045_i": "SMART capabilities: (0x0003)\tSaves SMART data before entering",
+ "smartctl_0046_i": "\t\t\t\t\tpower-saving mode.",
+ "smartctl_0047_u": "\t\t\t\t\tSupports SMART auto save timer.",
+ "smartctl_0048_i": "Error logging capability: (0x01)\tError logging supported.",
+ "smartctl_0049_i": "\t\t\t\t\tNo General Purpose Logging support.",
+ "smartctl_0050_i": "Short self-test routine ",
+ "smartctl_0051_i": "recommended polling time: \t ( 2) minutes.",
+ "smartctl_0052_i": "Extended self-test routine",
+ "smartctl_0053_i": "recommended polling time: \t ( 54) minutes.",
+ "smartctl_0055_i": "SMART Attributes Data Structure revision number: 1",
+ "smartctl_0056_i": "Vendor Specific SMART Attributes with Thresholds:",
+ "smartctl_0057_i": "ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE",
+ "smartctl_0058_i": " 1 Raw_Read_Error_Rate PO---- 100 100 006 - 0",
+ "smartctl_0059_i": " 3 Spin_Up_Time PO---- 100 100 000 - 16",
+ "smartctl_0060_i": " 4 Start_Stop_Count -O---- 100 100 020 - 100",
+ "smartctl_0061_i": " 5 Reallocated_Sector_Ct PO---- 100 100 036 - 0",
+ "smartctl_0062_i": " 9 Power_On_Hours PO---- 100 100 000 - 1",
+ "smartctl_0063_i": " 12 Power_Cycle_Count PO---- 100 100 000 - 0",
+ "smartctl_0064_i": "190 Airflow_Temperature_Cel PO---- 069 069 050 - 31 (Min/Max 31/31)",
+ "smartctl_0065_i": " ||||||_ K auto-keep",
+ "smartctl_0066_i": " |||||__ C event count",
+ "smartctl_0067_i": " ||||___ R error rate",
+ "smartctl_0068_i": " |||____ S speed/performance",
+ "smartctl_0069_i": " ||_____ O updated online",
+ "smartctl_0070_i": " |______ P prefailure warning",
+ "smartctl_0072_u": "Read SMART Log Directory failed: scsi error badly formed scsi parameters",
+ "smartctl_0074_u": "General Purpose Log Directory not supported",
+ "smartctl_0076_u": "SMART Extended Comprehensive Error Log (GP Log 0x03) not supported",
+ "smartctl_0078_i": "SMART Error Log Version: 1",
+ "smartctl_0079_i": "No Errors Logged",
+ "smartctl_0081_u": "SMART Extended Self-test Log (GP Log 0x07) not supported",
+ "smartctl_0083_i": "SMART Self-test log structure revision number 1",
+ "smartctl_0084_i": "No self-tests have been logged. [To run self-tests, use: smartctl -t]",
+ "smartctl_0086_u": "Selective Self-tests/Logging not supported",
+ "smartctl_0088_u": "SCT Commands not supported",
+ "smartctl_0090_u": "Device Statistics (GP/SMART Log 0x04) not supported",
+ "smartctl_0092_u": "Pending Defects log (GP Log 0x0c) not supported",
+ "smartctl_0094_u": "SATA Phy Event Counters (GP Log 0x11) not supported",
+ "temperature": {
+ "current": 31
+ },
+ "trim": {
+ "deterministic": true,
+ "supported": true,
+ "zeroed": false
+ },
+ "user_capacity": {
+ "blocks": 83886081,
+ "blocks_s": "83886081",
+ "bytes": 42949673472,
+ "bytes_s": "42949673472"
+ },
+ "write_cache": {
+ "enabled": true
+ }
+ }
+ ]
+ }
+}
diff --git a/tests/files/basic-stock.csv b/tests/files/basic-stock.csv
index 471b0b26..2e5269f1 100644
--- a/tests/files/basic-stock.csv
+++ b/tests/files/basic-stock.csv
@@ -1,2 +1,2 @@
-Type;Chassis;Serial Number;Model;Manufacturer;Registered in;Physical state;Trading state;Price;Processor;RAM (MB);Data Storage Size (MB)
-Desktop;Microtower;d1s;d1ml;d1mr;Tue Mar 29 18:13:05 2022;;;;p1ml;0;0
+Type;Chassis;Serial Number;Model;Manufacturer;Registered in;Physical state;Allocate state;Lifecycle state;Price;Processor;RAM (MB);Data Storage Size (MB)
+Desktop;Microtower;d1s;d1ml;d1mr;Mon May 16 19:08:44 2022;;;;;p1ml;0;0
diff --git a/tests/files/basic.csv b/tests/files/basic.csv
index bb5c72a5..0b39170a 100644
--- a/tests/files/basic.csv
+++ b/tests/files/basic.csv
@@ -1,2 +1,2 @@
-DHID;DocumentID;Public Link;Lots;Tag 1 Type;Tag 1 ID;Tag 1 Organization;Tag 2 Type;Tag 2 ID;Tag 2 Organization;Tag 3 Type;Tag 3 ID;Tag 3 Organization;Device Hardware ID;Device Type;Device Chassis;Device Serial Number;Device Model;Device Manufacturer;Registered in;Registered (process);Updated in (software);Updated in (web);Physical state;Trading state;Processor;RAM (MB);Data Storage Size (MB);Processor 1;Processor 1 Manufacturer;Processor 1 Model;Processor 1 Serial Number;Processor 1 Number of cores;Processor 1 Speed (GHz);Benchmark Processor 1 (points);Benchmark ProcessorSysbench Processor 1 (points);Processor 2;Processor 2 Manufacturer;Processor 2 Model;Processor 2 Serial Number;Processor 2 Number of cores;Processor 2 Speed (GHz);Benchmark Processor 2 (points);Benchmark ProcessorSysbench Processor 2 (points);RamModule 1;RamModule 1 Manufacturer;RamModule 1 Model;RamModule 1 Serial Number;RamModule 1 Size (MB);RamModule 1 Speed (MHz);RamModule 2;RamModule 2 Manufacturer;RamModule 2 Model;RamModule 2 Serial Number;RamModule 2 Size (MB);RamModule 2 Speed (MHz);RamModule 3;RamModule 3 Manufacturer;RamModule 3 Model;RamModule 3 Serial Number;RamModule 3 Size (MB);RamModule 3 Speed (MHz);RamModule 4;RamModule 4 Manufacturer;RamModule 4 Model;RamModule 4 Serial Number;RamModule 4 Size (MB);RamModule 4 Speed (MHz);DataStorage 1;DataStorage 1 Manufacturer;DataStorage 1 Model;DataStorage 1 Serial Number;DataStorage 1 Size (MB);Erasure DataStorage 1;Erasure DataStorage 1 Serial Number;Erasure DataStorage 1 Size (MB);Erasure DataStorage 1 Software;Erasure DataStorage 1 Result;Erasure DataStorage 1 Certificate URL;Erasure DataStorage 1 Type;Erasure DataStorage 1 Method;Erasure DataStorage 1 Elapsed (hours);Erasure DataStorage 1 Date;Erasure DataStorage 1 Steps;Erasure DataStorage 1 Steps Start Time;Erasure DataStorage 1 Steps End Time;Benchmark DataStorage 1 Read Speed (MB/s);Benchmark DataStorage 1 Writing speed (MB/s);Test DataStorage 1 Software;Test DataStorage 1 Type;Test DataStorage 1 Result;Test DataStorage 1 Power cycle count;Test DataStorage 1 Lifetime (days);Test DataStorage 1 Power on hours;DataStorage 2;DataStorage 2 Manufacturer;DataStorage 2 Model;DataStorage 2 Serial Number;DataStorage 2 Size (MB);Erasure DataStorage 2;Erasure DataStorage 2 Serial Number;Erasure DataStorage 2 Size (MB);Erasure DataStorage 2 Software;Erasure DataStorage 2 Result;Erasure DataStorage 2 Certificate URL;Erasure DataStorage 2 Type;Erasure DataStorage 2 Method;Erasure DataStorage 2 Elapsed (hours);Erasure DataStorage 2 Date;Erasure DataStorage 2 Steps;Erasure DataStorage 2 Steps Start Time;Erasure DataStorage 2 Steps End Time;Benchmark DataStorage 2 Read Speed (MB/s);Benchmark DataStorage 2 Writing speed (MB/s);Test DataStorage 2 Software;Test DataStorage 2 Type;Test DataStorage 2 Result;Test DataStorage 2 Power cycle count;Test DataStorage 2 Lifetime (days);Test DataStorage 2 Power on hours;DataStorage 3;DataStorage 3 Manufacturer;DataStorage 3 Model;DataStorage 3 Serial Number;DataStorage 3 Size (MB);Erasure DataStorage 3;Erasure DataStorage 3 Serial Number;Erasure DataStorage 3 Size (MB);Erasure DataStorage 3 Software;Erasure DataStorage 3 Result;Erasure DataStorage 3 Certificate URL;Erasure DataStorage 3 Type;Erasure DataStorage 3 Method;Erasure DataStorage 3 Elapsed (hours);Erasure DataStorage 3 Date;Erasure DataStorage 3 Steps;Erasure DataStorage 3 Steps Start Time;Erasure DataStorage 3 Steps End Time;Benchmark DataStorage 3 Read Speed (MB/s);Benchmark DataStorage 3 Writing speed (MB/s);Test DataStorage 3 Software;Test DataStorage 3 Type;Test DataStorage 3 Result;Test DataStorage 3 Power cycle count;Test DataStorage 3 Lifetime (days);Test DataStorage 3 Power on hours;DataStorage 4;DataStorage 4 Manufacturer;DataStorage 4 Model;DataStorage 4 Serial Number;DataStorage 4 Size (MB);Erasure DataStorage 4;Erasure DataStorage 4 Serial Number;Erasure DataStorage 4 Size (MB);Erasure DataStorage 4 Software;Erasure DataStorage 4 Result;Erasure DataStorage 4 Certificate URL;Erasure DataStorage 4 Type;Erasure DataStorage 4 Method;Erasure DataStorage 4 Elapsed (hours);Erasure DataStorage 4 Date;Erasure DataStorage 4 Steps;Erasure DataStorage 4 Steps Start Time;Erasure DataStorage 4 Steps End Time;Benchmark DataStorage 4 Read Speed (MB/s);Benchmark DataStorage 4 Writing speed (MB/s);Test DataStorage 4 Software;Test DataStorage 4 Type;Test DataStorage 4 Result;Test DataStorage 4 Power cycle count;Test DataStorage 4 Lifetime (days);Test DataStorage 4 Power on hours;Motherboard 1;Motherboard 1 Manufacturer;Motherboard 1 Model;Motherboard 1 Serial Number;Display 1;Display 1 Manufacturer;Display 1 Model;Display 1 Serial Number;GraphicCard 1;GraphicCard 1 Manufacturer;GraphicCard 1 Model;GraphicCard 1 Serial Number;GraphicCard 1 Memory (MB);GraphicCard 2;GraphicCard 2 Manufacturer;GraphicCard 2 Model;GraphicCard 2 Serial Number;GraphicCard 2 Memory (MB);NetworkAdapter 1;NetworkAdapter 1 Manufacturer;NetworkAdapter 1 Model;NetworkAdapter 1 Serial Number;NetworkAdapter 2;NetworkAdapter 2 Manufacturer;NetworkAdapter 2 Model;NetworkAdapter 2 Serial Number;SoundCard 1;SoundCard 1 Manufacturer;SoundCard 1 Model;SoundCard 1 Serial Number;SoundCard 2;SoundCard 2 Manufacturer;SoundCard 2 Model;SoundCard 2 Serial Number;Device Rate;Device Range;Processor Rate;Processor Range;RAM Rate;RAM Range;Data Storage Rate;Data Storage Range;Price;Benchmark RamSysbench (points)
-O48N2;;http://localhost/devices/O48N2;;named;O48N2;FooOrg;;;;;;;desktop-d1mr-d1ml-d1s;Desktop;Microtower;d1s;d1ml;d1mr;Tue Mar 29 18:06:15 2022;Workbench 11.0;2022-03-29 18:06:15.029953+02:00;;;;p1ml;0;0;Processor 6: model p1ml, S/N p1s;p1mr;p1ml;p1s;;1.6;2410.0;;;;;;;;;;RamModule 5: model rm1ml, S/N rm1s;rm1mr;rm1ml;rm1s;;1333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GraphicCard 4: model gc1ml, S/N gc1s;gc1mr;gc1ml;gc1s;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+DHID;DocumentID;Public Link;Lots;Tag 1 Type;Tag 1 ID;Tag 1 Organization;Tag 2 Type;Tag 2 ID;Tag 2 Organization;Tag 3 Type;Tag 3 ID;Tag 3 Organization;Device Hardware ID;Device Type;Device Chassis;Device Serial Number;Device Model;Device Manufacturer;Registered in;Registered (process);Updated in (software);Updated in (web);Physical state;Allocate state;Lifecycle state;Processor;RAM (MB);Data Storage Size (MB);Processor 1;Processor 1 Manufacturer;Processor 1 Model;Processor 1 Serial Number;Processor 1 Number of cores;Processor 1 Speed (GHz);Benchmark Processor 1 (points);Benchmark ProcessorSysbench Processor 1 (points);Processor 2;Processor 2 Manufacturer;Processor 2 Model;Processor 2 Serial Number;Processor 2 Number of cores;Processor 2 Speed (GHz);Benchmark Processor 2 (points);Benchmark ProcessorSysbench Processor 2 (points);RamModule 1;RamModule 1 Manufacturer;RamModule 1 Model;RamModule 1 Serial Number;RamModule 1 Size (MB);RamModule 1 Speed (MHz);RamModule 2;RamModule 2 Manufacturer;RamModule 2 Model;RamModule 2 Serial Number;RamModule 2 Size (MB);RamModule 2 Speed (MHz);RamModule 3;RamModule 3 Manufacturer;RamModule 3 Model;RamModule 3 Serial Number;RamModule 3 Size (MB);RamModule 3 Speed (MHz);RamModule 4;RamModule 4 Manufacturer;RamModule 4 Model;RamModule 4 Serial Number;RamModule 4 Size (MB);RamModule 4 Speed (MHz);DataStorage 1;DataStorage 1 Manufacturer;DataStorage 1 Model;DataStorage 1 Serial Number;DataStorage 1 Size (MB);Erasure DataStorage 1;Erasure DataStorage 1 Serial Number;Erasure DataStorage 1 Size (MB);Erasure DataStorage 1 Software;Erasure DataStorage 1 Result;Erasure DataStorage 1 Certificate URL;Erasure DataStorage 1 Type;Erasure DataStorage 1 Method;Erasure DataStorage 1 Elapsed (hours);Erasure DataStorage 1 Date;Erasure DataStorage 1 Steps;Erasure DataStorage 1 Steps Start Time;Erasure DataStorage 1 Steps End Time;Benchmark DataStorage 1 Read Speed (MB/s);Benchmark DataStorage 1 Writing speed (MB/s);Test DataStorage 1 Software;Test DataStorage 1 Type;Test DataStorage 1 Result;Test DataStorage 1 Power cycle count;Test DataStorage 1 Lifetime (days);Test DataStorage 1 Power on hours;DataStorage 2;DataStorage 2 Manufacturer;DataStorage 2 Model;DataStorage 2 Serial Number;DataStorage 2 Size (MB);Erasure DataStorage 2;Erasure DataStorage 2 Serial Number;Erasure DataStorage 2 Size (MB);Erasure DataStorage 2 Software;Erasure DataStorage 2 Result;Erasure DataStorage 2 Certificate URL;Erasure DataStorage 2 Type;Erasure DataStorage 2 Method;Erasure DataStorage 2 Elapsed (hours);Erasure DataStorage 2 Date;Erasure DataStorage 2 Steps;Erasure DataStorage 2 Steps Start Time;Erasure DataStorage 2 Steps End Time;Benchmark DataStorage 2 Read Speed (MB/s);Benchmark DataStorage 2 Writing speed (MB/s);Test DataStorage 2 Software;Test DataStorage 2 Type;Test DataStorage 2 Result;Test DataStorage 2 Power cycle count;Test DataStorage 2 Lifetime (days);Test DataStorage 2 Power on hours;DataStorage 3;DataStorage 3 Manufacturer;DataStorage 3 Model;DataStorage 3 Serial Number;DataStorage 3 Size (MB);Erasure DataStorage 3;Erasure DataStorage 3 Serial Number;Erasure DataStorage 3 Size (MB);Erasure DataStorage 3 Software;Erasure DataStorage 3 Result;Erasure DataStorage 3 Certificate URL;Erasure DataStorage 3 Type;Erasure DataStorage 3 Method;Erasure DataStorage 3 Elapsed (hours);Erasure DataStorage 3 Date;Erasure DataStorage 3 Steps;Erasure DataStorage 3 Steps Start Time;Erasure DataStorage 3 Steps End Time;Benchmark DataStorage 3 Read Speed (MB/s);Benchmark DataStorage 3 Writing speed (MB/s);Test DataStorage 3 Software;Test DataStorage 3 Type;Test DataStorage 3 Result;Test DataStorage 3 Power cycle count;Test DataStorage 3 Lifetime (days);Test DataStorage 3 Power on hours;DataStorage 4;DataStorage 4 Manufacturer;DataStorage 4 Model;DataStorage 4 Serial Number;DataStorage 4 Size (MB);Erasure DataStorage 4;Erasure DataStorage 4 Serial Number;Erasure DataStorage 4 Size (MB);Erasure DataStorage 4 Software;Erasure DataStorage 4 Result;Erasure DataStorage 4 Certificate URL;Erasure DataStorage 4 Type;Erasure DataStorage 4 Method;Erasure DataStorage 4 Elapsed (hours);Erasure DataStorage 4 Date;Erasure DataStorage 4 Steps;Erasure DataStorage 4 Steps Start Time;Erasure DataStorage 4 Steps End Time;Benchmark DataStorage 4 Read Speed (MB/s);Benchmark DataStorage 4 Writing speed (MB/s);Test DataStorage 4 Software;Test DataStorage 4 Type;Test DataStorage 4 Result;Test DataStorage 4 Power cycle count;Test DataStorage 4 Lifetime (days);Test DataStorage 4 Power on hours;Motherboard 1;Motherboard 1 Manufacturer;Motherboard 1 Model;Motherboard 1 Serial Number;Display 1;Display 1 Manufacturer;Display 1 Model;Display 1 Serial Number;GraphicCard 1;GraphicCard 1 Manufacturer;GraphicCard 1 Model;GraphicCard 1 Serial Number;GraphicCard 1 Memory (MB);GraphicCard 2;GraphicCard 2 Manufacturer;GraphicCard 2 Model;GraphicCard 2 Serial Number;GraphicCard 2 Memory (MB);NetworkAdapter 1;NetworkAdapter 1 Manufacturer;NetworkAdapter 1 Model;NetworkAdapter 1 Serial Number;NetworkAdapter 2;NetworkAdapter 2 Manufacturer;NetworkAdapter 2 Model;NetworkAdapter 2 Serial Number;SoundCard 1;SoundCard 1 Manufacturer;SoundCard 1 Model;SoundCard 1 Serial Number;SoundCard 2;SoundCard 2 Manufacturer;SoundCard 2 Model;SoundCard 2 Serial Number;Device Rate;Device Range;Processor Rate;Processor Range;RAM Rate;RAM Range;Data Storage Rate;Data Storage Range;Price;Benchmark RamSysbench (points)
+O48N2;;http://localhost/devices/O48N2;;named;O48N2;FooOrg;;;;;;;desktop-d1mr-d1ml-d1s;Desktop;Microtower;d1s;d1ml;d1mr;Mon May 16 19:06:29 2022;Workbench 11.0;2022-05-16 19:06:29.906731+02:00;;;;;p1ml;0;0;Processor 6: model p1ml, S/N p1s;p1mr;p1ml;p1s;;1.6;2410.0;;;;;;;;;;RamModule 5: model rm1ml, S/N rm1s;rm1mr;rm1ml;rm1s;;1333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GraphicCard 4: model gc1ml, S/N gc1s;gc1mr;gc1ml;gc1s;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/tests/files/complete.export.snapshot.json b/tests/files/complete.export.snapshot.json
new file mode 100644
index 00000000..65257b66
--- /dev/null
+++ b/tests/files/complete.export.snapshot.json
@@ -0,0 +1,273 @@
+{
+ "components": [
+ {
+ "resolutionHeight": 600,
+ "model": "AUO LCD Monitor",
+ "manufacturer": "AUO \"AUO\"",
+ "size": 10.0,
+ "resolutionWidth": 1024,
+ "productionDate": "2009-01-04T00:00:00",
+ "refreshRate": 60,
+ "technology": "LCD",
+ "type": "Display",
+ "serialNumber": null,
+ "actions": []
+ },
+ {
+ "type": "NetworkAdapter",
+ "model": "AR9285 Wireless Network Adapter",
+ "serialNumber": "74:2f:68:8b:fd:c8",
+ "manufacturer": "Qualcomm Atheros",
+ "wireless": true,
+ "actions": []
+ },
+ {
+ "type": "NetworkAdapter",
+ "model": "AR8152 v2.0 Fast Ethernet",
+ "serialNumber": "14:da:e9:42:f6:7c",
+ "manufacturer": "Qualcomm Atheros",
+ "speed": 100,
+ "wireless": false,
+ "actions": []
+ },
+ {
+ "type": "Processor",
+ "cores": 1,
+ "threads": 1,
+ "address": 64,
+ "model": "Intel Atom CPU N455 @ 1.66GHz",
+ "serialNumber": null,
+ "manufacturer": "Intel Corp.",
+ "speed": 1.667,
+ "actions": [
+ {
+ "type": "BenchmarkProcessorSysbench",
+ "rate": 164.0803,
+ "elapsed": 164
+ },
+ {
+ "type": "BenchmarkProcessor",
+ "rate": 6666.24,
+ "elapsed": 0
+ }
+ ]
+ },
+ {
+ "type": "GraphicCard",
+ "model": "Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller",
+ "serialNumber": null,
+ "memory": 256.0,
+ "manufacturer": "Intel Corporation",
+ "actions": []
+ },
+ {
+ "type": "SoundCard",
+ "model": "NM10/ICH7 Family High Definition Audio Controller",
+ "serialNumber": null,
+ "manufacturer": "Intel Corporation",
+ "actions": []
+ },
+ {
+ "type": "SoundCard",
+ "model": "USB 2.0 UVC VGA WebCam",
+ "serialNumber": "0x0001",
+ "manufacturer": "Azurewave",
+ "actions": []
+ },
+ {
+ "type": "RamModule",
+ "format": "DIMM",
+ "model": null,
+ "size": 1024,
+ "interface": "DDR3",
+ "serialNumber": null,
+ "manufacturer": null,
+ "speed": 667.0,
+ "actions": []
+ },
+ {
+ "size": 1024.0,
+ "actions": [],
+ "format": "SODIMM",
+ "model": "48594D503131325336344350362D53362020",
+ "interface": "DDR3",
+ "type": "RamModule",
+ "manufacturer": "Hynix Semiconductor",
+ "serialNumber": "4F43487B",
+ "speed": 667.0
+ },
+ {
+ "type": "HardDrive",
+ "model": "HTS54322",
+ "size": 238475,
+ "interface": "ATA",
+ "serialNumber": "E2024242CV86HJ",
+ "manufacturer": "Hitachi",
+ "actions": [
+ {
+ "type": "BenchmarkDataStorage",
+ "elapsed": 16,
+ "writeSpeed": 21.8,
+ "readSpeed": 66.2
+ },
+ {
+ "type": "TestDataStorage",
+ "length": "Extended",
+ "elapsed": 2,
+ "severity": "Error",
+ "status": "Unspecified Error. Self-test not started."
+ },
+ {
+ "type": "EraseBasic",
+ "steps": [
+ {
+ "type": "StepRandom",
+ "startTime": "2018-07-03T09:15:22.257059+00:00",
+ "severity": "Info",
+ "endTime": "2018-07-03T10:32:11.843190+00:00"
+ }
+ ],
+ "startTime": "2018-07-03T09:15:22.256074+00:00",
+ "severity": "Info",
+ "endTime": "2018-07-03T10:32:11.848455+00:00"
+ }
+ ]
+ },
+ {
+ "size": 160041.88569599998,
+ "variant": "1A01",
+ "actions": [
+ {
+ "type": "EraseBasic",
+ "steps": [
+ {
+ "type": "StepRandom",
+ "endTime": "2019-10-23T08:35:31.400587+00:00",
+ "severity": "Info",
+ "startTime": "2019-10-23T07:49:54.410830+00:00"
+ }
+ ],
+ "endTime": "2019-10-23T08:35:31.400988+00:00",
+ "severity": "Error",
+ "startTime": "2019-10-23T07:49:54.410193+00:00"
+ },
+ {
+ "elapsed": 22,
+ "writeSpeed": 17.3,
+ "readSpeed": 41.6,
+ "type": "BenchmarkDataStorage"
+ },
+ {
+ "status": "Completed without error",
+ "reallocatedSectorCount": 0,
+ "currentPendingSectorCount": 0,
+ "assessment": true,
+ "severity": "Info",
+ "offlineUncorrectable": 0,
+ "lifetime": 4692,
+ "type": "TestDataStorage",
+ "length": "Short",
+ "elapsed": 118,
+ "reportedUncorrectableErrors": 1513,
+ "powerCycleCount": 5293
+ }
+ ],
+ "model": "WDC WD1600BEVT-2",
+ "interface": "ATA",
+ "type": "DataStorage",
+ "manufacturer": "Western Digital",
+ "serialNumber": "WD-WX11A80W7430"
+ },
+ {
+ "actions": [
+ {
+ "writeSpeed": 17.1,
+ "type": "BenchmarkDataStorage",
+ "elapsed": 22,
+ "readSpeed": 41.1
+ },
+ {
+ "type": "EraseSectors",
+ "startTime": "2019-08-19T16:48:19.689794+00:00",
+ "steps": [
+ {
+ "startTime": "2019-08-19T16:48:19.690458+00:00",
+ "type": "StepRandom",
+ "severity": "Info",
+ "endTime": "2019-08-19T17:34:22.930562+00:00"
+ },
+ {
+ "startTime": "2019-08-19T17:34:22.690458+00:00",
+ "type": "StepZero",
+ "severity": "Info",
+ "endTime": "2019-08-19T18:34:22.930562+00:00"
+ }
+ ],
+ "severity": "Info",
+ "endTime": "2019-08-19T18:34:22.930959+00:00"
+ },
+ {
+ "currentPendingSectorCount": 0,
+ "lifetime": 4673,
+ "elapsed": 115,
+ "reallocatedSectorCount": 0,
+ "powerCycleCount": 5231,
+ "status": "Completed without error",
+ "assessment": true,
+ "type": "TestDataStorage",
+ "severity": "Info",
+ "length": "Short",
+ "offlineUncorrectable": 0
+ }
+ ],
+ "model": "WDC WD1600BEVT-2",
+ "manufacturer": "Western Digital",
+ "size": 160042.0,
+ "interface": "ATA",
+ "serialNumber": "WD-WX11A80W7430",
+ "type": "SolidStateDrive",
+ "variant": "1A01"
+ },
+ {
+ "type": "Motherboard",
+ "serial": 1,
+ "firewire": 0,
+ "model": "1001PXD",
+ "slots": 2,
+ "pcmcia": 0,
+ "serialNumber": "Eee0123456789",
+ "usb": 5,
+ "manufacturer": "ASUSTeK Computer INC.",
+ "actions": [
+ {
+ "type": "TestBios",
+ "accessRange": "C"
+ }
+ ]
+ }
+ ],
+ "elapsed": 4875,
+ "uuid": "3fd12a01-c04e-4fd8-9e64-2660c459e725",
+ "version": "11.0b11",
+ "type": "Snapshot",
+ "software": "Workbench",
+ "device": {
+ "type": "Laptop",
+ "model": "1001PXD",
+ "serialNumber": "B8OAAS048287",
+ "manufacturer": "ASUSTeK Computer INC.",
+ "chassis": "Netbook",
+ "actions": [
+ {
+ "type": "BenchmarkRamSysbench",
+ "rate": 15.7188,
+ "elapsed": 16
+ },
+ {
+ "type": "StressTest",
+ "severity": "Info",
+ "elapsed": 60
+ }
+ ]
+ }
+}
diff --git a/tests/files/example_wb11.json b/tests/files/example_wb11.json
new file mode 100644
index 00000000..ec0f3331
--- /dev/null
+++ b/tests/files/example_wb11.json
@@ -0,0 +1,199 @@
+{
+ "closed": true,
+ "components": [
+ {
+ "interface": "ATA",
+ "size": "160042.0 MB",
+ "serialNumber": "WD-WX11A80W7430",
+ "type": "HardDrive",
+ "variant": "1A01",
+ "model": "WDC WD1600BEVT-2",
+ "manufacturer": "Western Digital",
+ "actions": [
+ {
+ "severity": "Info",
+ "steps": [
+ {
+ "severity": "Info",
+ "endTime": "2019-09-10T11:37:07.459534+00:00",
+ "startTime": "2019-09-10T10:51:20.208391+00:00",
+ "type": "StepRandom"
+ }
+ ],
+ "startTime": "2019-09-10T10:51:20.207733+00:00",
+ "endTime": "2019-09-10T11:37:07.459940+00:00",
+ "type": "EraseBasic"
+ },
+ {
+ "type": "BenchmarkDataStorage",
+ "writeSpeed": "17.1 MB / second",
+ "readSpeed": "67.8 MB / second",
+ "elapsed": 20
+ },
+ {
+ "offlineUncorrectable": 0,
+ "lifetime": 4675,
+ "assessment": true,
+ "reallocatedSectorCount": 0,
+ "elapsed": 118,
+ "currentPendingSectorCount": 0,
+ "type": "TestDataStorage",
+ "status": "Completed without error",
+ "severity": "Info",
+ "powerCycleCount": 5238,
+ "length": "Short"
+ }
+ ]
+ },
+ {
+ "interface": "DDR2",
+ "serialNumber": "4F43487B",
+ "speed": "667.0 megahertz",
+ "type": "RamModule",
+ "size": "1024.0 mebibyte",
+ "model": "48594D503131325336344350362D53362020",
+ "format": "SODIMM",
+ "manufacturer": "Hynix Semiconductor",
+ "actions": []
+ },
+ {
+ "address": 64,
+ "serialNumber": null,
+ "actions": [
+ {
+ "type": "BenchmarkProcessor",
+ "rate": 6650.38,
+ "elapsed": 0
+ },
+ {
+ "type": "BenchmarkProcessorSysbench",
+ "rate": 164.4318,
+ "elapsed": 164
+ }
+ ],
+ "speed": "1.0 gigahertz",
+ "type": "Processor",
+ "brand": "Atom",
+ "generation": null,
+ "cores": 1,
+ "manufacturer": "Intel Corp.",
+ "model": "Intel Atom CPU N450 @ 1.66GHz",
+ "threads": 2
+ },
+ {
+ "technology": "LCD",
+ "refreshRate": "60 hertz",
+ "serialNumber": null,
+ "size": "10.0 inch",
+ "resolutionWidth": 1024,
+ "type": "Display",
+ "productionDate": "2009-01-04T00:00:00",
+ "model": "AUO LCD Monitor",
+ "manufacturer": "AUO \"AUO\"",
+ "actions": [],
+ "resolutionHeight": 600
+ },
+ {
+ "wireless": false,
+ "serialNumber": "88:ae:1d:a6:f3:d0",
+ "speed": "100.0 megabit / second",
+ "type": "NetworkAdapter",
+ "variant": "c1",
+ "model": "AR8152 v1.1 Fast Ethernet",
+ "manufacturer": "Qualcomm Atheros",
+ "actions": []
+ },
+ {
+ "wireless": true,
+ "serialNumber": "00:26:c7:8e:cb:8c",
+ "speed": null,
+ "type": "NetworkAdapter",
+ "variant": "00",
+ "model": "Centrino Wireless-N 1000 Condor Peak",
+ "manufacturer": "Intel Corporation",
+ "actions": []
+ },
+ {
+ "technology": "LiIon",
+ "serialNumber": null,
+ "type": "Battery",
+ "size": "2200 hour * milliampere",
+ "model": "AL10A31",
+ "manufacturer": "SANYO",
+ "actions": [
+ {
+ "severity": "Info",
+ "voltage": "12613.0 millivolt",
+ "size": "662.0 hour * milliampere",
+ "cycleCount": null,
+ "type": "MeasureBattery"
+ }
+ ]
+ },
+ {
+ "memory": null,
+ "serialNumber": null,
+ "type": "GraphicCard",
+ "model": "Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller",
+ "manufacturer": "Intel Corporation",
+ "actions": []
+ },
+ {
+ "type": "SoundCard",
+ "model": "NM10/ICH7 Family High Definition Audio Controller",
+ "manufacturer": "Intel Corporation",
+ "serialNumber": null,
+ "actions": []
+ },
+ {
+ "type": "SoundCard",
+ "model": "1.3M WebCam",
+ "manufacturer": "XPA970VW0",
+ "serialNumber": null,
+ "actions": []
+ },
+ {
+ "manufacturer": "Acer",
+ "usb": 5,
+ "type": "Motherboard",
+ "model": "AOHAPPY",
+ "ramMaxSize": 4,
+ "ramSlots": 2,
+ "serialNumber": "Base Board Serial Number",
+ "pcmcia": 0,
+ "slots": 1,
+ "firewire": 0,
+ "serial": 1,
+ "version": "V3.05(DDR2)",
+ "biosDate": "2010-08-12T00:00:00",
+ "actions": []
+ }
+ ],
+ "uuid": "9c169711-3d72-4e6c-aabf-de9b3af56b54",
+ "device": {
+ "serialNumber": "LUSEA0D010038879A01601",
+ "type": "Laptop",
+ "sku": null,
+ "model": "AOHAPPY",
+ "chassis": "Netbook",
+ "manufacturer": "Acer",
+ "actions": [
+ {
+ "type": "BenchmarkRamSysbench",
+ "rate": 19.2586,
+ "elapsed": 19
+ },
+ {
+ "severity": "Info",
+ "elapsed": 60,
+ "type": "StressTest"
+ }
+ ],
+ "version": "V3.05"
+ },
+ "type": "Snapshot",
+ "endTime": "2019-09-10T10:44:41.324414+00:00",
+ "elapsed": 3146,
+ "software": "Workbench",
+ "version": "11.0b9"
+}
\ No newline at end of file
diff --git a/tests/files/export_devices.csv b/tests/files/export_devices.csv
index cf15933f..0a9305b3 100644
--- a/tests/files/export_devices.csv
+++ b/tests/files/export_devices.csv
@@ -1,2 +1,2 @@
-DHID;DocumentID;Public Link;Lots;Tag 1 Type;Tag 1 ID;Tag 1 Organization;Tag 2 Type;Tag 2 ID;Tag 2 Organization;Tag 3 Type;Tag 3 ID;Tag 3 Organization;Device Hardware ID;Device Type;Device Chassis;Device Serial Number;Device Model;Device Manufacturer;Registered in;Registered (process);Updated in (software);Updated in (web);Physical state;Trading state;Processor;RAM (MB);Data Storage Size (MB);Processor 1;Processor 1 Manufacturer;Processor 1 Model;Processor 1 Serial Number;Processor 1 Number of cores;Processor 1 Speed (GHz);Benchmark Processor 1 (points);Benchmark ProcessorSysbench Processor 1 (points);Processor 2;Processor 2 Manufacturer;Processor 2 Model;Processor 2 Serial Number;Processor 2 Number of cores;Processor 2 Speed (GHz);Benchmark Processor 2 (points);Benchmark ProcessorSysbench Processor 2 (points);RamModule 1;RamModule 1 Manufacturer;RamModule 1 Model;RamModule 1 Serial Number;RamModule 1 Size (MB);RamModule 1 Speed (MHz);RamModule 2;RamModule 2 Manufacturer;RamModule 2 Model;RamModule 2 Serial Number;RamModule 2 Size (MB);RamModule 2 Speed (MHz);RamModule 3;RamModule 3 Manufacturer;RamModule 3 Model;RamModule 3 Serial Number;RamModule 3 Size (MB);RamModule 3 Speed (MHz);RamModule 4;RamModule 4 Manufacturer;RamModule 4 Model;RamModule 4 Serial Number;RamModule 4 Size (MB);RamModule 4 Speed (MHz);DataStorage 1;DataStorage 1 Manufacturer;DataStorage 1 Model;DataStorage 1 Serial Number;DataStorage 1 Size (MB);Erasure DataStorage 1;Erasure DataStorage 1 Serial Number;Erasure DataStorage 1 Size (MB);Erasure DataStorage 1 Software;Erasure DataStorage 1 Result;Erasure DataStorage 1 Certificate URL;Erasure DataStorage 1 Type;Erasure DataStorage 1 Method;Erasure DataStorage 1 Elapsed (hours);Erasure DataStorage 1 Date;Erasure DataStorage 1 Steps;Erasure DataStorage 1 Steps Start Time;Erasure DataStorage 1 Steps End Time;Benchmark DataStorage 1 Read Speed (MB/s);Benchmark DataStorage 1 Writing speed (MB/s);Test DataStorage 1 Software;Test DataStorage 1 Type;Test DataStorage 1 Result;Test DataStorage 1 Power cycle count;Test DataStorage 1 Lifetime (days);Test DataStorage 1 Power on hours;DataStorage 2;DataStorage 2 Manufacturer;DataStorage 2 Model;DataStorage 2 Serial Number;DataStorage 2 Size (MB);Erasure DataStorage 2;Erasure DataStorage 2 Serial Number;Erasure DataStorage 2 Size (MB);Erasure DataStorage 2 Software;Erasure DataStorage 2 Result;Erasure DataStorage 2 Certificate URL;Erasure DataStorage 2 Type;Erasure DataStorage 2 Method;Erasure DataStorage 2 Elapsed (hours);Erasure DataStorage 2 Date;Erasure DataStorage 2 Steps;Erasure DataStorage 2 Steps Start Time;Erasure DataStorage 2 Steps End Time;Benchmark DataStorage 2 Read Speed (MB/s);Benchmark DataStorage 2 Writing speed (MB/s);Test DataStorage 2 Software;Test DataStorage 2 Type;Test DataStorage 2 Result;Test DataStorage 2 Power cycle count;Test DataStorage 2 Lifetime (days);Test DataStorage 2 Power on hours;DataStorage 3;DataStorage 3 Manufacturer;DataStorage 3 Model;DataStorage 3 Serial Number;DataStorage 3 Size (MB);Erasure DataStorage 3;Erasure DataStorage 3 Serial Number;Erasure DataStorage 3 Size (MB);Erasure DataStorage 3 Software;Erasure DataStorage 3 Result;Erasure DataStorage 3 Certificate URL;Erasure DataStorage 3 Type;Erasure DataStorage 3 Method;Erasure DataStorage 3 Elapsed (hours);Erasure DataStorage 3 Date;Erasure DataStorage 3 Steps;Erasure DataStorage 3 Steps Start Time;Erasure DataStorage 3 Steps End Time;Benchmark DataStorage 3 Read Speed (MB/s);Benchmark DataStorage 3 Writing speed (MB/s);Test DataStorage 3 Software;Test DataStorage 3 Type;Test DataStorage 3 Result;Test DataStorage 3 Power cycle count;Test DataStorage 3 Lifetime (days);Test DataStorage 3 Power on hours;DataStorage 4;DataStorage 4 Manufacturer;DataStorage 4 Model;DataStorage 4 Serial Number;DataStorage 4 Size (MB);Erasure DataStorage 4;Erasure DataStorage 4 Serial Number;Erasure DataStorage 4 Size (MB);Erasure DataStorage 4 Software;Erasure DataStorage 4 Result;Erasure DataStorage 4 Certificate URL;Erasure DataStorage 4 Type;Erasure DataStorage 4 Method;Erasure DataStorage 4 Elapsed (hours);Erasure DataStorage 4 Date;Erasure DataStorage 4 Steps;Erasure DataStorage 4 Steps Start Time;Erasure DataStorage 4 Steps End Time;Benchmark DataStorage 4 Read Speed (MB/s);Benchmark DataStorage 4 Writing speed (MB/s);Test DataStorage 4 Software;Test DataStorage 4 Type;Test DataStorage 4 Result;Test DataStorage 4 Power cycle count;Test DataStorage 4 Lifetime (days);Test DataStorage 4 Power on hours;Motherboard 1;Motherboard 1 Manufacturer;Motherboard 1 Model;Motherboard 1 Serial Number;Display 1;Display 1 Manufacturer;Display 1 Model;Display 1 Serial Number;GraphicCard 1;GraphicCard 1 Manufacturer;GraphicCard 1 Model;GraphicCard 1 Serial Number;GraphicCard 1 Memory (MB);GraphicCard 2;GraphicCard 2 Manufacturer;GraphicCard 2 Model;GraphicCard 2 Serial Number;GraphicCard 2 Memory (MB);NetworkAdapter 1;NetworkAdapter 1 Manufacturer;NetworkAdapter 1 Model;NetworkAdapter 1 Serial Number;NetworkAdapter 2;NetworkAdapter 2 Manufacturer;NetworkAdapter 2 Model;NetworkAdapter 2 Serial Number;SoundCard 1;SoundCard 1 Manufacturer;SoundCard 1 Model;SoundCard 1 Serial Number;SoundCard 2;SoundCard 2 Manufacturer;SoundCard 2 Model;SoundCard 2 Serial Number;Device Rate;Device Range;Processor Rate;Processor Range;RAM Rate;RAM Range;Data Storage Rate;Data Storage Range;Price;Benchmark RamSysbench (points)
-O48N2;;http://localhost/devices/O48N2;;named;O48N2;FooOrg;;;;;;;laptop-asustek_computer_inc-1001pxd-b8oaas048285-14:da:e9:42:f6:7b;Laptop;Netbook;b8oaas048285;1001pxd;asustek computer inc.;Tue Apr 19 18:13:44 2022;Workbench 11.0a2;2022-04-19 18:13:45.018710+02:00;;;;intel atom cpu n455 @ 2.66ghz;1024;238475;Processor 6: model intel atom cpu n455 @ 2.66ghz, S/N None;intel corp.;intel atom cpu n455 @ 2.66ghz;;1;2.667;6666.24;164.0803;;;;;;;;;RamModule 10: model None, S/N None;;;;1024;667;;;;;;;;;;;;;;;;;;;HardDrive 11: model hts54322, S/N e2024242cv86mm;hitachi;hts54322;e2024242cv86mm;238475;harddrive-hitachi-hts54322-e2024242cv86mm;e2024242cv86mm;238475;Workbench 11.0a2;Success;;EraseBasic;Shred;1:16:49;2022-04-19 18:13:44.975393+02:00;✓ – StepRandom 1:16:49;2018-07-03 11:15:22.257059+02:00;2018-07-03 12:32:11.843190+02:00;66.2;21.8;Workbench 11.0a2;Short;Failure;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Motherboard 12: model 1001pxd, S/N eee0123456720;asustek computer inc.;1001pxd;eee0123456720;;;;;GraphicCard 7: model atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller, S/N None;intel corporation;atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller;;256;;;;;;NetworkAdapter 4: model ar9285 wireless network adapter, S/N 74:2f:68:8b:fd:c9;qualcomm atheros;ar9285 wireless network adapter;74:2f:68:8b:fd:c9;NetworkAdapter 5: model ar8152 v2.0 fast ethernet, S/N 14:da:e9:42:f6:7b;qualcomm atheros;ar8152 v2.0 fast ethernet;14:da:e9:42:f6:7b;SoundCard 8: model nm10/ich7 family high definition audio controller, S/N None;intel corporation;nm10/ich7 family high definition audio controller;;SoundCard 9: model usb 2.0 uvc vga webcam, S/N 0x0001;azurewave;usb 2.0 uvc vga webcam;0x0001;;;;;;;;;;15.7188
+DHID;DocumentID;Public Link;Lots;Tag 1 Type;Tag 1 ID;Tag 1 Organization;Tag 2 Type;Tag 2 ID;Tag 2 Organization;Tag 3 Type;Tag 3 ID;Tag 3 Organization;Device Hardware ID;Device Type;Device Chassis;Device Serial Number;Device Model;Device Manufacturer;Registered in;Registered (process);Updated in (software);Updated in (web);Physical state;Allocate state;Lifecycle state;Processor;RAM (MB);Data Storage Size (MB);Processor 1;Processor 1 Manufacturer;Processor 1 Model;Processor 1 Serial Number;Processor 1 Number of cores;Processor 1 Speed (GHz);Benchmark Processor 1 (points);Benchmark ProcessorSysbench Processor 1 (points);Processor 2;Processor 2 Manufacturer;Processor 2 Model;Processor 2 Serial Number;Processor 2 Number of cores;Processor 2 Speed (GHz);Benchmark Processor 2 (points);Benchmark ProcessorSysbench Processor 2 (points);RamModule 1;RamModule 1 Manufacturer;RamModule 1 Model;RamModule 1 Serial Number;RamModule 1 Size (MB);RamModule 1 Speed (MHz);RamModule 2;RamModule 2 Manufacturer;RamModule 2 Model;RamModule 2 Serial Number;RamModule 2 Size (MB);RamModule 2 Speed (MHz);RamModule 3;RamModule 3 Manufacturer;RamModule 3 Model;RamModule 3 Serial Number;RamModule 3 Size (MB);RamModule 3 Speed (MHz);RamModule 4;RamModule 4 Manufacturer;RamModule 4 Model;RamModule 4 Serial Number;RamModule 4 Size (MB);RamModule 4 Speed (MHz);DataStorage 1;DataStorage 1 Manufacturer;DataStorage 1 Model;DataStorage 1 Serial Number;DataStorage 1 Size (MB);Erasure DataStorage 1;Erasure DataStorage 1 Serial Number;Erasure DataStorage 1 Size (MB);Erasure DataStorage 1 Software;Erasure DataStorage 1 Result;Erasure DataStorage 1 Certificate URL;Erasure DataStorage 1 Type;Erasure DataStorage 1 Method;Erasure DataStorage 1 Elapsed (hours);Erasure DataStorage 1 Date;Erasure DataStorage 1 Steps;Erasure DataStorage 1 Steps Start Time;Erasure DataStorage 1 Steps End Time;Benchmark DataStorage 1 Read Speed (MB/s);Benchmark DataStorage 1 Writing speed (MB/s);Test DataStorage 1 Software;Test DataStorage 1 Type;Test DataStorage 1 Result;Test DataStorage 1 Power cycle count;Test DataStorage 1 Lifetime (days);Test DataStorage 1 Power on hours;DataStorage 2;DataStorage 2 Manufacturer;DataStorage 2 Model;DataStorage 2 Serial Number;DataStorage 2 Size (MB);Erasure DataStorage 2;Erasure DataStorage 2 Serial Number;Erasure DataStorage 2 Size (MB);Erasure DataStorage 2 Software;Erasure DataStorage 2 Result;Erasure DataStorage 2 Certificate URL;Erasure DataStorage 2 Type;Erasure DataStorage 2 Method;Erasure DataStorage 2 Elapsed (hours);Erasure DataStorage 2 Date;Erasure DataStorage 2 Steps;Erasure DataStorage 2 Steps Start Time;Erasure DataStorage 2 Steps End Time;Benchmark DataStorage 2 Read Speed (MB/s);Benchmark DataStorage 2 Writing speed (MB/s);Test DataStorage 2 Software;Test DataStorage 2 Type;Test DataStorage 2 Result;Test DataStorage 2 Power cycle count;Test DataStorage 2 Lifetime (days);Test DataStorage 2 Power on hours;DataStorage 3;DataStorage 3 Manufacturer;DataStorage 3 Model;DataStorage 3 Serial Number;DataStorage 3 Size (MB);Erasure DataStorage 3;Erasure DataStorage 3 Serial Number;Erasure DataStorage 3 Size (MB);Erasure DataStorage 3 Software;Erasure DataStorage 3 Result;Erasure DataStorage 3 Certificate URL;Erasure DataStorage 3 Type;Erasure DataStorage 3 Method;Erasure DataStorage 3 Elapsed (hours);Erasure DataStorage 3 Date;Erasure DataStorage 3 Steps;Erasure DataStorage 3 Steps Start Time;Erasure DataStorage 3 Steps End Time;Benchmark DataStorage 3 Read Speed (MB/s);Benchmark DataStorage 3 Writing speed (MB/s);Test DataStorage 3 Software;Test DataStorage 3 Type;Test DataStorage 3 Result;Test DataStorage 3 Power cycle count;Test DataStorage 3 Lifetime (days);Test DataStorage 3 Power on hours;DataStorage 4;DataStorage 4 Manufacturer;DataStorage 4 Model;DataStorage 4 Serial Number;DataStorage 4 Size (MB);Erasure DataStorage 4;Erasure DataStorage 4 Serial Number;Erasure DataStorage 4 Size (MB);Erasure DataStorage 4 Software;Erasure DataStorage 4 Result;Erasure DataStorage 4 Certificate URL;Erasure DataStorage 4 Type;Erasure DataStorage 4 Method;Erasure DataStorage 4 Elapsed (hours);Erasure DataStorage 4 Date;Erasure DataStorage 4 Steps;Erasure DataStorage 4 Steps Start Time;Erasure DataStorage 4 Steps End Time;Benchmark DataStorage 4 Read Speed (MB/s);Benchmark DataStorage 4 Writing speed (MB/s);Test DataStorage 4 Software;Test DataStorage 4 Type;Test DataStorage 4 Result;Test DataStorage 4 Power cycle count;Test DataStorage 4 Lifetime (days);Test DataStorage 4 Power on hours;Motherboard 1;Motherboard 1 Manufacturer;Motherboard 1 Model;Motherboard 1 Serial Number;Display 1;Display 1 Manufacturer;Display 1 Model;Display 1 Serial Number;GraphicCard 1;GraphicCard 1 Manufacturer;GraphicCard 1 Model;GraphicCard 1 Serial Number;GraphicCard 1 Memory (MB);GraphicCard 2;GraphicCard 2 Manufacturer;GraphicCard 2 Model;GraphicCard 2 Serial Number;GraphicCard 2 Memory (MB);NetworkAdapter 1;NetworkAdapter 1 Manufacturer;NetworkAdapter 1 Model;NetworkAdapter 1 Serial Number;NetworkAdapter 2;NetworkAdapter 2 Manufacturer;NetworkAdapter 2 Model;NetworkAdapter 2 Serial Number;SoundCard 1;SoundCard 1 Manufacturer;SoundCard 1 Model;SoundCard 1 Serial Number;SoundCard 2;SoundCard 2 Manufacturer;SoundCard 2 Model;SoundCard 2 Serial Number;Device Rate;Device Range;Processor Rate;Processor Range;RAM Rate;RAM Range;Data Storage Rate;Data Storage Range;Price;Benchmark RamSysbench (points)
+O48N2;;http://localhost/devices/O48N2;;named;O48N2;FooOrg;;;;;;;laptop-asustek_computer_inc-1001pxd-b8oaas048285-14:da:e9:42:f6:7b;Laptop;Netbook;b8oaas048285;1001pxd;asustek computer inc.;Mon May 16 19:03:20 2022;Workbench 11.0a2;2022-05-16 19:03:20.478795+02:00;;;;;intel atom cpu n455 @ 2.66ghz;1024;238475;Processor 6: model intel atom cpu n455 @ 2.66ghz, S/N None;intel corp.;intel atom cpu n455 @ 2.66ghz;;1;2.667;6666.24;164.0803;;;;;;;;;RamModule 10: model None, S/N None;;;;1024;667;;;;;;;;;;;;;;;;;;;HardDrive 11: model hts54322, S/N e2024242cv86mm;hitachi;hts54322;e2024242cv86mm;238475;harddrive-hitachi-hts54322-e2024242cv86mm;e2024242cv86mm;238475;Workbench 11.0a2;Success;;EraseBasic;Shred;1:16:49;2022-05-16 19:03:20.354718+02:00;✓ – StepRandom 1:16:49;2018-07-03 11:15:22.257059+02:00;2018-07-03 12:32:11.843190+02:00;66.2;21.8;Workbench 11.0a2;Short;Failure;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Motherboard 12: model 1001pxd, S/N eee0123456720;asustek computer inc.;1001pxd;eee0123456720;;;;;GraphicCard 7: model atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller, S/N None;intel corporation;atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller;;256;;;;;;NetworkAdapter 4: model ar9285 wireless network adapter, S/N 74:2f:68:8b:fd:c9;qualcomm atheros;ar9285 wireless network adapter;74:2f:68:8b:fd:c9;NetworkAdapter 5: model ar8152 v2.0 fast ethernet, S/N 14:da:e9:42:f6:7b;qualcomm atheros;ar8152 v2.0 fast ethernet;14:da:e9:42:f6:7b;SoundCard 8: model nm10/ich7 family high definition audio controller, S/N None;intel corporation;nm10/ich7 family high definition audio controller;;SoundCard 9: model usb 2.0 uvc vga webcam, S/N 0x0001;azurewave;usb 2.0 uvc vga webcam;0x0001;;;;;;;;;;15.7188
diff --git a/tests/files/proposal_extended_csv_report.csv b/tests/files/proposal_extended_csv_report.csv
index f57d2c04..f87ef1f5 100644
--- a/tests/files/proposal_extended_csv_report.csv
+++ b/tests/files/proposal_extended_csv_report.csv
@@ -1,3 +1,3 @@
-DHID;DocumentID;Public Link;Lots;Tag 1 Type;Tag 1 ID;Tag 1 Organization;Tag 2 Type;Tag 2 ID;Tag 2 Organization;Tag 3 Type;Tag 3 ID;Tag 3 Organization;Device Hardware ID;Device Type;Device Chassis;Device Serial Number;Device Model;Device Manufacturer;Registered in;Registered (process);Updated in (software);Updated in (web);Physical state;Trading state;Processor;RAM (MB);Data Storage Size (MB);Processor 1;Processor 1 Manufacturer;Processor 1 Model;Processor 1 Serial Number;Processor 1 Number of cores;Processor 1 Speed (GHz);Benchmark Processor 1 (points);Benchmark ProcessorSysbench Processor 1 (points);Processor 2;Processor 2 Manufacturer;Processor 2 Model;Processor 2 Serial Number;Processor 2 Number of cores;Processor 2 Speed (GHz);Benchmark Processor 2 (points);Benchmark ProcessorSysbench Processor 2 (points);RamModule 1;RamModule 1 Manufacturer;RamModule 1 Model;RamModule 1 Serial Number;RamModule 1 Size (MB);RamModule 1 Speed (MHz);RamModule 2;RamModule 2 Manufacturer;RamModule 2 Model;RamModule 2 Serial Number;RamModule 2 Size (MB);RamModule 2 Speed (MHz);RamModule 3;RamModule 3 Manufacturer;RamModule 3 Model;RamModule 3 Serial Number;RamModule 3 Size (MB);RamModule 3 Speed (MHz);RamModule 4;RamModule 4 Manufacturer;RamModule 4 Model;RamModule 4 Serial Number;RamModule 4 Size (MB);RamModule 4 Speed (MHz);DataStorage 1;DataStorage 1 Manufacturer;DataStorage 1 Model;DataStorage 1 Serial Number;DataStorage 1 Size (MB);Erasure DataStorage 1;Erasure DataStorage 1 Serial Number;Erasure DataStorage 1 Size (MB);Erasure DataStorage 1 Software;Erasure DataStorage 1 Result;Erasure DataStorage 1 Certificate URL;Erasure DataStorage 1 Type;Erasure DataStorage 1 Method;Erasure DataStorage 1 Elapsed (hours);Erasure DataStorage 1 Date;Erasure DataStorage 1 Steps;Erasure DataStorage 1 Steps Start Time;Erasure DataStorage 1 Steps End Time;Benchmark DataStorage 1 Read Speed (MB/s);Benchmark DataStorage 1 Writing speed (MB/s);Test DataStorage 1 Software;Test DataStorage 1 Type;Test DataStorage 1 Result;Test DataStorage 1 Power cycle count;Test DataStorage 1 Lifetime (days);Test DataStorage 1 Power on hours;DataStorage 2;DataStorage 2 Manufacturer;DataStorage 2 Model;DataStorage 2 Serial Number;DataStorage 2 Size (MB);Erasure DataStorage 2;Erasure DataStorage 2 Serial Number;Erasure DataStorage 2 Size (MB);Erasure DataStorage 2 Software;Erasure DataStorage 2 Result;Erasure DataStorage 2 Certificate URL;Erasure DataStorage 2 Type;Erasure DataStorage 2 Method;Erasure DataStorage 2 Elapsed (hours);Erasure DataStorage 2 Date;Erasure DataStorage 2 Steps;Erasure DataStorage 2 Steps Start Time;Erasure DataStorage 2 Steps End Time;Benchmark DataStorage 2 Read Speed (MB/s);Benchmark DataStorage 2 Writing speed (MB/s);Test DataStorage 2 Software;Test DataStorage 2 Type;Test DataStorage 2 Result;Test DataStorage 2 Power cycle count;Test DataStorage 2 Lifetime (days);Test DataStorage 2 Power on hours;DataStorage 3;DataStorage 3 Manufacturer;DataStorage 3 Model;DataStorage 3 Serial Number;DataStorage 3 Size (MB);Erasure DataStorage 3;Erasure DataStorage 3 Serial Number;Erasure DataStorage 3 Size (MB);Erasure DataStorage 3 Software;Erasure DataStorage 3 Result;Erasure DataStorage 3 Certificate URL;Erasure DataStorage 3 Type;Erasure DataStorage 3 Method;Erasure DataStorage 3 Elapsed (hours);Erasure DataStorage 3 Date;Erasure DataStorage 3 Steps;Erasure DataStorage 3 Steps Start Time;Erasure DataStorage 3 Steps End Time;Benchmark DataStorage 3 Read Speed (MB/s);Benchmark DataStorage 3 Writing speed (MB/s);Test DataStorage 3 Software;Test DataStorage 3 Type;Test DataStorage 3 Result;Test DataStorage 3 Power cycle count;Test DataStorage 3 Lifetime (days);Test DataStorage 3 Power on hours;DataStorage 4;DataStorage 4 Manufacturer;DataStorage 4 Model;DataStorage 4 Serial Number;DataStorage 4 Size (MB);Erasure DataStorage 4;Erasure DataStorage 4 Serial Number;Erasure DataStorage 4 Size (MB);Erasure DataStorage 4 Software;Erasure DataStorage 4 Result;Erasure DataStorage 4 Certificate URL;Erasure DataStorage 4 Type;Erasure DataStorage 4 Method;Erasure DataStorage 4 Elapsed (hours);Erasure DataStorage 4 Date;Erasure DataStorage 4 Steps;Erasure DataStorage 4 Steps Start Time;Erasure DataStorage 4 Steps End Time;Benchmark DataStorage 4 Read Speed (MB/s);Benchmark DataStorage 4 Writing speed (MB/s);Test DataStorage 4 Software;Test DataStorage 4 Type;Test DataStorage 4 Result;Test DataStorage 4 Power cycle count;Test DataStorage 4 Lifetime (days);Test DataStorage 4 Power on hours;Motherboard 1;Motherboard 1 Manufacturer;Motherboard 1 Model;Motherboard 1 Serial Number;Display 1;Display 1 Manufacturer;Display 1 Model;Display 1 Serial Number;GraphicCard 1;GraphicCard 1 Manufacturer;GraphicCard 1 Model;GraphicCard 1 Serial Number;GraphicCard 1 Memory (MB);GraphicCard 2;GraphicCard 2 Manufacturer;GraphicCard 2 Model;GraphicCard 2 Serial Number;GraphicCard 2 Memory (MB);NetworkAdapter 1;NetworkAdapter 1 Manufacturer;NetworkAdapter 1 Model;NetworkAdapter 1 Serial Number;NetworkAdapter 2;NetworkAdapter 2 Manufacturer;NetworkAdapter 2 Model;NetworkAdapter 2 Serial Number;SoundCard 1;SoundCard 1 Manufacturer;SoundCard 1 Model;SoundCard 1 Serial Number;SoundCard 2;SoundCard 2 Manufacturer;SoundCard 2 Model;SoundCard 2 Serial Number;Device Rate;Device Range;Processor Rate;Processor Range;RAM Rate;RAM Range;Data Storage Rate;Data Storage Range;Price;Benchmark RamSysbench (points)
-O48N2;;http://localhost/devices/O48N2;;named;O48N2;FooOrg;;;;;;;laptop-asustek_computer_inc-1001pxd-b8oaas048285-14:da:e9:42:f6:7b;Laptop;Netbook;b8oaas048285;1001pxd;asustek computer inc.;Tue Mar 29 18:07:38 2022;Workbench 11.0a2;2022-03-29 18:07:38.213834+02:00;;;;intel atom cpu n455 @ 2.66ghz;1024;238475;Processor 6: model intel atom cpu n455 @ 2.66ghz, S/N None;intel corp.;intel atom cpu n455 @ 2.66ghz;;1;2.667;6666.24;164.0803;;;;;;;;;RamModule 10: model None, S/N None;;;;1024;667;;;;;;;;;;;;;;;;;;;HardDrive 11: model hts54322, S/N e2024242cv86mm;hitachi;hts54322;e2024242cv86mm;238475;harddrive-hitachi-hts54322-e2024242cv86mm;e2024242cv86mm;238475;Workbench 11.0a2;Success;;EraseBasic;Shred;1:16:49;2022-03-29 18:07:38.175413+02:00;✓ – StepRandom 1:16:49;2018-07-03 11:15:22.257059+02:00;2018-07-03 12:32:11.843190+02:00;66.2;21.8;Workbench 11.0a2;Short;Failure;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Motherboard 12: model 1001pxd, S/N eee0123456720;asustek computer inc.;1001pxd;eee0123456720;;;;;GraphicCard 7: model atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller, S/N None;intel corporation;atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller;;256;;;;;;NetworkAdapter 4: model ar9285 wireless network adapter, S/N 74:2f:68:8b:fd:c9;qualcomm atheros;ar9285 wireless network adapter;74:2f:68:8b:fd:c9;NetworkAdapter 5: model ar8152 v2.0 fast ethernet, S/N 14:da:e9:42:f6:7b;qualcomm atheros;ar8152 v2.0 fast ethernet;14:da:e9:42:f6:7b;SoundCard 8: model nm10/ich7 family high definition audio controller, S/N None;intel corporation;nm10/ich7 family high definition audio controller;;SoundCard 9: model usb 2.0 uvc vga webcam, S/N 0x0001;azurewave;usb 2.0 uvc vga webcam;0x0001;;;;;;;;;;15.7188
-J2MA2;;http://localhost/devices/J2MA2;;named;J2MA2;FooOrg;;;;;;;laptop-asustek_computer_inc-1001pxd-b8oaas048287-14:da:e9:42:f6:7c;Laptop;Netbook;b8oaas048287;1001pxd;asustek computer inc.;Tue Mar 29 18:07:38 2022;Workbench 11.0b11;2022-03-29 18:07:38.572111+02:00;;;;intel atom cpu n455 @ 1.66ghz;2048;558558;Processor 17: model intel atom cpu n455 @ 1.66ghz, S/N None;intel corp.;intel atom cpu n455 @ 1.66ghz;;1;1.667;6666.24;164.0803;;;;;;;;;RamModule 21: model None, S/N None;;;;1024;667;RamModule 22: model 48594d503131325336344350362d53362020, S/N 4f43487b;hynix semiconductor;48594d503131325336344350362d53362020;4f43487b;1024;667;;;;;;;;;;;;;HardDrive 23: model hts54322, S/N e2024242cv86hj;hitachi;hts54322;e2024242cv86hj;238475;harddrive-hitachi-hts54322-e2024242cv86hj;e2024242cv86hj;238475;Workbench 11.0b11;Success;;EraseBasic;Shred;1:16:49;2022-03-29 18:07:38.522879+02:00;✓ – StepRandom 1:16:49;2018-07-03 11:15:22.257059+02:00;2018-07-03 12:32:11.843190+02:00;66.2;21.8;Workbench 11.0b11;Extended;Failure;;;0;DataStorage 24: model wdc wd1600bevt-2, S/N wd-wx11a80w7430;western digital;wdc wd1600bevt-2;wd-wx11a80w7430;160041;datastorage-western_digital-wdc_wd1600bevt-2-wd-wx11a80w7430;wd-wx11a80w7430;160041;Workbench 11.0b11;Failure;;EraseBasic;Shred;0:45:36;2022-03-29 18:07:38.525693+02:00;✓ – StepRandom 0:45:36;2019-10-23 09:49:54.410830+02:00;2019-10-23 10:35:31.400587+02:00;41.6;17.3;Workbench 11.0b11;Short;Success;5293;195 days, 12:00:00;4692;SolidStateDrive 25: model wdc wd1600bevt-2, S/N wd-wx11a80w7430;western digital;wdc wd1600bevt-2;wd-wx11a80w7430;160042;solidstatedrive-western_digital-wdc_wd1600bevt-2-wd-wx11a80w7430;wd-wx11a80w7430;160042;Workbench 11.0b11;Success;;EraseSectors;Badblocks;1:46:03;2022-03-29 18:07:38.530684+02:00;✓ – StepRandom 0:46:03,✓ – StepZero 1:00:00;2019-08-19 18:48:19.690458+02:00,2019-08-19 19:34:22.690458+02:00;2019-08-19 19:34:22.930562+02:00,2019-08-19 20:34:22.930562+02:00;41.1;17.1;Workbench 11.0b11;Short;Success;5231;194 days, 17:00:00;4673;;;;;;;;;;;;;;;;;;;;;;;;;;;Motherboard 26: model 1001pxd, S/N eee0123456789;asustek computer inc.;1001pxd;eee0123456789;;"auo ""auo""";auo lcd monitor;;GraphicCard 18: model atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller, S/N None;intel corporation;atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller;;256;;;;;;NetworkAdapter 15: model ar9285 wireless network adapter, S/N 74:2f:68:8b:fd:c8;qualcomm atheros;ar9285 wireless network adapter;74:2f:68:8b:fd:c8;NetworkAdapter 16: model ar8152 v2.0 fast ethernet, S/N 14:da:e9:42:f6:7c;qualcomm atheros;ar8152 v2.0 fast ethernet;14:da:e9:42:f6:7c;SoundCard 19: model nm10/ich7 family high definition audio controller, S/N None;intel corporation;nm10/ich7 family high definition audio controller;;SoundCard 20: model usb 2.0 uvc vga webcam, S/N 0x0001;azurewave;usb 2.0 uvc vga webcam;0x0001;;;;;;;;;;15.7188
+DHID;DocumentID;Public Link;Lots;Tag 1 Type;Tag 1 ID;Tag 1 Organization;Tag 2 Type;Tag 2 ID;Tag 2 Organization;Tag 3 Type;Tag 3 ID;Tag 3 Organization;Device Hardware ID;Device Type;Device Chassis;Device Serial Number;Device Model;Device Manufacturer;Registered in;Registered (process);Updated in (software);Updated in (web);Physical state;Allocate state;Lifecycle state;Processor;RAM (MB);Data Storage Size (MB);Processor 1;Processor 1 Manufacturer;Processor 1 Model;Processor 1 Serial Number;Processor 1 Number of cores;Processor 1 Speed (GHz);Benchmark Processor 1 (points);Benchmark ProcessorSysbench Processor 1 (points);Processor 2;Processor 2 Manufacturer;Processor 2 Model;Processor 2 Serial Number;Processor 2 Number of cores;Processor 2 Speed (GHz);Benchmark Processor 2 (points);Benchmark ProcessorSysbench Processor 2 (points);RamModule 1;RamModule 1 Manufacturer;RamModule 1 Model;RamModule 1 Serial Number;RamModule 1 Size (MB);RamModule 1 Speed (MHz);RamModule 2;RamModule 2 Manufacturer;RamModule 2 Model;RamModule 2 Serial Number;RamModule 2 Size (MB);RamModule 2 Speed (MHz);RamModule 3;RamModule 3 Manufacturer;RamModule 3 Model;RamModule 3 Serial Number;RamModule 3 Size (MB);RamModule 3 Speed (MHz);RamModule 4;RamModule 4 Manufacturer;RamModule 4 Model;RamModule 4 Serial Number;RamModule 4 Size (MB);RamModule 4 Speed (MHz);DataStorage 1;DataStorage 1 Manufacturer;DataStorage 1 Model;DataStorage 1 Serial Number;DataStorage 1 Size (MB);Erasure DataStorage 1;Erasure DataStorage 1 Serial Number;Erasure DataStorage 1 Size (MB);Erasure DataStorage 1 Software;Erasure DataStorage 1 Result;Erasure DataStorage 1 Certificate URL;Erasure DataStorage 1 Type;Erasure DataStorage 1 Method;Erasure DataStorage 1 Elapsed (hours);Erasure DataStorage 1 Date;Erasure DataStorage 1 Steps;Erasure DataStorage 1 Steps Start Time;Erasure DataStorage 1 Steps End Time;Benchmark DataStorage 1 Read Speed (MB/s);Benchmark DataStorage 1 Writing speed (MB/s);Test DataStorage 1 Software;Test DataStorage 1 Type;Test DataStorage 1 Result;Test DataStorage 1 Power cycle count;Test DataStorage 1 Lifetime (days);Test DataStorage 1 Power on hours;DataStorage 2;DataStorage 2 Manufacturer;DataStorage 2 Model;DataStorage 2 Serial Number;DataStorage 2 Size (MB);Erasure DataStorage 2;Erasure DataStorage 2 Serial Number;Erasure DataStorage 2 Size (MB);Erasure DataStorage 2 Software;Erasure DataStorage 2 Result;Erasure DataStorage 2 Certificate URL;Erasure DataStorage 2 Type;Erasure DataStorage 2 Method;Erasure DataStorage 2 Elapsed (hours);Erasure DataStorage 2 Date;Erasure DataStorage 2 Steps;Erasure DataStorage 2 Steps Start Time;Erasure DataStorage 2 Steps End Time;Benchmark DataStorage 2 Read Speed (MB/s);Benchmark DataStorage 2 Writing speed (MB/s);Test DataStorage 2 Software;Test DataStorage 2 Type;Test DataStorage 2 Result;Test DataStorage 2 Power cycle count;Test DataStorage 2 Lifetime (days);Test DataStorage 2 Power on hours;DataStorage 3;DataStorage 3 Manufacturer;DataStorage 3 Model;DataStorage 3 Serial Number;DataStorage 3 Size (MB);Erasure DataStorage 3;Erasure DataStorage 3 Serial Number;Erasure DataStorage 3 Size (MB);Erasure DataStorage 3 Software;Erasure DataStorage 3 Result;Erasure DataStorage 3 Certificate URL;Erasure DataStorage 3 Type;Erasure DataStorage 3 Method;Erasure DataStorage 3 Elapsed (hours);Erasure DataStorage 3 Date;Erasure DataStorage 3 Steps;Erasure DataStorage 3 Steps Start Time;Erasure DataStorage 3 Steps End Time;Benchmark DataStorage 3 Read Speed (MB/s);Benchmark DataStorage 3 Writing speed (MB/s);Test DataStorage 3 Software;Test DataStorage 3 Type;Test DataStorage 3 Result;Test DataStorage 3 Power cycle count;Test DataStorage 3 Lifetime (days);Test DataStorage 3 Power on hours;DataStorage 4;DataStorage 4 Manufacturer;DataStorage 4 Model;DataStorage 4 Serial Number;DataStorage 4 Size (MB);Erasure DataStorage 4;Erasure DataStorage 4 Serial Number;Erasure DataStorage 4 Size (MB);Erasure DataStorage 4 Software;Erasure DataStorage 4 Result;Erasure DataStorage 4 Certificate URL;Erasure DataStorage 4 Type;Erasure DataStorage 4 Method;Erasure DataStorage 4 Elapsed (hours);Erasure DataStorage 4 Date;Erasure DataStorage 4 Steps;Erasure DataStorage 4 Steps Start Time;Erasure DataStorage 4 Steps End Time;Benchmark DataStorage 4 Read Speed (MB/s);Benchmark DataStorage 4 Writing speed (MB/s);Test DataStorage 4 Software;Test DataStorage 4 Type;Test DataStorage 4 Result;Test DataStorage 4 Power cycle count;Test DataStorage 4 Lifetime (days);Test DataStorage 4 Power on hours;Motherboard 1;Motherboard 1 Manufacturer;Motherboard 1 Model;Motherboard 1 Serial Number;Display 1;Display 1 Manufacturer;Display 1 Model;Display 1 Serial Number;GraphicCard 1;GraphicCard 1 Manufacturer;GraphicCard 1 Model;GraphicCard 1 Serial Number;GraphicCard 1 Memory (MB);GraphicCard 2;GraphicCard 2 Manufacturer;GraphicCard 2 Model;GraphicCard 2 Serial Number;GraphicCard 2 Memory (MB);NetworkAdapter 1;NetworkAdapter 1 Manufacturer;NetworkAdapter 1 Model;NetworkAdapter 1 Serial Number;NetworkAdapter 2;NetworkAdapter 2 Manufacturer;NetworkAdapter 2 Model;NetworkAdapter 2 Serial Number;SoundCard 1;SoundCard 1 Manufacturer;SoundCard 1 Model;SoundCard 1 Serial Number;SoundCard 2;SoundCard 2 Manufacturer;SoundCard 2 Model;SoundCard 2 Serial Number;Device Rate;Device Range;Processor Rate;Processor Range;RAM Rate;RAM Range;Data Storage Rate;Data Storage Range;Price;Benchmark RamSysbench (points)
+O48N2;;http://localhost/devices/O48N2;;named;O48N2;FooOrg;;;;;;;laptop-asustek_computer_inc-1001pxd-b8oaas048285-14:da:e9:42:f6:7b;Laptop;Netbook;b8oaas048285;1001pxd;asustek computer inc.;Mon May 16 19:07:38 2022;Workbench 11.0a2;2022-05-16 19:07:38.932955+02:00;;;;;intel atom cpu n455 @ 2.66ghz;1024;238475;Processor 6: model intel atom cpu n455 @ 2.66ghz, S/N None;intel corp.;intel atom cpu n455 @ 2.66ghz;;1;2.667;6666.24;164.0803;;;;;;;;;RamModule 10: model None, S/N None;;;;1024;667;;;;;;;;;;;;;;;;;;;HardDrive 11: model hts54322, S/N e2024242cv86mm;hitachi;hts54322;e2024242cv86mm;238475;harddrive-hitachi-hts54322-e2024242cv86mm;e2024242cv86mm;238475;Workbench 11.0a2;Success;;EraseBasic;Shred;1:16:49;2022-05-16 19:07:38.887366+02:00;✓ – StepRandom 1:16:49;2018-07-03 11:15:22.257059+02:00;2018-07-03 12:32:11.843190+02:00;66.2;21.8;Workbench 11.0a2;Short;Failure;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Motherboard 12: model 1001pxd, S/N eee0123456720;asustek computer inc.;1001pxd;eee0123456720;;;;;GraphicCard 7: model atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller, S/N None;intel corporation;atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller;;256;;;;;;NetworkAdapter 4: model ar9285 wireless network adapter, S/N 74:2f:68:8b:fd:c9;qualcomm atheros;ar9285 wireless network adapter;74:2f:68:8b:fd:c9;NetworkAdapter 5: model ar8152 v2.0 fast ethernet, S/N 14:da:e9:42:f6:7b;qualcomm atheros;ar8152 v2.0 fast ethernet;14:da:e9:42:f6:7b;SoundCard 8: model nm10/ich7 family high definition audio controller, S/N None;intel corporation;nm10/ich7 family high definition audio controller;;SoundCard 9: model usb 2.0 uvc vga webcam, S/N 0x0001;azurewave;usb 2.0 uvc vga webcam;0x0001;;;;;;;;;;15.7188
+J2MA2;;http://localhost/devices/J2MA2;;named;J2MA2;FooOrg;;;;;;;laptop-asustek_computer_inc-1001pxd-b8oaas048287-14:da:e9:42:f6:7c;Laptop;Netbook;b8oaas048287;1001pxd;asustek computer inc.;Mon May 16 19:07:39 2022;Workbench 11.0b11;2022-05-16 19:07:39.321230+02:00;;;;;intel atom cpu n455 @ 1.66ghz;2048;558558;Processor 17: model intel atom cpu n455 @ 1.66ghz, S/N None;intel corp.;intel atom cpu n455 @ 1.66ghz;;1;1.667;6666.24;164.0803;;;;;;;;;RamModule 21: model None, S/N None;;;;1024;667;RamModule 22: model 48594d503131325336344350362d53362020, S/N 4f43487b;hynix semiconductor;48594d503131325336344350362d53362020;4f43487b;1024;667;;;;;;;;;;;;;HardDrive 23: model hts54322, S/N e2024242cv86hj;hitachi;hts54322;e2024242cv86hj;238475;harddrive-hitachi-hts54322-e2024242cv86hj;e2024242cv86hj;238475;Workbench 11.0b11;Success;;EraseBasic;Shred;1:16:49;2022-05-16 19:07:39.263139+02:00;✓ – StepRandom 1:16:49;2018-07-03 11:15:22.257059+02:00;2018-07-03 12:32:11.843190+02:00;66.2;21.8;Workbench 11.0b11;Extended;Failure;;;0;DataStorage 24: model wdc wd1600bevt-2, S/N wd-wx11a80w7430;western digital;wdc wd1600bevt-2;wd-wx11a80w7430;160041;datastorage-western_digital-wdc_wd1600bevt-2-wd-wx11a80w7430;wd-wx11a80w7430;160041;Workbench 11.0b11;Failure;;EraseBasic;Shred;0:45:36;2022-05-16 19:07:39.266134+02:00;✓ – StepRandom 0:45:36;2019-10-23 09:49:54.410830+02:00;2019-10-23 10:35:31.400587+02:00;41.6;17.3;Workbench 11.0b11;Short;Success;5293;195 days, 12:00:00;4692;SolidStateDrive 25: model wdc wd1600bevt-2, S/N wd-wx11a80w7430;western digital;wdc wd1600bevt-2;wd-wx11a80w7430;160042;solidstatedrive-western_digital-wdc_wd1600bevt-2-wd-wx11a80w7430;wd-wx11a80w7430;160042;Workbench 11.0b11;Success;;EraseSectors;Badblocks;1:46:03;2022-05-16 19:07:39.271374+02:00;✓ – StepRandom 0:46:03,✓ – StepZero 1:00:00;2019-08-19 18:48:19.690458+02:00,2019-08-19 19:34:22.690458+02:00;2019-08-19 19:34:22.930562+02:00,2019-08-19 20:34:22.930562+02:00;41.1;17.1;Workbench 11.0b11;Short;Success;5231;194 days, 17:00:00;4673;;;;;;;;;;;;;;;;;;;;;;;;;;;Motherboard 26: model 1001pxd, S/N eee0123456789;asustek computer inc.;1001pxd;eee0123456789;;"auo ""auo""";auo lcd monitor;;GraphicCard 18: model atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller, S/N None;intel corporation;atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller;;256;;;;;;NetworkAdapter 15: model ar9285 wireless network adapter, S/N 74:2f:68:8b:fd:c8;qualcomm atheros;ar9285 wireless network adapter;74:2f:68:8b:fd:c8;NetworkAdapter 16: model ar8152 v2.0 fast ethernet, S/N 14:da:e9:42:f6:7c;qualcomm atheros;ar8152 v2.0 fast ethernet;14:da:e9:42:f6:7c;SoundCard 19: model nm10/ich7 family high definition audio controller, S/N None;intel corporation;nm10/ich7 family high definition audio controller;;SoundCard 20: model usb 2.0 uvc vga webcam, S/N 0x0001;azurewave;usb 2.0 uvc vga webcam;0x0001;;;;;;;;;;15.7188
diff --git a/tests/files/test_lite/2022-4-13-19-5_user@dhub.com_b27dbf43-b88a-4505-ae27-10de5a95919e.json b/tests/files/test_lite/2022-4-13-19-5_user@dhub.com_b27dbf43-b88a-4505-ae27-10de5a95919e.json
new file mode 100644
index 00000000..8b56b4e7
--- /dev/null
+++ b/tests/files/test_lite/2022-4-13-19-5_user@dhub.com_b27dbf43-b88a-4505-ae27-10de5a95919e.json
@@ -0,0 +1 @@
+{"timestamp": "2022-04-13T19:05:37.604538", "type": "Snapshot", "uuid": "b27dbf43-b88a-4505-ae27-10de5a95919e", "sid": "5J3R3", "software": "Workbench", "version": "2022.03.3-alpha", "schema_api": "1.0.0", "data": {"lshw": {"id": "workbench-live", "class": "system", "claimed": true, "handle": "DMI:0002", "description": "Low Profile Desktop Computer", "product": "HP Compaq 8100 Elite SFF PC (AY032AV)", "vendor": "Hewlett-Packard", "serial": "CZC0408YPV", "width": 64, "configuration": {"administrator_password": "disabled", "boot": "normal", "chassis": "low-profile", "family": "103C_53307F", "power-on_password": "disabled", "sku": "AY032AV", "uuid": "7c1daae8-d3c3-11df-bbda-6d814dae6c62"}, "capabilities": {"smbios-2.6": "SMBIOS version 2.6", "dmi-2.6": "DMI version 2.6", "smp": "Symmetric Multi-Processing", "vsyscall32": "32-bit processes"}, "children": [{"id": "core", "class": "bus", "claimed": true, "handle": "DMI:0003", "description": "Motherboard", "product": "304Ah", "vendor": "Hewlett-Packard", "physid": "0", "serial": "CZC0408YPV", "children": [{"id": "firmware", "class": "memory", "claimed": true, "description": "BIOS", "vendor": "Hewlett-Packard", "physid": "1", "version": "786H1 v01.05", "date": "06/09/2010", "units": "bytes", "size": 131072, "capacity": 8388608, "capabilities": {"pci": "PCI bus", "pnp": "Plug-and-Play", "upgrade": "BIOS EEPROM can be upgraded", "shadowing": "BIOS shadowing", "cdboot": "Booting from CD-ROM/DVD", "bootselect": "Selectable boot path", "edd": "Enhanced Disk Drive extensions", "int5printscreen": "Print Screen key", "int9keyboard": "i8042 keyboard controller", "int14serial": "INT14 serial line control", "int17printer": "INT17 printer control", "acpi": "ACPI", "usb": "USB legacy emulation", "ls120boot": "Booting from LS-120", "zipboot": "Booting from ATAPI ZIP", "biosbootspecification": "BIOS boot specification", "netboot": "Function-key initiated network service boot"}}, {"id": "cpu", "class": "processor", "claimed": true, "handle": "DMI:0005", "description": "CPU", "product": "Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz", "vendor": "Intel Corp.", "physid": "5", "businfo": "cpu@0", "version": "6.37.5", "slot": "XU1 PROCESSOR", "units": "Hz", "size": 2879262000, "capacity": 2933000000, "width": 64, "clock": 133000000, "configuration": {"cores": "2", "enabledcores": "2", "microcode": "2", "threads": "4"}, "capabilities": {"lm": "64bits extensions (x86-64)", "fpu": "mathematical co-processor", "fpu_exception": "FPU exceptions reporting", "wp": true, "vme": "virtual mode extensions", "de": "debugging extensions", "pse": "page size extensions", "tsc": "time stamp counter", "msr": "model-specific registers", "pae": "4GB+ memory addressing (Physical Address Extension)", "mce": "machine check exceptions", "cx8": "compare and exchange 8-byte", "apic": "on-chip advanced programmable interrupt controller (APIC)", "sep": "fast system calls", "mtrr": "memory type range registers", "pge": "page global enable", "mca": "machine check architecture", "cmov": "conditional move instruction", "pat": "page attribute table", "pse36": "36-bit page size extensions", "clflush": true, "dts": "debug trace and EMON store MSRs", "acpi": "thermal control (ACPI)", "mmx": "multimedia extensions (MMX)", "fxsr": "fast floating point save/restore", "sse": "streaming SIMD extensions (SSE)", "sse2": "streaming SIMD extensions (SSE2)", "ht": "HyperThreading", "tm": "thermal interrupt and status", "pbe": "pending break event", "syscall": "fast system calls", "nx": "no-execute bit (NX)", "rdtscp": true, "x86-64": "64bits extensions (x86-64)", "constant_tsc": true, "arch_perfmon": true, "pebs": true, "bts": true, "rep_good": true, "nopl": true, "xtopology": true, "nonstop_tsc": true, "cpuid": true, "aperfmperf": true, "pni": true, "dtes64": true, "monitor": true, "ds_cpl": true, "vmx": true, "est": true, "tm2": true, "ssse3": true, "cx16": true, "xtpr": true, "pdcm": true, "pcid": true, "sse4_1": true, "sse4_2": true, "popcnt": true, "lahf_lm": true, "pti": true, "tpr_shadow": true, "vnmi": true, "flexpriority": true, "ept": true, "vpid": true, "dtherm": true, "arat": true, "cpufreq": "CPU Frequency scaling"}, "children": [{"id": "cache:0", "class": "memory", "disabled": true, "claimed": true, "handle": "DMI:0006", "description": "L1 cache", "physid": "6", "slot": "L1 Cache", "units": "bytes", "size": 131072, "capacity": 131072, "configuration": {"level": "1"}, "capabilities": {"burst": "Burst", "internal": "Internal", "write-back": "Write-back", "data": "Data cache"}}, {"id": "cache:1", "class": "memory", "disabled": true, "claimed": true, "handle": "DMI:0007", "description": "L2 cache", "physid": "7", "slot": "L2 Cache", "units": "bytes", "size": 524288, "capacity": 524288, "configuration": {"level": "2"}, "capabilities": {"burst": "Burst", "internal": "Internal", "write-back": "Write-back", "unified": "Unified cache"}}, {"id": "cache:2", "class": "memory", "claimed": true, "handle": "DMI:0008", "description": "L3 cache", "physid": "8", "slot": "L3 Cache", "units": "bytes", "size": 4194304, "capacity": 4194304, "configuration": {"level": "3"}, "capabilities": {"internal": "Internal", "write-back": "Write-back"}}]}, {"id": "memory", "class": "memory", "claimed": true, "handle": "DMI:003D", "description": "System Memory", "physid": "3d", "slot": "System board or motherboard", "units": "bytes", "size": 8589934592, "children": [{"id": "bank:0", "class": "memory", "claimed": true, "handle": "DMI:003F", "description": "DIMM DDR3 Synchronous 1333 MHz (0.8 ns)", "product": "16JTF25664AZ-1G4F", "vendor": "JEDEC ID:80 2C", "physid": "0", "serial": "A4482E29", "slot": "XMM1", "units": "bytes", "size": 2147483648, "width": 64, "clock": 1333000000}, {"id": "bank:1", "class": "memory", "claimed": true, "handle": "DMI:0040", "description": "DIMM DDR3 Synchronous 1333 MHz (0.8 ns)", "product": "16JTF25664AZ-1G4F", "vendor": "JEDEC ID:80 2C", "physid": "1", "serial": "92072F30", "slot": "XMM2", "units": "bytes", "size": 2147483648, "width": 64, "clock": 1333000000}, {"id": "bank:2", "class": "memory", "claimed": true, "handle": "DMI:0041", "description": "DIMM DDR3 Synchronous 1333 MHz (0.8 ns)", "product": "16JTF25664AZ-1G4F", "vendor": "JEDEC ID:80 2C", "physid": "2", "serial": "939E2E29", "slot": "XMM3", "units": "bytes", "size": 2147483648, "width": 64, "clock": 1333000000}, {"id": "bank:3", "class": "memory", "claimed": true, "handle": "DMI:0042", "description": "DIMM DDR3 Synchronous 1333 MHz (0.8 ns)", "product": "16JTF25664AZ-1G4F", "vendor": "JEDEC ID:80 2C", "physid": "3", "serial": "48FD2E30", "slot": "XMM4", "units": "bytes", "size": 2147483648, "width": 64, "clock": 1333000000}]}, {"id": "flash", "class": "memory", "handle": "DMI:003E", "description": "Flash Memory", "physid": "3e", "slot": "System board or motherboard", "units": "bytes", "capacity": 4194304, "children": [{"id": "bank", "class": "memory", "handle": "DMI:0044", "description": "Chip FLASH Non-volatile", "physid": "0", "slot": "SYSTEM ROM", "units": "bytes", "size": 4194304, "width": 2}]}, {"id": "pci:0", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:00", "description": "Host bridge", "product": "Core Processor DRAM Controller", "vendor": "Intel Corporation", "physid": "100", "businfo": "pci@0000:00:00.0", "version": "02", "width": 32, "clock": 33000000, "children": [{"id": "pci:0", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:01", "description": "PCI bridge", "product": "Core Processor PCI Express x16 Root Port", "vendor": "Intel Corporation", "physid": "1", "businfo": "pci@0000:00:01.0", "version": "02", "width": 32, "clock": 33000000, "configuration": {"driver": "pcieport"}, "capabilities": {"pci": true, "pm": "Power Management", "msi": "Message Signalled Interrupts", "pciexpress": "PCI Express", "normal_decode": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}, "children": [{"id": "display", "class": "display", "claimed": true, "handle": "PCI:0000:01:00.0", "description": "VGA compatible controller", "product": "GP107 [GeForce GTX 1050 Ti]", "vendor": "NVIDIA Corporation", "physid": "0", "businfo": "pci@0000:01:00.0", "logicalname": "/dev/fb0", "version": "a1", "width": 64, "clock": 33000000, "configuration": {"depth": "32", "driver": "nouveau", "latency": "0", "resolution": "1920,1080"}, "capabilities": {"pm": "Power Management", "msi": "Message Signalled Interrupts", "pciexpress": "PCI Express", "vga_controller": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing", "rom": "extension ROM", "fb": "framebuffer"}}, {"id": "multimedia", "class": "multimedia", "claimed": true, "handle": "PCI:0000:01:00.1", "description": "Audio device", "product": "GP107GL High Definition Audio Controller", "vendor": "NVIDIA Corporation", "physid": "0.1", "businfo": "pci@0000:01:00.1", "logicalname": ["card1", "/dev/snd/controlC1", "/dev/snd/hwC1D0", "/dev/snd/pcmC1D10p", "/dev/snd/pcmC1D11p", "/dev/snd/pcmC1D3p", "/dev/snd/pcmC1D7p", "/dev/snd/pcmC1D8p", "/dev/snd/pcmC1D9p"], "version": "a1", "width": 32, "clock": 33000000, "configuration": {"driver": "snd_hda_intel", "latency": "0"}, "capabilities": {"pm": "Power Management", "msi": "Message Signalled Interrupts", "pciexpress": "PCI Express", "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}, "children": [{"id": "input:0", "class": "input", "claimed": true, "product": "HDA NVidia HDMI/DP,pcm=3", "physid": "0", "logicalname": ["input11", "/dev/input/event8"]}, {"id": "input:1", "class": "input", "claimed": true, "product": "HDA NVidia HDMI/DP,pcm=7", "physid": "1", "logicalname": ["input12", "/dev/input/event9"]}, {"id": "input:2", "class": "input", "claimed": true, "product": "HDA NVidia HDMI/DP,pcm=8", "physid": "2", "logicalname": ["input13", "/dev/input/event10"]}, {"id": "input:3", "class": "input", "claimed": true, "product": "HDA NVidia HDMI/DP,pcm=9", "physid": "3", "logicalname": ["input14", "/dev/input/event11"]}, {"id": "input:4", "class": "input", "claimed": true, "product": "HDA NVidia HDMI/DP,pcm=10", "physid": "4", "logicalname": ["input15", "/dev/input/event12"]}, {"id": "input:5", "class": "input", "claimed": true, "product": "HDA NVidia HDMI/DP,pcm=11", "physid": "5", "logicalname": ["input16", "/dev/input/event13"]}]}]}, {"id": "communication:0", "class": "communication", "claimed": true, "handle": "PCI:0000:00:16.0", "description": "Communication controller", "product": "5 Series/3400 Series Chipset HECI Controller", "vendor": "Intel Corporation", "physid": "16", "businfo": "pci@0000:00:16.0", "version": "06", "width": 64, "clock": 33000000, "configuration": {"driver": "mei_me", "latency": "0"}, "capabilities": {"pm": "Power Management", "msi": "Message Signalled Interrupts", "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}}, {"id": "communication:1", "class": "communication", "claimed": true, "handle": "PCI:0000:00:16.3", "description": "Serial controller", "product": "5 Series/3400 Series Chipset KT Controller", "vendor": "Intel Corporation", "physid": "16.3", "businfo": "pci@0000:00:16.3", "version": "06", "width": 32, "clock": 66000000, "configuration": {"driver": "serial", "latency": "0"}, "capabilities": {"pm": "Power Management", "msi": "Message Signalled Interrupts", "16550": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}}, {"id": "network", "class": "network", "claimed": true, "handle": "PCI:0000:00:19.0", "description": "Ethernet interface", "product": "82578DM Gigabit Network Connection", "vendor": "Intel Corporation", "physid": "19", "businfo": "pci@0000:00:19.0", "logicalname": "eth0", "version": "05", "serial": "6c:62:6d:81:4d:ae", "units": "bit/s", "capacity": 1000000000, "width": 32, "clock": 33000000, "configuration": {"autonegotiation": "on", "broadcast": "yes", "driver": "e1000e", "driverversion": "5.10.0-13-amd64", "firmware": "0.12-2", "latency": "0", "link": "no", "multicast": "yes", "port": "twisted pair"}, "capabilities": {"pm": "Power Management", "msi": "Message Signalled Interrupts", "bus_master": "bus mastering", "cap_list": "PCI capabilities listing", "ethernet": true, "physical": "Physical interface", "tp": "twisted pair", "10bt": "10Mbit/s", "10bt-fd": "10Mbit/s (full duplex)", "100bt": "100Mbit/s", "100bt-fd": "100Mbit/s (full duplex)", "1000bt-fd": "1Gbit/s (full duplex)", "autonegotiation": "Auto-negotiation"}}, {"id": "usb:0", "class": "bus", "claimed": true, "handle": "PCI:0000:00:1a.0", "description": "USB controller", "product": "5 Series/3400 Series Chipset USB2 Enhanced Host Controller", "vendor": "Intel Corporation", "physid": "1a", "businfo": "pci@0000:00:1a.0", "version": "05", "width": 32, "clock": 33000000, "configuration": {"driver": "ehci-pci", "latency": "0"}, "capabilities": {"pm": "Power Management", "debug": "Debug port", "ehci": "Enhanced Host Controller Interface (USB2)", "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}, "children": [{"id": "usbhost", "class": "bus", "claimed": true, "handle": "USB:1:1", "product": "EHCI Host Controller", "vendor": "Linux 5.10.0-13-amd64 ehci_hcd", "physid": "1", "businfo": "usb@1", "logicalname": "usb1", "version": "5.10", "configuration": {"driver": "hub", "slots": "3", "speed": "480Mbit/s"}, "capabilities": {"usb-2.00": "USB 2.0"}, "children": [{"id": "usb", "class": "bus", "claimed": true, "handle": "USB:1:2", "description": "USB hub", "product": "Integrated Rate Matching Hub", "vendor": "Intel Corp.", "physid": "1", "businfo": "usb@1:1", "version": "0.00", "configuration": {"driver": "hub", "slots": "6", "speed": "480Mbit/s"}, "capabilities": {"usb-2.00": "USB 2.0"}, "children": [{"id": "usb:0", "class": "input", "claimed": true, "handle": "USB:1:3", "description": "Mouse", "product": "Razer Razer DeathAdder", "vendor": "Razer", "physid": "1", "businfo": "usb@1:1.1", "logicalname": ["input5", "/dev/input/event2", "/dev/input/mouse0"], "version": "1.00", "configuration": {"driver": "usbhid", "maxpower": "100mA", "speed": "12Mbit/s"}, "capabilities": {"usb-2.00": "USB 2.0", "usb": "USB"}}, {"id": "usb:1", "class": "input", "claimed": true, "handle": "USB:1:4", "description": "Keyboard", "product": "Logitech USB Keyboard System Control", "vendor": "Logitech", "physid": "2", "businfo": "usb@1:1.2", "logicalname": ["input6", "/dev/input/event3", "input6::capslock", "input6::compose", "input6::kana", "input6::numlock", "input6::scrolllock", "input7", "/dev/input/event4", "input8", "/dev/input/event5"], "version": "64.02", "configuration": {"driver": "usbhid", "maxpower": "90mA", "speed": "2Mbit/s"}, "capabilities": {"usb-1.10": "USB 1.1", "usb": "USB"}}, {"id": "usb:2", "class": "storage", "claimed": true, "handle": "USB:1:5", "description": "Mass storage device", "product": "Mass Storage", "vendor": "Generic", "physid": "6", "businfo": "usb@1:1.6", "logicalname": "scsi6", "version": "1.00", "serial": "CB7A8994", "configuration": {"driver": "usb-storage", "maxpower": "200mA", "speed": "480Mbit/s"}, "capabilities": {"usb-2.00": "USB 2.0", "scsi": "SCSI", "emulated": "Emulated device"}, "children": [{"id": "disk", "class": "disk", "claimed": true, "handle": "SCSI:06:00:00:00", "description": "SCSI Disk", "product": "Flash Disk", "vendor": "Generic", "physid": "0.0.0", "businfo": "scsi@6:0.0.0", "logicalname": "/dev/sdb", "dev": "8:16", "version": "8.07", "serial": "CB7A8994", "units": "bytes", "size": 8053063680, "configuration": {"ansiversion": "4", "logicalsectorsize": "512", "sectorsize": "512"}, "capabilities": {"removable": "support is removable"}, "children": [{"id": "medium", "class": "disk", "claimed": true, "physid": "0", "logicalname": "/dev/sdb", "dev": "8:16", "units": "bytes", "size": 8053063680, "configuration": {"signature": "528cd03d"}, "capabilities": {"partitioned": "Partitioned disk", "partitioned:dos": "MS-DOS partition table"}, "children": [{"id": "volume", "class": "volume", "claimed": true, "description": "Windows FAT volume", "vendor": "mkfs.fat", "physid": "2", "logicalname": "/dev/sdb2", "dev": "8:18", "version": "FAT16", "serial": "31d5-6be2", "size": 18446744073709549568, "configuration": {"FATs": "2", "filesystem": "fat"}, "capabilities": {"primary": "Primary partition", "boot": "Contains boot code", "fat": "Windows FAT", "initialized": "initialized volume"}}]}]}]}]}]}]}, {"id": "multimedia", "class": "multimedia", "claimed": true, "handle": "PCI:0000:00:1b.0", "description": "Audio device", "product": "5 Series/3400 Series Chipset High Definition Audio", "vendor": "Intel Corporation", "physid": "1b", "businfo": "pci@0000:00:1b.0", "logicalname": ["card0", "/dev/snd/controlC0", "/dev/snd/hwC0D0", "/dev/snd/pcmC0D0c", "/dev/snd/pcmC0D0p", "/dev/snd/pcmC0D2c"], "version": "05", "width": 64, "clock": 33000000, "configuration": {"driver": "snd_hda_intel", "latency": "0"}, "capabilities": {"pm": "Power Management", "msi": "Message Signalled Interrupts", "pciexpress": "PCI Express", "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}, "children": [{"id": "input:0", "class": "input", "claimed": true, "product": "HDA Intel MID Mic", "physid": "0", "logicalname": ["input17", "/dev/input/event14"]}, {"id": "input:1", "class": "input", "claimed": true, "product": "HDA Intel MID Line", "physid": "1", "logicalname": ["input18", "/dev/input/event15"]}, {"id": "input:2", "class": "input", "claimed": true, "product": "HDA Intel MID Line Out", "physid": "2", "logicalname": ["input19", "/dev/input/event16"]}, {"id": "input:3", "class": "input", "claimed": true, "product": "HDA Intel MID Front Headphone", "physid": "3", "logicalname": ["input20", "/dev/input/event17"]}]}, {"id": "pci:1", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:18", "description": "PCI bridge", "product": "5 Series/3400 Series Chipset PCI Express Root Port 1", "vendor": "Intel Corporation", "physid": "1c", "businfo": "pci@0000:00:1c.0", "version": "05", "width": 32, "clock": 33000000, "configuration": {"driver": "pcieport"}, "capabilities": {"pci": true, "pciexpress": "PCI Express", "msi": "Message Signalled Interrupts", "pm": "Power Management", "normal_decode": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}}, {"id": "pci:2", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:24", "description": "PCI bridge", "product": "5 Series/3400 Series Chipset PCI Express Root Port 5", "vendor": "Intel Corporation", "physid": "1c.4", "businfo": "pci@0000:00:1c.4", "version": "05", "width": 32, "clock": 33000000, "configuration": {"driver": "pcieport"}, "capabilities": {"pci": true, "pciexpress": "PCI Express", "msi": "Message Signalled Interrupts", "pm": "Power Management", "normal_decode": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}}, {"id": "pci:3", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:30", "description": "PCI bridge", "product": "5 Series/3400 Series Chipset PCI Express Root Port 7", "vendor": "Intel Corporation", "physid": "1c.6", "businfo": "pci@0000:00:1c.6", "version": "05", "width": 32, "clock": 33000000, "configuration": {"driver": "pcieport"}, "capabilities": {"pci": true, "pciexpress": "PCI Express", "msi": "Message Signalled Interrupts", "pm": "Power Management", "normal_decode": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}}, {"id": "usb:1", "class": "bus", "claimed": true, "handle": "PCI:0000:00:1d.0", "description": "USB controller", "product": "5 Series/3400 Series Chipset USB2 Enhanced Host Controller", "vendor": "Intel Corporation", "physid": "1d", "businfo": "pci@0000:00:1d.0", "version": "05", "width": 32, "clock": 33000000, "configuration": {"driver": "ehci-pci", "latency": "0"}, "capabilities": {"pm": "Power Management", "debug": "Debug port", "ehci": "Enhanced Host Controller Interface (USB2)", "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}, "children": [{"id": "usbhost", "class": "bus", "claimed": true, "handle": "USB:2:1", "product": "EHCI Host Controller", "vendor": "Linux 5.10.0-13-amd64 ehci_hcd", "physid": "1", "businfo": "usb@2", "logicalname": "usb2", "version": "5.10", "configuration": {"driver": "hub", "slots": "3", "speed": "480Mbit/s"}, "capabilities": {"usb-2.00": "USB 2.0"}, "children": [{"id": "usb", "class": "bus", "claimed": true, "handle": "USB:2:2", "description": "USB hub", "product": "Integrated Rate Matching Hub", "vendor": "Intel Corp.", "physid": "1", "businfo": "usb@2:1", "version": "0.00", "configuration": {"driver": "hub", "slots": "8", "speed": "480Mbit/s"}, "capabilities": {"usb-2.00": "USB 2.0"}}]}]}, {"id": "pci:4", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:0d", "description": "PCI bridge", "product": "82801 PCI Bridge", "vendor": "Intel Corporation", "physid": "1e", "businfo": "pci@0000:00:1e.0", "version": "a5", "width": 32, "clock": 33000000, "capabilities": {"pci": true, "subtractive_decode": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}}, {"id": "isa", "class": "bridge", "claimed": true, "handle": "PCI:0000:00:1f.0", "description": "ISA bridge", "product": "Q57 Chipset LPC Interface Controller", "vendor": "Intel Corporation", "physid": "1f", "businfo": "pci@0000:00:1f.0", "version": "05", "width": 32, "clock": 33000000, "configuration": {"driver": "lpc_ich", "latency": "0"}, "capabilities": {"isa": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing"}, "children": [{"id": "pnp00:00", "class": "system", "claimed": true, "product": "PnP device PNP0b00", "physid": "0", "configuration": {"driver": "rtc_cmos"}, "capabilities": {"pnp": true}}, {"id": "pnp00:01", "class": "input", "claimed": true, "product": "PnP device PNP0f13", "physid": "1", "configuration": {"driver": "i8042 aux"}, "capabilities": {"pnp": true}}, {"id": "pnp00:02", "class": "input", "claimed": true, "product": "PnP device PNP0303", "physid": "2", "configuration": {"driver": "i8042 kbd"}, "capabilities": {"pnp": true}}, {"id": "pnp00:03", "class": "communication", "claimed": true, "product": "PnP device PNP0501", "physid": "3", "configuration": {"driver": "serial"}, "capabilities": {"pnp": true}}, {"id": "pnp00:04", "class": "generic", "claimed": true, "product": "PnP device IFX0102", "physid": "4", "configuration": {"driver": "tpm_tis"}, "capabilities": {"pnp": true}}, {"id": "pnp00:05", "class": "system", "claimed": true, "product": "PnP device PNP0c02", "physid": "5", "configuration": {"driver": "system"}, "capabilities": {"pnp": true}}, {"id": "pnp00:06", "class": "system", "claimed": true, "product": "PnP device PNP0c02", "physid": "6", "configuration": {"driver": "system"}, "capabilities": {"pnp": true}}, {"id": "pnp00:07", "class": "system", "claimed": true, "product": "PnP device PNP0c02", "physid": "7", "configuration": {"driver": "system"}, "capabilities": {"pnp": true}}, {"id": "pnp00:08", "class": "system", "claimed": true, "product": "PnP device PNP0c01", "physid": "8", "configuration": {"driver": "system"}, "capabilities": {"pnp": true}}]}, {"id": "sata", "class": "storage", "claimed": true, "handle": "PCI:0000:00:1f.2", "description": "SATA controller", "product": "5 Series/3400 Series Chipset 6 port SATA AHCI Controller", "vendor": "Intel Corporation", "physid": "1f.2", "businfo": "pci@0000:00:1f.2", "logicalname": "scsi0", "version": "05", "width": 32, "clock": 66000000, "configuration": {"driver": "ahci", "latency": "0"}, "capabilities": {"sata": true, "msi": "Message Signalled Interrupts", "pm": "Power Management", "ahci_1.0": true, "bus_master": "bus mastering", "cap_list": "PCI capabilities listing", "emulated": "Emulated device"}, "children": [{"id": "disk", "class": "disk", "claimed": true, "handle": "GUID:5bbb7a29-c0b1-4932-b778-0debd41c4ddd", "description": "ATA Disk", "product": "WDC WDS120G1G0A-", "vendor": "Western Digital", "physid": "0.0.0", "businfo": "scsi@0:0.0.0", "logicalname": "/dev/sda", "dev": "8:0", "version": "1000", "serial": "173586804248", "units": "bytes", "size": 120034123776, "configuration": {"ansiversion": "5", "guid": "5bbb7a29-c0b1-4932-b778-0debd41c4ddd", "logicalsectorsize": "512", "sectorsize": "512"}, "capabilities": {"gpt-1.00": "GUID Partition Table version 1.00", "partitioned": "Partitioned disk", "partitioned:gpt": "GUID partition table"}, "children": [{"id": "volume:0", "class": "volume", "claimed": true, "handle": "GUID:88c96d22-dfef-4cd5-8927-1875751b62d9", "description": "Windows NTFS volume", "vendor": "Windows", "physid": "1", "businfo": "scsi@0:0.0.0,1", "logicalname": "/dev/sda1", "dev": "8:1", "version": "3.1", "serial": "344d-0786", "size": 522190336, "capacity": 523238912, "configuration": {"clustersize": "4096", "created": "2021-12-01 10:43:39", "filesystem": "ntfs", "label": "Recuperaci\u00f3n", "name": "Basic data partition", "state": "clean"}, "capabilities": {"boot": "Contains boot code", "precious": "This partition is required for the platform to function", "nomount": "No automatic mount", "ntfs": "Windows NTFS", "initialized": "initialized volume"}}, {"id": "volume:1", "class": "volume", "claimed": true, "handle": "GUID:dbe36b36-9f56-41b4-a052-c679853b79c8", "description": "Windows FAT volume", "vendor": "MSDOS5.0", "physid": "2", "businfo": "scsi@0:0.0.0,2", "logicalname": "/dev/sda2", "dev": "8:2", "version": "FAT32", "serial": "bc4e-0694", "size": 80479232, "capacity": 104857088, "configuration": {"FATs": "2", "filesystem": "fat", "name": "EFI system partition"}, "capabilities": {"boot": "Contains boot code", "nomount": "No automatic mount", "fat": "Windows FAT", "initialized": "initialized volume"}}, {"id": "volume:2", "class": "volume", "claimed": true, "handle": "GUID:b708cd9b-cafb-47c0-bf86-55c9ac02d912", "description": "reserved partition", "vendor": "Windows", "physid": "3", "businfo": "scsi@0:0.0.0,3", "logicalname": "/dev/sda3", "dev": "8:3", "serial": "b708cd9b-cafb-47c0-bf86-55c9ac02d912", "capacity": 16776704, "configuration": {"name": "Microsoft reserved partition"}, "capabilities": {"nofs": "No filesystem", "nomount": "No automatic mount"}}, {"id": "volume:3", "class": "volume", "claimed": true, "handle": "GUID:0f4f323b-2950-4297-8361-6b206267c304", "description": "Windows NTFS volume", "vendor": "Windows", "physid": "4", "businfo": "scsi@0:0.0.0,4", "logicalname": "/dev/sda4", "dev": "8:4", "version": "3.1", "serial": "34b80ed6-877a-344f-baf1-8a1d9366d79c", "size": 119379328512, "capacity": 119387717120, "configuration": {"clustersize": "4096", "created": "2021-12-01 10:43:58", "filesystem": "ntfs", "name": "Basic data partition", "state": "dirty"}, "capabilities": {"ntfs": "Windows NTFS", "initialized": "initialized volume"}}]}]}]}, {"id": "pci:1", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:3f", "description": "Host bridge", "product": "Core Processor QuickPath Architecture Generic Non-core Registers", "vendor": "Intel Corporation", "physid": "101", "businfo": "pci@0000:3f:00.0", "version": "05", "width": 32, "clock": 33000000}, {"id": "pci:2", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:3f", "description": "Host bridge", "product": "Core Processor QuickPath Architecture System Address Decoder", "vendor": "Intel Corporation", "physid": "102", "businfo": "pci@0000:3f:00.1", "version": "05", "width": 32, "clock": 33000000}, {"id": "pci:3", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:3f", "description": "Host bridge", "product": "Core Processor QPI Link 0", "vendor": "Intel Corporation", "physid": "103", "businfo": "pci@0000:3f:02.0", "version": "05", "width": 32, "clock": 33000000}, {"id": "pci:4", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:3f", "description": "Host bridge", "product": "1st Generation Core i3/5/7 Processor QPI Physical 0", "vendor": "Intel Corporation", "physid": "104", "businfo": "pci@0000:3f:02.1", "version": "05", "width": 32, "clock": 33000000}, {"id": "pci:5", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:3f", "description": "Host bridge", "product": "1st Generation Core i3/5/7 Processor Reserved", "vendor": "Intel Corporation", "physid": "105", "businfo": "pci@0000:3f:02.2", "version": "05", "width": 32, "clock": 33000000}, {"id": "pci:6", "class": "bridge", "claimed": true, "handle": "PCIBUS:0000:3f", "description": "Host bridge", "product": "1st Generation Core i3/5/7 Processor Reserved", "vendor": "Intel Corporation", "physid": "106", "businfo": "pci@0000:3f:02.3", "version": "05", "width": 32, "clock": 33000000}]}, {"id": "power", "class": "power", "product": "High Efficiency", "physid": "1", "units": "mWh", "capacity": 32768}, {"id": "input:0", "class": "input", "claimed": true, "product": "HP WMI hotkeys", "physid": "2", "logicalname": ["input10", "/dev/input/event7"], "capabilities": {"platform": true}}, {"id": "input:1", "class": "input", "claimed": true, "product": "Power Button", "physid": "3", "logicalname": ["input2", "/dev/input/event0"], "capabilities": {"platform": true}}, {"id": "input:2", "class": "input", "claimed": true, "product": "Power Button", "physid": "4", "logicalname": ["input3", "/dev/input/event1"], "capabilities": {"platform": true}}, {"id": "input:3", "class": "input", "claimed": true, "product": "PC Speaker", "physid": "5", "logicalname": ["input9", "/dev/input/event6"], "capabilities": {"isa": "ISA bus"}}]}, "dmidecode": "# dmidecode 3.3\nGetting SMBIOS data from sysfs.\nSMBIOS 2.6 present.\n87 structures occupying 2568 bytes.\nTable at 0x000E9FC0.\n\nHandle 0x0001, DMI type 0, 24 bytes\nBIOS Information\n\tVendor: Hewlett-Packard\n\tVersion: 786H1 v01.05\n\tRelease Date: 06/09/2010\n\tAddress: 0xE0000\n\tRuntime Size: 128 kB\n\tROM Size: 8 MB\n\tCharacteristics:\n\t\tPCI is supported\n\t\tPNP is supported\n\t\tBIOS is upgradeable\n\t\tBIOS shadowing is allowed\n\t\tBoot from CD is supported\n\t\tSelectable boot is supported\n\t\tEDD is supported\n\t\tPrint screen service is supported (int 5h)\n\t\t8042 keyboard services are supported (int 9h)\n\t\tSerial services are supported (int 14h)\n\t\tPrinter services are supported (int 17h)\n\t\tACPI is supported\n\t\tUSB legacy is supported\n\t\tLS-120 boot is supported\n\t\tATAPI Zip drive boot is supported\n\t\tBIOS boot specification is supported\n\t\tFunction key-initiated network boot is supported\n\t\tTargeted content distribution is supported\n\tBIOS Revision: 1.5\n\nHandle 0x0002, DMI type 1, 27 bytes\nSystem Information\n\tManufacturer: Hewlett-Packard\n\tProduct Name: HP Compaq 8100 Elite SFF PC\n\tVersion: \n\tSerial Number: CZC0408YPV\n\tUUID: 7c1daae8-d3c3-11df-bbda-6d814dae6c62\n\tWake-up Type: Power Switch\n\tSKU Number: AY032AV\n\tFamily: 103C_53307F\n\nHandle 0x0003, DMI type 2, 14 bytes\nBase Board Information\n\tManufacturer: Hewlett-Packard\n\tProduct Name: 304Ah\n\tVersion: Not Specified\n\tSerial Number: CZC0408YPV\n\tAsset Tag: CZC0408YPV \n\tFeatures:\n\t\tBoard is a hosting board\n\t\tBoard is removable\n\t\tBoard is replaceable\n\tLocation In Chassis: Not Specified\n\tChassis Handle: 0x0004\n\tType: Motherboard\n\nHandle 0x0004, DMI type 3, 17 bytes\nChassis Information\n\tManufacturer: Hewlett-Packard\n\tType: Low Profile Desktop\n\tLock: Not Present\n\tVersion: Not Specified\n\tSerial Number: CZC0408YPV\n\tAsset Tag: CZC0408YPV\n\tBoot-up State: Safe\n\tPower Supply State: Safe\n\tThermal State: Safe\n\tSecurity Status: Unknown\n\tOEM Information: 0x00000000\n\nHandle 0x0005, DMI type 4, 42 bytes\nProcessor Information\n\tSocket Designation: XU1 PROCESSOR\n\tType: Central Processor\n\tFamily: Core i7\n\tManufacturer: Intel\n\tID: 55 06 02 00 FF FB EB BF\n\tSignature: Type 0, Family 6, Model 37, Stepping 5\n\tFlags:\n\t\tFPU (Floating-point unit on-chip)\n\t\tVME (Virtual mode extension)\n\t\tDE (Debugging extension)\n\t\tPSE (Page size extension)\n\t\tTSC (Time stamp counter)\n\t\tMSR (Model specific registers)\n\t\tPAE (Physical address extension)\n\t\tMCE (Machine check exception)\n\t\tCX8 (CMPXCHG8 instruction supported)\n\t\tAPIC (On-chip APIC hardware supported)\n\t\tSEP (Fast system call)\n\t\tMTRR (Memory type range registers)\n\t\tPGE (Page global enable)\n\t\tMCA (Machine check architecture)\n\t\tCMOV (Conditional move instruction supported)\n\t\tPAT (Page attribute table)\n\t\tPSE-36 (36-bit page size extension)\n\t\tCLFSH (CLFLUSH instruction supported)\n\t\tDS (Debug store)\n\t\tACPI (ACPI supported)\n\t\tMMX (MMX technology supported)\n\t\tFXSR (FXSAVE and FXSTOR instructions supported)\n\t\tSSE (Streaming SIMD extensions)\n\t\tSSE2 (Streaming SIMD extensions 2)\n\t\tSS (Self-snoop)\n\t\tHTT (Multi-threading)\n\t\tTM (Thermal monitor supported)\n\t\tPBE (Pending break enabled)\n\tVersion: Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz\n\tVoltage: 1.2 V\n\tExternal Clock: 133 MHz\n\tMax Speed: 6000 MHz\n\tCurrent Speed: 2933 MHz\n\tStatus: Populated, Enabled\n\tUpgrade: Other\n\tL1 Cache Handle: 0x0006\n\tL2 Cache Handle: 0x0007\n\tL3 Cache Handle: 0x0008\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tCore Count: 2\n\tCore Enabled: 2\n\tThread Count: 4\n\tCharacteristics:\n\t\t64-bit capable\n\nHandle 0x0006, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: L1 Cache\n\tConfiguration: Disabled, Not Socketed, Level 1\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 128 kB\n\tMaximum Size: 128 kB\n\tSupported SRAM Types:\n\t\tBurst\n\tInstalled SRAM Type: Burst\n\tSpeed: Unknown\n\tError Correction Type: Parity\n\tSystem Type: Data\n\tAssociativity: 8-way Set-associative\n\nHandle 0x0007, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: L2 Cache\n\tConfiguration: Disabled, Not Socketed, Level 2\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 512 kB\n\tMaximum Size: 512 kB\n\tSupported SRAM Types:\n\t\tBurst\n\tInstalled SRAM Type: Burst\n\tSpeed: Unknown\n\tError Correction Type: Single-bit ECC\n\tSystem Type: Unified\n\tAssociativity: 8-way Set-associative\n\nHandle 0x0008, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: L3 Cache\n\tConfiguration: Enabled, Not Socketed, Level 3\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 4 MB\n\tMaximum Size: 4 MB\n\tSupported SRAM Types:\n\t\tUnknown\n\tInstalled SRAM Type: Unknown\n\tSpeed: Unknown\n\tError Correction Type: Unknown\n\tSystem Type: Unknown\n\tAssociativity: Unknown\n\nHandle 0x0009, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: SATA0\n\tInternal Connector Type: SAS/SATA Plug Receptacle\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: SATA\n\nHandle 0x000A, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: SATA1\n\tInternal Connector Type: SAS/SATA Plug Receptacle\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: SATA\n\nHandle 0x000B, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: SATA2\n\tInternal Connector Type: SAS/SATA Plug Receptacle\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: SATA\n\nHandle 0x000E, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: ESATA\n\tExternal Connector Type: SAS/SATA Plug Receptacle\n\tPort Type: SATA\n\nHandle 0x000F, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: SERIAL A\n\tInternal Connector Type: None\n\tExternal Reference Designator: COM A\n\tExternal Connector Type: DB-9 male\n\tPort Type: Serial Port 16550A Compatible\n\nHandle 0x0010, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: SERIAL B\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: DB-9 male\n\tPort Type: Serial Port 16550A Compatible\n\nHandle 0x0011, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: PARALLEL\n\tExternal Connector Type: DB-25 female\n\tPort Type: Parallel Port ECP/EPP\n\nHandle 0x0012, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: MEDIA2\n\tInternal Connector Type: 9 Pin Dual Inline (pin 10 cut)\n\tExternal Reference Designator: USB 1\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0013, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: MEDIA2\n\tInternal Connector Type: 9 Pin Dual Inline (pin 10 cut)\n\tExternal Reference Designator: USB 2\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0014, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: MEDIA\n\tInternal Connector Type: 9 Pin Dual Inline (pin 10 cut)\n\tExternal Reference Designator: USB 3\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0015, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: MEDIA\n\tInternal Connector Type: 9 Pin Dual Inline (pin 10 cut)\n\tExternal Reference Designator: USB 4\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0016, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: FRNT USB\n\tInternal Connector Type: 9 Pin Dual Inline (pin 10 cut)\n\tExternal Reference Designator: USB 5\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0017, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: FRNT USB\n\tInternal Connector Type: 9 Pin Dual Inline (pin 10 cut)\n\tExternal Reference Designator: USB 6\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0018, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: FRNT USB2\n\tInternal Connector Type: 9 Pin Dual Inline (pin 10 cut)\n\tExternal Reference Designator: USB 7\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0019, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: FRNT USB2\n\tInternal Connector Type: 9 Pin Dual Inline (pin 10 cut)\n\tExternal Reference Designator: USB 8\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x001A, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 9\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x001B, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 10\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x001C, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 11\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x001D, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 12\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x001E, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 13\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x001F, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: USB 14\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0020, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: KEYBOARD\n\tExternal Connector Type: PS/2\n\tPort Type: Keyboard Port\n\nHandle 0x0021, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: MOUSE\n\tExternal Connector Type: PS/2\n\tPort Type: Mouse Port\n\nHandle 0x0022, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: REAR LINE IN\n\tExternal Connector Type: Mini DIN\n\tPort Type: Audio Port\n\nHandle 0x0023, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: REAR HEADPHONE/LINEOUT\n\tExternal Connector Type: Mini DIN\n\tPort Type: Audio Port\n\nHandle 0x0024, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: FRNT AUD\n\tInternal Connector Type: Other\n\tExternal Reference Designator: FRONT HEADPHONE & MIC\n\tExternal Connector Type: Mini DIN\n\tPort Type: Audio Port\n\nHandle 0x0025, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: VIDEO\n\tExternal Connector Type: DB-15 female\n\tPort Type: Video Port\n\nHandle 0x0027, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: Display Port\n\tExternal Connector Type: Other\n\tPort Type: Video Port\n\nHandle 0x0028, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: Not Specified\n\tInternal Connector Type: None\n\tExternal Reference Designator: RJ45\n\tExternal Connector Type: RJ-45\n\tPort Type: Network Port\n\nHandle 0x0029, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: POWER SUPPLY FAN\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: Other\n\nHandle 0x002A, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: FRONT CHASSIS FAN\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: Other\n\nHandle 0x002C, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: CPU FAN\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: Other\n\nHandle 0x002D, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: SPEAKER (SPKR)\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: Other\n\nHandle 0x002E, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: PASSWORD CLEAR (PSWD)\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: Other\n\nHandle 0x002F, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: HOOD SENSE (HSENSE)\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: Other\n\nHandle 0x0030, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: HOOD LOCK (HLCK)\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: Other\n\nHandle 0x0031, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: POWER BUTTON (PB/LED)\n\tInternal Connector Type: Other\n\tExternal Reference Designator: Not Specified\n\tExternal Connector Type: None\n\tPort Type: Other\n\nHandle 0x0032, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: PCI1\n\tType: 32-bit PCI\n\tCurrent Usage: Available\n\tLength: Long\n\tID: 1\n\tCharacteristics:\n\t\t5.0 V is provided\n\t\t3.3 V is provided\n\t\tPME signal is supported\n\t\tSMBus signal is supported\n\tBus Address: 0000:0d:00.0\n\nHandle 0x0037, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: PCI EXPRESS x1 SLOT 1 (PCIEx1 1)\n\tType: x1 PCI Express 2\n\tCurrent Usage: Available\n\tLength: Long\n\tID: 1\n\tCharacteristics:\n\t\t3.3 V is provided\n\t\tPME signal is supported\n\t\tSMBus signal is supported\n\tBus Address: 0000:18:1c.0\n\nHandle 0x0039, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: PCI EXPRESS x16 SLOT (PCIEx16)\n\tType: x16 PCI Express 2\n\tCurrent Usage: In Use\n\tLength: Long\n\tID: 1\n\tCharacteristics:\n\t\t3.3 V is provided\n\t\tPME signal is supported\n\t\tSMBus signal is supported\n\tBus Address: 0000:01:03.0\n\nHandle 0x003A, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: PCI EXPRESS x16 SLOT 2 (PCIEx16 2)\n\tType: x16 PCI Express 2 x16\n\tCurrent Usage: Available\n\tLength: Long\n\tID: 1\n\tCharacteristics:\n\t\t3.3 V is provided\n\t\tPME signal is supported\n\t\tSMBus signal is supported\n\tBus Address: 0000:24:1c.0\n\nHandle 0x003B, DMI type 11, 5 bytes\nOEM Strings\n\tString 1: ABS 70/71 60 61 62 63\n\nHandle 0x003C, DMI type 13, 22 bytes\nBIOS Language Information\n\tLanguage Description Format: Long\n\tInstallable Languages: 1\n\t\ten|US|iso8859-1\n\tCurrently Installed Language: en|US|iso8859-1\n\nHandle 0x003D, DMI type 16, 15 bytes\nPhysical Memory Array\n\tLocation: System Board Or Motherboard\n\tUse: System Memory\n\tError Correction Type: None\n\tMaximum Capacity: 16 GB\n\tError Information Handle: Not Provided\n\tNumber Of Devices: 4\n\nHandle 0x003E, DMI type 16, 15 bytes\nPhysical Memory Array\n\tLocation: System Board Or Motherboard\n\tUse: Flash Memory\n\tError Correction Type: None\n\tMaximum Capacity: 4 MB\n\tError Information Handle: Not Provided\n\tNumber Of Devices: 1\n\nHandle 0x003F, DMI type 17, 28 bytes\nMemory Device\n\tArray Handle: 0x003D\n\tError Information Handle: Not Provided\n\tTotal Width: 64 bits\n\tData Width: 64 bits\n\tSize: 2 GB\n\tForm Factor: DIMM\n\tSet: 1\n\tLocator: XMM1\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1333 MT/s\n\tManufacturer: JEDEC ID:80 2C\n\tSerial Number: A4482E29\n\tAsset Tag: Not Specified\n\tPart Number: 16JTF25664AZ-1G4F\n\tRank: 2\n\nHandle 0x0040, DMI type 17, 28 bytes\nMemory Device\n\tArray Handle: 0x003D\n\tError Information Handle: Not Provided\n\tTotal Width: 64 bits\n\tData Width: 64 bits\n\tSize: 2 GB\n\tForm Factor: DIMM\n\tSet: 1\n\tLocator: XMM2\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1333 MT/s\n\tManufacturer: JEDEC ID:80 2C\n\tSerial Number: 92072F30\n\tAsset Tag: Not Specified\n\tPart Number: 16JTF25664AZ-1G4F\n\tRank: 2\n\nHandle 0x0041, DMI type 17, 28 bytes\nMemory Device\n\tArray Handle: 0x003D\n\tError Information Handle: Not Provided\n\tTotal Width: 64 bits\n\tData Width: 64 bits\n\tSize: 2 GB\n\tForm Factor: DIMM\n\tSet: 2\n\tLocator: XMM3\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1333 MT/s\n\tManufacturer: JEDEC ID:80 2C\n\tSerial Number: 939E2E29\n\tAsset Tag: Not Specified\n\tPart Number: 16JTF25664AZ-1G4F\n\tRank: 2\n\nHandle 0x0042, DMI type 17, 28 bytes\nMemory Device\n\tArray Handle: 0x003D\n\tError Information Handle: Not Provided\n\tTotal Width: 64 bits\n\tData Width: 64 bits\n\tSize: 2 GB\n\tForm Factor: DIMM\n\tSet: 2\n\tLocator: XMM4\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1333 MT/s\n\tManufacturer: JEDEC ID:80 2C\n\tSerial Number: 48FD2E30\n\tAsset Tag: Not Specified\n\tPart Number: 16JTF25664AZ-1G4F\n\tRank: 2\n\nHandle 0x0044, DMI type 17, 28 bytes\nMemory Device\n\tArray Handle: 0x003E\n\tError Information Handle: Not Provided\n\tTotal Width: 2 bits\n\tData Width: 2 bits\n\tSize: 4 MB\n\tForm Factor: Chip\n\tSet: None\n\tLocator: SYSTEM ROM\n\tBank Locator: Not Specified\n\tType: Flash\n\tType Detail: Non-Volatile\n\tSpeed: Unknown\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: Unknown\n\nHandle 0x0045, DMI type 19, 15 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x00000000000\n\tEnding Address: 0x000DFFFFFFF\n\tRange Size: 3584 MB\n\tPhysical Array Handle: 0x003D\n\tPartition Width: 1\n\nHandle 0x0046, DMI type 19, 15 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x00100000000\n\tEnding Address: 0x0021BFFFFFF\n\tRange Size: 4544 MB\n\tPhysical Array Handle: 0x003D\n\tPartition Width: 2\n\nHandle 0x0047, DMI type 19, 15 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x000FF800000\n\tEnding Address: 0x000FFFFFFFF\n\tRange Size: 8 MB\n\tPhysical Array Handle: 0x003E\n\tPartition Width: 1\n\nHandle 0x0048, DMI type 20, 19 bytes\nMemory Device Mapped Address\n\tStarting Address: 0x00000000000\n\tEnding Address: 0x000FFFFFFFF\n\tRange Size: 4 GB\n\tPhysical Device Handle: 0x003F\n\tMemory Array Mapped Address Handle: 0x0045\n\tPartition Row Position: 1\n\tInterleave Position: 1\n\tInterleaved Data Depth: 2\n\nHandle 0x0049, DMI type 20, 19 bytes\nMemory Device Mapped Address\n\tStarting Address: 0x00100000000\n\tEnding Address: 0x001FFFFFFFF\n\tRange Size: 4 GB\n\tPhysical Device Handle: 0x0040\n\tMemory Array Mapped Address Handle: 0x0045\n\tPartition Row Position: 1\n\tInterleave Position: 1\n\tInterleaved Data Depth: 2\n\nHandle 0x004A, DMI type 20, 19 bytes\nMemory Device Mapped Address\n\tStarting Address: 0x00000000000\n\tEnding Address: 0x000FFFFFFFF\n\tRange Size: 4 GB\n\tPhysical Device Handle: 0x0041\n\tMemory Array Mapped Address Handle: 0x0045\n\tPartition Row Position: 1\n\tInterleave Position: 2\n\tInterleaved Data Depth: 2\n\nHandle 0x004B, DMI type 20, 19 bytes\nMemory Device Mapped Address\n\tStarting Address: 0x00100000000\n\tEnding Address: 0x001FFFFFFFF\n\tRange Size: 4 GB\n\tPhysical Device Handle: 0x0042\n\tMemory Array Mapped Address Handle: 0x0045\n\tPartition Row Position: 1\n\tInterleave Position: 2\n\tInterleaved Data Depth: 2\n\nHandle 0x0050, DMI type 20, 19 bytes\nMemory Device Mapped Address\n\tStarting Address: 0x000FF800000\n\tEnding Address: 0x000FFFFFFFF\n\tRange Size: 8 MB\n\tPhysical Device Handle: 0x0044\n\tMemory Array Mapped Address Handle: 0x0047\n\tPartition Row Position: 1\n\nHandle 0x0051, DMI type 24, 5 bytes\nHardware Security\n\tPower-On Password Status: Disabled\n\tKeyboard Password Status: Not Implemented\n\tAdministrator Password Status: Disabled\n\tFront Panel Reset Status: Not Implemented\n\nHandle 0x0052, DMI type 32, 11 bytes\nSystem Boot Information\n\tStatus: No errors detected\n\nHandle 0x0053, DMI type 27, 14 bytes\nCooling Device\n\tType: Cabinet Fan\n\tStatus: OK\n\tOEM-specific Information: 0x00000000\n\tNominal Speed: Unknown Or Non-rotating\n\nHandle 0x0054, DMI type 27, 14 bytes\nCooling Device\n\tType: Chip Fan\n\tStatus: OK\n\tOEM-specific Information: 0x00000000\n\tNominal Speed: Unknown Or Non-rotating\n\nHandle 0x0055, DMI type 153, 19 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t99 13 55 00 7F 04 1B 01 00 02 00 53 00 01 04 07\n\t\t01 04 00\n\nHandle 0x0058, DMI type 27, 14 bytes\nCooling Device\n\tType: Power Supply Fan\n\tStatus: OK\n\tOEM-specific Information: 0x00000000\n\tNominal Speed: Unknown Or Non-rotating\n\nHandle 0x0059, DMI type 153, 19 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t99 13 59 00 7F 04 1B 01 00 01 00 58 00 01 04 03\n\t\t01 04 00\n\nHandle 0x005A, DMI type 28, 22 bytes\nTemperature Probe\n\tDescription: Chassis Temperature\n\tLocation: Motherboard\n\tStatus: OK\n\tMaximum Value: Unknown\n\tMinimum Value: Unknown\n\tResolution: 0.100 deg C\n\tTolerance: Unknown\n\tAccuracy: Unknown\n\tOEM-specific Information: 0x00000000\n\tNominal Value: Unknown\n\nHandle 0x005B, DMI type 153, 19 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t99 13 5B 00 7F 01 1C 01 00 03 00 5A 00 01 04 07\n\t\t01 04 00\n\nHandle 0x005C, DMI type 28, 22 bytes\nTemperature Probe\n\tDescription: CPU Temperature\n\tLocation: Processor\n\tStatus: OK\n\tMaximum Value: Unknown\n\tMinimum Value: Unknown\n\tResolution: 0.100 deg C\n\tTolerance: Unknown\n\tAccuracy: Unknown\n\tOEM-specific Information: 0x00000000\n\tNominal Value: Unknown\n\nHandle 0x005D, DMI type 153, 19 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t99 13 5D 00 7F 01 1C 01 00 04 00 5C 00 01 04 03\n\t\t01 05 00\n\nHandle 0x005E, DMI type 39, 22 bytes\nSystem Power Supply\n\tLocation: Not Specified\n\tName: Not Specified\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tModel Part Number: High Efficiency\n\tRevision: Not Specified\n\tMax Power Capacity: Unknown\n\tStatus: Present, Unknown\n\tType: Unknown\n\tInput Voltage Range Switching: Unknown\n\tPlugged: Yes\n\tHot Replaceable: No\n\tCooling Device Handle: 0x0058\n\nHandle 0x005F, DMI type 129, 8 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t81 08 5F 00 01 01 02 00\n\tStrings:\n\t\tIntel_ASF\n\t\tIntel_ASF_001\n\nHandle 0x0060, DMI type 130, 20 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t82 14 60 00 24 41 4D 54 00 01 01 01 00 A5 9B 02\n\t\t00 00 00 00\n\nHandle 0x0061, DMI type 131, 64 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t83 40 61 00 31 00 00 00 00 00 00 00 00 00 00 00\n\t\tF8 00 0A 3B FF FF FF FF 11 00 00 00 00 00 06 00\n\t\tAB 04 03 00 00 00 00 00 C8 00 EF 10 00 00 00 00\n\t\t00 00 00 00 36 00 00 00 76 50 72 6F 00 00 00 00\n\nHandle 0x0062, DMI type 136, 6 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t88 06 62 00 5A 5A\n\nHandle 0x0063, DMI type 137, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\t89 0C 63 00 01 02 F0 03 F0 FF 01 02\n\tStrings:\n\t\tHewlett-Packard\n\t\t_ucode_\n\nHandle 0x0065, DMI type 197, 10 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC5 0A 65 00 05 00 00 01 FF 01\n\nHandle 0x0066, DMI type 207, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCF 09 66 00 00 00 00 24 00\n\nHandle 0x0067, DMI type 208, 5 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tD0 05 67 00 01\n\nHandle 0x0068, DMI type 127, 4 bytes\nEnd Of Table\n\n", "lspci": "00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 02)\n\tSubsystem: Hewlett-Packard Company Core Processor DRAM Controller\n\tControl: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-\n\tStatus: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
SERR- \n\n00:01.0 PCI bridge: Intel Corporation Core Processor PCI Express x16 Root Port (rev 02) (prog-if 00 [Normal decode])\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+\n\tStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B-\n\t\tPriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-\n\tCapabilities: [88] Subsystem: Hewlett-Packard Company Core Processor PCI Express x16 Root Port\n\tCapabilities: [80] Power Management version 3\n\t\tFlags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)\n\t\tStatus: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-\n\tCapabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-\n\t\tAddress: fee04004 Data: 4021\n\tCapabilities: [a0] Express (v2) Root Port (Slot+), MSI 00\n\t\tDevCap:\tMaxPayload 128 bytes, PhantFunc 0\n\t\t\tExtTag- RBE+\n\t\tDevCtl:\tCorrErr- NonFatalErr- FatalErr- UnsupReq-\n\t\t\tRlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-\n\t\t\tMaxPayload 128 bytes, MaxReadReq 128 bytes\n\t\tDevSta:\tCorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-\n\t\tLnkCap:\tPort #2, Speed 5GT/s, Width x16, ASPM L0s, Exit Latency L0s <256ns\n\t\t\tClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp-\n\t\tLnkCtl:\tASPM Disabled; RCB 64 bytes, Disabled- CommClk+\n\t\t\tExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-\n\t\tLnkSta:\tSpeed 2.5GT/s (downgraded), Width x16 (ok)\n\t\t\tTrErr- Train- SlotClk+ DLActive- BWMgmt+ ABWMgmt-\n\t\tSltCap:\tAttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-\n\t\t\tSlot #0, PowerLimit 0.000W; Interlock- NoCompl+\n\t\tSltCtl:\tEnable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-\n\t\t\tControl: AttnInd Unknown, PwrInd Unknown, Power- Interlock-\n\t\tSltSta:\tStatus: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-\n\t\t\tChanged: MRL- PresDet+ LinkState-\n\t\tRootCap: CRSVisible-\n\t\tRootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-\n\t\tRootSta: PME ReqID 0000, PMEStatus- PMEPending-\n\t\tDevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR-\n\t\t\t 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-\n\t\t\t EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-\n\t\t\t FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-\n\t\t\t AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-\n\t\tDevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- OBFF Disabled, ARIFwd-\n\t\t\t AtomicOpsCtl: ReqEn- EgressBlck-\n\t\tLnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-\n\t\t\t Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-\n\t\t\t Compliance De-emphasis: -6dB\n\t\tLnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-\n\t\t\t EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-\n\t\t\t Retimer- 2Retimers- CrosslinkRes: unsupported\n\tCapabilities: [100 v1] Virtual Channel\n\t\tCaps:\tLPEVC=0 RefClk=100ns PATEntryBits=1\n\t\tArb:\tFixed- WRR32- WRR64- WRR128-\n\t\tCtrl:\tArbSelect=Fixed\n\t\tStatus:\tInProgress-\n\t\tVC0:\tCaps:\tPATOffset=00 MaxTimeSlots=1 RejSnoopTrans-\n\t\t\tArb:\tFixed+ WRR32- WRR64- WRR128- TWRR128- WRR256-\n\t\t\tCtrl:\tEnable+ ID=0 ArbSelect=Fixed TC/VC=01\n\t\t\tStatus:\tNegoPending- InProgress-\n\tKernel driver in use: pcieport\n\n00:16.0 Communication controller: Intel Corporation 5 Series/3400 Series Chipset HECI Controller (rev 06)\n\tSubsystem: Hewlett-Packard Company 5 Series/3400 Series Chipset HECI Controller\n\tControl: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+\n\tStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B-\n\t\tPriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-\n\tCapabilities: [40] Express (v2) Root Port (Slot+), MSI 00\n\t\tDevCap:\tMaxPayload 128 bytes, PhantFunc 0\n\t\t\tExtTag- RBE+\n\t\tDevCtl:\tCorrErr- NonFatalErr- FatalErr- UnsupReq-\n\t\t\tRlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-\n\t\t\tMaxPayload 128 bytes, MaxReadReq 128 bytes\n\t\tDevSta:\tCorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-\n\t\tLnkCap:\tPort #1, Speed 2.5GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <1us, L1 <4us\n\t\t\tClockPM- Surprise- LLActRep+ BwNot- ASPMOptComp-\n\t\tLnkCtl:\tASPM Disabled; RCB 64 bytes, Disabled- CommClk-\n\t\t\tExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-\n\t\tLnkSta:\tSpeed 2.5GT/s (ok), Width x0 (downgraded)\n\t\t\tTrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-\n\t\tSltCap:\tAttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+\n\t\t\tSlot #0, PowerLimit 0.000W; Interlock- NoCompl+\n\t\tSltCtl:\tEnable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-\n\t\t\tControl: AttnInd Unknown, PwrInd Unknown, Power- Interlock-\n\t\tSltSta:\tStatus: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-\n\t\t\tChanged: MRL- PresDet- LinkState-\n\t\tRootCap: CRSVisible-\n\t\tRootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-\n\t\tRootSta: PME ReqID 0000, PMEStatus- PMEPending-\n\t\tDevCap2: Completion Timeout: Range BC, TimeoutDis+ NROPrPrP- LTR-\n\t\t\t 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-\n\t\t\t EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-\n\t\t\t FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-\n\t\t\t AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-\n\t\tDevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- OBFF Disabled, ARIFwd-\n\t\t\t AtomicOpsCtl: ReqEn- EgressBlck-\n\t\tLnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-\n\t\t\t Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-\n\t\t\t Compliance De-emphasis: -6dB\n\t\tLnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-\n\t\t\t EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-\n\t\t\t Retimer- 2Retimers- CrosslinkRes: unsupported\n\tCapabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-\n\t\tAddress: 00000000 Data: 0000\n\tCapabilities: [90] Subsystem: Hewlett-Packard Company 5 Series/3400 Series Chipset PCI Express Root Port 1\n\tCapabilities: [a0] Power Management version 2\n\t\tFlags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)\n\t\tStatus: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-\n\tKernel driver in use: pcieport\n\n00:1c.4 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 5 (rev 05) (prog-if 00 [Normal decode])\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-\n\tStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B-\n\t\tPriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-\n\tCapabilities: [40] Express (v2) Root Port (Slot+), MSI 00\n\t\tDevCap:\tMaxPayload 128 bytes, PhantFunc 0\n\t\t\tExtTag- RBE+\n\t\tDevCtl:\tCorrErr- NonFatalErr- FatalErr- UnsupReq-\n\t\t\tRlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-\n\t\t\tMaxPayload 128 bytes, MaxReadReq 128 bytes\n\t\tDevSta:\tCorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-\n\t\tLnkCap:\tPort #5, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <4us\n\t\t\tClockPM- Surprise- LLActRep+ BwNot- ASPMOptComp-\n\t\tLnkCtl:\tASPM Disabled; RCB 64 bytes, Disabled- CommClk-\n\t\t\tExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-\n\t\tLnkSta:\tSpeed 2.5GT/s (ok), Width x0 (downgraded)\n\t\t\tTrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-\n\t\tSltCap:\tAttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+\n\t\t\tSlot #0, PowerLimit 0.000W; Interlock- NoCompl+\n\t\tSltCtl:\tEnable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-\n\t\t\tControl: AttnInd Unknown, PwrInd Unknown, Power- Interlock-\n\t\tSltSta:\tStatus: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-\n\t\t\tChanged: MRL- PresDet- LinkState-\n\t\tRootCap: CRSVisible-\n\t\tRootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-\n\t\tRootSta: PME ReqID 0000, PMEStatus- PMEPending-\n\t\tDevCap2: Completion Timeout: Range BC, TimeoutDis+ NROPrPrP- LTR-\n\t\t\t 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-\n\t\t\t EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-\n\t\t\t FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-\n\t\t\t AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-\n\t\tDevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- OBFF Disabled, ARIFwd-\n\t\t\t AtomicOpsCtl: ReqEn- EgressBlck-\n\t\tLnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-\n\t\t\t Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-\n\t\t\t Compliance De-emphasis: -6dB\n\t\tLnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-\n\t\t\t EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-\n\t\t\t Retimer- 2Retimers- CrosslinkRes: unsupported\n\tCapabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-\n\t\tAddress: 00000000 Data: 0000\n\tCapabilities: [90] Subsystem: Hewlett-Packard Company 5 Series/3400 Series Chipset PCI Express Root Port 5\n\tCapabilities: [a0] Power Management version 2\n\t\tFlags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)\n\t\tStatus: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-\n\tKernel driver in use: pcieport\n\n00:1c.6 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 7 (rev 05) (prog-if 00 [Normal decode])\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-\n\tStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B-\n\t\tPriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-\n\tCapabilities: [40] Express (v2) Root Port (Slot+), MSI 00\n\t\tDevCap:\tMaxPayload 128 bytes, PhantFunc 0\n\t\t\tExtTag- RBE+\n\t\tDevCtl:\tCorrErr- NonFatalErr- FatalErr- UnsupReq-\n\t\t\tRlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-\n\t\t\tMaxPayload 128 bytes, MaxReadReq 128 bytes\n\t\tDevSta:\tCorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-\n\t\tLnkCap:\tPort #7, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <4us\n\t\t\tClockPM- Surprise- LLActRep+ BwNot- ASPMOptComp-\n\t\tLnkCtl:\tASPM Disabled; RCB 64 bytes, Disabled- CommClk-\n\t\t\tExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-\n\t\tLnkSta:\tSpeed 2.5GT/s (ok), Width x0 (downgraded)\n\t\t\tTrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-\n\t\tSltCap:\tAttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+\n\t\t\tSlot #0, PowerLimit 0.000W; Interlock- NoCompl+\n\t\tSltCtl:\tEnable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-\n\t\t\tControl: AttnInd Unknown, PwrInd Unknown, Power- Interlock-\n\t\tSltSta:\tStatus: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-\n\t\t\tChanged: MRL- PresDet- LinkState-\n\t\tRootCap: CRSVisible-\n\t\tRootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-\n\t\tRootSta: PME ReqID 0000, PMEStatus- PMEPending-\n\t\tDevCap2: Completion Timeout: Range BC, TimeoutDis+ NROPrPrP- LTR-\n\t\t\t 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-\n\t\t\t EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-\n\t\t\t FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-\n\t\t\t AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-\n\t\tDevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- OBFF Disabled, ARIFwd-\n\t\t\t AtomicOpsCtl: ReqEn- EgressBlck-\n\t\tLnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-\n\t\t\t Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-\n\t\t\t Compliance De-emphasis: -6dB\n\t\tLnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-\n\t\t\t EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-\n\t\t\t Retimer- 2Retimers- CrosslinkRes: unsupported\n\tCapabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-\n\t\tAddress: 00000000 Data: 0000\n\tCapabilities: [90] Subsystem: Hewlett-Packard Company 5 Series/3400 Series Chipset PCI Express Root Port 7\n\tCapabilities: [a0] Power Management version 2\n\t\tFlags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)\n\t\tStatus: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-\n\tKernel driver in use: pcieport\n\n00:1d.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 05) (prog-if 20 [EHCI])\n\tSubsystem: Hewlett-Packard Company 5 Series/3400 Series Chipset USB2 Enhanced Host Controller\n\tControl: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-\n\tStatus: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B-\n\t\tPriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-\n\tCapabilities: [50] Subsystem: Hewlett-Packard Company 82801 PCI Bridge\n\n00:1f.0 ISA bridge: Intel Corporation Q57 Chipset LPC Interface Controller (rev 05)\n\tSubsystem: Hewlett-Packard Company Q57 Chipset LPC Interface Controller\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-\n\tStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR- \n\tKernel driver in use: lpc_ich\n\tKernel modules: lpc_ich\n\n00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series Chipset 6 port SATA AHCI Controller (rev 05) (prog-if 01 [AHCI 1.0])\n\tSubsystem: Hewlett-Packard Company 5 Series/3400 Series Chipset 6 port SATA AHCI Controller\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+\n\tStatus: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- \n\tCapabilities: [420 v2] Advanced Error Reporting\n\t\tUESta:\tDLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-\n\t\tUEMsk:\tDLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-\n\t\tUESvrt:\tDLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-\n\t\tCESta:\tRxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+\n\t\tCEMsk:\tRxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+\n\t\tAERCap:\tFirst Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-\n\t\t\tMultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-\n\t\tHeaderLog: 00000000 00000000 00000000 00000000\n\tCapabilities: [600 v1] Vendor Specific Information: ID=0001 Rev=1 Len=024 >\n\tCapabilities: [900 v1] Secondary PCI Express\n\t\tLnkCtl3: LnkEquIntrruptEn- PerformEqu-\n\t\tLaneErrStat: 0\n\tKernel driver in use: nouveau\n\tKernel modules: nouveau\n\n01:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)\n\tSubsystem: Micro-Star International Co., Ltd. [MSI] GP107GL High Definition Audio Controller\n\tPhysical Slot: 1\n\tControl: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-\n\tStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- \n\n00:02.0 VGA compatible controller: Intel Corporation Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller (prog-if 00 [VGA controller])\n\tSubsystem: Acer Incorporated [ALI] Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-\n\tStatus: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B-\n\t\tPriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-\n\tCapabilities: [40] Express (v1) Root Port (Slot+), MSI 00\n\t\tDevCap:\tMaxPayload 128 bytes, PhantFunc 0\n\t\t\tExtTag- RBE-\n\t\tDevCtl:\tCorrErr- NonFatalErr- FatalErr- UnsupReq-\n\t\t\tRlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-\n\t\t\tMaxPayload 128 bytes, MaxReadReq 128 bytes\n\t\tDevSta:\tCorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-\n\t\tLnkCap:\tPort #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <256ns, L1 <4us\n\t\t\tClockPM- Surprise- LLActRep+ BwNot- ASPMOptComp-\n\t\tLnkCtl:\tASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+\n\t\t\tExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-\n\t\tLnkSta:\tSpeed 2.5GT/s (ok), Width x1 (ok)\n\t\t\tTrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-\n\t\tSltCap:\tAttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+\n\t\t\tSlot #0, PowerLimit 6.500W; Interlock- NoCompl-\n\t\tSltCtl:\tEnable: AttnBtn+ PwrFlt- MRL- PresDet+ CmdCplt- HPIrq- LinkChg-\n\t\t\tControl: AttnInd Unknown, PwrInd Unknown, Power- Interlock-\n\t\tSltSta:\tStatus: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-\n\t\t\tChanged: MRL- PresDet- LinkState-\n\t\tRootCap: CRSVisible-\n\t\tRootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-\n\t\tRootSta: PME ReqID 0000, PMEStatus- PMEPending-\n\tCapabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-\n\t\tAddress: fee01004 Data: 4021\n\tCapabilities: [90] Subsystem: Acer Incorporated [ALI] NM10/ICH7 Family PCI Express Port 1\n\tCapabilities: [a0] Power Management version 2\n\t\tFlags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)\n\t\tStatus: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-\n\tCapabilities: [100 v1] Virtual Channel\n\t\tCaps:\tLPEVC=0 RefClk=100ns PATEntryBits=1\n\t\tArb:\tFixed+ WRR32- WRR64- WRR128-\n\t\tCtrl:\tArbSelect=Fixed\n\t\tStatus:\tInProgress-\n\t\tVC0:\tCaps:\tPATOffset=00 MaxTimeSlots=1 RejSnoopTrans-\n\t\t\tArb:\tFixed+ WRR32- WRR64- WRR128- TWRR128- WRR256-\n\t\t\tCtrl:\tEnable+ ID=0 ArbSelect=Fixed TC/VC=01\n\t\t\tStatus:\tNegoPending- InProgress-\n\t\tVC1:\tCaps:\tPATOffset=00 MaxTimeSlots=1 RejSnoopTrans-\n\t\t\tArb:\tFixed+ WRR32- WRR64- WRR128- TWRR128- WRR256-\n\t\t\tCtrl:\tEnable- ID=0 ArbSelect=Fixed TC/VC=00\n\t\t\tStatus:\tNegoPending- InProgress-\n\tCapabilities: [180 v1] Root Complex Link\n\t\tDesc:\tPortNumber=01 ComponentID=02 EltType=Config\n\t\tLink0:\tDesc:\tTargetPort=00 TargetComponent=02 AssocRCRB- LinkType=MemMapped LinkValid+\n\t\t\tAddr:\t00000000fed1c001\n\tKernel driver in use: pcieport\n\n00:1c.1 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 2 (rev 02) (prog-if 00 [Normal decode])\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+\n\tStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B-\n\t\tPriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-\n\tCapabilities: [40] Express (v1) Root Port (Slot+), MSI 00\n\t\tDevCap:\tMaxPayload 128 bytes, PhantFunc 0\n\t\t\tExtTag- RBE-\n\t\tDevCtl:\tCorrErr- NonFatalErr- FatalErr- UnsupReq-\n\t\t\tRlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-\n\t\t\tMaxPayload 128 bytes, MaxReadReq 128 bytes\n\t\tDevSta:\tCorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-\n\t\tLnkCap:\tPort #2, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <256ns, L1 <4us\n\t\t\tClockPM- Surprise- LLActRep+ BwNot- ASPMOptComp-\n\t\tLnkCtl:\tASPM Disabled; RCB 64 bytes, Disabled- CommClk+\n\t\t\tExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-\n\t\tLnkSta:\tSpeed 2.5GT/s (ok), Width x1 (ok)\n\t\t\tTrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-\n\t\tSltCap:\tAttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+\n\t\t\tSlot #1, PowerLimit 6.500W; Interlock- NoCompl-\n\t\tSltCtl:\tEnable: AttnBtn+ PwrFlt- MRL- PresDet+ CmdCplt- HPIrq- LinkChg-\n\t\t\tControl: AttnInd Unknown, PwrInd Unknown, Power- Interlock-\n\t\tSltSta:\tStatus: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-\n\t\t\tChanged: MRL- PresDet- LinkState-\n\t\tRootCap: CRSVisible-\n\t\tRootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-\n\t\tRootSta: PME ReqID 0000, PMEStatus- PMEPending-\n\tCapabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-\n\t\tAddress: fee02004 Data: 4022\n\tCapabilities: [90] Subsystem: Acer Incorporated [ALI] NM10/ICH7 Family PCI Express Port 2\n\tCapabilities: [a0] Power Management version 2\n\t\tFlags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)\n\t\tStatus: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-\n\tCapabilities: [100 v1] Virtual Channel\n\t\tCaps:\tLPEVC=0 RefClk=100ns PATEntryBits=1\n\t\tArb:\tFixed+ WRR32- WRR64- WRR128-\n\t\tCtrl:\tArbSelect=Fixed\n\t\tStatus:\tInProgress-\n\t\tVC0:\tCaps:\tPATOffset=00 MaxTimeSlots=1 RejSnoopTrans-\n\t\t\tArb:\tFixed+ WRR32- WRR64- WRR128- TWRR128- WRR256-\n\t\t\tCtrl:\tEnable+ ID=0 ArbSelect=Fixed TC/VC=01\n\t\t\tStatus:\tNegoPending- InProgress-\n\t\tVC1:\tCaps:\tPATOffset=00 MaxTimeSlots=1 RejSnoopTrans-\n\t\t\tArb:\tFixed+ WRR32- WRR64- WRR128- TWRR128- WRR256-\n\t\t\tCtrl:\tEnable- ID=0 ArbSelect=Fixed TC/VC=00\n\t\t\tStatus:\tNegoPending- InProgress-\n\tCapabilities: [180 v1] Root Complex Link\n\t\tDesc:\tPortNumber=02 ComponentID=02 EltType=Config\n\t\tLink0:\tDesc:\tTargetPort=00 TargetComponent=02 AssocRCRB- LinkType=MemMapped LinkValid+\n\t\t\tAddr:\t00000000fed1c001\n\tKernel driver in use: pcieport\n\n00:1d.0 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #1 (rev 02) (prog-if 00 [UHCI])\n\tSubsystem: Acer Incorporated [ALI] NM10/ICH7 Family USB UHCI Controller\n\tControl: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-\n\tStatus: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B-\n\t\tPriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-\n\tCapabilities: [50] Subsystem: Acer Incorporated [ALI] 82801 Mobile PCI Bridge\n\n00:1f.0 ISA bridge: Intel Corporation NM10 Family LPC Controller (rev 02)\n\tSubsystem: Acer Incorporated [ALI] NM10 Family LPC Controller\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-\n\tStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR- \n\tKernel modules: lpc_ich\n\n00:1f.2 SATA controller: Intel Corporation NM10/ICH7 Family SATA Controller [AHCI mode] (rev 02) (prog-if 01 [AHCI 1.0])\n\tSubsystem: Acer Incorporated [ALI] NM10/ICH7 Family SATA Controller [AHCI mode]\n\tControl: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+\n\tStatus: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- '):
+ with pytest.raises(
+ TypeError,
+ message='EraseBasic.device must be a DataStorage '
+ 'but you passed ',
+ ):
models.EraseBasic(
- device=GraphicCard(serial_number='foo', manufacturer='bar', model='foo-bar'),
+ device=GraphicCard(
+ serial_number='foo', manufacturer='bar', model='foo-bar'
+ ),
clean_with_zeros=True,
- **conftest.T
+ **conftest.T,
)
@@ -89,13 +100,15 @@ def test_validate_device_data_storage():
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_erase_sectors_steps_erasure_standards_hmg_is5():
erasure = models.EraseSectors(
- device=SolidStateDrive(serial_number='foo', manufacturer='bar', model='foo-bar'),
+ device=SolidStateDrive(
+ serial_number='foo', manufacturer='bar', model='foo-bar'
+ ),
steps=[
models.StepZero(**conftest.T),
models.StepRandom(**conftest.T),
- models.StepRandom(**conftest.T)
+ models.StepRandom(**conftest.T),
],
- **conftest.T
+ **conftest.T,
)
db.session.add(erasure)
db.session.commit()
@@ -118,7 +131,7 @@ def test_test_data_storage_working():
elapsed=timedelta(minutes=25),
length=TestDataStorageLength.Short,
status=':-(',
- lifetime=timedelta(days=120)
+ lifetime=timedelta(days=120),
)
db.session.add(test)
db.session.flush()
@@ -132,7 +145,7 @@ def test_test_data_storage_working():
elapsed=timedelta(minutes=25),
length=TestDataStorageLength.Short,
status=':-(',
- lifetime=timedelta(days=120)
+ lifetime=timedelta(days=120),
)
db.session.add(test2)
db.session.flush()
@@ -144,9 +157,9 @@ def test_test_data_storage_working():
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_install():
hdd = HardDrive(serial_number='sn')
- install = models.Install(name='LinuxMint 18.04 es',
- elapsed=timedelta(seconds=25),
- device=hdd)
+ install = models.Install(
+ name='LinuxMint 18.04 es', elapsed=timedelta(seconds=25), device=hdd
+ )
db.session.add(install)
db.session.commit()
@@ -154,10 +167,12 @@ def test_install():
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_update_components_action_one():
- computer = Desktop(serial_number='sn1',
- model='ml1',
- manufacturer='mr1',
- chassis=ComputerChassis.Tower)
+ computer = Desktop(
+ serial_number='sn1',
+ model='ml1',
+ manufacturer='mr1',
+ chassis=ComputerChassis.Tower,
+ )
hdd = HardDrive(serial_number='foo', manufacturer='bar', model='foo-bar')
computer.components.add(hdd)
@@ -183,10 +198,12 @@ def test_update_components_action_one():
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_update_components_action_multiple():
- computer = Desktop(serial_number='sn1',
- model='ml1',
- manufacturer='mr1',
- chassis=ComputerChassis.Tower)
+ computer = Desktop(
+ serial_number='sn1',
+ model='ml1',
+ manufacturer='mr1',
+ chassis=ComputerChassis.Tower,
+ )
hdd = HardDrive(serial_number='foo', manufacturer='bar', model='foo-bar')
computer.components.add(hdd)
@@ -213,10 +230,12 @@ def test_update_components_action_multiple():
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_update_parent():
- computer = Desktop(serial_number='sn1',
- model='ml1',
- manufacturer='mr1',
- chassis=ComputerChassis.Tower)
+ computer = Desktop(
+ serial_number='sn1',
+ model='ml1',
+ manufacturer='mr1',
+ chassis=ComputerChassis.Tower,
+ )
hdd = HardDrive(serial_number='foo', manufacturer='bar', model='foo-bar')
computer.components.add(hdd)
@@ -232,17 +251,21 @@ def test_update_parent():
@pytest.mark.mvp
-@pytest.mark.parametrize('action_model_state',
- (pytest.param(ams, id=ams[0].__class__.__name__)
- for ams in [
- (models.ToRepair, states.Physical.ToBeRepaired),
- (models.Repair, states.Physical.Repaired),
- (models.ToPrepare, states.Physical.Preparing),
- (models.Ready, states.Physical.Ready),
- (models.Prepare, states.Physical.Prepared)
- ]))
-def test_generic_action(action_model_state: Tuple[models.Action, states.Trading],
- user: UserClient):
+@pytest.mark.parametrize(
+ 'action_model_state',
+ (
+ pytest.param(ams, id=ams[0].__class__.__name__)
+ for ams in [
+ (models.ToPrepare, states.Physical.ToPrepare),
+ (models.Prepare, states.Physical.Prepare),
+ (models.ToRepair, states.Physical.ToRepair),
+ (models.Ready, states.Physical.Ready),
+ ]
+ ),
+)
+def test_generic_action(
+ action_model_state: Tuple[models.Action, states.Trading], user: UserClient
+):
"""Tests POSTing all generic actions."""
action_model, state = action_model_state
snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
@@ -257,15 +280,16 @@ def test_generic_action(action_model_state: Tuple[models.Action, states.Trading]
@pytest.mark.mvp
-@pytest.mark.parametrize('action_model',
- (pytest.param(ams, id=ams.__class__.__name__)
- for ams in [
- models.Recycling,
- models.Use,
- models.Refurbish,
- models.Management
- ]))
-def test_simple_status_actions(action_model: models.Action, user: UserClient, user2: UserClient):
+@pytest.mark.parametrize(
+ 'action_model',
+ (
+ pytest.param(ams, id=ams.__class__.__name__)
+ for ams in [models.Recycling, models.Use, models.Refurbish, models.Management]
+ ),
+)
+def test_simple_status_actions(
+ action_model: models.Action, user: UserClient, user2: UserClient
+):
"""Simple test of status action."""
snap, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
@@ -278,23 +302,23 @@ def test_simple_status_actions(action_model: models.Action, user: UserClient, us
@pytest.mark.mvp
-@pytest.mark.parametrize('action_model',
- (pytest.param(ams, id=ams.__class__.__name__)
- for ams in [
- models.Recycling,
- models.Use,
- models.Refurbish,
- models.Management
- ]))
-def test_outgoinlot_status_actions(action_model: models.Action, user: UserClient, user2: UserClient):
+@pytest.mark.parametrize(
+ 'action_model',
+ (
+ pytest.param(ams, id=ams.__class__.__name__)
+ for ams in [models.Recycling, models.Use, models.Refurbish, models.Management]
+ ),
+)
+def test_outgoinlot_status_actions(
+ action_model: models.Action, user: UserClient, user2: UserClient
+):
"""Test of status actions in outgoinlot."""
snap, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device, _ = user.get(res=Device, item=snap['device']['devicehubID'])
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
- user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device['id'])])
+ user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=[('id', device['id'])]
+ )
request_post = {
'type': 'Trade',
@@ -317,10 +341,13 @@ def test_outgoinlot_status_actions(action_model: models.Action, user: UserClient
assert action['rol_user']['id'] == user2.user['id']
# Remove device from lot
- lot, _ = user.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device['id'])], status=200)
+ lot, _ = user.delete(
+ {},
+ res=Lot,
+ item='{}/devices'.format(lot['id']),
+ query=[('id', device['id'])],
+ status=200,
+ )
action = {'type': action_model.t, 'devices': [device['id']]}
action, _ = user.post(action, res=models.Action)
@@ -332,23 +359,23 @@ def test_outgoinlot_status_actions(action_model: models.Action, user: UserClient
@pytest.mark.mvp
-@pytest.mark.parametrize('action_model',
- (pytest.param(ams, id=ams.__class__.__name__)
- for ams in [
- models.Recycling,
- models.Use,
- models.Refurbish,
- models.Management
- ]))
-def test_incominglot_status_actions(action_model: models.Action, user: UserClient, user2: UserClient):
+@pytest.mark.parametrize(
+ 'action_model',
+ (
+ pytest.param(ams, id=ams.__class__.__name__)
+ for ams in [models.Recycling, models.Use, models.Refurbish, models.Management]
+ ),
+)
+def test_incominglot_status_actions(
+ action_model: models.Action, user: UserClient, user2: UserClient
+):
"""Test of status actions in outgoinlot."""
snap, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device, _ = user.get(res=Device, item=snap['device']['devicehubID'])
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
- user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device['id'])])
+ user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=[('id', device['id'])]
+ )
request_post = {
'type': 'Trade',
@@ -396,10 +423,9 @@ def test_history_status_actions(user: UserClient, user2: UserClient):
# Case 3
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
- user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device.id)])
+ user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=[('id', device.id)]
+ )
request_post = {
'type': 'Trade',
@@ -417,14 +443,16 @@ def test_history_status_actions(user: UserClient, user2: UserClient):
action3, _ = user.post(action3, res=models.Action)
assert action3['id'] == str(device.status.id)
assert device.status.t == models.Use.t
- assert [action2['id'], action3['id']] == [str(ac.id) for ac in device.history_status]
+ assert [action2['id'], action3['id']] == [
+ str(ac.id) for ac in device.history_status
+ ]
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_use_changing_owner(user: UserClient, user2: UserClient):
"""Check if is it possible to do a use action for one device
- when you are not the owner.
+ when you are not the owner.
"""
snap, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device = Device.query.filter_by(id=snap['device']['id']).one()
@@ -433,10 +461,9 @@ def test_use_changing_owner(user: UserClient, user2: UserClient):
# Trade
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
- user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device.id)])
+ user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=[('id', device.id)]
+ )
request_post = {
'type': 'Trade',
@@ -453,11 +480,7 @@ def test_use_changing_owner(user: UserClient, user2: UserClient):
trade = models.Trade.query.one()
# Doble confirmation and change of owner
- request_confirm = {
- 'type': 'Confirm',
- 'action': trade.id,
- 'devices': [device.id]
- }
+ request_confirm = {'type': 'Confirm', 'action': trade.id, 'devices': [device.id]}
user2.post(res=models.Action, data=request_confirm)
assert device.owner.email == user2.email
@@ -475,30 +498,33 @@ def test_use_changing_owner(user: UserClient, user2: UserClient):
def test_recycling_container(user: UserClient):
"""Test of status action recycling for a container."""
lot, _ = user.post({'name': 'MyLotOut'}, res=Lot)
- url = 'http://www.ereuse.org/',
+ url = ('http://www.ereuse.org/',)
request_post = {
'filename': 'test.pdf',
'hash': 'bbbbbbbb',
'url': url,
'weight': 150,
- 'lot': lot['id']
+ 'lot': lot['id'],
}
tradedocument, _ = user.post(res=TradeDocument, data=request_post)
- action = {'type': models.Recycling.t, 'devices': [], 'documents': [tradedocument['id']]}
+ action = {
+ 'type': models.Recycling.t,
+ 'devices': [],
+ 'documents': [tradedocument['id']],
+ }
action, _ = user.post(action, res=models.Action)
trade = TradeDocument.query.one()
assert str(trade.actions[0].id) == action['id']
@pytest.mark.mvp
-@pytest.mark.parametrize('action_model',
- (pytest.param(ams, id=ams.__class__.__name__)
- for ams in [
- models.Recycling,
- models.Use,
- models.Refurbish,
- models.Management
- ]))
+@pytest.mark.parametrize(
+ 'action_model',
+ (
+ pytest.param(ams, id=ams.__class__.__name__)
+ for ams in [models.Recycling, models.Use, models.Refurbish, models.Management]
+ ),
+)
def test_status_without_lot(action_model: models.Action, user: UserClient):
"""Test of status actions for devices without lot."""
snap, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
@@ -509,23 +535,21 @@ def test_status_without_lot(action_model: models.Action, user: UserClient):
@pytest.mark.mvp
-@pytest.mark.parametrize('action_model',
- (pytest.param(ams, id=ams.__class__.__name__)
- for ams in [
- models.Recycling,
- models.Use,
- models.Refurbish,
- models.Management
- ]))
+@pytest.mark.parametrize(
+ 'action_model',
+ (
+ pytest.param(ams, id=ams.__class__.__name__)
+ for ams in [models.Recycling, models.Use, models.Refurbish, models.Management]
+ ),
+)
def test_status_in_temporary_lot(action_model: models.Action, user: UserClient):
"""Test of status actions for devices in a temporary lot."""
snap, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device_id = snap['device']['id']
lot, _ = user.post({'name': 'MyLotOut'}, res=Lot)
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device_id)])
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=[('id', device_id)]
+ )
action = {'type': action_model.t, 'devices': [device_id]}
action, _ = user.post(action, res=models.Action)
device, _ = user.get(res=Device, item=snap['device']['devicehubID'])
@@ -540,11 +564,15 @@ def test_live(user: UserClient, client: Client, app: Devicehub):
snapshot, _ = user.post(acer, res=models.Snapshot)
acer = yaml2json('acer.happy.battery.snapshot')
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -574,11 +602,15 @@ def test_live_example(user: UserClient, client: Client, app: Devicehub):
acer = file('snapshotLive')
snapshot, _ = user.post(acer, res=models.Snapshot)
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -595,7 +627,9 @@ def test_live_example(user: UserClient, client: Client, app: Devicehub):
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
-def test_live_two_users(user: UserClient, user2: UserClient, client: Client, app: Devicehub):
+def test_live_two_users(
+ user: UserClient, user2: UserClient, client: Client, app: Devicehub
+):
"""Tests inserting a Live into the database and GETting it."""
acer = file('snapshotLive')
snapshot, _ = user.post(acer, res=models.Snapshot)
@@ -603,11 +637,15 @@ def test_live_two_users(user: UserClient, user2: UserClient, client: Client, app
acer2['uuid'] = '3b6a9288-0ba6-4bdd-862a-2b1f660e7115'
snapshot2, _ = user2.post(json_encode(acer2), res=models.Snapshot)
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -624,7 +662,9 @@ def test_live_two_users(user: UserClient, user2: UserClient, client: Client, app
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
-def test_live_two_allocated(user: UserClient, user2: UserClient, client: Client, app: Devicehub):
+def test_live_two_allocated(
+ user: UserClient, user2: UserClient, client: Client, app: Devicehub
+):
"""Tests inserting a Live into the database and GETting it."""
acer = file('snapshotLive')
snapshot, _ = user.post(acer, res=models.Snapshot)
@@ -633,17 +673,25 @@ def test_live_two_allocated(user: UserClient, user2: UserClient, client: Client,
snapshot2, _ = user2.post(json_encode(acer2), res=models.Snapshot)
device_id = snapshot['device']['id']
device_id2 = snapshot2['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
- post_request2 = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id2], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request2 = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id2],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -661,23 +709,29 @@ def test_live_two_allocated(user: UserClient, user2: UserClient, client: Client,
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_live_without_TestDataStorage(user: UserClient, client: Client, app: Devicehub):
"""Tests inserting a Live into the database and GETting it.
- If the live don't have a TestDataStorage, then save live and response None
+ If the live don't have a TestDataStorage, then save live and response None
"""
acer = file('acer.happy.battery.snapshot')
snapshot, _ = user.post(acer, res=models.Snapshot)
device_id = snapshot['device']['id']
db_device = Device.query.filter_by(id=device_id).one()
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
acer = yaml2json('acer.happy.battery.snapshot')
acer['uuid'] = "490fb8c0-81a1-42e9-95e0-5e7db7038ec3"
- actions = [a for a in acer['components'][7]['actions'] if a['type'] != 'TestDataStorage']
+ actions = [
+ a for a in acer['components'][7]['actions'] if a['type'] != 'TestDataStorage'
+ ]
acer['components'][7]['actions'] = actions
acer.pop('elapsed')
acer['licence_version'] = '1.0.0'
@@ -695,17 +749,21 @@ def test_live_without_TestDataStorage(user: UserClient, client: Client, app: Dev
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_live_without_hdd_1(user: UserClient, client: Client, app: Devicehub):
"""Tests inserting a Live into the database and GETting it.
- The snapshot have hdd but the live no, and response 404
+ The snapshot have hdd but the live no, and response 404
"""
acer = file('acer.happy.battery.snapshot')
snapshot, _ = user.post(acer, res=models.Snapshot)
device_id = snapshot['device']['id']
db_device = Device.query.filter_by(id=device_id).one()
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -725,7 +783,7 @@ def test_live_without_hdd_1(user: UserClient, client: Client, app: Devicehub):
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_live_without_hdd_2(user: UserClient, client: Client, app: Devicehub):
"""Tests inserting a Live into the database and GETting it.
- The snapshot haven't hdd and the live neither, and response 404
+ The snapshot haven't hdd and the live neither, and response 404
"""
acer = yaml2json('acer.happy.battery.snapshot')
components = [a for a in acer['components'] if a['type'] != 'HardDrive']
@@ -733,11 +791,15 @@ def test_live_without_hdd_2(user: UserClient, client: Client, app: Devicehub):
snapshot, _ = user.post(json_encode(acer), res=models.Snapshot)
device_id = snapshot['device']['id']
db_device = Device.query.filter_by(id=device_id).one()
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -754,8 +816,8 @@ def test_live_without_hdd_2(user: UserClient, client: Client, app: Devicehub):
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_live_without_hdd_3(user: UserClient, client: Client, app: Devicehub):
"""Tests inserting a Live into the database and GETting it.
- The snapshot haven't hdd and the live have, and save the live
- with usage_time_allocate == 0
+ The snapshot haven't hdd and the live have, and save the live
+ with usage_time_allocate == 0
"""
acer = yaml2json('acer.happy.battery.snapshot')
acer['uuid'] = "490fb8c0-81a1-42e9-95e0-5e7db7038ec3"
@@ -764,11 +826,15 @@ def test_live_without_hdd_3(user: UserClient, client: Client, app: Devicehub):
snapshot, _ = user.post(json_encode(acer), res=models.Snapshot)
device_id = snapshot['device']['id']
db_device = Device.query.filter_by(id=device_id).one()
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -790,24 +856,30 @@ def test_live_without_hdd_3(user: UserClient, client: Client, app: Devicehub):
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_live_with_hdd_with_old_time(user: UserClient, client: Client, app: Devicehub):
"""Tests inserting a Live into the database and GETting it.
- The snapshot hdd have a lifetime higher than lifetime of the live action
- save the live with usage_time_allocate == 0
+ The snapshot hdd have a lifetime higher than lifetime of the live action
+ save the live with usage_time_allocate == 0
"""
acer = file('acer.happy.battery.snapshot')
snapshot, _ = user.post(acer, res=models.Snapshot)
device_id = snapshot['device']['id']
db_device = Device.query.filter_by(id=device_id).one()
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
acer = yaml2json('acer.happy.battery.snapshot')
acer['uuid'] = "490fb8c0-81a1-42e9-95e0-5e7db7038ec3"
- action = [a for a in acer['components'][7]['actions'] if a['type'] == 'TestDataStorage']
+ action = [
+ a for a in acer['components'][7]['actions'] if a['type'] == 'TestDataStorage'
+ ]
action[0]['lifetime'] -= 100
acer.pop('elapsed')
acer['licence_version'] = '1.0.0'
@@ -825,16 +897,19 @@ def test_live_with_hdd_with_old_time(user: UserClient, client: Client, app: Devi
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_live_search_last_allocate(user: UserClient, client: Client, app: Devicehub):
- """Tests inserting a Live into the database and GETting it.
- """
+ """Tests inserting a Live into the database and GETting it."""
acer = file('acer.happy.battery.snapshot')
snapshot, _ = user.post(acer, res=models.Snapshot)
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -847,7 +922,9 @@ def test_live_search_last_allocate(user: UserClient, client: Client, app: Device
acer['licence_version'] = '1.0.0'
live, _ = client.post(acer, res=models.Live)
acer['uuid'] = "490fb8c0-81a1-42e9-95e0-5e7db7038ec4"
- actions = [a for a in acer['components'][7]['actions'] if a['type'] != 'TestDataStorage']
+ actions = [
+ a for a in acer['components'][7]['actions'] if a['type'] != 'TestDataStorage'
+ ]
acer['components'][7]['actions'] = actions
live, _ = client.post(acer, res=models.Live)
assert live['usageTimeAllocate'] == 1000
@@ -857,17 +934,21 @@ def test_live_search_last_allocate(user: UserClient, client: Client, app: Device
@pytest.mark.mvp
def test_save_live_json(app: Devicehub, user: UserClient, client: Client):
- """ This test check if works the function save_snapshot_in_file """
+ """This test check if works the function save_snapshot_in_file"""
acer = yaml2json('acer.happy.battery.snapshot')
snapshot, _ = user.post(json_encode(acer), res=models.Snapshot)
debug = 'AAA'
acer['debug'] = debug
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_request)
@@ -899,8 +980,7 @@ def test_save_live_json(app: Devicehub, user: UserClient, client: Client):
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_licences(client: Client):
- """Tests inserting a Live into the database and GETting it.
- """
+ """Tests inserting a Live into the database and GETting it."""
licences, _ = client.get('/licences/')
licences = json.loads(licences)
assert licences[0]['USOdyPrivacyPolicyVersion'] == '1.0.0'
@@ -909,19 +989,20 @@ def test_licences(client: Client):
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_allocate(user: UserClient):
- """ Tests allocate """
+ """Tests allocate"""
snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device_id = snapshot['device']['id']
devicehub_id = snapshot['device']['devicehubID']
- post_request = {"transaction": "ccc",
- "finalUserCode": "aabbcc",
- "name": "John",
- "severity": "Info",
- "endUsers": 1,
- "devices": [device_id],
- "description": "aaa",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00",
+ post_request = {
+ "transaction": "ccc",
+ "finalUserCode": "aabbcc",
+ "name": "John",
+ "severity": "Info",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
allocate, _ = user.post(res=models.Allocate, data=post_request)
@@ -953,19 +1034,20 @@ def test_allocate(user: UserClient):
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_allocate_bad_dates(user: UserClient):
- """ Tests allocate """
+ """Tests allocate"""
snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device_id = snapshot['device']['id']
delay = timedelta(days=30)
future = datetime.now().replace(tzinfo=tzutc()) + delay
- post_request = {"transaction": "ccc",
- "finalUserCode": "aabbcc",
- "name": "John",
- "severity": "Info",
- "end_users": 1,
- "devices": [device_id],
- "description": "aaa",
- "start_time": future,
+ post_request = {
+ "transaction": "ccc",
+ "finalUserCode": "aabbcc",
+ "name": "John",
+ "severity": "Info",
+ "end_users": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "start_time": future,
}
res, _ = user.post(res=models.Allocate, data=post_request, status=422)
@@ -976,21 +1058,26 @@ def test_allocate_bad_dates(user: UserClient):
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_deallocate(user: UserClient):
- """ Tests deallocate """
+ """Tests deallocate"""
snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device_id = snapshot['device']['id']
devicehub_id = snapshot['device']['devicehubID']
- post_deallocate = {"startTime": "2020-11-01T02:00:00+00:00",
- "transaction": "ccc",
- "devices": [device_id]
+ post_deallocate = {
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "transaction": "ccc",
+ "devices": [device_id],
}
res, _ = user.post(res=models.Deallocate, data=post_deallocate, status=422)
assert res['code'] == 422
assert res['type'] == 'ValidationError'
- post_allocate = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_allocate = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_allocate)
@@ -1008,16 +1095,16 @@ def test_deallocate(user: UserClient):
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_deallocate_bad_dates(user: UserClient):
- """ Tests deallocate with bad date of start_time """
+ """Tests deallocate with bad date of start_time"""
snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device_id = snapshot['device']['id']
- delay = timedelta(days=30)
+ delay = timedelta(days=30)
future = datetime.now().replace(tzinfo=tzutc()) + delay
- post_deallocate = {"startTime": future,
- "devices": [device_id]
- }
- post_allocate = {"devices": [device_id], "description": "aaa",
- "startTime": "2020-11-01T02:00:00+00:00"
+ post_deallocate = {"startTime": future, "devices": [device_id]}
+ post_allocate = {
+ "devices": [device_id],
+ "description": "aaa",
+ "startTime": "2020-11-01T02:00:00+00:00",
}
user.post(res=models.Allocate, data=post_allocate)
@@ -1037,7 +1124,7 @@ def test_trade_endpoint(user: UserClient, user2: UserClient):
'userTo': user2.user['email'],
'price': 1.0,
'date': "2020-12-01T02:00:00+00:00",
- 'devices': [snapshot['device']['id']]
+ 'devices': [snapshot['device']['id']],
}
action, _ = user.post(res=models.Trade, data=request_post)
@@ -1075,10 +1162,9 @@ def test_offer_without_to(user: UserClient):
snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device = Device.query.filter_by(id=snapshot['device']['id']).one()
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
- user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device.id)])
+ user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=[('id', device.id)]
+ )
# check the owner of the device
assert device.owner.email == user.email
@@ -1093,7 +1179,7 @@ def test_offer_without_to(user: UserClient):
'date': "2020-12-01T02:00:00+00:00",
'lot': lot['id'],
'confirms': False,
- 'code': 'MAX'
+ 'code': 'MAX',
}
user.post(res=models.Action, data=request_post)
@@ -1120,7 +1206,7 @@ def test_offer_without_to(user: UserClient):
'date': "2020-12-01T02:00:00+00:00",
'lot': lot['id'],
'confirms': False,
- 'code': 'MAX'
+ 'code': 'MAX',
}
user.post(res=models.Action, data=request_post, status=422)
trade = models.Trade.query.one()
@@ -1142,7 +1228,7 @@ def test_offer_without_to(user: UserClient):
'date': "2020-12-01T02:00:00+00:00",
'lot': lot2.id,
'confirms': False,
- 'code': 'MAX'
+ 'code': 'MAX',
}
user.post(res=models.Action, data=request_post2)
assert User.query.filter_by(email=device.owner.email).count() == 1
@@ -1172,7 +1258,7 @@ def test_offer_without_from(user: UserClient, user2: UserClient):
'date': "2020-12-01T02:00:00+00:00",
'lot': lot.id,
'confirms': False,
- 'code': 'MAX'
+ 'code': 'MAX',
}
action, _ = user2.post(res=models.Action, data=request_post, status=422)
@@ -1216,7 +1302,7 @@ def test_offer_without_users(user: UserClient):
'date': "2020-12-01T02:00:00+00:00",
'lot': lot.id,
'confirms': False,
- 'code': 'MAX'
+ 'code': 'MAX',
}
action, response = user.post(res=models.Action, data=request_post, status=422)
txt = 'you need one user from or user to for to do a trade'
@@ -1284,8 +1370,12 @@ def test_offer_without_devices(user: UserClient):
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
def test_price_custom():
- computer = Desktop(serial_number='sn1', model='ml1', manufacturer='mr1',
- chassis=ComputerChassis.Docking)
+ computer = Desktop(
+ serial_number='sn1',
+ model='ml1',
+ manufacturer='mr1',
+ chassis=ComputerChassis.Docking,
+ )
price = models.Price(price=Decimal(25.25), currency=Currency.EUR)
price.device = computer
assert computer.price == price
@@ -1308,12 +1398,15 @@ def test_price_custom_client(user: UserClient):
"""As test_price_custom but creating the price through the API."""
s = file('basic.snapshot')
snapshot, _ = user.post(s, res=models.Snapshot)
- price, _ = user.post({
- 'type': 'Price',
- 'price': 25,
- 'currency': Currency.EUR.name,
- 'device': snapshot['device']['id']
- }, res=models.Action)
+ price, _ = user.post(
+ {
+ 'type': 'Price',
+ 'price': 25,
+ 'currency': Currency.EUR.name,
+ 'device': snapshot['device']['id'],
+ },
+ res=models.Action,
+ )
assert 25 == price['price']
assert Currency.EUR.name == price['currency']
@@ -1326,11 +1419,12 @@ def test_price_custom_client(user: UserClient):
def test_erase_physical():
erasure = models.ErasePhysical(
device=HardDrive(serial_number='foo', manufacturer='bar', model='foo-bar'),
- method=enums.PhysicalErasureMethod.Disintegration
+ method=enums.PhysicalErasureMethod.Disintegration,
)
db.session.add(erasure)
db.session.commit()
+
@pytest.mark.mvp
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_endpoint_confirm(user: UserClient, user2: UserClient):
@@ -1338,10 +1432,9 @@ def test_endpoint_confirm(user: UserClient, user2: UserClient):
snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device_id = snapshot['device']['id']
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
- user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device_id)])
+ user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=[('id', device_id)]
+ )
request_post = {
'type': 'Trade',
@@ -1359,11 +1452,7 @@ def test_endpoint_confirm(user: UserClient, user2: UserClient):
assert trade.devices[0].owner.email == user.email
- request_confirm = {
- 'type': 'Confirm',
- 'action': trade.id,
- 'devices': [device_id]
- }
+ request_confirm = {'type': 'Confirm', 'action': trade.id, 'devices': [device_id]}
user2.post(res=models.Action, data=request_confirm)
user2.post(res=models.Action, data=request_confirm, status=422)
@@ -1378,10 +1467,9 @@ def test_confirm_revoke(user: UserClient, user2: UserClient):
snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
device_id = snapshot['device']['id']
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
- user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=[('id', device_id)])
+ user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=[('id', device_id)]
+ )
request_post = {
'type': 'Trade',
@@ -1398,11 +1486,7 @@ def test_confirm_revoke(user: UserClient, user2: UserClient):
trade = models.Trade.query.one()
device = trade.devices[0]
- request_confirm = {
- 'type': 'Confirm',
- 'action': trade.id,
- 'devices': [device_id]
- }
+ request_confirm = {'type': 'Confirm', 'action': trade.id, 'devices': [device_id]}
request_revoke = {
'type': 'Revoke',
@@ -1410,7 +1494,6 @@ def test_confirm_revoke(user: UserClient, user2: UserClient):
'devices': [device_id],
}
-
# Normal confirmation
user2.post(res=models.Action, data=request_confirm)
@@ -1433,29 +1516,34 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
snap3, _ = user.post(file('asus-1001pxd.snapshot'), res=models.Snapshot)
- snap4, _ = user.post(file('desktop-9644w8n-lenovo-0169622.snapshot'), res=models.Snapshot)
- snap5, _ = user.post(file('laptop-hp_255_g3_notebook-hewlett-packard-cnd52270fw.snapshot'), res=models.Snapshot)
+ snap4, _ = user.post(
+ file('desktop-9644w8n-lenovo-0169622.snapshot'), res=models.Snapshot
+ )
+ snap5, _ = user.post(
+ file('laptop-hp_255_g3_notebook-hewlett-packard-cnd52270fw.snapshot'),
+ res=models.Snapshot,
+ )
snap6, _ = user.post(file('1-device-with-components.snapshot'), res=models.Snapshot)
snap7, _ = user.post(file('asus-eee-1000h.snapshot.11'), res=models.Snapshot)
snap8, _ = user.post(file('complete.export.snapshot'), res=models.Snapshot)
snap9, _ = user.post(file('real-hp-quad-core.snapshot.11'), res=models.Snapshot)
snap10, _ = user.post(file('david.lshw.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id']),
- ('id', snap3['device']['id']),
- ('id', snap4['device']['id']),
- ('id', snap5['device']['id']),
- ('id', snap6['device']['id']),
- ('id', snap7['device']['id']),
- ('id', snap8['device']['id']),
- ('id', snap9['device']['id']),
- ('id', snap10['device']['id']),
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:7])
+ devices = [
+ ('id', snap1['device']['id']),
+ ('id', snap2['device']['id']),
+ ('id', snap3['device']['id']),
+ ('id', snap4['device']['id']),
+ ('id', snap5['device']['id']),
+ ('id', snap6['device']['id']),
+ ('id', snap7['device']['id']),
+ ('id', snap8['device']['id']),
+ ('id', snap9['device']['id']),
+ ('id', snap10['device']['id']),
+ ]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:7]
+ )
# the manager shares the temporary lot with the SCRAP as an incoming lot
# for the SCRAP to confirm it
@@ -1478,7 +1566,11 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
request_confirm = {
'type': 'Confirm',
'action': trade.id,
- 'devices': [snap1['device']['id'], snap2['device']['id'], snap3['device']['id']]
+ 'devices': [
+ snap1['device']['id'],
+ snap2['device']['id'],
+ snap3['device']['id'],
+ ],
}
assert trade.devices[0].actions[-2].t == 'Trade'
assert trade.devices[0].actions[-1].t == 'Confirm'
@@ -1493,26 +1585,21 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
request_confirm = {
'type': 'Confirm',
'action': trade.id,
- 'devices': [
- snap10['device']['id']
- ]
+ 'devices': [snap10['device']['id']],
}
user2.post(res=models.Action, data=request_confirm, status=422)
-
# The manager add 3 device more into the lot
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[7:])
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[7:]
+ )
assert trade.devices[-1].actions[-2].t == 'Trade'
assert trade.devices[-1].actions[-1].t == 'Confirm'
assert trade.devices[-1].actions[-1].user == trade.user_to
assert len(trade.devices[0].actions) == n_actions
-
# the SCRAP confirms the rest of devices
request_confirm = {
'type': 'Confirm',
@@ -1524,8 +1611,8 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
snap7['device']['id'],
snap8['device']['id'],
snap9['device']['id'],
- snap10['device']['id']
- ]
+ snap10['device']['id'],
+ ],
}
user2.post(res=models.Action, data=request_confirm)
@@ -1537,17 +1624,15 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
# The manager remove one device of the lot and automaticaly
# is create one revoke action
device_10 = trade.devices[-1]
- lot, _ = user.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
assert len(trade.lot.devices) == len(trade.devices) == 10
assert device_10.actions[-1].t == 'Revoke'
- lot, _ = user.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
assert device_10.actions[-1].t == 'Revoke'
@@ -1555,9 +1640,7 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
request_confirm_revoke = {
'type': 'Revoke',
'action': trade.id,
- 'devices': [
- snap10['device']['id']
- ]
+ 'devices': [snap10['device']['id']],
}
user2.post(res=models.Action, data=request_confirm_revoke)
@@ -1570,30 +1653,24 @@ def test_usecase_confirmation(user: UserClient, user2: UserClient):
request_confirm_revoke = {
'type': 'Revoke',
'action': trade.id,
- 'devices': [
- snap9['device']['id']
- ]
+ 'devices': [snap9['device']['id']],
}
# The manager add again device_10
# assert len(trade.devices) == 9
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
assert device_10.actions[-1].t == 'Confirm'
assert device_10 in trade.devices
assert len(trade.devices) == 10
-
# the SCRAP confirms the action trade for device_10
request_reconfirm = {
'type': 'Confirm',
'action': trade.id,
- 'devices': [
- snap10['device']['id']
- ]
+ 'devices': [snap10['device']['id']],
}
user2.post(res=models.Action, data=request_reconfirm)
assert device_10.actions[-1].t == 'Confirm'
@@ -1614,31 +1691,34 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
snap3, _ = user.post(file('asus-1001pxd.snapshot'), res=models.Snapshot)
- snap4, _ = user.post(file('desktop-9644w8n-lenovo-0169622.snapshot'), res=models.Snapshot)
- snap5, _ = user.post(file('laptop-hp_255_g3_notebook-hewlett-packard-cnd52270fw.snapshot'), res=models.Snapshot)
+ snap4, _ = user.post(
+ file('desktop-9644w8n-lenovo-0169622.snapshot'), res=models.Snapshot
+ )
+ snap5, _ = user.post(
+ file('laptop-hp_255_g3_notebook-hewlett-packard-cnd52270fw.snapshot'),
+ res=models.Snapshot,
+ )
snap6, _ = user.post(file('1-device-with-components.snapshot'), res=models.Snapshot)
snap7, _ = user.post(file('asus-eee-1000h.snapshot.11'), res=models.Snapshot)
snap8, _ = user.post(file('complete.export.snapshot'), res=models.Snapshot)
snap9, _ = user.post(file('real-hp-quad-core.snapshot.11'), res=models.Snapshot)
snap10, _ = user.post(file('david.lshw.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id']),
- ('id', snap3['device']['id']),
- ('id', snap4['device']['id']),
- ('id', snap5['device']['id']),
- ('id', snap6['device']['id']),
- ('id', snap7['device']['id']),
- ('id', snap8['device']['id']),
- ('id', snap9['device']['id']),
- ('id', snap10['device']['id']),
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices)
+ devices = [
+ ('id', snap1['device']['id']),
+ ('id', snap2['device']['id']),
+ ('id', snap3['device']['id']),
+ ('id', snap4['device']['id']),
+ ('id', snap5['device']['id']),
+ ('id', snap6['device']['id']),
+ ('id', snap7['device']['id']),
+ ('id', snap8['device']['id']),
+ ('id', snap9['device']['id']),
+ ('id', snap10['device']['id']),
+ ]
+ lot, _ = user.post({}, res=Lot, item='{}/devices'.format(lot['id']), query=devices)
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -1659,8 +1739,8 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
'type': 'Confirm',
'action': trade.id,
'devices': [
- snap1['device']['id'],
- snap2['device']['id'],
+ snap1['device']['id'],
+ snap2['device']['id'],
snap3['device']['id'],
snap4['device']['id'],
snap5['device']['id'],
@@ -1668,8 +1748,8 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
snap7['device']['id'],
snap8['device']['id'],
snap9['device']['id'],
- snap10['device']['id']
- ]
+ snap10['device']['id'],
+ ],
}
user2.post(res=models.Action, data=request_confirm)
@@ -1677,31 +1757,28 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
assert trade.devices[-1].actions[-1].t == 'Confirm'
assert trade.devices[-1].actions[-1].user == trade.user_from
- # The manager remove one device of the lot and automaticaly
+ # The manager remove one device of the lot and automaticaly
# is create one revoke action
device_10 = trade.devices[-1]
- lot, _ = user.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
# assert len(trade.lot.devices) == len(trade.devices) == 9
# assert not device_10 in trade.devices
assert device_10.actions[-1].t == 'Revoke'
- lot, _ = user.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
assert device_10.actions[-1].t == 'Revoke'
# assert device_10.actions[-2].t == 'Confirm'
# The manager add again device_10
# assert len(trade.devices) == 9
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
# assert device_10.actions[-1].t == 'Confirm'
assert device_10 in trade.devices
@@ -1711,9 +1788,7 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
request_confirm_revoke = {
'type': 'ConfirmRevoke',
'action': device_10.actions[-2].id,
- 'devices': [
- snap10['device']['id']
- ]
+ 'devices': [snap10['device']['id']],
}
# check validation error
@@ -1721,11 +1796,11 @@ def test_confirmRevoke(user: UserClient, user2: UserClient):
# the SCRAP confirms the action trade for device_10
# request_reconfirm = {
- # 'type': 'Confirm',
- # 'action': trade.id,
- # 'devices': [
- # snap10['device']['id']
- # ]
+ # 'type': 'Confirm',
+ # 'action': trade.id,
+ # 'devices': [
+ # snap10['device']['id']
+ # ]
# }
# user2.post(res=models.Action, data=request_reconfirm)
# assert device_10.actions[-1].t == 'Confirm'
@@ -1744,13 +1819,13 @@ def test_trade_case1(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id']),
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [
+ ('id', snap1['device']['id']),
+ ('id', snap2['device']['id']),
+ ]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
# the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
@@ -1775,10 +1850,9 @@ def test_trade_case1(user: UserClient, user2: UserClient):
assert device.actions[-1].t == 'Confirm'
assert device.actions[-1].user == trade.user_to
- user.delete({},
- res=Lot,
- item='{}/devices'.format(lot.id),
- query=devices[:-1], status=200)
+ user.delete(
+ {}, res=Lot, item='{}/devices'.format(lot.id), query=devices[:-1], status=200
+ )
assert device not in trade.lot.devices
assert device.trading(trade.lot) == 'RevokeConfirmed'
@@ -1796,15 +1870,15 @@ def test_trade_case2(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id']),
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [
+ ('id', snap1['device']['id']),
+ ('id', snap2['device']['id']),
+ ]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -1820,10 +1894,9 @@ def test_trade_case2(user: UserClient, user2: UserClient):
user.post(res=models.Action, data=request_post)
trade = models.Trade.query.one()
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
device1, device2 = trade.devices
@@ -1860,13 +1933,13 @@ def test_trade_case3(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user2.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id']),
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [
+ ('id', snap1['device']['id']),
+ ('id', snap2['device']['id']),
+ ]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
# the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
@@ -1884,10 +1957,9 @@ def test_trade_case3(user: UserClient, user2: UserClient):
user.post(res=models.Action, data=request_post)
trade = models.Trade.query.one()
- lot, _ = user2.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user2.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
device1, device2 = trade.devices
@@ -1898,10 +1970,9 @@ def test_trade_case3(user: UserClient, user2: UserClient):
assert device2.actions[-1].t == 'Confirm'
assert device2.actions[-1].user == trade.user_from
- lot, _ = user2.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user2.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
assert device2.actions[-2].t == 'Confirm'
assert device2.actions[-1].t == 'Revoke'
@@ -1918,15 +1989,15 @@ def test_trade_case4(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user2.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id']),
- ]
- lot1, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [
+ ('id', snap1['device']['id']),
+ ('id', snap2['device']['id']),
+ ]
+ lot1, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -1942,10 +2013,9 @@ def test_trade_case4(user: UserClient, user2: UserClient):
user.post(res=models.Action, data=request_post)
trade = models.Trade.query.one()
- lot2, _ = user2.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot2, _ = user2.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
device1, device2 = trade.devices
@@ -1983,15 +2053,13 @@ def test_trade_case5(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id']),
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices)
+ devices = [
+ ('id', snap1['device']['id']),
+ ('id', snap2['device']['id']),
+ ]
+ lot, _ = user.post({}, res=Lot, item='{}/devices'.format(lot['id']), query=devices)
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2016,10 +2084,9 @@ def test_trade_case5(user: UserClient, user2: UserClient):
assert device2.actions[-1].t == 'Confirm'
assert device2.actions[-1].user == trade.user_to
- lot, _ = user2.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user2.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
assert device2.actions[-2].t == 'Confirm'
assert device2.actions[-1].t == 'Revoke'
@@ -2049,15 +2116,15 @@ def test_trade_case6(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user2.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id']),
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [
+ ('id', snap1['device']['id']),
+ ('id', snap2['device']['id']),
+ ]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2073,10 +2140,9 @@ def test_trade_case6(user: UserClient, user2: UserClient):
user.post(res=models.Action, data=request_post)
trade = models.Trade.query.one()
- lot, _ = user2.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user2.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
device1, device2 = trade.devices
@@ -2087,10 +2153,9 @@ def test_trade_case6(user: UserClient, user2: UserClient):
assert device2.actions[-1].t == 'Confirm'
assert device2.actions[-1].user == trade.user_from
- lot, _ = user.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
assert device2.actions[-2].t == 'Confirm'
assert device2.actions[-1].t == 'Revoke'
@@ -2120,12 +2185,9 @@ def test_trade_case7(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
devices = [('id', snap1['device']['id'])]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices)
+ lot, _ = user.post({}, res=Lot, item='{}/devices'.format(lot['id']), query=devices)
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2152,10 +2214,9 @@ def test_trade_case7(user: UserClient, user2: UserClient):
user2.post(res=models.Action, data=request_confirm)
assert device.trading(trade.lot) == 'TradeConfirmed'
- lot, _ = user.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices, status=200)
+ lot, _ = user.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices, status=200
+ )
request_confirm_revoke = {
'type': 'Revoke',
@@ -2187,12 +2248,9 @@ def test_trade_case8(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
devices = [('id', snap1['device']['id'])]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices)
+ lot, _ = user.post({}, res=Lot, item='{}/devices'.format(lot['id']), query=devices)
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2258,15 +2316,12 @@ def test_trade_case9(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user2.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id'])
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [('id', snap1['device']['id']), ('id', snap2['device']['id'])]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2282,10 +2337,9 @@ def test_trade_case9(user: UserClient, user2: UserClient):
user.post(res=models.Action, data=request_post)
trade = models.Trade.query.one()
- lot, _ = user2.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user2.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
device1, device = trade.devices
@@ -2303,10 +2357,9 @@ def test_trade_case9(user: UserClient, user2: UserClient):
assert device.owner == trade.user_to
- lot, _ = user2.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user2.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
request_confirm_revoke = {
'type': 'Revoke',
@@ -2340,15 +2393,12 @@ def test_trade_case10(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user2.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id'])
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [('id', snap1['device']['id']), ('id', snap2['device']['id'])]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2364,10 +2414,9 @@ def test_trade_case10(user: UserClient, user2: UserClient):
user.post(res=models.Action, data=request_post)
trade = models.Trade.query.one()
- lot, _ = user2.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user2.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
device1, device = trade.devices
@@ -2427,15 +2476,10 @@ def test_trade_case11(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id'])
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices)
+ devices = [('id', snap1['device']['id']), ('id', snap2['device']['id'])]
+ lot, _ = user.post({}, res=Lot, item='{}/devices'.format(lot['id']), query=devices)
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2463,10 +2507,9 @@ def test_trade_case11(user: UserClient, user2: UserClient):
user2.post(res=models.Action, data=request_confirm)
assert device.trading(trade.lot) == 'TradeConfirmed'
- lot, _ = user2.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user2.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
assert device.trading(trade.lot) == 'Revoke'
request_confirm_revoke = {
@@ -2499,15 +2542,10 @@ def test_trade_case12(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id'])
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices)
+ devices = [('id', snap1['device']['id']), ('id', snap2['device']['id'])]
+ lot, _ = user.post({}, res=Lot, item='{}/devices'.format(lot['id']), query=devices)
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2576,15 +2614,12 @@ def test_trade_case13(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user2.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id'])
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [('id', snap1['device']['id']), ('id', snap2['device']['id'])]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2600,10 +2635,9 @@ def test_trade_case13(user: UserClient, user2: UserClient):
user.post(res=models.Action, data=request_post)
trade = models.Trade.query.one()
- lot, _ = user2.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user2.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
device1, device = trade.devices
assert device1.trading(trade.lot) == 'NeedConfirmation'
@@ -2619,10 +2653,9 @@ def test_trade_case13(user: UserClient, user2: UserClient):
assert device1.trading(trade.lot) == 'Confirm'
assert device.trading(trade.lot) == 'TradeConfirmed'
- lot, _ = user.delete({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:], status=200)
+ lot, _ = user.delete(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:], status=200
+ )
assert device1.trading(trade.lot) == 'Confirm'
assert device.trading(trade.lot) == 'Revoke'
@@ -2656,15 +2689,12 @@ def test_trade_case14(user: UserClient, user2: UserClient):
snap1, _ = user.post(file('basic.snapshot'), res=models.Snapshot)
snap2, _ = user2.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- devices = [('id', snap1['device']['id']),
- ('id', snap2['device']['id'])
- ]
- lot, _ = user.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[:-1])
+ devices = [('id', snap1['device']['id']), ('id', snap2['device']['id'])]
+ lot, _ = user.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[:-1]
+ )
- # the manager shares the temporary lot with the SCRAP as an incoming lot
+ # the manager shares the temporary lot with the SCRAP as an incoming lot
# for the CRAP to confirm it
request_post = {
'type': 'Trade',
@@ -2680,10 +2710,9 @@ def test_trade_case14(user: UserClient, user2: UserClient):
user.post(res=models.Action, data=request_post)
trade = models.Trade.query.one()
- lot, _ = user2.post({},
- res=Lot,
- item='{}/devices'.format(lot['id']),
- query=devices[-1:])
+ lot, _ = user2.post(
+ {}, res=Lot, item='{}/devices'.format(lot['id']), query=devices[-1:]
+ )
device1, device = trade.devices
assert device1.trading(trade.lot) == 'NeedConfirmation'
@@ -2734,11 +2763,26 @@ def test_trade_case14(user: UserClient, user2: UserClient):
@pytest.mark.usefixtures(conftest.app_context.__name__)
def test_action_web_erase(user: UserClient, client: Client):
import hashlib
+
from ereuse_devicehub.resources.documents import documents
+
bfile = BytesIO(b'abc')
hash3 = hashlib.sha3_256(bfile.read()).hexdigest()
snap, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- request = {'type': 'DataWipe', 'devices': [snap['device']['id']], 'name': 'borrado universal', 'severity': 'Info', 'description': 'nada que describir', 'url': 'http://www.google.com/', 'documentId': '33', 'endTime': '2021-07-07T22:00:00.000Z', 'filename': 'Certificado de borrado1.pdf', 'hash': hash3, 'success': 1, 'software': "Blanco"}
+ request = {
+ 'type': 'DataWipe',
+ 'devices': [snap['device']['id']],
+ 'name': 'borrado universal',
+ 'severity': 'Info',
+ 'description': 'nada que describir',
+ 'url': 'http://www.google.com/',
+ 'documentId': '33',
+ 'endTime': '2021-07-07T22:00:00.000Z',
+ 'filename': 'Certificado de borrado1.pdf',
+ 'hash': hash3,
+ 'success': 1,
+ 'software': "Blanco",
+ }
user.post(res=models.Action, data=request)
action = models.DataWipe.query.one()
@@ -2748,12 +2792,14 @@ def test_action_web_erase(user: UserClient, client: Client):
assert action.document.file_hash == request['hash']
bfile = BytesIO(b'abc')
- response, _ = client.post(res=documents.DocumentDef.t,
- item='stamps/',
- content_type='multipart/form-data',
- accept='text/html',
- data={'docUpload': [(bfile, 'example.csv')]},
- status=200)
+ response, _ = client.post(
+ res=documents.DocumentDef.t,
+ item='stamps/',
+ content_type='multipart/form-data',
+ accept='text/html',
+ data={'docUpload': [(bfile, 'example.csv')]},
+ status=200,
+ )
assert "alert alert-info" in response
assert "100% coincidence." in response
assert not "alert alert-danger" in response
@@ -2764,13 +2810,15 @@ def test_action_web_erase(user: UserClient, client: Client):
def test_moveOnDocument(user: UserClient, user2: UserClient):
lotIn, _ = user.post({'name': 'MyLotIn'}, res=Lot)
lotOut, _ = user.post({'name': 'MyLotOut'}, res=Lot)
- url = 'http://www.ereuse.org/apapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapaaaa',
+ url = (
+ 'http://www.ereuse.org/apapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapaaaa',
+ )
request_post1 = {
'filename': 'test.pdf',
'hash': 'bbbbbbbb',
'url': url,
'weight': 150,
- 'lot': lotIn['id']
+ 'lot': lotIn['id'],
}
tradedocument_from, _ = user.post(res=TradeDocument, data=request_post1)
id_hash = 'aaaaaaaaa'
@@ -2779,7 +2827,7 @@ def test_moveOnDocument(user: UserClient, user2: UserClient):
'hash': id_hash,
'url': url,
'weight': 0,
- 'lot': lotOut['id']
+ 'lot': lotOut['id'],
}
tradedocument_to, _ = user.post(res=TradeDocument, data=request_post2)
@@ -2802,7 +2850,7 @@ def test_moveOnDocument(user: UserClient, user2: UserClient):
'weight': 15,
'container_from': tradedocument_from['id'],
'container_to': id_hash,
- 'description': description
+ 'description': description,
}
doc, _ = user.post(res=models.Action, data=request_moveOn)
@@ -2810,7 +2858,7 @@ def test_moveOnDocument(user: UserClient, user2: UserClient):
assert doc['container_from']['id'] == tradedocument_from['id']
assert doc['container_to']['id'] == tradedocument_to['id']
- mvs= models.MoveOnDocument.query.filter().first()
+ mvs = models.MoveOnDocument.query.filter().first()
trade_from = TradeDocument.query.filter_by(id=tradedocument_from['id']).one()
trade_to = TradeDocument.query.filter_by(id=tradedocument_to['id']).one()
assert trade_from in mvs.documents
@@ -2826,7 +2874,14 @@ def test_delete_devices(user: UserClient):
"""This action deactive one device and simulate than one devices is delete."""
snap, _ = user.post(file('acer.happy.battery.snapshot'), res=models.Snapshot)
- request = {'type': 'Delete', 'devices': [snap['device']['id']], 'name': 'borrado universal', 'severity': 'Info', 'description': 'duplicity of devices', 'endTime': '2021-07-07T22:00:00.000Z'}
+ request = {
+ 'type': 'Delete',
+ 'devices': [snap['device']['id']],
+ 'name': 'borrado universal',
+ 'severity': 'Info',
+ 'description': 'duplicity of devices',
+ 'endTime': '2021-07-07T22:00:00.000Z',
+ }
action, _ = user.post(res=models.Action, data=request)
@@ -2840,8 +2895,6 @@ def test_delete_devices(user: UserClient):
assert str(action_delete.id) == action['id']
assert db_device.active == False
-
-
# Check use of filter from frontend
url = '/devices/?filter={"type":["Computer"]}'
@@ -2857,14 +2910,28 @@ def test_delete_devices_check_sync(user: UserClient):
file_snap1 = file('1-device-with-components.snapshot')
file_snap2 = file('2-device-with-components.snapshot')
snap, _ = user.post(file_snap1, res=models.Snapshot)
- request = {'type': 'Delete', 'devices': [snap['device']['id']], 'name': 'borrado universal', 'severity': 'Info', 'description': 'duplicity of devices', 'endTime': '2021-07-07T22:00:00.000Z'}
+ request = {
+ 'type': 'Delete',
+ 'devices': [snap['device']['id']],
+ 'name': 'borrado universal',
+ 'severity': 'Info',
+ 'description': 'duplicity of devices',
+ 'endTime': '2021-07-07T22:00:00.000Z',
+ }
action, _ = user.post(res=models.Action, data=request)
device1 = Device.query.filter_by(id=snap['device']['id']).one()
snap2, _ = user.post(file_snap2, res=models.Snapshot)
- request2 = {'type': 'Delete', 'devices': [snap2['device']['id']], 'name': 'borrado universal', 'severity': 'Info', 'description': 'duplicity of devices', 'endTime': '2021-07-07T22:00:00.000Z'}
+ request2 = {
+ 'type': 'Delete',
+ 'devices': [snap2['device']['id']],
+ 'name': 'borrado universal',
+ 'severity': 'Info',
+ 'description': 'duplicity of devices',
+ 'endTime': '2021-07-07T22:00:00.000Z',
+ }
action2, _ = user.post(res=models.Action, data=request2)
@@ -2872,8 +2939,17 @@ def test_delete_devices_check_sync(user: UserClient):
# check than device2 is an other device than device1
assert device2.id != device1.id
# check than device2 have the components of device1
- assert len([x for x in device2.components
- if device1.id in [y.device.id for y in x.actions if hasattr(y, 'device')]]) == 1
+ assert (
+ len(
+ [
+ x
+ for x in device2.components
+ if device1.id
+ in [y.device.id for y in x.actions if hasattr(y, 'device')]
+ ]
+ )
+ == 1
+ )
@pytest.mark.mvp
@@ -2885,7 +2961,14 @@ def test_delete_devices_permitions(user: UserClient, user2: UserClient):
snap, _ = user.post(file_snap, res=models.Snapshot)
device = Device.query.filter_by(id=snap['device']['id']).one()
- request = {'type': 'Delete', 'devices': [snap['device']['id']], 'name': 'borrado universal', 'severity': 'Info', 'description': 'duplicity of devices', 'endTime': '2021-07-07T22:00:00.000Z'}
+ request = {
+ 'type': 'Delete',
+ 'devices': [snap['device']['id']],
+ 'name': 'borrado universal',
+ 'severity': 'Info',
+ 'description': 'duplicity of devices',
+ 'endTime': '2021-07-07T22:00:00.000Z',
+ }
action, _ = user2.post(res=models.Action, data=request, status=422)
@@ -2895,13 +2978,15 @@ def test_moveOnDocument_bug168(user: UserClient, user2: UserClient):
"""If you use one moveOnDocument in a trade Document. Next you can not drop this document."""
lotIn, _ = user.post({'name': 'MyLotIn'}, res=Lot)
lotOut, _ = user.post({'name': 'MyLotOut'}, res=Lot)
- url = 'http://www.ereuse.org/apapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapaaaa',
+ url = (
+ 'http://www.ereuse.org/apapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapaaaa',
+ )
request_post1 = {
'filename': 'test.pdf',
'hash': 'bbbbbbbb',
'url': url,
'weight': 150,
- 'lot': lotIn['id']
+ 'lot': lotIn['id'],
}
tradedocument_from, _ = user.post(res=TradeDocument, data=request_post1)
id_hash = 'aaaaaaaaa'
@@ -2910,7 +2995,7 @@ def test_moveOnDocument_bug168(user: UserClient, user2: UserClient):
'hash': id_hash,
'url': url,
'weight': 0,
- 'lot': lotOut['id']
+ 'lot': lotOut['id'],
}
tradedocument_to, _ = user.post(res=TradeDocument, data=request_post2)
@@ -2933,7 +3018,7 @@ def test_moveOnDocument_bug168(user: UserClient, user2: UserClient):
'weight': 4,
'container_from': tradedocument_from['id'],
'container_to': id_hash,
- 'description': description
+ 'description': description,
}
doc, _ = user.post(res=models.Action, data=request_moveOn)
trade = models.Trade.query.one()
diff --git a/tests/test_basic.py b/tests/test_basic.py
index 2a86a7c8..765c38d3 100644
--- a/tests/test_basic.py
+++ b/tests/test_basic.py
@@ -19,7 +19,7 @@ def test_dependencies():
# Simplejson has a different signature than stdlib json
# should be fixed though
# noinspection PyUnresolvedReferences
- import simplejson
+ import simplejson # noqa: F401
# noinspection PyArgumentList
@@ -88,6 +88,7 @@ def test_api_docs(client: Client):
'/users/login/',
'/users/logout/',
'/versions/',
+ '/workbench/settings/',
}
assert docs['info'] == {'title': 'Devicehub', 'version': '0.2'}
assert docs['components']['securitySchemes']['bearerAuth'] == {
diff --git a/tests/test_documents.py b/tests/test_documents.py
index 7d642432..4365af5c 100644
--- a/tests/test_documents.py
+++ b/tests/test_documents.py
@@ -1,30 +1,30 @@
import csv
import hashlib
from datetime import datetime
-from io import StringIO, BytesIO
+from io import BytesIO, StringIO
from pathlib import Path
-from flask import url_for
import pytest
-from werkzeug.exceptions import Unauthorized
import teal.marshmallow
from ereuse_utils.test import ANY
+from flask import url_for
+from werkzeug.exceptions import Unauthorized
from ereuse_devicehub import auth
from ereuse_devicehub.client import Client, UserClient
+from ereuse_devicehub.db import db
from ereuse_devicehub.devicehub import Devicehub
-from ereuse_devicehub.resources.user.models import Session
-from ereuse_devicehub.resources.action.models import Snapshot, Allocate, Live
-from ereuse_devicehub.resources.documents import documents
-from ereuse_devicehub.resources.tradedocument.models import TradeDocument
+from ereuse_devicehub.resources.action.models import Allocate, Live, Snapshot
from ereuse_devicehub.resources.device import models as d
+from ereuse_devicehub.resources.documents import documents
+from ereuse_devicehub.resources.enums import SessionType
+from ereuse_devicehub.resources.hash_reports import ReportHash
from ereuse_devicehub.resources.lot.models import Lot
from ereuse_devicehub.resources.tag.model import Tag
-from ereuse_devicehub.resources.hash_reports import ReportHash
-from ereuse_devicehub.resources.enums import SessionType
-from ereuse_devicehub.db import db
+from ereuse_devicehub.resources.tradedocument.models import TradeDocument
+from ereuse_devicehub.resources.user.models import Session
from tests import conftest
-from tests.conftest import file, yaml2json, json_encode
+from tests.conftest import file, json_encode, yaml2json
@pytest.mark.mvp
@@ -33,27 +33,30 @@ def test_erasure_certificate_public_one(user: UserClient, client: Client):
s = file('erase-sectors.snapshot')
snapshot, _ = user.post(s, res=Snapshot)
- doc, response = user.get(res=documents.DocumentDef.t,
- item='erasures/{}'.format(
- snapshot['device']['id']),
- accept=ANY)
+ doc, response = user.get(
+ res=documents.DocumentDef.t,
+ item='erasures/{}'.format(snapshot['device']['id']),
+ accept=ANY,
+ )
assert 'html' in response.content_type
assert ' 0
@@ -124,36 +136,46 @@ def test_export_csv_actions(user: UserClient, user2: UserClient, client: Client)
acer = yaml2json('acer.happy.battery.snapshot')
snapshot, _ = user.post(json_encode(acer), res=Snapshot)
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
- }
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
+ }
user.post(res=Allocate, data=post_request)
hdd = [c for c in acer['components'] if c['type'] == 'HardDrive'][0]
- hdd_action = [a for a in hdd['actions']
- if a['type'] == 'TestDataStorage'][0]
+ hdd_action = [a for a in hdd['actions'] if a['type'] == 'TestDataStorage'][0]
hdd_action['lifetime'] += 1000
acer.pop('elapsed')
acer['licence_version'] = '1.0.0'
snapshot, _ = client.post(acer, res=Live)
- csv_user, _ = user.get(res=documents.DocumentDef.t,
- item='actions/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer'], 'ids': [device_id]})])
+ csv_user, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='actions/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer'], 'ids': [device_id]})],
+ )
- csv_user2, _ = user2.get(res=documents.DocumentDef.t,
- item='actions/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer']})])
+ csv_user2, _ = user2.get(
+ res=documents.DocumentDef.t,
+ item='actions/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer']})],
+ )
- _, res = client.get(res=documents.DocumentDef.t,
- item='actions/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer']})], status=401)
+ _, res = client.get(
+ res=documents.DocumentDef.t,
+ item='actions/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer']})],
+ status=401,
+ )
assert res.status_code == 401
assert len(csv_user) > 0
@@ -167,21 +189,27 @@ def test_live_export_csv2(user: UserClient, client: Client, app: Devicehub):
acer = yaml2json('acer-happy.snapshot-test1')
snapshot, _ = user.post(json_encode(acer), res=Snapshot)
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
- }
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
+ }
user.post(res=Allocate, data=post_request)
acer = yaml2json('acer-happy.live-test1')
live, _ = client.post(acer, res=Live)
- csv_user, _ = user.get(res=documents.DocumentDef.t,
- item='actions/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer'], 'ids': [device_id]})])
+ csv_user, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='actions/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer'], 'ids': [device_id]})],
+ )
assert "4692" in csv_user
assert "8692" in csv_user
@@ -195,11 +223,15 @@ def test_live_example2(user: UserClient, client: Client, app: Devicehub):
acer = yaml2json('acer-happy.snapshot-test1')
snapshot, _ = user.post(json_encode(acer), res=Snapshot)
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=Allocate, data=post_request)
@@ -217,27 +249,36 @@ def test_export_basic_snapshot(user: UserClient):
"""Test export device information in a csv file."""
snapshot, _ = user.post(file('basic.snapshot'), res=Snapshot)
dev_id = snapshot['device']['id']
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='devices/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer'], 'ids': [dev_id]})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='devices/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer'], 'ids': [dev_id]})],
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f, delimiter=';', quotechar='"')
export_csv = list(obj_csv)
# Open fixture csv and transform to list
- with Path(__file__).parent.joinpath('files').joinpath('basic.csv').open() as csv_file:
+ with Path(__file__).parent.joinpath('files').joinpath(
+ 'basic.csv'
+ ).open() as csv_file:
obj_csv = csv.reader(csv_file, delimiter=';', quotechar='"')
fixture_csv = list(obj_csv)
- assert isinstance(datetime.strptime(export_csv[1][19], '%c'), datetime), \
- 'Register in field is not a datetime'
+ assert isinstance(
+ datetime.strptime(export_csv[1][19], '%c'), datetime
+ ), 'Register in field is not a datetime'
assert fixture_csv[0] == export_csv[0], 'Headers are not equal'
- assert fixture_csv[1][:19] == export_csv[1][:19], 'Computer information are not equal'
+ assert (
+ fixture_csv[1][:19] == export_csv[1][:19]
+ ), 'Computer information are not equal'
assert fixture_csv[1][20] == export_csv[1][20], 'Computer information are not equal'
- assert fixture_csv[1][22:] == export_csv[1][22:], 'Computer information are not equal'
+ assert (
+ fixture_csv[1][22:] == export_csv[1][22:]
+ ), 'Computer information are not equal'
@pytest.mark.mvp
@@ -245,13 +286,17 @@ def test_export_basic_snapshot(user: UserClient):
def test_check_insert_hash(app: Devicehub, user: UserClient, client: Client):
"""Test export device information in a csv file."""
snapshot, _ = user.post(file('basic.snapshot'), res=Snapshot)
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='devices/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer']})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='devices/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer']})],
+ )
hash3 = hashlib.sha3_256(csv_str.encode('utf-8')).hexdigest()
assert ReportHash.query.filter_by(hash3=hash3).count() == 1
- result, status = client.get(res=documents.DocumentDef.t, item='check/', query=[('hash', hash3)])
+ result, status = client.get(
+ res=documents.DocumentDef.t, item='check/', query=[('hash', hash3)]
+ )
assert status.status_code == 200
assert result
@@ -266,7 +311,9 @@ def test_check_insert_hash(app: Devicehub, user: UserClient, client: Client):
@pytest.mark.mvp
def test_export_extended(app: Devicehub, user: UserClient):
"""Test a export device with all information and a lot of components."""
- snapshot1, _ = user.post(file('real-eee-1001pxd.snapshot.12'), res=Snapshot, status=201)
+ snapshot1, _ = user.post(
+ file('real-eee-1001pxd.snapshot.12'), res=Snapshot, status=201
+ )
snapshot2, _ = user.post(file('complete.export.snapshot'), res=Snapshot, status=201)
dev1_id = snapshot1['device']['id']
dev2_id = snapshot2['device']['id']
@@ -276,10 +323,12 @@ def test_export_extended(app: Devicehub, user: UserClient):
db.session.add(pc)
db.session.commit()
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='devices/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer'], 'ids': [dev1_id, dev2_id]})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='devices/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer'], 'ids': [dev1_id, dev2_id]})],
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f, delimiter=';', quotechar='"')
@@ -287,28 +336,50 @@ def test_export_extended(app: Devicehub, user: UserClient):
# Open fixture csv and transform to list
with Path(__file__).parent.joinpath('files').joinpath(
- 'proposal_extended_csv_report.csv').open() as csv_file:
+ 'proposal_extended_csv_report.csv'
+ ).open() as csv_file:
obj_csv = csv.reader(csv_file, delimiter=';', quotechar='"')
fixture_csv = list(obj_csv)
- assert isinstance(datetime.strptime(export_csv[1][19], '%c'), datetime), \
- 'Register in field is not a datetime'
+ assert isinstance(
+ datetime.strptime(export_csv[1][19], '%c'), datetime
+ ), 'Register in field is not a datetime'
assert fixture_csv[0] == export_csv[0], 'Headers are not equal'
- assert fixture_csv[1][:19] == export_csv[1][:19], 'Computer information are not equal'
+ assert (
+ fixture_csv[1][:19] == export_csv[1][:19]
+ ), 'Computer information are not equal'
assert fixture_csv[1][20] == export_csv[1][20], 'Computer information are not equal'
- assert fixture_csv[1][22:82] == export_csv[1][22:82], 'Computer information are not equal'
- assert fixture_csv[1][83] == export_csv[1][83], 'Computer information are not equal'
- assert fixture_csv[1][86:] == export_csv[1][86:], 'Computer information are not equal'
- assert fixture_csv[2][:19] == export_csv[2][:19], 'Computer information are not equal'
+ assert (
+ fixture_csv[1][22:83] == export_csv[1][22:83]
+ ), 'Computer information are not equal'
+ assert fixture_csv[1][84] == export_csv[1][84], 'Computer information are not equal'
+ assert (
+ fixture_csv[1][87:] == export_csv[1][87:]
+ ), 'Computer information are not equal'
+ assert (
+ fixture_csv[2][:19] == export_csv[2][:19]
+ ), 'Computer information are not equal'
assert fixture_csv[2][20] == export_csv[2][20], 'Computer information are not equal'
- assert fixture_csv[2][22:82] == export_csv[2][22:82], 'Computer information are not equal'
- assert fixture_csv[2][83] == export_csv[2][83], 'Computer information are not equal'
- assert fixture_csv[2][86:106] == export_csv[2][86:106], 'Computer information are not equal'
- assert fixture_csv[2][109] == export_csv[2][109], 'Computer information are not equal'
- assert fixture_csv[2][112:133] == export_csv[2][112:133], 'Computer information are not equal'
- assert fixture_csv[2][135] == export_csv[2][135], 'Computer information are not equal'
- assert fixture_csv[2][138:] == export_csv[2][138:], 'Computer information are not equal'
+ assert (
+ fixture_csv[2][22:83] == export_csv[2][22:83]
+ ), 'Computer information are not equal'
+ assert fixture_csv[2][84] == export_csv[2][84], 'Computer information are not equal'
+ assert (
+ fixture_csv[2][87:107] == export_csv[2][87:107]
+ ), 'Computer information are not equal'
+ assert (
+ fixture_csv[2][110] == export_csv[2][110]
+ ), 'Computer information are not equal'
+ assert (
+ fixture_csv[2][113:134] == export_csv[2][113:134]
+ ), 'Computer information are not equal'
+ assert (
+ fixture_csv[2][136] == export_csv[2][136]
+ ), 'Computer information are not equal'
+ assert (
+ fixture_csv[2][139:] == export_csv[2][139:]
+ ), 'Computer information are not equal'
@pytest.mark.mvp
@@ -316,9 +387,9 @@ def test_export_empty(user: UserClient):
"""Test to check works correctly exporting csv without any information,
export a placeholder device.
"""
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- accept='text/csv',
- item='devices/')
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t, accept='text/csv', item='devices/'
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f)
export_csv = list(obj_csv)
@@ -330,17 +401,20 @@ def test_export_empty(user: UserClient):
def test_export_computer_monitor(user: UserClient):
"""Test a export device type computer monitor."""
snapshot, _ = user.post(file('computer-monitor.snapshot'), res=Snapshot)
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='devices/',
- accept='text/csv',
- query=[('filter', {'type': ['ComputerMonitor']})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='devices/',
+ accept='text/csv',
+ query=[('filter', {'type': ['ComputerMonitor']})],
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f)
export_csv = list(obj_csv)
# Open fixture csv and transform to list
- with Path(__file__).parent.joinpath('files').joinpath('computer-monitor.csv').open() \
- as csv_file:
+ with Path(__file__).parent.joinpath('files').joinpath(
+ 'computer-monitor.csv'
+ ).open() as csv_file:
obj_csv = csv.reader(csv_file)
fixture_csv = list(obj_csv)
@@ -356,15 +430,19 @@ def test_export_computer_monitor(user: UserClient):
def test_export_keyboard(user: UserClient):
"""Test a export device type keyboard."""
snapshot, _ = user.post(file('keyboard.snapshot'), res=Snapshot)
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='devices/',
- accept='text/csv',
- query=[('filter', {'type': ['Keyboard']})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='devices/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Keyboard']})],
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f)
export_csv = list(obj_csv)
# Open fixture csv and transform to list
- with Path(__file__).parent.joinpath('files').joinpath('keyboard.csv').open() as csv_file:
+ with Path(__file__).parent.joinpath('files').joinpath(
+ 'keyboard.csv'
+ ).open() as csv_file:
obj_csv = csv.reader(csv_file)
fixture_csv = list(obj_csv)
@@ -382,8 +460,9 @@ def test_export_multiple_different_devices(user: UserClient):
computers, keyboards, monitors, etc..)
"""
# Open fixture csv and transform to list
- with Path(__file__).parent.joinpath('files').joinpath('multiples_devices.csv').open() \
- as csv_file:
+ with Path(__file__).parent.joinpath('files').joinpath(
+ 'multiples_devices.csv'
+ ).open() as csv_file:
fixture_csv = list(csv.reader(csv_file))
for row in fixture_csv:
del row[8] # We remove the 'Registered in' column
@@ -394,10 +473,12 @@ def test_export_multiple_different_devices(user: UserClient):
snapshot_keyboard, _ = user.post(file('keyboard.snapshot'), res=Snapshot)
snapshot_monitor, _ = user.post(file('computer-monitor.snapshot'), res=Snapshot)
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='devices/',
- query=[('filter', {'type': ['Computer', 'Keyboard', 'Monitor']})],
- accept='text/csv')
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='devices/',
+ query=[('filter', {'type': ['Computer', 'Keyboard', 'Monitor']})],
+ accept='text/csv',
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f)
export_csv = list(obj_csv)
@@ -410,20 +491,26 @@ def test_export_multiple_different_devices(user: UserClient):
@pytest.mark.mvp
def test_report_devices_stock_control(user: UserClient, user2: UserClient):
+ # TODO
"""Test export device information in a csv file."""
snapshot, _ = user.post(file('basic.snapshot'), res=Snapshot)
snapshot2, _ = user2.post(file('basic.snapshot2'), res=Snapshot)
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='stock/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer']})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='stock/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer']})],
+ )
+
f = StringIO(csv_str)
obj_csv = csv.reader(f, f)
export_csv = list(obj_csv)
# Open fixture csv and transform to list
- with Path(__file__).parent.joinpath('files').joinpath('basic-stock.csv').open() as csv_file:
+ with Path(__file__).parent.joinpath('files').joinpath(
+ 'basic-stock.csv'
+ ).open() as csv_file:
obj_csv = csv.reader(csv_file)
fixture_csv = list(obj_csv)
@@ -432,35 +519,42 @@ def test_report_devices_stock_control(user: UserClient, user2: UserClient):
export_csv[0] = export_csv[0][0].split(';')
export_csv[1] = export_csv[1][0].split(';')
- assert isinstance(datetime.strptime(export_csv[1][5], '%c'), datetime), \
- 'Register in field is not a datetime'
+ fixture_csv[0] = fixture_csv[0][0].split(';')
+ fixture_csv[1] = fixture_csv[1][0].split(';')
+
+ assert isinstance(
+ datetime.strptime(export_csv[1][5], '%c'), datetime
+ ), 'Register in field is not a datetime'
# Pop dates fields from csv lists to compare them
- fixture_csv[1] = fixture_csv[1][0].split(";")
fixture_csv[1] = fixture_csv[1][:5] + fixture_csv[1][6:]
export_csv[1] = export_csv[1][:5] + export_csv[1][6:]
- export_header = [";".join(export_csv[0])]
- assert fixture_csv[0] == export_header, 'Headers are not equal'
+ assert fixture_csv[0] == export_csv[0], 'Headers are not equal'
assert fixture_csv[1] == export_csv[1], 'Computer information are not equal'
- assert fixture_csv == [export_header, export_csv[1]]
+ assert fixture_csv == export_csv
@pytest.mark.mvp
def test_get_document_lots(user: UserClient, user2: UserClient):
"""Tests submitting and retreiving all lots."""
- l, _ = user.post({'name': 'Lot1', 'description': 'comments,lot1,testcomment-lot1,'}, res=Lot)
- l, _ = user.post({'name': 'Lot2', 'description': 'comments,lot2,testcomment-lot2,'}, res=Lot)
- l, _ = user2.post({'name': 'Lot3-User2', 'description': 'comments,lot3,testcomment-lot3,'}, res=Lot)
+ l, _ = user.post(
+ {'name': 'Lot1', 'description': 'comments,lot1,testcomment-lot1,'}, res=Lot
+ )
+ l, _ = user.post(
+ {'name': 'Lot2', 'description': 'comments,lot2,testcomment-lot2,'}, res=Lot
+ )
+ l, _ = user2.post(
+ {'name': 'Lot3-User2', 'description': 'comments,lot3,testcomment-lot3,'},
+ res=Lot,
+ )
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='lots/',
- accept='text/csv')
+ csv_str, _ = user.get(res=documents.DocumentDef.t, item='lots/', accept='text/csv')
- csv2_str, _ = user2.get(res=documents.DocumentDef.t,
- item='lots/',
- accept='text/csv')
+ csv2_str, _ = user2.get(
+ res=documents.DocumentDef.t, item='lots/', accept='text/csv'
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f)
@@ -473,10 +567,17 @@ def test_get_document_lots(user: UserClient, user2: UserClient):
assert len(export_csv) == 3
assert len(export2_csv) == 2
- assert export_csv[0] == export2_csv[0] == ['Id', 'Name', 'Registered in', 'Description']
+ assert (
+ export_csv[0]
+ == export2_csv[0]
+ == ['Id', 'Name', 'Registered in', 'Description']
+ )
assert export_csv[1][1] == 'Lot1' or 'Lot2'
- assert export_csv[1][3] == 'comments,lot1,testcomment-lot1,' or 'comments,lot2,testcomment-lot2,'
+ assert (
+ export_csv[1][3] == 'comments,lot1,testcomment-lot1,'
+ or 'comments,lot2,testcomment-lot2,'
+ )
assert export2_csv[1][1] == 'Lot3-User2'
assert export2_csv[1][3] == 'comments,lot3,testcomment-lot3,'
@@ -485,34 +586,39 @@ def test_get_document_lots(user: UserClient, user2: UserClient):
def test_verify_stamp(user: UserClient, client: Client):
"""Test verify stamp of one export device information in a csv file."""
snapshot, _ = user.post(file('basic.snapshot'), res=Snapshot)
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='devices/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer']})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='devices/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer']})],
+ )
- response, _ = client.post(res=documents.DocumentDef.t,
- item='stamps/',
- content_type='multipart/form-data',
- accept='text/html',
- data={'docUpload': [(BytesIO(bytes(csv_str, 'utf-8')), 'example.csv')]},
- status=200)
+ response, _ = client.post(
+ res=documents.DocumentDef.t,
+ item='stamps/',
+ content_type='multipart/form-data',
+ accept='text/html',
+ data={'docUpload': [(BytesIO(bytes(csv_str, 'utf-8')), 'example.csv')]},
+ status=200,
+ )
assert "alert alert-info" in response
assert not "alert alert-danger" in response
- response, _ = client.post(res=documents.DocumentDef.t,
- item='stamps/',
- content_type='multipart/form-data',
- accept='text/html',
- data={'docUpload': [(BytesIO(b'abc'), 'example.csv')]},
- status=200)
+ response, _ = client.post(
+ res=documents.DocumentDef.t,
+ item='stamps/',
+ content_type='multipart/form-data',
+ accept='text/html',
+ data={'docUpload': [(BytesIO(b'abc'), 'example.csv')]},
+ status=200,
+ )
assert not "alert alert-info" in response
assert "alert alert-danger" in response
- response, _ = client.get(res=documents.DocumentDef.t,
- item='stamps/',
- accept='text/html',
- status=200)
+ response, _ = client.get(
+ res=documents.DocumentDef.t, item='stamps/', accept='text/html', status=200
+ )
assert not "alert alert-info" in response
assert not "alert alert-danger" in response
@@ -522,20 +628,23 @@ def test_verify_stamp(user: UserClient, client: Client):
def test_verify_stamp_log_info(user: UserClient, client: Client):
"""Test verify stamp of one export lots-info in a csv file."""
- l, _ = user.post({'name': 'Lot1', 'description': 'comments,lot1,testcomment-lot1,'}, res=Lot)
- l, _ = user.post({'name': 'Lot2', 'description': 'comments,lot2,testcomment-lot2,'}, res=Lot)
+ l, _ = user.post(
+ {'name': 'Lot1', 'description': 'comments,lot1,testcomment-lot1,'}, res=Lot
+ )
+ l, _ = user.post(
+ {'name': 'Lot2', 'description': 'comments,lot2,testcomment-lot2,'}, res=Lot
+ )
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='lots/',
- accept='text/csv')
+ csv_str, _ = user.get(res=documents.DocumentDef.t, item='lots/', accept='text/csv')
- response, _ = client.post(res=documents.DocumentDef.t,
- item='stamps/',
- content_type='multipart/form-data',
- accept='text/html',
- data={'docUpload': [(BytesIO(bytes(csv_str, 'utf-8')),
- 'example.csv')]},
- status=200)
+ response, _ = client.post(
+ res=documents.DocumentDef.t,
+ item='stamps/',
+ content_type='multipart/form-data',
+ accept='text/html',
+ data={'docUpload': [(BytesIO(bytes(csv_str, 'utf-8')), 'example.csv')]},
+ status=200,
+ )
assert "alert alert-info" in response
@@ -545,18 +654,21 @@ def test_verify_stamp_devices_stock(user: UserClient, client: Client):
snapshot, _ = user.post(file('basic.snapshot'), res=Snapshot)
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='stock/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer']})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='stock/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer']})],
+ )
- response, _ = client.post(res=documents.DocumentDef.t,
- item='stamps/',
- content_type='multipart/form-data',
- accept='text/html',
- data={'docUpload': [(BytesIO(bytes(csv_str, 'utf-8')),
- 'example.csv')]},
- status=200)
+ response, _ = client.post(
+ res=documents.DocumentDef.t,
+ item='stamps/',
+ content_type='multipart/form-data',
+ accept='text/html',
+ data={'docUpload': [(BytesIO(bytes(csv_str, 'utf-8')), 'example.csv')]},
+ status=200,
+ )
assert "alert alert-info" in response
@@ -566,11 +678,15 @@ def test_verify_stamp_csv_actions(user: UserClient, client: Client):
acer = yaml2json('acer.happy.battery.snapshot')
snapshot, _ = user.post(json_encode(acer), res=Snapshot)
device_id = snapshot['device']['id']
- post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
- "devices": [device_id], "description": "aaa",
- "finalUserCode": "abcdefjhi",
- "startTime": "2020-11-01T02:00:00+00:00",
- "endTime": "2020-12-01T02:00:00+00:00"
+ post_request = {
+ "transaction": "ccc",
+ "name": "John",
+ "endUsers": 1,
+ "devices": [device_id],
+ "description": "aaa",
+ "finalUserCode": "abcdefjhi",
+ "startTime": "2020-11-01T02:00:00+00:00",
+ "endTime": "2020-12-01T02:00:00+00:00",
}
user.post(res=Allocate, data=post_request)
@@ -581,18 +697,21 @@ def test_verify_stamp_csv_actions(user: UserClient, client: Client):
acer['licence_version'] = '1.0.0'
snapshot, _ = client.post(acer, res=Live)
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='actions/',
- accept='text/csv',
- query=[('filter', {'type': ['Computer']})])
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='actions/',
+ accept='text/csv',
+ query=[('filter', {'type': ['Computer']})],
+ )
- response, _ = client.post(res=documents.DocumentDef.t,
- item='stamps/',
- content_type='multipart/form-data',
- accept='text/html',
- data={'docUpload': [(BytesIO(bytes(csv_str, 'utf-8')),
- 'example.csv')]},
- status=200)
+ response, _ = client.post(
+ res=documents.DocumentDef.t,
+ item='stamps/',
+ content_type='multipart/form-data',
+ accept='text/html',
+ data={'docUpload': [(BytesIO(bytes(csv_str, 'utf-8')), 'example.csv')]},
+ status=200,
+ )
assert "alert alert-info" in response
@@ -602,35 +721,38 @@ def test_verify_stamp_erasure_certificate(user: UserClient, client: Client):
s = file('erase-sectors.snapshot')
snapshot, response = user.post(s, res=Snapshot)
- doc, _ = user.get(res=documents.DocumentDef.t,
- item='erasures/',
- query=[('filter', {'ids': [snapshot['device']['id']]})],
- accept=ANY)
+ doc, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='erasures/',
+ query=[('filter', {'ids': [snapshot['device']['id']]})],
+ accept=ANY,
+ )
- response, _ = client.post(res=documents.DocumentDef.t,
- item='stamps/',
- content_type='multipart/form-data',
- accept='text/html',
- data={'docUpload': [(BytesIO(bytes(doc, 'utf-8')),
- 'example.csv')]},
- status=200)
+ response, _ = client.post(
+ res=documents.DocumentDef.t,
+ item='stamps/',
+ content_type='multipart/form-data',
+ accept='text/html',
+ data={'docUpload': [(BytesIO(bytes(doc, 'utf-8')), 'example.csv')]},
+ status=200,
+ )
assert "alert alert-danger" in response
- doc, _ = user.get(res=documents.DocumentDef.t,
- item='erasures/',
- query=[
- ('filter', {'ids': [snapshot['device']['id']]}),
- ('format', 'PDF')
- ],
- accept='application/pdf')
+ doc, _ = user.get(
+ res=documents.DocumentDef.t,
+ item='erasures/',
+ query=[('filter', {'ids': [snapshot['device']['id']]}), ('format', 'PDF')],
+ accept='application/pdf',
+ )
- response, _ = client.post(res=documents.DocumentDef.t,
- item='stamps/',
- content_type='multipart/form-data',
- accept='text/html',
- data={'docUpload': [(BytesIO(doc),
- 'example.csv')]},
- status=200)
+ response, _ = client.post(
+ res=documents.DocumentDef.t,
+ item='stamps/',
+ content_type='multipart/form-data',
+ accept='text/html',
+ data={'docUpload': [(BytesIO(doc), 'example.csv')]},
+ status=200,
+ )
assert "alert alert-info" in response
@@ -639,11 +761,10 @@ def test_get_document_internal_stats(user: UserClient, user2: UserClient):
"""Tests for get the internal stats."""
# csv_str, _ = user.get(res=documents.DocumentDef.t,
- # item='internalstats/')
- csv_str, _ = user.get(res=documents.DocumentDef.t,
- item='internalstats/',
- accept='text/csv',
- query=[])
+ # item='internalstats/')
+ csv_str, _ = user.get(
+ res=documents.DocumentDef.t, item='internalstats/', accept='text/csv', query=[]
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f)
@@ -651,10 +772,9 @@ def test_get_document_internal_stats(user: UserClient, user2: UserClient):
assert len(export_csv) == 1
- csv_str, _ = user2.get(res=documents.DocumentDef.t,
- item='internalstats/',
- accept='text/csv',
- query=[])
+ csv_str, _ = user2.get(
+ res=documents.DocumentDef.t, item='internalstats/', accept='text/csv', query=[]
+ )
f = StringIO(csv_str)
obj_csv = csv.reader(f, f)
@@ -675,8 +795,9 @@ def test_get_wbconf(user: UserClient):
assert 'WB_ERASE =' in env
# assert 'WB_ERASE = True' in env
- session = Session.query.filter_by(user_id=user.user['id'],
- type=SessionType.Internal).first()
+ session = Session.query.filter_by(
+ user_id=user.user['id'], type=SessionType.Internal
+ ).first()
token = session.token
token = auth.Auth.encode(session.token)
assert token in env
@@ -694,7 +815,7 @@ def test_trade_documents(user: UserClient):
'filename': 'test.pdf',
'hash': 'bbbbbbbb',
'url': 'http://www.ereuse.org/',
- 'lot': lot['id']
+ 'lot': lot['id'],
}
doc, _ = user.post(res=TradeDocument, data=request_post)
assert doc['filename'] == request_post['filename']
@@ -710,13 +831,15 @@ def test_trade_documents_with_weight(user: UserClient):
lot, _ = user.post({'name': 'MyLot'}, res=Lot)
# long url
- url = 'http://www.ereuse.org/apapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapaaaa',
+ url = (
+ 'http://www.ereuse.org/apapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapapaapaapaapaapaapaapaapaapaapaaaa',
+ )
request_post = {
'filename': 'test.pdf',
'hash': 'bbbbbbbb',
'url': url,
'weight': 15,
- 'lot': lot['id']
+ 'lot': lot['id'],
}
doc, _ = user.post(res=TradeDocument, data=request_post)
assert doc['weight'] == request_post['weight']
diff --git a/tests/test_render_2_0.py b/tests/test_render_2_0.py
index 57543b3e..fc9b71ec 100644
--- a/tests/test_render_2_0.py
+++ b/tests/test_render_2_0.py
@@ -224,11 +224,12 @@ def test_export_devices(user3: UserClientFlask):
), 'Computer information are not equal'
assert fixture_csv[1][20] == export_csv[1][20], 'Computer information are not equal'
assert (
- fixture_csv[1][22:82] == export_csv[1][22:82]
+ fixture_csv[1][22:83] == export_csv[1][22:83]
), 'Computer information are not equal'
- assert fixture_csv[1][83] == export_csv[1][83], 'Computer information are not equal'
+
+ assert fixture_csv[1][84] == export_csv[1][84], 'Computer information are not equal'
assert (
- fixture_csv[1][86:] == export_csv[1][86:]
+ fixture_csv[1][88:] == export_csv[1][88:]
), 'Computer information are not equal'
@@ -842,3 +843,26 @@ def test_action_datawipe(user3: UserClientFlask):
assert dev.actions[-1].type == 'DataWipe'
assert 'Action "DataWipe" created successfully!' in body
assert dev.devicehub_id in body
+
+
+@pytest.mark.mvp
+@pytest.mark.usefixtures(conftest.app_context.__name__)
+def test_wb_settings(user3: UserClientFlask):
+ uri = '/workbench/settings/'
+ body, status = user3.get(uri)
+
+ assert status == '200 OK'
+ assert "Download your settings for Workbench" in body
+ assert "Workbench Settings" in body
+
+
+@pytest.mark.mvp
+@pytest.mark.usefixtures(conftest.app_context.__name__)
+def test_wb_settings_register(user3: UserClientFlask):
+ uri = '/workbench/settings/?opt=register'
+ body, status = user3.get(uri)
+
+ assert status == '200 OK'
+ assert "TOKEN = " in body
+ assert "URL = https://" in body
+ assert "/api/inventory/" in body