public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests
@ 2021-04-01 13:40 Oguz Bektas
  2021-04-01 13:40 ` [pve-devel] [PATCH storage 2/2] smartctl: use json parsing Oguz Bektas
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Oguz Bektas @ 2021-04-01 13:40 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
---
 test/disk_tests/cciss/cciss!c0d0/device/model |   1 -
 .../disk_tests/cciss/cciss!c0d0/device/vendor |   1 -
 .../cciss/cciss!c0d0/queue/rotational         |   1 -
 test/disk_tests/cciss/cciss!c0d0/size         |   1 -
 test/disk_tests/cciss/cciss!c0d0_udevadm      |  32 ---
 test/disk_tests/cciss/disklist                |   1 -
 test/disk_tests/cciss/disklist_expected.json  |  16 --
 test/disk_tests/hdd_smart/disklist            |   2 -
 .../hdd_smart/disklist_expected.json          |  30 --
 test/disk_tests/hdd_smart/sda/device/vendor   |   1 -
 .../disk_tests/hdd_smart/sda/queue/rotational |   1 -
 test/disk_tests/hdd_smart/sda/size            |   1 -
 test/disk_tests/hdd_smart/sda_health          |   5 -
 test/disk_tests/hdd_smart/sda_smart           |  40 ---
 .../hdd_smart/sda_smart_expected.json         | 246 -----------------
 test/disk_tests/hdd_smart/sda_udevadm         |  11 -
 test/disk_tests/hdd_smart/sdb/device/vendor   |   1 -
 .../disk_tests/hdd_smart/sdb/queue/rotational |   1 -
 test/disk_tests/hdd_smart/sdb/size            |   1 -
 test/disk_tests/hdd_smart/sdb_health          |   5 -
 test/disk_tests/hdd_smart/sdb_smart           |  36 ---
 .../hdd_smart/sdb_smart_expected.json         | 216 ---------------
 test/disk_tests/hdd_smart/sdb_udevadm         |  11 -
 test/disk_tests/nvme_smart/disklist           |   1 -
 .../nvme_smart/disklist_expected.json         |  16 --
 test/disk_tests/nvme_smart/nvme0/model        |   1 -
 test/disk_tests/nvme_smart/nvme0_smart        |  22 --
 test/disk_tests/nvme_smart/nvme0n1/device     |   1 -
 .../nvme_smart/nvme0n1/queue/rotational       |   1 -
 test/disk_tests/nvme_smart/nvme0n1/size       |   1 -
 .../nvme_smart/nvme0n1_smart_expected.json    |   6 -
 test/disk_tests/nvme_smart/nvme0n1_udevadm    |  18 --
 test/disk_tests/sas/disklist                  |   1 -
 test/disk_tests/sas/disklist_expected.json    |  17 --
 test/disk_tests/sas/sda/device/model          |   1 -
 test/disk_tests/sas/sda/device/vendor         |   1 -
 test/disk_tests/sas/sda/queue/rotational      |   1 -
 test/disk_tests/sas/sda/size                  |   1 -
 test/disk_tests/sas/sda_smart                 |  20 --
 test/disk_tests/sas/sda_smart_expected.json   |   6 -
 test/disk_tests/sas/sda_udevadm               |  31 ---
 test/disk_tests/sas_ssd/disklist              |   1 -
 .../disk_tests/sas_ssd/disklist_expected.json |  17 --
 test/disk_tests/sas_ssd/sda/device/model      |   1 -
 test/disk_tests/sas_ssd/sda/device/vendor     |   1 -
 test/disk_tests/sas_ssd/sda/queue/rotational  |   1 -
 test/disk_tests/sas_ssd/sda/size              |   1 -
 test/disk_tests/sas_ssd/sda_smart             |  20 --
 .../sas_ssd/sda_smart_expected.json           |   6 -
 test/disk_tests/sas_ssd/sda_udevadm           |  31 ---
 test/disk_tests/ssd_smart/disklist            |   5 -
 .../ssd_smart/disklist_expected.json          |  72 -----
 test/disk_tests/ssd_smart/sda/device/vendor   |   1 -
 .../disk_tests/ssd_smart/sda/queue/rotational |   1 -
 test/disk_tests/ssd_smart/sda/size            |   1 -
 test/disk_tests/ssd_smart/sda_smart           |  39 ---
 .../ssd_smart/sda_smart_expected.json         | 236 ----------------
 test/disk_tests/ssd_smart/sda_udevadm         |  11 -
 test/disk_tests/ssd_smart/sdb/device/vendor   |   1 -
 .../disk_tests/ssd_smart/sdb/queue/rotational |   1 -
 test/disk_tests/ssd_smart/sdb/size            |   1 -
 test/disk_tests/ssd_smart/sdb_smart           |  41 ---
 .../ssd_smart/sdb_smart_expected.json         | 256 ------------------
 test/disk_tests/ssd_smart/sdb_udevadm         |  12 -
 test/disk_tests/ssd_smart/sdc/device/vendor   |   1 -
 .../disk_tests/ssd_smart/sdc/queue/rotational |   1 -
 test/disk_tests/ssd_smart/sdc/size            |   1 -
 test/disk_tests/ssd_smart/sdc_smart           |  16 --
 .../ssd_smart/sdc_smart_expected.json         |  16 --
 test/disk_tests/ssd_smart/sdc_udevadm         |  11 -
 test/disk_tests/ssd_smart/sdd/device/vendor   |   1 -
 .../disk_tests/ssd_smart/sdd/queue/rotational |   1 -
 test/disk_tests/ssd_smart/sdd/size            |   1 -
 test/disk_tests/ssd_smart/sdd_smart           |  40 ---
 .../ssd_smart/sdd_smart_expected.json         | 256 ------------------
 test/disk_tests/ssd_smart/sdd_udevadm         |  11 -
 test/disk_tests/ssd_smart/sde/device/vendor   |   1 -
 .../disk_tests/ssd_smart/sde/queue/rotational |   1 -
 test/disk_tests/ssd_smart/sde/size            |   1 -
 test/disk_tests/ssd_smart/sde_smart           |  40 ---
 .../ssd_smart/sde_smart_expected.json         | 246 -----------------
 test/disk_tests/ssd_smart/sde_udevadm         |  11 -
 test/disk_tests/usages/disklist               |  14 -
 test/disk_tests/usages/disklist_expected.json | 222 ---------------
 test/disk_tests/usages/lsblk                  |   8 -
 test/disk_tests/usages/lvs                    |   6 -
 test/disk_tests/usages/mounts                 |   2 -
 test/disk_tests/usages/partlist               |   6 -
 test/disk_tests/usages/pvs                    |   7 -
 test/disk_tests/usages/sda/device/vendor      |   1 -
 test/disk_tests/usages/sda/queue/rotational   |   1 -
 test/disk_tests/usages/sda/size               |   1 -
 test/disk_tests/usages/sda_udevadm            |  12 -
 test/disk_tests/usages/sdb/device/vendor      |   1 -
 test/disk_tests/usages/sdb/queue/rotational   |   1 -
 test/disk_tests/usages/sdb/size               |   1 -
 test/disk_tests/usages/sdb_udevadm            |  12 -
 test/disk_tests/usages/sdc/device/vendor      |   1 -
 test/disk_tests/usages/sdc/queue/rotational   |   1 -
 test/disk_tests/usages/sdc/size               |   1 -
 test/disk_tests/usages/sdc_udevadm            |  12 -
 test/disk_tests/usages/sdd/device/vendor      |   1 -
 test/disk_tests/usages/sdd/queue/rotational   |   1 -
 test/disk_tests/usages/sdd/sdd1/size          |   1 -
 test/disk_tests/usages/sdd/sdd2/size          |   1 -
 test/disk_tests/usages/sdd/size               |   1 -
 test/disk_tests/usages/sdd_udevadm            |  12 -
 test/disk_tests/usages/sde/device/vendor      |   1 -
 test/disk_tests/usages/sde/queue/rotational   |   1 -
 test/disk_tests/usages/sde/sde1/size          |   1 -
 test/disk_tests/usages/sde/size               |   1 -
 test/disk_tests/usages/sde_udevadm            |  12 -
 test/disk_tests/usages/sdf/device/vendor      |   1 -
 test/disk_tests/usages/sdf/queue/rotational   |   1 -
 test/disk_tests/usages/sdf/sdf1/size          |   1 -
 test/disk_tests/usages/sdf/size               |   1 -
 test/disk_tests/usages/sdf_udevadm            |  12 -
 test/disk_tests/usages/sdg/device/vendor      |   1 -
 test/disk_tests/usages/sdg/queue/rotational   |   1 -
 test/disk_tests/usages/sdg/size               |   1 -
 test/disk_tests/usages/sdg_udevadm            |  12 -
 test/disk_tests/usages/sdh/device/vendor      |   1 -
 test/disk_tests/usages/sdh/queue/rotational   |   1 -
 test/disk_tests/usages/sdh/size               |   1 -
 test/disk_tests/usages/sdh_udevadm            |  12 -
 test/disk_tests/usages/sdi/device/vendor      |   1 -
 test/disk_tests/usages/sdi/queue/rotational   |   1 -
 test/disk_tests/usages/sdi/size               |   1 -
 test/disk_tests/usages/sdi_udevadm            |  12 -
 test/disk_tests/usages/sdj/device/vendor      |   1 -
 test/disk_tests/usages/sdj/queue/rotational   |   1 -
 test/disk_tests/usages/sdj/size               |   1 -
 test/disk_tests/usages/sdj_udevadm            |  12 -
 test/disk_tests/usages/sdk/device/vendor      |   1 -
 test/disk_tests/usages/sdk/queue/rotational   |   1 -
 test/disk_tests/usages/sdk/size               |   1 -
 test/disk_tests/usages/sdk_udevadm            |  12 -
 test/disk_tests/usages/sdl/device/vendor      |   1 -
 test/disk_tests/usages/sdl/queue/rotational   |   1 -
 test/disk_tests/usages/sdl/size               |   1 -
 test/disk_tests/usages/sdl_udevadm            |  12 -
 test/disk_tests/usages/sdm/device/vendor      |   1 -
 test/disk_tests/usages/sdm/queue/rotational   |   1 -
 test/disk_tests/usages/sdm/sdm1/size          |   1 -
 test/disk_tests/usages/sdm/sdm9/size          |   1 -
 test/disk_tests/usages/sdm/size               |   1 -
 test/disk_tests/usages/sdm_udevadm            |  12 -
 test/disk_tests/usages/sdn/device/vendor      |   1 -
 test/disk_tests/usages/sdn/queue/rotational   |   1 -
 test/disk_tests/usages/sdn/size               |   1 -
 test/disk_tests/usages/sdn_udevadm            |  14 -
 test/disk_tests/usages/zpool                  |   6 -
 152 files changed, 2709 deletions(-)
 delete mode 100644 test/disk_tests/cciss/cciss!c0d0/device/model
 delete mode 100644 test/disk_tests/cciss/cciss!c0d0/device/vendor
 delete mode 100644 test/disk_tests/cciss/cciss!c0d0/queue/rotational
 delete mode 100644 test/disk_tests/cciss/cciss!c0d0/size
 delete mode 100644 test/disk_tests/cciss/cciss!c0d0_udevadm
 delete mode 100644 test/disk_tests/cciss/disklist
 delete mode 100644 test/disk_tests/cciss/disklist_expected.json
 delete mode 100644 test/disk_tests/hdd_smart/disklist
 delete mode 100644 test/disk_tests/hdd_smart/disklist_expected.json
 delete mode 100644 test/disk_tests/hdd_smart/sda/device/vendor
 delete mode 100644 test/disk_tests/hdd_smart/sda/queue/rotational
 delete mode 100644 test/disk_tests/hdd_smart/sda/size
 delete mode 100644 test/disk_tests/hdd_smart/sda_health
 delete mode 100644 test/disk_tests/hdd_smart/sda_smart
 delete mode 100644 test/disk_tests/hdd_smart/sda_smart_expected.json
 delete mode 100644 test/disk_tests/hdd_smart/sda_udevadm
 delete mode 100644 test/disk_tests/hdd_smart/sdb/device/vendor
 delete mode 100644 test/disk_tests/hdd_smart/sdb/queue/rotational
 delete mode 100644 test/disk_tests/hdd_smart/sdb/size
 delete mode 100644 test/disk_tests/hdd_smart/sdb_health
 delete mode 100644 test/disk_tests/hdd_smart/sdb_smart
 delete mode 100644 test/disk_tests/hdd_smart/sdb_smart_expected.json
 delete mode 100644 test/disk_tests/hdd_smart/sdb_udevadm
 delete mode 100644 test/disk_tests/nvme_smart/disklist
 delete mode 100644 test/disk_tests/nvme_smart/disklist_expected.json
 delete mode 100644 test/disk_tests/nvme_smart/nvme0/model
 delete mode 100644 test/disk_tests/nvme_smart/nvme0_smart
 delete mode 120000 test/disk_tests/nvme_smart/nvme0n1/device
 delete mode 100644 test/disk_tests/nvme_smart/nvme0n1/queue/rotational
 delete mode 100644 test/disk_tests/nvme_smart/nvme0n1/size
 delete mode 100644 test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
 delete mode 100644 test/disk_tests/nvme_smart/nvme0n1_udevadm
 delete mode 100644 test/disk_tests/sas/disklist
 delete mode 100644 test/disk_tests/sas/disklist_expected.json
 delete mode 100644 test/disk_tests/sas/sda/device/model
 delete mode 100644 test/disk_tests/sas/sda/device/vendor
 delete mode 100644 test/disk_tests/sas/sda/queue/rotational
 delete mode 100644 test/disk_tests/sas/sda/size
 delete mode 100644 test/disk_tests/sas/sda_smart
 delete mode 100644 test/disk_tests/sas/sda_smart_expected.json
 delete mode 100644 test/disk_tests/sas/sda_udevadm
 delete mode 100644 test/disk_tests/sas_ssd/disklist
 delete mode 100644 test/disk_tests/sas_ssd/disklist_expected.json
 delete mode 100644 test/disk_tests/sas_ssd/sda/device/model
 delete mode 100644 test/disk_tests/sas_ssd/sda/device/vendor
 delete mode 100644 test/disk_tests/sas_ssd/sda/queue/rotational
 delete mode 100644 test/disk_tests/sas_ssd/sda/size
 delete mode 100644 test/disk_tests/sas_ssd/sda_smart
 delete mode 100644 test/disk_tests/sas_ssd/sda_smart_expected.json
 delete mode 100644 test/disk_tests/sas_ssd/sda_udevadm
 delete mode 100644 test/disk_tests/ssd_smart/disklist
 delete mode 100644 test/disk_tests/ssd_smart/disklist_expected.json
 delete mode 100644 test/disk_tests/ssd_smart/sda/device/vendor
 delete mode 100644 test/disk_tests/ssd_smart/sda/queue/rotational
 delete mode 100644 test/disk_tests/ssd_smart/sda/size
 delete mode 100644 test/disk_tests/ssd_smart/sda_smart
 delete mode 100644 test/disk_tests/ssd_smart/sda_smart_expected.json
 delete mode 100644 test/disk_tests/ssd_smart/sda_udevadm
 delete mode 100644 test/disk_tests/ssd_smart/sdb/device/vendor
 delete mode 100644 test/disk_tests/ssd_smart/sdb/queue/rotational
 delete mode 100644 test/disk_tests/ssd_smart/sdb/size
 delete mode 100644 test/disk_tests/ssd_smart/sdb_smart
 delete mode 100644 test/disk_tests/ssd_smart/sdb_smart_expected.json
 delete mode 100644 test/disk_tests/ssd_smart/sdb_udevadm
 delete mode 100644 test/disk_tests/ssd_smart/sdc/device/vendor
 delete mode 100644 test/disk_tests/ssd_smart/sdc/queue/rotational
 delete mode 100644 test/disk_tests/ssd_smart/sdc/size
 delete mode 100644 test/disk_tests/ssd_smart/sdc_smart
 delete mode 100644 test/disk_tests/ssd_smart/sdc_smart_expected.json
 delete mode 100644 test/disk_tests/ssd_smart/sdc_udevadm
 delete mode 100644 test/disk_tests/ssd_smart/sdd/device/vendor
 delete mode 100644 test/disk_tests/ssd_smart/sdd/queue/rotational
 delete mode 100644 test/disk_tests/ssd_smart/sdd/size
 delete mode 100644 test/disk_tests/ssd_smart/sdd_smart
 delete mode 100644 test/disk_tests/ssd_smart/sdd_smart_expected.json
 delete mode 100644 test/disk_tests/ssd_smart/sdd_udevadm
 delete mode 100644 test/disk_tests/ssd_smart/sde/device/vendor
 delete mode 100644 test/disk_tests/ssd_smart/sde/queue/rotational
 delete mode 100644 test/disk_tests/ssd_smart/sde/size
 delete mode 100644 test/disk_tests/ssd_smart/sde_smart
 delete mode 100644 test/disk_tests/ssd_smart/sde_smart_expected.json
 delete mode 100644 test/disk_tests/ssd_smart/sde_udevadm
 delete mode 100644 test/disk_tests/usages/disklist
 delete mode 100644 test/disk_tests/usages/disklist_expected.json
 delete mode 100644 test/disk_tests/usages/lsblk
 delete mode 100644 test/disk_tests/usages/lvs
 delete mode 100644 test/disk_tests/usages/mounts
 delete mode 100644 test/disk_tests/usages/partlist
 delete mode 100644 test/disk_tests/usages/pvs
 delete mode 100644 test/disk_tests/usages/sda/device/vendor
 delete mode 100644 test/disk_tests/usages/sda/queue/rotational
 delete mode 100644 test/disk_tests/usages/sda/size
 delete mode 100644 test/disk_tests/usages/sda_udevadm
 delete mode 100644 test/disk_tests/usages/sdb/device/vendor
 delete mode 100644 test/disk_tests/usages/sdb/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdb/size
 delete mode 100644 test/disk_tests/usages/sdb_udevadm
 delete mode 100644 test/disk_tests/usages/sdc/device/vendor
 delete mode 100644 test/disk_tests/usages/sdc/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdc/size
 delete mode 100644 test/disk_tests/usages/sdc_udevadm
 delete mode 100644 test/disk_tests/usages/sdd/device/vendor
 delete mode 100644 test/disk_tests/usages/sdd/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdd/sdd1/size
 delete mode 100644 test/disk_tests/usages/sdd/sdd2/size
 delete mode 100644 test/disk_tests/usages/sdd/size
 delete mode 100644 test/disk_tests/usages/sdd_udevadm
 delete mode 100644 test/disk_tests/usages/sde/device/vendor
 delete mode 100644 test/disk_tests/usages/sde/queue/rotational
 delete mode 100644 test/disk_tests/usages/sde/sde1/size
 delete mode 100644 test/disk_tests/usages/sde/size
 delete mode 100644 test/disk_tests/usages/sde_udevadm
 delete mode 100644 test/disk_tests/usages/sdf/device/vendor
 delete mode 100644 test/disk_tests/usages/sdf/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdf/sdf1/size
 delete mode 100644 test/disk_tests/usages/sdf/size
 delete mode 100644 test/disk_tests/usages/sdf_udevadm
 delete mode 100644 test/disk_tests/usages/sdg/device/vendor
 delete mode 100644 test/disk_tests/usages/sdg/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdg/size
 delete mode 100644 test/disk_tests/usages/sdg_udevadm
 delete mode 100644 test/disk_tests/usages/sdh/device/vendor
 delete mode 100644 test/disk_tests/usages/sdh/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdh/size
 delete mode 100644 test/disk_tests/usages/sdh_udevadm
 delete mode 100644 test/disk_tests/usages/sdi/device/vendor
 delete mode 100644 test/disk_tests/usages/sdi/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdi/size
 delete mode 100644 test/disk_tests/usages/sdi_udevadm
 delete mode 100644 test/disk_tests/usages/sdj/device/vendor
 delete mode 100644 test/disk_tests/usages/sdj/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdj/size
 delete mode 100644 test/disk_tests/usages/sdj_udevadm
 delete mode 100644 test/disk_tests/usages/sdk/device/vendor
 delete mode 100644 test/disk_tests/usages/sdk/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdk/size
 delete mode 100644 test/disk_tests/usages/sdk_udevadm
 delete mode 100644 test/disk_tests/usages/sdl/device/vendor
 delete mode 100644 test/disk_tests/usages/sdl/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdl/size
 delete mode 100644 test/disk_tests/usages/sdl_udevadm
 delete mode 100644 test/disk_tests/usages/sdm/device/vendor
 delete mode 100644 test/disk_tests/usages/sdm/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdm/sdm1/size
 delete mode 100644 test/disk_tests/usages/sdm/sdm9/size
 delete mode 100644 test/disk_tests/usages/sdm/size
 delete mode 100644 test/disk_tests/usages/sdm_udevadm
 delete mode 100644 test/disk_tests/usages/sdn/device/vendor
 delete mode 100644 test/disk_tests/usages/sdn/queue/rotational
 delete mode 100644 test/disk_tests/usages/sdn/size
 delete mode 100644 test/disk_tests/usages/sdn_udevadm
 delete mode 100644 test/disk_tests/usages/zpool

diff --git a/test/disk_tests/cciss/cciss!c0d0/device/model b/test/disk_tests/cciss/cciss!c0d0/device/model
deleted file mode 100644
index 676b97d..0000000
--- a/test/disk_tests/cciss/cciss!c0d0/device/model
+++ /dev/null
@@ -1 +0,0 @@
-LOGICAL_VOLUME
diff --git a/test/disk_tests/cciss/cciss!c0d0/device/vendor b/test/disk_tests/cciss/cciss!c0d0/device/vendor
deleted file mode 100644
index e8b2ad6..0000000
--- a/test/disk_tests/cciss/cciss!c0d0/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-HP
diff --git a/test/disk_tests/cciss/cciss!c0d0/queue/rotational b/test/disk_tests/cciss/cciss!c0d0/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/cciss/cciss!c0d0/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/cciss/cciss!c0d0/size b/test/disk_tests/cciss/cciss!c0d0/size
deleted file mode 100644
index f599e28..0000000
--- a/test/disk_tests/cciss/cciss!c0d0/size
+++ /dev/null
@@ -1 +0,0 @@
-10
diff --git a/test/disk_tests/cciss/cciss!c0d0_udevadm b/test/disk_tests/cciss/cciss!c0d0_udevadm
deleted file mode 100644
index 21e8899..0000000
--- a/test/disk_tests/cciss/cciss!c0d0_udevadm
+++ /dev/null
@@ -1,32 +0,0 @@
-P: /devices/pci0000:40/0000:40:13.0/0000:45:00.0/cciss0/c0d0/block/cciss!c0d0
-N: cciss/c0d0
-S: disk/by-id/cciss-SERIAL111
-S: disk/by-id/wwn-0x00000000000000000000000000000000
-S: disk/by-path/pci-0000:45:00.0-cciss-disk0
-E: DEVLINKS=/dev/disk/by-id/cciss-000000000000000000000000000000000 /dev/disk/by-id/wwn-0x000000000000000000000000000000000/dev/disk/by-path/pci-0000:45:00.0-cciss-disk0
-E: DEVNAME=/dev/cciss/c0d0
-E: DEVPATH=/devices/pci0000:40/0000:40:13.0/0000:45:00.0/cciss0/c0d0/block/cciss!c0d0
-E: DEVTYPE=disk
-E: ID_BUS=cciss
-E: ID_MODEL=LOGICAL_VOLUME
-E: ID_MODEL_ENC=LOGICAL\x20VOLUME\x20\x20
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=cfe72deb-65d1-487c-bdfa-8af66dc1a969
-E: ID_PATH=pci-0000:45:00.0-cciss-disk0
-E: ID_PATH_TAG=pci-0000_45_00_0-cciss-disk0
-E: ID_REVISION=7.24
-E: ID_SCSI=1
-E: ID_SCSI_SERIAL=SERIAL1
-E: ID_SERIAL=SERIAL111
-E: ID_SERIAL_SHORT=SER111
-E: ID_TYPE=disk
-E: ID_VENDOR=HP
-E: ID_VENDOR_ENC=HP\x20\x20\x20\x20\x20\x20
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_VENDOR_EXTENSION=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x00000000000000000000000000000000
-E: MAJOR=104
-E: MINOR=0
-E: SUBSYSTEM=block
-E: TAGS=:systemd:
-E: USEC_INITIALIZED=2247
diff --git a/test/disk_tests/cciss/disklist b/test/disk_tests/cciss/disklist
deleted file mode 100644
index aa174aa..0000000
--- a/test/disk_tests/cciss/disklist
+++ /dev/null
@@ -1 +0,0 @@
-cciss!c0d0
diff --git a/test/disk_tests/cciss/disklist_expected.json b/test/disk_tests/cciss/disklist_expected.json
deleted file mode 100644
index eff58db..0000000
--- a/test/disk_tests/cciss/disklist_expected.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "cciss/c0d0" : {
-	"wearout" : "N/A",
-	"vendor" : "HP",
-	"rpm" : -1,
-	"type" : "unknown",
-	"serial" : "SER111",
-	"osdid" : -1,
-	"health" : "UNKNOWN",
-	"model" : "LOGICAL_VOLUME",
-	"size" : 5120,
-	"wwn" : "0x0000000000000000",
-	"gpt" : 1,
-	"devpath" : "/dev/cciss/c0d0"
-    }
-}
diff --git a/test/disk_tests/hdd_smart/disklist b/test/disk_tests/hdd_smart/disklist
deleted file mode 100644
index 9f6776c..0000000
--- a/test/disk_tests/hdd_smart/disklist
+++ /dev/null
@@ -1,2 +0,0 @@
-sda
-sdb
diff --git a/test/disk_tests/hdd_smart/disklist_expected.json b/test/disk_tests/hdd_smart/disklist_expected.json
deleted file mode 100644
index 02a341e..0000000
--- a/test/disk_tests/hdd_smart/disklist_expected.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-    "sdb" : {
-	"devpath" : "/dev/sdb",
-	"size" : 1024000,
-	"gpt" : 1,
-	"osdid" : -1,
-	"rpm" : 7200,
-	"model" : "ST4000NM0033-9ZM170",
-	"vendor" : "ATA",
-	"health" : "PASSED",
-	"type" : "hdd",
-	"wwn" : "0x0000000000000000",
-	"wearout" : "N/A",
-	"serial" : "00000000"
-    },
-    "sda" : {
-	"osdid" : -1,
-	"size" : 1024000,
-	"gpt" : 1,
-	"devpath" : "/dev/sda",
-	"model" : "ST4000DM000-1F2168",
-	"rpm" : 5900,
-	"type" : "hdd",
-	"health" : "PASSED",
-	"vendor" : "ATA",
-	"serial" : "00000000",
-	"wearout" : "N/A",
-	"wwn" : "0x0000000000000000"
-    }
-}
diff --git a/test/disk_tests/hdd_smart/sda/device/vendor b/test/disk_tests/hdd_smart/sda/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/hdd_smart/sda/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/hdd_smart/sda/queue/rotational b/test/disk_tests/hdd_smart/sda/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/hdd_smart/sda/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/hdd_smart/sda/size b/test/disk_tests/hdd_smart/sda/size
deleted file mode 100644
index 8bd1af1..0000000
--- a/test/disk_tests/hdd_smart/sda/size
+++ /dev/null
@@ -1 +0,0 @@
-2000
diff --git a/test/disk_tests/hdd_smart/sda_health b/test/disk_tests/hdd_smart/sda_health
deleted file mode 100644
index faf4ce3..0000000
--- a/test/disk_tests/hdd_smart/sda_health
+++ /dev/null
@@ -1,5 +0,0 @@
-smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
-Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
diff --git a/test/disk_tests/hdd_smart/sda_smart b/test/disk_tests/hdd_smart/sda_smart
deleted file mode 100644
index a3f8f0a..0000000
--- a/test/disk_tests/hdd_smart/sda_smart
+++ /dev/null
@@ -1,40 +0,0 @@
-smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
-Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
-
-SMART Attributes Data Structure revision number: 10
-Vendor Specific SMART Attributes with Thresholds:
-ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
-  1 Raw_Read_Error_Rate     POSR--   117   099   006    -    158983656
-  3 Spin_Up_Time            PO----   092   091   000    -    0
-  4 Start_Stop_Count        -O--CK   100   100   020    -    189
-  5 Reallocated_Sector_Ct   PO--CK   100   100   010    -    0
-  7 Seek_Error_Rate         POSR--   075   060   030    -    30779387
-  9 Power_On_Hours          -O--CK   099   099   000    -    1250
- 10 Spin_Retry_Count        PO--C-   100   100   097    -    0
- 12 Power_Cycle_Count       -O--CK   100   100   020    -    190
-183 Runtime_Bad_Block       -O--CK   100   100   000    -    0
-184 End-to-End_Error        -O--CK   100   100   099    -    0
-187 Reported_Uncorrect      -O--CK   100   100   000    -    0
-188 Command_Timeout         -O--CK   100   100   000    -    0 0 0
-189 High_Fly_Writes         -O-RCK   100   100   000    -    0
-190 Airflow_Temperature_Cel -O---K   069   061   045    -    31 (Min/Max 20/33)
-191 G-Sense_Error_Rate      -O--CK   100   100   000    -    0
-192 Power-Off_Retract_Count -O--CK   100   100   000    -    43
-193 Load_Cycle_Count        -O--CK   100   100   000    -    201
-194 Temperature_Celsius     -O---K   031   040   000    -    31 (0 17 0 0 0)
-197 Current_Pending_Sector  -O--C-   100   100   000    -    0
-198 Offline_Uncorrectable   ----C-   100   100   000    -    0
-199 UDMA_CRC_Error_Count    -OSRCK   200   200   000    -    0
-240 Head_Flying_Hours       ------   100   253   000    -    1259h+06m+33.546s
-241 Total_LBAs_Written      ------   100   253   000    -    24013587236
-242 Total_LBAs_Read         ------   100   253   000    -    66916845706732
-                            ||||||_ K auto-keep
-                            |||||__ C event count
-                            ||||___ R error rate
-                            |||____ S speed/performance
-                            ||_____ O updated online
-                            |______ P prefailure warning
-
diff --git a/test/disk_tests/hdd_smart/sda_smart_expected.json b/test/disk_tests/hdd_smart/sda_smart_expected.json
deleted file mode 100644
index 01bb860..0000000
--- a/test/disk_tests/hdd_smart/sda_smart_expected.json
+++ /dev/null
@@ -1,246 +0,0 @@
-{
-    "attributes" : [
-	{
-	    "threshold" : 6,
-	    "fail" : "-",
-	    "flags" : "POSR--",
-	    "value" : 117,
-	    "id" : "  1",
-	    "raw" : "158983656",
-	    "name" : "Raw_Read_Error_Rate",
-	    "worst" : 99
-	},
-	{
-	    "flags" : "PO----",
-	    "value" : 92,
-	    "raw" : "0",
-	    "name" : "Spin_Up_Time",
-	    "worst" : 91,
-	    "id" : "  3",
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "value" : 100,
-	    "flags" : "-O--CK",
-	    "id" : "  4",
-	    "name" : "Start_Stop_Count",
-	    "worst" : 100,
-	    "raw" : "189",
-	    "threshold" : 20,
-	    "fail" : "-"
-	},
-	{
-	    "value" : 100,
-	    "flags" : "PO--CK",
-	    "id" : "  5",
-	    "name" : "Reallocated_Sector_Ct",
-	    "worst" : 100,
-	    "raw" : "0",
-	    "threshold" : 10,
-	    "fail" : "-"
-	},
-	{
-	    "flags" : "POSR--",
-	    "value" : 75,
-	    "raw" : "30779387",
-	    "worst" : 60,
-	    "name" : "Seek_Error_Rate",
-	    "id" : "  7",
-	    "fail" : "-",
-	    "threshold" : 30
-	},
-	{
-	    "raw" : "1250",
-	    "worst" : 99,
-	    "name" : "Power_On_Hours",
-	    "id" : "  9",
-	    "flags" : "-O--CK",
-	    "value" : 99,
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "value" : 100,
-	    "flags" : "PO--C-",
-	    "id" : " 10",
-	    "name" : "Spin_Retry_Count",
-	    "worst" : 100,
-	    "raw" : "0",
-	    "threshold" : 97,
-	    "fail" : "-"
-	},
-	{
-	    "flags" : "-O--CK",
-	    "value" : 100,
-	    "id" : " 12",
-	    "raw" : "190",
-	    "worst" : 100,
-	    "name" : "Power_Cycle_Count",
-	    "threshold" : 20,
-	    "fail" : "-"
-	},
-	{
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "value" : 100,
-	    "id" : "183",
-	    "raw" : "0",
-	    "worst" : 100,
-	    "name" : "Runtime_Bad_Block"
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 99,
-	    "flags" : "-O--CK",
-	    "value" : 100,
-	    "raw" : "0",
-	    "worst" : 100,
-	    "name" : "End-to-End_Error",
-	    "id" : "184"
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Reported_Uncorrect",
-	    "raw" : "0",
-	    "id" : "187",
-	    "value" : 100,
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "flags" : "-O--CK",
-	    "value" : 100,
-	    "raw" : "0 0 0",
-	    "worst" : 100,
-	    "name" : "Command_Timeout",
-	    "id" : "188",
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "flags" : "-O-RCK",
-	    "value" : 100,
-	    "id" : "189",
-	    "raw" : "0",
-	    "name" : "High_Fly_Writes",
-	    "worst" : 100
-	},
-	{
-	    "worst" : 61,
-	    "name" : "Airflow_Temperature_Cel",
-	    "raw" : "31 (Min/Max 20/33)",
-	    "id" : "190",
-	    "value" : 69,
-	    "flags" : "-O---K",
-	    "fail" : "-",
-	    "threshold" : 45
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "name" : "G-Sense_Error_Rate",
-	    "raw" : "0",
-	    "id" : "191",
-	    "value" : 100,
-	    "flags" : "-O--CK"
-	},
-	{
-	    "id" : "192",
-	    "raw" : "43",
-	    "name" : "Power-Off_Retract_Count",
-	    "worst" : 100,
-	    "flags" : "-O--CK",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "fail" : "-"
-	},
-	{
-	    "flags" : "-O--CK",
-	    "value" : 100,
-	    "raw" : "201",
-	    "worst" : 100,
-	    "name" : "Load_Cycle_Count",
-	    "id" : "193",
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 0,
-	    "value" : 31,
-	    "flags" : "-O---K",
-	    "name" : "Temperature_Celsius",
-	    "worst" : 40,
-	    "raw" : "31 (0 17 0 0 0)",
-	    "id" : "194"
-	},
-	{
-	    "value" : 100,
-	    "flags" : "-O--C-",
-	    "id" : "197",
-	    "worst" : 100,
-	    "name" : "Current_Pending_Sector",
-	    "raw" : "0",
-	    "threshold" : 0,
-	    "fail" : "-"
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Offline_Uncorrectable",
-	    "raw" : "0",
-	    "id" : "198",
-	    "value" : 100,
-	    "flags" : "----C-",
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "value" : 200,
-	    "flags" : "-OSRCK",
-	    "id" : "199",
-	    "worst" : 200,
-	    "name" : "UDMA_CRC_Error_Count",
-	    "raw" : "0"
-	},
-	{
-	    "raw" : "1259h+06m+33.546s",
-	    "name" : "Head_Flying_Hours",
-	    "worst" : 253,
-	    "id" : "240",
-	    "flags" : "------",
-	    "value" : 100,
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 0,
-	    "name" : "Total_LBAs_Written",
-	    "worst" : 253,
-	    "raw" : "24013587236",
-	    "id" : "241",
-	    "value" : 100,
-	    "flags" : "------"
-	},
-	{
-	    "flags" : "------",
-	    "value" : 100,
-	    "id" : "242",
-	    "raw" : "66916845706732",
-	    "worst" : 253,
-	    "name" : "Total_LBAs_Read",
-	    "threshold" : 0,
-	    "fail" : "-"
-	}
-    ],
-    "health" : "PASSED",
-    "type" : "ata"
-}
diff --git a/test/disk_tests/hdd_smart/sda_udevadm b/test/disk_tests/hdd_smart/sda_udevadm
deleted file mode 100644
index d9b5497..0000000
--- a/test/disk_tests/hdd_smart/sda_udevadm
+++ /dev/null
@@ -1,11 +0,0 @@
-E: DEVNAME=/dev/sda
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=5900
-E: ID_BUS=ata
-E: ID_MODEL=ST4000DM000-1F2168
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=4f2e07a6-5437-2b4e-b6e8-9cba98639324
-E: ID_SERIAL_SHORT=00000000
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/hdd_smart/sdb/device/vendor b/test/disk_tests/hdd_smart/sdb/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/hdd_smart/sdb/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/hdd_smart/sdb/queue/rotational b/test/disk_tests/hdd_smart/sdb/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/hdd_smart/sdb/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/hdd_smart/sdb/size b/test/disk_tests/hdd_smart/sdb/size
deleted file mode 100644
index 8bd1af1..0000000
--- a/test/disk_tests/hdd_smart/sdb/size
+++ /dev/null
@@ -1 +0,0 @@
-2000
diff --git a/test/disk_tests/hdd_smart/sdb_health b/test/disk_tests/hdd_smart/sdb_health
deleted file mode 100644
index faf4ce3..0000000
--- a/test/disk_tests/hdd_smart/sdb_health
+++ /dev/null
@@ -1,5 +0,0 @@
-smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
-Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
diff --git a/test/disk_tests/hdd_smart/sdb_smart b/test/disk_tests/hdd_smart/sdb_smart
deleted file mode 100644
index ce52bea..0000000
--- a/test/disk_tests/hdd_smart/sdb_smart
+++ /dev/null
@@ -1,36 +0,0 @@
-smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.4.10-1-pve] (local build)
-Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
-
-SMART Attributes Data Structure revision number: 10
-Vendor Specific SMART Attributes with Thresholds:
-ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH FAIL RAW_VALUE
-  1 Raw_Read_Error_Rate     POSR--   083   063   044    -    215697022
-  3 Spin_Up_Time            PO----   092   091   000    -    0
-  4 Start_Stop_Count        -O--CK   100   100   020    -    265
-  5 Reallocated_Sector_Ct   PO--CK   100   100   010    -    0
-  7 Seek_Error_Rate         POSR--   091   060   030    -    1572375006
-  9 Power_On_Hours          -O--CK   089   089   000    -    9885
- 10 Spin_Retry_Count        PO--C-   100   100   097    -    0
- 12 Power_Cycle_Count       -O--CK   100   100   020    -    265
-184 End-to-End_Error        -O--CK   100   100   099    -    0
-187 Reported_Uncorrect      -O--CK   100   100   000    -    0
-188 Command_Timeout         -O--CK   100   100   000    -    0
-189 High_Fly_Writes         -O--CK   100   100   000    -    0
-190 Airflow_Temperature_Cel -O-RCK   045   036   045    NOW  55 (147 229 55 24 0)
-191 G-Sense_Error_Rate      -O---K   100   100   000    -    0
-192 Power-Off_Retract_Count -O--CK   100   100   000    -    57
-193 Load_Cycle_Count        -O--CK   100   100   000    -    265
-194 Temperature_Celsius     -O--CK   055   064   000    -    55 (0 16 0 0 0)
-195 Hardware_ECC_Recovered  -O---K   023   013   000    -    215697022
-197 Current_Pending_Sector  -O--C-   100   100   000    -    0
-198 Offline_Uncorrectable   ----C-   100   100   000    -    0
-199 UDMA_CRC_Error_Count    -OSRCK   200   200   000    -    0
-                            ||||||_ K auto-keep
-                            |||||__ C event count
-                            ||||___ R error rate
-                            |||____ S speed/performance
-                            ||_____ O updated online
-                            |______ P prefailure warning
diff --git a/test/disk_tests/hdd_smart/sdb_smart_expected.json b/test/disk_tests/hdd_smart/sdb_smart_expected.json
deleted file mode 100644
index 41e55fb..0000000
--- a/test/disk_tests/hdd_smart/sdb_smart_expected.json
+++ /dev/null
@@ -1,216 +0,0 @@
-{
-    "attributes" : [
-	{
-	    "threshold" : 44,
-	    "fail" : "-",
-	    "id" : "  1",
-	    "name" : "Raw_Read_Error_Rate",
-	    "worst" : 63,
-	    "raw" : "215697022",
-	    "value" : 83,
-	    "flags" : "POSR--"
-	},
-	{
-	    "flags" : "PO----",
-	    "value" : 92,
-	    "id" : "  3",
-	    "raw" : "0",
-	    "worst" : 91,
-	    "name" : "Spin_Up_Time",
-	    "threshold" : 0,
-	    "fail" : "-"
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 20,
-	    "value" : 100,
-	    "flags" : "-O--CK",
-	    "worst" : 100,
-	    "name" : "Start_Stop_Count",
-	    "raw" : "265",
-	    "id" : "  4"
-	},
-	{
-	    "flags" : "PO--CK",
-	    "value" : 100,
-	    "id" : "  5",
-	    "raw" : "0",
-	    "name" : "Reallocated_Sector_Ct",
-	    "worst" : 100,
-	    "threshold" : 10,
-	    "fail" : "-"
-	},
-	{
-	    "id" : "  7",
-	    "raw" : "1572375006",
-	    "name" : "Seek_Error_Rate",
-	    "worst" : 60,
-	    "flags" : "POSR--",
-	    "value" : 91,
-	    "threshold" : 30,
-	    "fail" : "-"
-	},
-	{
-	    "raw" : "9885",
-	    "name" : "Power_On_Hours",
-	    "worst" : 89,
-	    "id" : "  9",
-	    "flags" : "-O--CK",
-	    "value" : 89,
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 97,
-	    "value" : 100,
-	    "flags" : "PO--C-",
-	    "worst" : 100,
-	    "name" : "Spin_Retry_Count",
-	    "raw" : "0",
-	    "id" : " 10"
-	},
-	{
-	    "threshold" : 20,
-	    "fail" : "-",
-	    "id" : " 12",
-	    "raw" : "265",
-	    "name" : "Power_Cycle_Count",
-	    "worst" : 100,
-	    "flags" : "-O--CK",
-	    "value" : 100
-	},
-	{
-	    "name" : "End-to-End_Error",
-	    "worst" : 100,
-	    "raw" : "0",
-	    "id" : "184",
-	    "value" : 100,
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "threshold" : 99
-	},
-	{
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "id" : "187",
-	    "raw" : "0",
-	    "name" : "Reported_Uncorrect",
-	    "worst" : 100,
-	    "flags" : "-O--CK",
-	    "value" : 100
-	},
-	{
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "id" : "188",
-	    "raw" : "0",
-	    "name" : "Command_Timeout",
-	    "worst" : 100,
-	    "flags" : "-O--CK",
-	    "value" : 100
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 0,
-	    "raw" : "0",
-	    "worst" : 100,
-	    "name" : "High_Fly_Writes",
-	    "id" : "189",
-	    "flags" : "-O--CK",
-	    "value" : 100
-	},
-	{
-	    "flags" : "-O-RCK",
-	    "value" : 45,
-	    "raw" : "55 (147 229 55 24 0)",
-	    "worst" : 36,
-	    "name" : "Airflow_Temperature_Cel",
-	    "id" : "190",
-	    "fail" : "NOW",
-	    "threshold" : 45
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 0,
-	    "raw" : "0",
-	    "worst" : 100,
-	    "name" : "G-Sense_Error_Rate",
-	    "id" : "191",
-	    "flags" : "-O---K",
-	    "value" : 100
-	},
-	{
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "id" : "192",
-	    "raw" : "57",
-	    "worst" : 100,
-	    "name" : "Power-Off_Retract_Count",
-	    "flags" : "-O--CK",
-	    "value" : 100
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "flags" : "-O--CK",
-	    "name" : "Load_Cycle_Count",
-	    "worst" : 100,
-	    "raw" : "265",
-	    "id" : "193"
-	},
-	{
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "value" : 55,
-	    "id" : "194",
-	    "raw" : "55 (0 16 0 0 0)",
-	    "name" : "Temperature_Celsius",
-	    "worst" : 64
-	},
-	{
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "id" : "195",
-	    "name" : "Hardware_ECC_Recovered",
-	    "worst" : 13,
-	    "raw" : "215697022",
-	    "value" : 23,
-	    "flags" : "-O---K"
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Current_Pending_Sector",
-	    "raw" : "0",
-	    "id" : "197",
-	    "value" : 100,
-	    "flags" : "-O--C-",
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Offline_Uncorrectable",
-	    "raw" : "0",
-	    "id" : "198",
-	    "value" : 100,
-	    "flags" : "----C-",
-	    "fail" : "-",
-	    "threshold" : 0
-	},
-	{
-	    "fail" : "-",
-	    "threshold" : 0,
-	    "value" : 200,
-	    "flags" : "-OSRCK",
-	    "worst" : 200,
-	    "name" : "UDMA_CRC_Error_Count",
-	    "raw" : "0",
-	    "id" : "199"
-	}
-    ],
-    "type" : "ata",
-    "health" : "PASSED"
-}
diff --git a/test/disk_tests/hdd_smart/sdb_udevadm b/test/disk_tests/hdd_smart/sdb_udevadm
deleted file mode 100644
index 3bc3a57..0000000
--- a/test/disk_tests/hdd_smart/sdb_udevadm
+++ /dev/null
@@ -1,11 +0,0 @@
-E: DEVNAME=/dev/sdb
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=7200
-E: ID_BUS=ata
-E: ID_MODEL=ST4000NM0033-9ZM170
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=4f2e07a6-5437-2b4e-b6e8-9cba98639324
-E: ID_SERIAL_SHORT=00000000
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/nvme_smart/disklist b/test/disk_tests/nvme_smart/disklist
deleted file mode 100644
index d00b90e..0000000
--- a/test/disk_tests/nvme_smart/disklist
+++ /dev/null
@@ -1 +0,0 @@
-nvme0n1
diff --git a/test/disk_tests/nvme_smart/disklist_expected.json b/test/disk_tests/nvme_smart/disklist_expected.json
deleted file mode 100644
index 4d1c92f..0000000
--- a/test/disk_tests/nvme_smart/disklist_expected.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "nvme0n1" : {
-	"wearout" : 69,
-	"vendor" : "unknown",
-	"size" : 512000,
-	"health" : "PASSED",
-	"serial" : "unknown",
-	"model" : "NVME MODEL 1",
-	"rpm" : 0,
-	"osdid" : -1,
-	"devpath" : "/dev/nvme0n1",
-	"gpt" : 0,
-	"wwn" : "unknown",
-	"type" : "nvme"
-    }
-}
diff --git a/test/disk_tests/nvme_smart/nvme0/model b/test/disk_tests/nvme_smart/nvme0/model
deleted file mode 100644
index 9bd6eba..0000000
--- a/test/disk_tests/nvme_smart/nvme0/model
+++ /dev/null
@@ -1 +0,0 @@
-NVME MODEL 1
diff --git a/test/disk_tests/nvme_smart/nvme0_smart b/test/disk_tests/nvme_smart/nvme0_smart
deleted file mode 100644
index f371d5b..0000000
--- a/test/disk_tests/nvme_smart/nvme0_smart
+++ /dev/null
@@ -1,22 +0,0 @@
-smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.19-1-pve] (local build)
-Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
-
-SMART/Health Information (NVMe Log 0x02, NSID 0xffffffff)
-Critical Warning:                   0x00
-Temperature:                        32 Celsius
-Available Spare:                    100%
-Available Spare Threshold:          10%
-Percentage Used:                    31%
-Data Units Read:                    1,299,288 [665 GB]
-Data Units Written:                 5,592,478 [2.86 TB]
-Host Read Commands:                 30,360,807
-Host Write Commands:                470,356,196
-Controller Busy Time:               12
-Power Cycles:                       98
-Power On Hours:                     687
-Unsafe Shutdowns:                   21
-Media and Data Integrity Errors:    0
-Error Information Log Entries:      0
diff --git a/test/disk_tests/nvme_smart/nvme0n1/device b/test/disk_tests/nvme_smart/nvme0n1/device
deleted file mode 120000
index e890f3e..0000000
--- a/test/disk_tests/nvme_smart/nvme0n1/device
+++ /dev/null
@@ -1 +0,0 @@
-../nvme0
\ No newline at end of file
diff --git a/test/disk_tests/nvme_smart/nvme0n1/queue/rotational b/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
deleted file mode 100644
index 573541a..0000000
--- a/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/test/disk_tests/nvme_smart/nvme0n1/size b/test/disk_tests/nvme_smart/nvme0n1/size
deleted file mode 100644
index 83b33d2..0000000
--- a/test/disk_tests/nvme_smart/nvme0n1/size
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json b/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
deleted file mode 100644
index af8eade..0000000
--- a/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "text" : "\nSMART/Health Information (NVMe Log 0x02, NSID 0xffffffff)\nCritical Warning:                   0x00\nTemperature:                        32 Celsius\nAvailable Spare:                    100%\nAvailable Spare Threshold:          10%\nPercentage Used:                    31%\nData Units Read:                    1,299,288 [665 GB]\nData Units Written:                 5,592,478 [2.86 TB]\nHost Read Commands:                 30,360,807\nHost Write Commands:                470,356,196\nController Busy Time:               12\nPower Cycles:                       98\nPower On Hours:                     687\nUnsafe Shutdowns:                   21\nMedia and Data Integrity Errors:    0\nError Information Log Entries:      0\n",
-    "health" : "PASSED",
-    "type" : "text",
-    "wearout": 69
-}
diff --git a/test/disk_tests/nvme_smart/nvme0n1_udevadm b/test/disk_tests/nvme_smart/nvme0n1_udevadm
deleted file mode 100644
index 36c78ce..0000000
--- a/test/disk_tests/nvme_smart/nvme0n1_udevadm
+++ /dev/null
@@ -1,18 +0,0 @@
-
-P: /devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
-N: nvme0n1
-S: disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
-E: DEVLINKS=/dev/disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
-E: DEVNAME=/dev/nvme0n1
-E: DEVPATH=/devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
-E: DEVTYPE=disk
-E: ID_FS_TYPE=LVM2_member
-E: ID_FS_USAGE=raid
-E: ID_FS_UUID=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
-E: ID_FS_UUID_ENC=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
-E: ID_FS_VERSION=LVM2 001
-E: MAJOR=259
-E: MINOR=0
-E: SUBSYSTEM=block
-E: TAGS=:systemd:
-E: USEC_INITIALIZED=3842
diff --git a/test/disk_tests/sas/disklist b/test/disk_tests/sas/disklist
deleted file mode 100644
index 9191c61..0000000
--- a/test/disk_tests/sas/disklist
+++ /dev/null
@@ -1 +0,0 @@
-sda
diff --git a/test/disk_tests/sas/disklist_expected.json b/test/disk_tests/sas/disklist_expected.json
deleted file mode 100644
index 39b14a5..0000000
--- a/test/disk_tests/sas/disklist_expected.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "sda" : {
-	"gpt" : 1,
-	"devpath" : "/dev/sda",
-	"type" : "unknown",
-	"model" : "MODEL1",
-	"health" : "UNKNOWN",
-	"osdid" : -1,
-	"wwn" : "0x0000000000000000",
-	"vendor" : "VENDOR1",
-	"rpm" : -1,
-	"size" : 5120000,
-	"serial" : "SER2",
-	"wearout" : "N/A",
-	"by_id_link" : "/dev/disk/by-id/scsi-00000000000000000"
-    }
-}
diff --git a/test/disk_tests/sas/sda/device/model b/test/disk_tests/sas/sda/device/model
deleted file mode 100644
index 6b69674..0000000
--- a/test/disk_tests/sas/sda/device/model
+++ /dev/null
@@ -1 +0,0 @@
-MODEL1
diff --git a/test/disk_tests/sas/sda/device/vendor b/test/disk_tests/sas/sda/device/vendor
deleted file mode 100644
index a7894eb..0000000
--- a/test/disk_tests/sas/sda/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-VENDOR1
diff --git a/test/disk_tests/sas/sda/queue/rotational b/test/disk_tests/sas/sda/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/sas/sda/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/sas/sda/size b/test/disk_tests/sas/sda/size
deleted file mode 100644
index 5caff40..0000000
--- a/test/disk_tests/sas/sda/size
+++ /dev/null
@@ -1 +0,0 @@
-10000
diff --git a/test/disk_tests/sas/sda_smart b/test/disk_tests/sas/sda_smart
deleted file mode 100644
index 856af39..0000000
--- a/test/disk_tests/sas/sda_smart
+++ /dev/null
@@ -1,20 +0,0 @@
-=== START OF READ SMART DATA SECTION ===
-SMART Health Status: OK
-
-Percentage used endurance indicator: 0%
-Current Drive Temperature:     20 C
-Drive Trip Temperature:        70 C
-
-Manufactured in week 47 of year 2012
-Specified cycle count over device lifetime:  0
-Accumulated start-stop cycles:  0
-Specified load-unload count over device lifetime:  0
-Accumulated load-unload cycles:  0
-Elements in grown defect list: 0
-
-Vendor (Seagate) cache information
-  Blocks sent to initiator = 1286675833552896
-
-Vendor (Seagate/Hitachi) factory information
-  number of hours powered up = 7127.12
-  number of minutes until next internal SMART test = 0
diff --git a/test/disk_tests/sas/sda_smart_expected.json b/test/disk_tests/sas/sda_smart_expected.json
deleted file mode 100644
index 2964372..0000000
--- a/test/disk_tests/sas/sda_smart_expected.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "health" : "OK",
-    "text" : "\nPercentage used endurance indicator: 0%\nCurrent Drive Temperature:     20 C\nDrive Trip Temperature:        70 C\n\nManufactured in week 47 of year 2012\nSpecified cycle count over device lifetime:  0\nAccumulated start-stop cycles:  0\nSpecified load-unload count over device lifetime:  0\nAccumulated load-unload cycles:  0\nElements in grown defect list: 0\n\nVendor (Seagate) cache information\n  Blocks sent to initiator = 1286675833552896\n\nVendor (Seagate/Hitachi) factory information\n  number of hours powered up = 7127.12\n  number of minutes until next internal SMART test = 0\n",
-    "type" : "text",
-    "wearout": 100
-}
diff --git a/test/disk_tests/sas/sda_udevadm b/test/disk_tests/sas/sda_udevadm
deleted file mode 100644
index ac0744d..0000000
--- a/test/disk_tests/sas/sda_udevadm
+++ /dev/null
@@ -1,31 +0,0 @@
-P: /devices/pci0000:00/0000:00:03.0/0000:02:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sda
-N: sda
-S: disk/by-id/scsi-00000000000000000
-S: disk/by-id/wwn-0x0000000000000000
-S: disk/by-path/pci-0000:02:00.0-sas-0x0000000000000000-lun-0
-E: DEVLINKS=/dev/disk/by-id/scsi-00000000000000000 /dev/disk/by-id/wwn-0x0000000000000000 /dev/disk/by-path/pci-0000:02:00.0-sas-0x0000000000000000-lun-0
-E: DEVNAME=/dev/sda
-E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:02:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sda
-E: DEVTYPE=disk
-E: ID_BUS=scsi
-E: ID_MODEL=MODEL1
-E: ID_MODEL_ENC=MODEL1\x20\x20\x20\x20\x20\x20
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=605740f0-44a1-4dc5-9fea-bde166df963e
-E: ID_PATH=pci-0000:02:00.0-sas-0x0000000000000000-lun-0
-E: ID_PATH_TAG=pci-0000_02_00_0-sas-0x0000000000000000-lun-0
-E: ID_REVISION=ES64
-E: ID_SCSI=1
-E: ID_SCSI_SERIAL=SERIAL
-E: ID_SERIAL=SERIAL2
-E: ID_SERIAL_SHORT=SER2
-E: ID_TYPE=disk
-E: ID_VENDOR=VENDOR1
-E: ID_VENDOR_ENC=VENDOR1\x20
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
-E: MAJOR=8
-E: MINOR=0
-E: SUBSYSTEM=block
-E: TAGS=:systemd:
-E: USEC_INITIALIZED=667541
diff --git a/test/disk_tests/sas_ssd/disklist b/test/disk_tests/sas_ssd/disklist
deleted file mode 100644
index 9191c61..0000000
--- a/test/disk_tests/sas_ssd/disklist
+++ /dev/null
@@ -1 +0,0 @@
-sda
diff --git a/test/disk_tests/sas_ssd/disklist_expected.json b/test/disk_tests/sas_ssd/disklist_expected.json
deleted file mode 100644
index dd9b748..0000000
--- a/test/disk_tests/sas_ssd/disklist_expected.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "sda" : {
-	"gpt" : 1,
-	"devpath" : "/dev/sda",
-	"type" : "ssd",
-	"model" : "MODEL1",
-	"health" : "OK",
-	"osdid" : -1,
-	"wwn" : "0x0000000000000000",
-	"vendor" : "VENDOR1",
-	"rpm" : 0,
-	"size" : 5120000,
-	"serial" : "SER2",
-	"wearout" : 100,
-	"by_id_link" : "/dev/disk/by-id/scsi-00000000000000000"
-    }
-}
diff --git a/test/disk_tests/sas_ssd/sda/device/model b/test/disk_tests/sas_ssd/sda/device/model
deleted file mode 100644
index 6b69674..0000000
--- a/test/disk_tests/sas_ssd/sda/device/model
+++ /dev/null
@@ -1 +0,0 @@
-MODEL1
diff --git a/test/disk_tests/sas_ssd/sda/device/vendor b/test/disk_tests/sas_ssd/sda/device/vendor
deleted file mode 100644
index a7894eb..0000000
--- a/test/disk_tests/sas_ssd/sda/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-VENDOR1
diff --git a/test/disk_tests/sas_ssd/sda/queue/rotational b/test/disk_tests/sas_ssd/sda/queue/rotational
deleted file mode 100644
index 573541a..0000000
--- a/test/disk_tests/sas_ssd/sda/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/test/disk_tests/sas_ssd/sda/size b/test/disk_tests/sas_ssd/sda/size
deleted file mode 100644
index 5caff40..0000000
--- a/test/disk_tests/sas_ssd/sda/size
+++ /dev/null
@@ -1 +0,0 @@
-10000
diff --git a/test/disk_tests/sas_ssd/sda_smart b/test/disk_tests/sas_ssd/sda_smart
deleted file mode 100644
index 856af39..0000000
--- a/test/disk_tests/sas_ssd/sda_smart
+++ /dev/null
@@ -1,20 +0,0 @@
-=== START OF READ SMART DATA SECTION ===
-SMART Health Status: OK
-
-Percentage used endurance indicator: 0%
-Current Drive Temperature:     20 C
-Drive Trip Temperature:        70 C
-
-Manufactured in week 47 of year 2012
-Specified cycle count over device lifetime:  0
-Accumulated start-stop cycles:  0
-Specified load-unload count over device lifetime:  0
-Accumulated load-unload cycles:  0
-Elements in grown defect list: 0
-
-Vendor (Seagate) cache information
-  Blocks sent to initiator = 1286675833552896
-
-Vendor (Seagate/Hitachi) factory information
-  number of hours powered up = 7127.12
-  number of minutes until next internal SMART test = 0
diff --git a/test/disk_tests/sas_ssd/sda_smart_expected.json b/test/disk_tests/sas_ssd/sda_smart_expected.json
deleted file mode 100644
index 2964372..0000000
--- a/test/disk_tests/sas_ssd/sda_smart_expected.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "health" : "OK",
-    "text" : "\nPercentage used endurance indicator: 0%\nCurrent Drive Temperature:     20 C\nDrive Trip Temperature:        70 C\n\nManufactured in week 47 of year 2012\nSpecified cycle count over device lifetime:  0\nAccumulated start-stop cycles:  0\nSpecified load-unload count over device lifetime:  0\nAccumulated load-unload cycles:  0\nElements in grown defect list: 0\n\nVendor (Seagate) cache information\n  Blocks sent to initiator = 1286675833552896\n\nVendor (Seagate/Hitachi) factory information\n  number of hours powered up = 7127.12\n  number of minutes until next internal SMART test = 0\n",
-    "type" : "text",
-    "wearout": 100
-}
diff --git a/test/disk_tests/sas_ssd/sda_udevadm b/test/disk_tests/sas_ssd/sda_udevadm
deleted file mode 100644
index ac0744d..0000000
--- a/test/disk_tests/sas_ssd/sda_udevadm
+++ /dev/null
@@ -1,31 +0,0 @@
-P: /devices/pci0000:00/0000:00:03.0/0000:02:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sda
-N: sda
-S: disk/by-id/scsi-00000000000000000
-S: disk/by-id/wwn-0x0000000000000000
-S: disk/by-path/pci-0000:02:00.0-sas-0x0000000000000000-lun-0
-E: DEVLINKS=/dev/disk/by-id/scsi-00000000000000000 /dev/disk/by-id/wwn-0x0000000000000000 /dev/disk/by-path/pci-0000:02:00.0-sas-0x0000000000000000-lun-0
-E: DEVNAME=/dev/sda
-E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:02:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sda
-E: DEVTYPE=disk
-E: ID_BUS=scsi
-E: ID_MODEL=MODEL1
-E: ID_MODEL_ENC=MODEL1\x20\x20\x20\x20\x20\x20
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=605740f0-44a1-4dc5-9fea-bde166df963e
-E: ID_PATH=pci-0000:02:00.0-sas-0x0000000000000000-lun-0
-E: ID_PATH_TAG=pci-0000_02_00_0-sas-0x0000000000000000-lun-0
-E: ID_REVISION=ES64
-E: ID_SCSI=1
-E: ID_SCSI_SERIAL=SERIAL
-E: ID_SERIAL=SERIAL2
-E: ID_SERIAL_SHORT=SER2
-E: ID_TYPE=disk
-E: ID_VENDOR=VENDOR1
-E: ID_VENDOR_ENC=VENDOR1\x20
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
-E: MAJOR=8
-E: MINOR=0
-E: SUBSYSTEM=block
-E: TAGS=:systemd:
-E: USEC_INITIALIZED=667541
diff --git a/test/disk_tests/ssd_smart/disklist b/test/disk_tests/ssd_smart/disklist
deleted file mode 100644
index 18048d5..0000000
--- a/test/disk_tests/ssd_smart/disklist
+++ /dev/null
@@ -1,5 +0,0 @@
-sda
-sdb
-sdc
-sdd
-sde
diff --git a/test/disk_tests/ssd_smart/disklist_expected.json b/test/disk_tests/ssd_smart/disklist_expected.json
deleted file mode 100644
index d84b9dc..0000000
--- a/test/disk_tests/ssd_smart/disklist_expected.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    "sda" : {
-	"serial" : "000000000000",
-	"vendor" : "ATA",
-	"rpm" : 0,
-	"gpt" : 1,
-	"health" : "PASSED",
-	"wearout" : "100",
-	"osdid" : -1,
-	"size" : 512000,
-	"type" : "ssd",
-	"devpath" : "/dev/sda",
-	"model" : "Crucial_CT500MX200SSD1",
-	"wwn" : "0x0000000000000000"
-    },
-    "sdb" : {
-	"model" : "INTEL_SSDSC2BB080G6",
-	"devpath" : "/dev/sdb",
-	"osdid" : -1,
-	"type" : "ssd",
-	"size" : 512000,
-	"wwn" : "0x0000000000000000",
-	"gpt" : 1,
-	"rpm" : 0,
-	"vendor" : "ATA",
-	"serial" : "000000000000000000",
-	"wearout" : "97",
-	"health" : "PASSED"
-    },
-    "sdc" : {
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdc",
-	"model" : "Samsung SSD 850 PRO 512GB",
-	"osdid" : -1,
-	"type" : "ssd",
-	"size" : 512000,
-	"wearout" : "99",
-	"health" : "PASSED",
-	"gpt" : 1,
-	"rpm" : 0,
-	"vendor" : "ATA",
-	"serial" : "000000000000"
-    },
-    "sdd" : {
-	"rpm" : 0,
-	"gpt" : 1,
-	"serial" : "000000000000",
-	"vendor" : "ATA",
-	"wearout" : "100",
-	"health" : "PASSED",
-	"devpath" : "/dev/sdd",
-	"model" : "SanDisk SD8SB8U1T001122",
-	"size" : 512000,
-	"osdid" : -1,
-	"type" : "ssd",
-	"wwn" : "0x0000000000000000"
-    },
-    "sde" : {
-	"type" : "ssd",
-	"osdid" : -1,
-	"size" : 512000,
-	"model" : "KINGSTON SHFS37A120G",
-	"devpath" : "/dev/sde",
-	"wwn" : "0x0000000000000000",
-	"vendor" : "ATA",
-	"serial" : "000000000000",
-	"gpt" : 1,
-	"rpm" : 0,
-	"health" : "PASSED",
-	"wearout" : "91"
-    }
-}
diff --git a/test/disk_tests/ssd_smart/sda/device/vendor b/test/disk_tests/ssd_smart/sda/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/ssd_smart/sda/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/ssd_smart/sda/queue/rotational b/test/disk_tests/ssd_smart/sda/queue/rotational
deleted file mode 100644
index 573541a..0000000
--- a/test/disk_tests/ssd_smart/sda/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/test/disk_tests/ssd_smart/sda/size b/test/disk_tests/ssd_smart/sda/size
deleted file mode 100644
index 83b33d2..0000000
--- a/test/disk_tests/ssd_smart/sda/size
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/disk_tests/ssd_smart/sda_smart b/test/disk_tests/ssd_smart/sda_smart
deleted file mode 100644
index 2857588..0000000
--- a/test/disk_tests/ssd_smart/sda_smart
+++ /dev/null
@@ -1,39 +0,0 @@
-smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
-Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
-
-SMART Attributes Data Structure revision number: 16
-Vendor Specific SMART Attributes with Thresholds:
-ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
-  1 Raw_Read_Error_Rate     POSR-K   100   100   000    -    0
-  5 Reallocate_NAND_Blk_Cnt -O--CK   100   100   010    -    0
-  9 Power_On_Hours          -O--CK   100   100   000    -    1309
- 12 Power_Cycle_Count       -O--CK   100   100   000    -    200
-171 Program_Fail_Count      -O--CK   100   100   000    -    0
-172 Erase_Fail_Count        -O--CK   100   100   000    -    0
-173 Ave_Block-Erase_Count   -O--CK   100   100   000    -    12
-174 Unexpect_Power_Loss_Ct  -O--CK   100   100   000    -    53
-180 Unused_Reserve_NAND_Blk PO--CK   000   000   000    -    5565
-183 SATA_Interfac_Downshift -O--CK   100   100   000    -    0
-184 Error_Correction_Count  -O--CK   100   100   000    -    0
-187 Reported_Uncorrect      -O--CK   100   100   000    -    0
-194 Temperature_Celsius     -O---K   068   054   000    -    32 (Min/Max 22/46)
-196 Reallocated_Event_Count -O--CK   100   100   000    -    0
-197 Current_Pending_Sector  -O--CK   100   100   000    -    0
-198 Offline_Uncorrectable   ----CK   100   100   000    -    0
-199 UDMA_CRC_Error_Count    -O--CK   100   100   000    -    0
-202 Percent_Lifetime_Used   ----CK   100   100   001    -    0
-206 Write_Error_Rate        -OSR--   100   100   000    -    0
-210 Success_RAIN_Recov_Cnt  -O--CK   100   100   000    -    0
-246 Total_Host_Sector_Write -O--CK   100   100   000    -    6751830403
-247 Host_Program_Page_Count -O--CK   100   100   000    -    211228065
-248 Bckgnd_Program_Page_Cnt -O--CK   100   100   000    -    253276904
-                            ||||||_ K auto-keep
-                            |||||__ C event count
-                            ||||___ R error rate
-                            |||____ S speed/performance
-                            ||_____ O updated online
-                            |______ P prefailure warning
-
diff --git a/test/disk_tests/ssd_smart/sda_smart_expected.json b/test/disk_tests/ssd_smart/sda_smart_expected.json
deleted file mode 100644
index a71fab2..0000000
--- a/test/disk_tests/ssd_smart/sda_smart_expected.json
+++ /dev/null
@@ -1,236 +0,0 @@
-{
-    "type" : "ata",
-    "health" : "PASSED",
-    "attributes" : [
-	{
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Raw_Read_Error_Rate",
-	    "id" : "  1",
-	    "flags" : "POSR-K",
-	    "raw" : "0",
-	    "fail" : "-",
-	    "value" : 100
-	},
-	{
-	    "worst" : 100,
-	    "threshold" : 10,
-	    "name" : "Reallocate_NAND_Blk_Cnt",
-	    "id" : "  5",
-	    "flags" : "-O--CK",
-	    "raw" : "0",
-	    "fail" : "-",
-	    "value" : 100
-	},
-	{
-	    "name" : "Power_On_Hours",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "value" : 100,
-	    "fail" : "-",
-	    "raw" : "1309",
-	    "flags" : "-O--CK",
-	    "id" : "  9"
-	},
-	{
-	    "threshold" : 0,
-	    "name" : "Power_Cycle_Count",
-	    "worst" : 100,
-	    "raw" : "200",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "id" : " 12",
-	    "value" : 100
-	},
-	{
-	    "value" : 100,
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "id" : "171",
-	    "threshold" : 0,
-	    "name" : "Program_Fail_Count",
-	    "worst" : 100
-	},
-	{
-	    "value" : 100,
-	    "id" : "172",
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Erase_Fail_Count"
-	},
-	{
-	    "threshold" : 0,
-	    "name" : "Ave_Block-Erase_Count",
-	    "worst" : 100,
-	    "raw" : "12",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "id" : "173",
-	    "value" : 100
-	},
-	{
-	    "name" : "Unexpect_Power_Loss_Ct",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "value" : 100,
-	    "fail" : "-",
-	    "raw" : "53",
-	    "flags" : "-O--CK",
-	    "id" : "174"
-	},
-	{
-	    "raw" : "5565",
-	    "flags" : "PO--CK",
-	    "fail" : "-",
-	    "id" : "180",
-	    "value" : 0,
-	    "threshold" : 0,
-	    "name" : "Unused_Reserve_NAND_Blk",
-	    "worst" : 0
-	},
-	{
-	    "name" : "SATA_Interfac_Downshift",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "fail" : "-",
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "id" : "183",
-	    "value" : 100
-	},
-	{
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Error_Correction_Count",
-	    "id" : "184",
-	    "flags" : "-O--CK",
-	    "raw" : "0",
-	    "fail" : "-",
-	    "value" : 100
-	},
-	{
-	    "name" : "Reported_Uncorrect",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "value" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "raw" : "0",
-	    "id" : "187"
-	},
-	{
-	    "worst" : 54,
-	    "name" : "Temperature_Celsius",
-	    "threshold" : 0,
-	    "id" : "194",
-	    "fail" : "-",
-	    "flags" : "-O---K",
-	    "raw" : "32 (Min/Max 22/46)",
-	    "value" : 68
-	},
-	{
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "id" : "196",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "name" : "Reallocated_Event_Count",
-	    "worst" : 100
-	},
-	{
-	    "id" : "197",
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "raw" : "0",
-	    "value" : 100,
-	    "worst" : 100,
-	    "name" : "Current_Pending_Sector",
-	    "threshold" : 0
-	},
-	{
-	    "threshold" : 0,
-	    "name" : "Offline_Uncorrectable",
-	    "worst" : 100,
-	    "flags" : "----CK",
-	    "raw" : "0",
-	    "fail" : "-",
-	    "id" : "198",
-	    "value" : 100
-	},
-	{
-	    "worst" : 100,
-	    "name" : "UDMA_CRC_Error_Count",
-	    "threshold" : 0,
-	    "id" : "199",
-	    "fail" : "-",
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "value" : 100
-	},
-	{
-	    "value" : 100,
-	    "id" : "202",
-	    "flags" : "----CK",
-	    "raw" : "0",
-	    "fail" : "-",
-	    "worst" : 100,
-	    "threshold" : 1,
-	    "name" : "Percent_Lifetime_Used"
-	},
-	{
-	    "name" : "Write_Error_Rate",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "value" : 100,
-	    "fail" : "-",
-	    "raw" : "0",
-	    "flags" : "-OSR--",
-	    "id" : "206"
-	},
-	{
-	    "name" : "Success_RAIN_Recov_Cnt",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "fail" : "-",
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "id" : "210",
-	    "value" : 100
-	},
-	{
-	    "value" : 100,
-	    "id" : "246",
-	    "fail" : "-",
-	    "raw" : "6751830403",
-	    "flags" : "-O--CK",
-	    "worst" : 100,
-	    "name" : "Total_Host_Sector_Write",
-	    "threshold" : 0
-	},
-	{
-	    "name" : "Host_Program_Page_Count",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "fail" : "-",
-	    "raw" : "211228065",
-	    "flags" : "-O--CK",
-	    "id" : "247",
-	    "value" : 100
-	},
-	{
-	    "value" : 100,
-	    "fail" : "-",
-	    "raw" : "253276904",
-	    "flags" : "-O--CK",
-	    "id" : "248",
-	    "name" : "Bckgnd_Program_Page_Cnt",
-	    "threshold" : 0,
-	    "worst" : 100
-	}
-    ]
-}
diff --git a/test/disk_tests/ssd_smart/sda_udevadm b/test/disk_tests/ssd_smart/sda_udevadm
deleted file mode 100644
index 3290a13..0000000
--- a/test/disk_tests/ssd_smart/sda_udevadm
+++ /dev/null
@@ -1,11 +0,0 @@
-E: DEVNAME=/dev/sda
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=Crucial_CT500MX200SSD1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_SERIAL=Crucial_CT500MX200SSD1_000000000000
-E: ID_SERIAL_SHORT=000000000000
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-
diff --git a/test/disk_tests/ssd_smart/sdb/device/vendor b/test/disk_tests/ssd_smart/sdb/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/ssd_smart/sdb/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/ssd_smart/sdb/queue/rotational b/test/disk_tests/ssd_smart/sdb/queue/rotational
deleted file mode 100644
index 573541a..0000000
--- a/test/disk_tests/ssd_smart/sdb/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/test/disk_tests/ssd_smart/sdb/size b/test/disk_tests/ssd_smart/sdb/size
deleted file mode 100644
index 83b33d2..0000000
--- a/test/disk_tests/ssd_smart/sdb/size
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/disk_tests/ssd_smart/sdb_smart b/test/disk_tests/ssd_smart/sdb_smart
deleted file mode 100644
index 79eea84..0000000
--- a/test/disk_tests/ssd_smart/sdb_smart
+++ /dev/null
@@ -1,41 +0,0 @@
-smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
-Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
-
-SMART Attributes Data Structure revision number: 1
-Vendor Specific SMART Attributes with Thresholds:
-ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
-  5 Reallocated_Sector_Ct   -O--CK   100   100   000    -    0
-  9 Power_On_Hours          -O--CK   100   100   000    -    1259
- 12 Power_Cycle_Count       -O--CK   100   100   000    -    191
-170 Available_Reservd_Space PO--CK   100   100   010    -    0
-171 Program_Fail_Count      -O--CK   100   100   000    -    0
-172 Erase_Fail_Count        -O--CK   100   100   000    -    0
-174 Unsafe_Shutdown_Count   -O--CK   100   100   000    -    164
-175 Power_Loss_Cap_Test     PO--CK   100   100   010    -    5670 (1 343)
-183 SATA_Downshift_Count    -O--CK   100   100   000    -    0
-184 End-to-End_Error        PO--CK   100   100   090    -    0
-187 Reported_Uncorrect      -O--CK   100   100   000    -    0
-190 Temperature_Case        -O---K   072   071   000    -    28 (Min/Max 21/30)
-192 Unsafe_Shutdown_Count   -O--CK   100   100   000    -    164
-194 Temperature_Internal    -O---K   100   100   000    -    28
-197 Current_Pending_Sector  -O--C-   100   100   000    -    0
-199 CRC_Error_Count         -OSRCK   100   100   000    -    0
-225 Host_Writes_32MiB       -O--CK   100   100   000    -    296600
-226 Workld_Media_Wear_Indic -O--CK   100   100   000    -    3747
-227 Workld_Host_Reads_Perc  -O--CK   100   100   000    -    0
-228 Workload_Minutes        -O--CK   100   100   000    -    75111
-232 Available_Reservd_Space PO--CK   100   100   010    -    0
-233 Media_Wearout_Indicator -O--CK   097   097   000    -    0
-234 Thermal_Throttle        -O--CK   100   100   000    -    0/0
-241 Host_Writes_32MiB       -O--CK   100   100   000    -    296600
-242 Host_Reads_32MiB        -O--CK   100   100   000    -    1207
-                            ||||||_ K auto-keep
-                            |||||__ C event count
-                            ||||___ R error rate
-                            |||____ S speed/performance
-                            ||_____ O updated online
-                            |______ P prefailure warning
-
diff --git a/test/disk_tests/ssd_smart/sdb_smart_expected.json b/test/disk_tests/ssd_smart/sdb_smart_expected.json
deleted file mode 100644
index 6f55c3e..0000000
--- a/test/disk_tests/ssd_smart/sdb_smart_expected.json
+++ /dev/null
@@ -1,256 +0,0 @@
-{
-    "health" : "PASSED",
-    "type" : "ata",
-    "attributes" : [
-	{
-	    "name" : "Reallocated_Sector_Ct",
-	    "threshold" : 0,
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "raw" : "0",
-	    "id" : "  5",
-	    "value" : 100
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Power_On_Hours",
-	    "threshold" : 0,
-	    "id" : "  9",
-	    "fail" : "-",
-	    "raw" : "1259",
-	    "flags" : "-O--CK",
-	    "value" : 100
-	},
-	{
-	    "value" : 100,
-	    "id" : " 12",
-	    "raw" : "191",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Power_Cycle_Count"
-	},
-	{
-	    "id" : "170",
-	    "raw" : "0",
-	    "flags" : "PO--CK",
-	    "fail" : "-",
-	    "value" : 100,
-	    "worst" : 100,
-	    "threshold" : 10,
-	    "name" : "Available_Reservd_Space"
-	},
-	{
-	    "threshold" : 0,
-	    "name" : "Program_Fail_Count",
-	    "worst" : 100,
-	    "value" : 100,
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "id" : "171"
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Erase_Fail_Count",
-	    "threshold" : 0,
-	    "id" : "172",
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "raw" : "0",
-	    "value" : 100
-	},
-	{
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Unsafe_Shutdown_Count",
-	    "value" : 100,
-	    "id" : "174",
-	    "raw" : "164",
-	    "flags" : "-O--CK",
-	    "fail" : "-"
-	},
-	{
-	    "value" : 100,
-	    "fail" : "-",
-	    "flags" : "PO--CK",
-	    "raw" : "5670 (1 343)",
-	    "id" : "175",
-	    "name" : "Power_Loss_Cap_Test",
-	    "threshold" : 10,
-	    "worst" : 100
-	},
-	{
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "SATA_Downshift_Count",
-	    "value" : 100,
-	    "id" : "183",
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "fail" : "-"
-	},
-	{
-	    "worst" : 100,
-	    "name" : "End-to-End_Error",
-	    "threshold" : 90,
-	    "value" : 100,
-	    "id" : "184",
-	    "fail" : "-",
-	    "raw" : "0",
-	    "flags" : "PO--CK"
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Reported_Uncorrect",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "id" : "187",
-	    "fail" : "-",
-	    "raw" : "0",
-	    "flags" : "-O--CK"
-	},
-	{
-	    "worst" : 71,
-	    "name" : "Temperature_Case",
-	    "threshold" : 0,
-	    "id" : "190",
-	    "fail" : "-",
-	    "raw" : "28 (Min/Max 21/30)",
-	    "flags" : "-O---K",
-	    "value" : 72
-	},
-	{
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Unsafe_Shutdown_Count",
-	    "value" : 100,
-	    "id" : "192",
-	    "raw" : "164",
-	    "flags" : "-O--CK",
-	    "fail" : "-"
-	},
-	{
-	    "id" : "194",
-	    "fail" : "-",
-	    "raw" : "28",
-	    "flags" : "-O---K",
-	    "value" : 100,
-	    "worst" : 100,
-	    "name" : "Temperature_Internal",
-	    "threshold" : 0
-	},
-	{
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Current_Pending_Sector",
-	    "value" : 100,
-	    "id" : "197",
-	    "raw" : "0",
-	    "flags" : "-O--C-",
-	    "fail" : "-"
-	},
-	{
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "CRC_Error_Count",
-	    "value" : 100,
-	    "id" : "199",
-	    "flags" : "-OSRCK",
-	    "raw" : "0",
-	    "fail" : "-"
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Host_Writes_32MiB",
-	    "threshold" : 0,
-	    "id" : "225",
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "raw" : "296600",
-	    "value" : 100
-	},
-	{
-	    "value" : 100,
-	    "id" : "226",
-	    "raw" : "3747",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Workld_Media_Wear_Indic"
-	},
-	{
-	    "worst" : 100,
-	    "threshold" : 0,
-	    "name" : "Workld_Host_Reads_Perc",
-	    "id" : "227",
-	    "raw" : "0",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "value" : 100
-	},
-	{
-	    "threshold" : 0,
-	    "name" : "Workload_Minutes",
-	    "worst" : 100,
-	    "raw" : "75111",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "id" : "228",
-	    "value" : 100
-	},
-	{
-	    "fail" : "-",
-	    "raw" : "0",
-	    "flags" : "PO--CK",
-	    "id" : "232",
-	    "value" : 100,
-	    "name" : "Available_Reservd_Space",
-	    "threshold" : 10,
-	    "worst" : 100
-	},
-	{
-	    "value" : 97,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "raw" : "0",
-	    "id" : "233",
-	    "name" : "Media_Wearout_Indicator",
-	    "threshold" : 0,
-	    "worst" : 97
-	},
-	{
-	    "value" : 100,
-	    "fail" : "-",
-	    "raw" : "0/0",
-	    "flags" : "-O--CK",
-	    "id" : "234",
-	    "name" : "Thermal_Throttle",
-	    "threshold" : 0,
-	    "worst" : 100
-	},
-	{
-	    "worst" : 100,
-	    "name" : "Host_Writes_32MiB",
-	    "threshold" : 0,
-	    "id" : "241",
-	    "fail" : "-",
-	    "raw" : "296600",
-	    "flags" : "-O--CK",
-	    "value" : 100
-	},
-	{
-	    "value" : 100,
-	    "id" : "242",
-	    "fail" : "-",
-	    "raw" : "1207",
-	    "flags" : "-O--CK",
-	    "worst" : 100,
-	    "name" : "Host_Reads_32MiB",
-	    "threshold" : 0
-	}
-    ]
-}
diff --git a/test/disk_tests/ssd_smart/sdb_udevadm b/test/disk_tests/ssd_smart/sdb_udevadm
deleted file mode 100644
index bb723c8..0000000
--- a/test/disk_tests/ssd_smart/sdb_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdb
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=INTEL_SSDSC2BB080G6
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=21c18951-8568-488c-a2a8-24441eb4b165
-E: ID_SERIAL=INTEL_SSDSC2BB080G6_000000000000000000
-E: ID_SERIAL_SHORT=000000000000000000
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/ssd_smart/sdc/device/vendor b/test/disk_tests/ssd_smart/sdc/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/ssd_smart/sdc/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/ssd_smart/sdc/queue/rotational b/test/disk_tests/ssd_smart/sdc/queue/rotational
deleted file mode 100644
index 573541a..0000000
--- a/test/disk_tests/ssd_smart/sdc/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/test/disk_tests/ssd_smart/sdc/size b/test/disk_tests/ssd_smart/sdc/size
deleted file mode 100644
index 83b33d2..0000000
--- a/test/disk_tests/ssd_smart/sdc/size
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/disk_tests/ssd_smart/sdc_smart b/test/disk_tests/ssd_smart/sdc_smart
deleted file mode 100644
index 927f6d2..0000000
--- a/test/disk_tests/ssd_smart/sdc_smart
+++ /dev/null
@@ -1,16 +0,0 @@
-smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.4.8-1-pve] (local build)
-Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
-
-SMART Attributes Data Structure revision number: 1
-Vendor Specific SMART Attributes with Thresholds:
-ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
-177 Wear_Leveling_Count     PO--CK   099   099   000    -    34
-                            ||||||_ K auto-keep
-                            |||||__ C event count
-                            ||||___ R error rate
-                            |||____ S speed/performance
-                            ||_____ O updated onlinie
-                            |______ P prefailure warning
diff --git a/test/disk_tests/ssd_smart/sdc_smart_expected.json b/test/disk_tests/ssd_smart/sdc_smart_expected.json
deleted file mode 100644
index f0cffcf..0000000
--- a/test/disk_tests/ssd_smart/sdc_smart_expected.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "type" : "ata",
-    "health" : "PASSED",
-    "attributes" : [
-	{
-	    "value" : 99,
-	    "fail" : "-",
-	    "raw" : "34",
-	    "flags" : "PO--CK",
-	    "id" : "177",
-	    "name" : "Wear_Leveling_Count",
-	    "threshold" : 0,
-	    "worst" : 99
-	}
-    ]
-}
diff --git a/test/disk_tests/ssd_smart/sdc_udevadm b/test/disk_tests/ssd_smart/sdc_udevadm
deleted file mode 100644
index 5adb3ef..0000000
--- a/test/disk_tests/ssd_smart/sdc_udevadm
+++ /dev/null
@@ -1,11 +0,0 @@
-E: DEVNAME=/dev/sdc
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=Samsung SSD 850 PRO 512GB
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_SERIAL=SAMSUNG_00000000
-E: ID_SERIAL_SHORT=000000000000
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-
diff --git a/test/disk_tests/ssd_smart/sdd/device/vendor b/test/disk_tests/ssd_smart/sdd/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/ssd_smart/sdd/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/ssd_smart/sdd/queue/rotational b/test/disk_tests/ssd_smart/sdd/queue/rotational
deleted file mode 100644
index 573541a..0000000
--- a/test/disk_tests/ssd_smart/sdd/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/test/disk_tests/ssd_smart/sdd/size b/test/disk_tests/ssd_smart/sdd/size
deleted file mode 100644
index 83b33d2..0000000
--- a/test/disk_tests/ssd_smart/sdd/size
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/disk_tests/ssd_smart/sdd_smart b/test/disk_tests/ssd_smart/sdd_smart
deleted file mode 100644
index 2ad16af..0000000
--- a/test/disk_tests/ssd_smart/sdd_smart
+++ /dev/null
@@ -1,40 +0,0 @@
-smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.4.19-1-pve] (local build)
-Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
-
-SMART Attributes Data Structure revision number: 4
-Vendor Specific SMART Attributes with Thresholds:
-ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
-  5 Reallocated_Sector_Ct   -O--CK   100   100   ---    -    0
-  9 Power_On_Hours          -O--CK   100   100   ---    -    799
- 12 Power_Cycle_Count       -O--CK   100   100   ---    -    92
-165 Unknown_Attribute       -O--CK   100   100   ---    -    9699447
-166 Unknown_Attribute       -O--CK   100   100   ---    -    1
-167 Unknown_Attribute       -O--CK   100   100   ---    -    46
-168 Unknown_Attribute       -O--CK   100   100   ---    -    5
-169 Unknown_Attribute       -O--CK   100   100   ---    -    1079
-170 Unknown_Attribute       -O--CK   100   100   ---    -    0
-171 Unknown_Attribute       -O--CK   100   100   ---    -    0
-172 Unknown_Attribute       -O--CK   100   100   ---    -    0
-173 Unknown_Attribute       -O--CK   100   100   ---    -    1
-174 Unknown_Attribute       -O--CK   100   100   ---    -    22
-184 End-to-End_Error        -O--CK   100   100   ---    -    0
-187 Reported_Uncorrect      -O--CK   100   100   ---    -    0
-188 Command_Timeout         -O--CK   100   100   ---    -    0
-194 Temperature_Celsius     -O---K   073   064   ---    -    27 (Min/Max 23/64)
-199 UDMA_CRC_Error_Count    -O--CK   100   100   ---    -    0
-230 Unknown_SSD_Attribute   -O--CK   100   100   ---    -    146029805602
-232 Available_Reservd_Space PO--CK   100   100   004    -    100
-233 Media_Wearout_Indicator -O--CK   100   100   ---    -    1574
-234 Unknown_Attribute       -O--CK   100   100   ---    -    2303
-241 Total_LBAs_Written      ----CK   253   253   ---    -    2111
-242 Total_LBAs_Read         ----CK   253   253   ---    -    1542
-244 Unknown_Attribute       -O--CK   000   100   ---    -    0
-                            ||||||_ K auto-keep
-                            |||||__ C event count
-                            ||||___ R error rate
-                            |||____ S speed/performance
-                            ||_____ O updated online
-                            |______ P prefailure warning
diff --git a/test/disk_tests/ssd_smart/sdd_smart_expected.json b/test/disk_tests/ssd_smart/sdd_smart_expected.json
deleted file mode 100644
index a85e7d7..0000000
--- a/test/disk_tests/ssd_smart/sdd_smart_expected.json
+++ /dev/null
@@ -1,256 +0,0 @@
-{
-    "attributes" : [
-	{
-	    "id" : "  5",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "worst" : 100,
-	    "raw" : "0",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "name" : "Reallocated_Sector_Ct"
-	},
-	{
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "  9",
-	    "name" : "Power_On_Hours",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "raw" : "799"
-	},
-	{
-	    "name" : "Power_Cycle_Count",
-	    "raw" : "92",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "fail" : "-",
-	    "worst" : 100,
-	    "id" : " 12",
-	    "flags" : "-O--CK"
-	},
-	{
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "165",
-	    "name" : "Unknown_Attribute",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "raw" : "9699447"
-	},
-	{
-	    "value" : 100,
-	    "threshold" : 0,
-	    "raw" : "1",
-	    "name" : "Unknown_Attribute",
-	    "flags" : "-O--CK",
-	    "id" : "166",
-	    "worst" : 100,
-	    "fail" : "-"
-	},
-	{
-	    "id" : "167",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "worst" : 100,
-	    "raw" : "46",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "name" : "Unknown_Attribute"
-	},
-	{
-	    "name" : "Unknown_Attribute",
-	    "raw" : "5",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "worst" : 100,
-	    "id" : "168",
-	    "flags" : "-O--CK"
-	},
-	{
-	    "flags" : "-O--CK",
-	    "id" : "169",
-	    "worst" : 100,
-	    "fail" : "-",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "raw" : "1079",
-	    "name" : "Unknown_Attribute"
-	},
-	{
-	    "raw" : "0",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "name" : "Unknown_Attribute",
-	    "id" : "170",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "worst" : 100
-	},
-	{
-	    "fail" : "-",
-	    "worst" : 100,
-	    "id" : "171",
-	    "flags" : "-O--CK",
-	    "name" : "Unknown_Attribute",
-	    "raw" : "0",
-	    "value" : 100,
-	    "threshold" : 0
-	},
-	{
-	    "name" : "Unknown_Attribute",
-	    "raw" : "0",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "worst" : 100,
-	    "id" : "172",
-	    "flags" : "-O--CK"
-	},
-	{
-	    "name" : "Unknown_Attribute",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "raw" : "1",
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "173"
-	},
-	{
-	    "name" : "Unknown_Attribute",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "raw" : "22",
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "174"
-	},
-	{
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "184",
-	    "name" : "End-to-End_Error",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "raw" : "0"
-	},
-	{
-	    "name" : "Reported_Uncorrect",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "raw" : "0",
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "187"
-	},
-	{
-	    "name" : "Command_Timeout",
-	    "raw" : "0",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "fail" : "-",
-	    "worst" : 100,
-	    "id" : "188",
-	    "flags" : "-O--CK"
-	},
-	{
-	    "threshold" : 0,
-	    "value" : 73,
-	    "raw" : "27 (Min/Max 23/64)",
-	    "name" : "Temperature_Celsius",
-	    "flags" : "-O---K",
-	    "id" : "194",
-	    "worst" : 64,
-	    "fail" : "-"
-	},
-	{
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "199",
-	    "name" : "UDMA_CRC_Error_Count",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "raw" : "0"
-	},
-	{
-	    "name" : "Unknown_SSD_Attribute",
-	    "threshold" : 0,
-	    "value" : 100,
-	    "raw" : "146029805602",
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "230"
-	},
-	{
-	    "raw" : "100",
-	    "value" : 100,
-	    "threshold" : 4,
-	    "name" : "Available_Reservd_Space",
-	    "id" : "232",
-	    "flags" : "PO--CK",
-	    "fail" : "-",
-	    "worst" : 100
-	},
-	{
-	    "threshold" : 0,
-	    "value" : 100,
-	    "raw" : "1574",
-	    "name" : "Media_Wearout_Indicator",
-	    "flags" : "-O--CK",
-	    "id" : "233",
-	    "worst" : 100,
-	    "fail" : "-"
-	},
-	{
-	    "id" : "234",
-	    "flags" : "-O--CK",
-	    "fail" : "-",
-	    "worst" : 100,
-	    "raw" : "2303",
-	    "value" : 100,
-	    "threshold" : 0,
-	    "name" : "Unknown_Attribute"
-	},
-	{
-	    "fail" : "-",
-	    "worst" : 253,
-	    "id" : "241",
-	    "flags" : "----CK",
-	    "name" : "Total_LBAs_Written",
-	    "raw" : "2111",
-	    "value" : 253,
-	    "threshold" : 0
-	},
-	{
-	    "worst" : 253,
-	    "fail" : "-",
-	    "flags" : "----CK",
-	    "id" : "242",
-	    "name" : "Total_LBAs_Read",
-	    "threshold" : 0,
-	    "value" : 253,
-	    "raw" : "1542"
-	},
-	{
-	    "name" : "Unknown_Attribute",
-	    "value" : 0,
-	    "threshold" : 0,
-	    "raw" : "0",
-	    "worst" : 100,
-	    "fail" : "-",
-	    "flags" : "-O--CK",
-	    "id" : "244"
-	}
-    ],
-    "type" : "ata",
-    "health" : "PASSED"
-}
diff --git a/test/disk_tests/ssd_smart/sdd_udevadm b/test/disk_tests/ssd_smart/sdd_udevadm
deleted file mode 100644
index d46a7d4..0000000
--- a/test/disk_tests/ssd_smart/sdd_udevadm
+++ /dev/null
@@ -1,11 +0,0 @@
-E: DEVNAME=/dev/sdd
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=SanDisk SD8SB8U1T001122
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_SERIAL=SANDISK_00000000000
-E: ID_SERIAL_SHORT=000000000000
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-
diff --git a/test/disk_tests/ssd_smart/sde/device/vendor b/test/disk_tests/ssd_smart/sde/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/ssd_smart/sde/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/ssd_smart/sde/queue/rotational b/test/disk_tests/ssd_smart/sde/queue/rotational
deleted file mode 100644
index 573541a..0000000
--- a/test/disk_tests/ssd_smart/sde/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/test/disk_tests/ssd_smart/sde/size b/test/disk_tests/ssd_smart/sde/size
deleted file mode 100644
index 83b33d2..0000000
--- a/test/disk_tests/ssd_smart/sde/size
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/disk_tests/ssd_smart/sde_smart b/test/disk_tests/ssd_smart/sde_smart
deleted file mode 100644
index f6f01d6..0000000
--- a/test/disk_tests/ssd_smart/sde_smart
+++ /dev/null
@@ -1,40 +0,0 @@
-smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.65-1-pve] (local build)
-Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
-
-=== START OF READ SMART DATA SECTION ===
-SMART overall-health self-assessment test result: PASSED
-
-SMART Attributes Data Structure revision number: 10
-Vendor Specific SMART Attributes with Thresholds:
-ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
-  1 Raw_Read_Error_Rate     -O--CK   120   120   050    -    0/0
-  5 Retired_Block_Count     PO--CK   100   100   003    -    0
-  9 Power_On_Hours_and_Msec -O--CK   091   091   000    -    7963h+07m+54.620s
- 12 Power_Cycle_Count       -O--CK   099   099   000    -    1153
-171 Program_Fail_Count      -O-R--   100   100   000    -    0
-172 Erase_Fail_Count        -O--CK   100   100   000    -    0
-174 Unexpect_Power_Loss_Ct  ----CK   000   000   000    -    113
-177 Wear_Range_Delta        ------   000   000   000    -    1
-181 Program_Fail_Count      -O-R--   100   100   000    -    0
-182 Erase_Fail_Count        -O--CK   100   100   000    -    0
-187 Reported_Uncorrect      -O--C-   100   100   000    -    0
-189 Airflow_Temperature_Cel ------   027   049   000    -    27 (Min/Max 2/49)
-194 Temperature_Celsius     -O---K   027   049   000    -    27 (Min/Max 2/49)
-195 ECC_Uncorr_Error_Count  --SRC-   120   120   000    -    0/0
-196 Reallocated_Event_Count PO--CK   100   100   003    -    0
-201 Unc_Soft_Read_Err_Rate  --SRC-   120   120   000    -    0/0
-204 Soft_ECC_Correct_Rate   --SRC-   120   120   000    -    0/0
-230 Life_Curve_Status       PO--C-   100   100   000    -    100
-231 SSD_Life_Left           ------   091   091   011    -    4294967296
-233 SandForce_Internal      -O--CK   000   000   000    -    6317
-234 SandForce_Internal      -O--CK   000   000   000    -    4252
-241 Lifetime_Writes_GiB     -O--CK   000   000   000    -    4252
-242 Lifetime_Reads_GiB      -O--CK   000   000   000    -    34599
-244 Unknown_Attribute       ------   099   099   010    -    4063273
-                            ||||||_ K auto-keep
-                            |||||__ C event count
-                            ||||___ R error rate
-                            |||____ S speed/performance
-                            ||_____ O updated online
-                            |______ P prefailure warning
-
diff --git a/test/disk_tests/ssd_smart/sde_smart_expected.json b/test/disk_tests/ssd_smart/sde_smart_expected.json
deleted file mode 100644
index 1d45c1d..0000000
--- a/test/disk_tests/ssd_smart/sde_smart_expected.json
+++ /dev/null
@@ -1,246 +0,0 @@
-{
-    "health": "PASSED",
-    "type": "ata",
-    "attributes": [
-	{
-	    "fail": "-",
-	    "id": "  1",
-	    "raw": "0/0",
-	    "flags": "-O--CK",
-	    "name": "Raw_Read_Error_Rate",
-	    "threshold": 50,
-	    "value": 120,
-	    "worst": 120
-	},
-	{
-	    "id": "  5",
-	    "fail": "-",
-	    "value": 100,
-	    "worst": 100,
-	    "threshold": 3,
-	    "name": "Retired_Block_Count",
-	    "flags": "PO--CK",
-	    "raw": "0"
-	},
-	{
-	    "fail": "-",
-	    "id": "  9",
-	    "raw": "7963h+07m+54.620s",
-	    "flags": "-O--CK",
-	    "worst": 91,
-	    "value": 91,
-	    "name": "Power_On_Hours_and_Msec",
-	    "threshold": 0
-	},
-	{
-	    "id": " 12",
-	    "fail": "-",
-	    "threshold": 0,
-	    "name": "Power_Cycle_Count",
-	    "worst": 99,
-	    "value": 99,
-	    "flags": "-O--CK",
-	    "raw": "1153"
-	},
-	{
-	    "flags": "-O-R--",
-	    "raw": "0",
-	    "worst": 100,
-	    "value": 100,
-	    "threshold": 0,
-	    "name": "Program_Fail_Count",
-	    "fail": "-",
-	    "id": "171"
-	},
-	{
-	    "fail": "-",
-	    "id": "172",
-	    "flags": "-O--CK",
-	    "raw": "0",
-	    "name": "Erase_Fail_Count",
-	    "threshold": 0,
-	    "worst": 100,
-	    "value": 100
-	},
-	{
-	    "fail": "-",
-	    "id": "174",
-	    "raw": "113",
-	    "flags": "----CK",
-	    "value": 0,
-	    "worst": 0,
-	    "threshold": 0,
-	    "name": "Unexpect_Power_Loss_Ct"
-	},
-	{
-	    "id": "177",
-	    "fail": "-",
-	    "value": 0,
-	    "worst": 0,
-	    "name": "Wear_Range_Delta",
-	    "threshold": 0,
-	    "flags": "------",
-	    "raw": "1"
-	},
-	{
-	    "flags": "-O-R--",
-	    "raw": "0",
-	    "threshold": 0,
-	    "name": "Program_Fail_Count",
-	    "worst": 100,
-	    "value": 100,
-	    "fail": "-",
-	    "id": "181"
-	},
-	{
-	    "threshold": 0,
-	    "name": "Erase_Fail_Count",
-	    "value": 100,
-	    "worst": 100,
-	    "flags": "-O--CK",
-	    "raw": "0",
-	    "id": "182",
-	    "fail": "-"
-	},
-	{
-	    "flags": "-O--C-",
-	    "raw": "0",
-	    "value": 100,
-	    "worst": 100,
-	    "threshold": 0,
-	    "name": "Reported_Uncorrect",
-	    "fail": "-",
-	    "id": "187"
-	},
-	{
-	    "value": 27,
-	    "worst": 49,
-	    "name": "Airflow_Temperature_Cel",
-	    "threshold": 0,
-	    "flags": "------",
-	    "raw": "27 (Min/Max 2/49)",
-	    "id": "189",
-	    "fail": "-"
-	},
-	{
-	    "threshold": 0,
-	    "name": "Temperature_Celsius",
-	    "worst": 49,
-	    "value": 27,
-	    "flags": "-O---K",
-	    "raw": "27 (Min/Max 2/49)",
-	    "id": "194",
-	    "fail": "-"
-	},
-	{
-	    "id": "195",
-	    "fail": "-",
-	    "worst": 120,
-	    "value": 120,
-	    "threshold": 0,
-	    "name": "ECC_Uncorr_Error_Count",
-	    "raw": "0/0",
-	    "flags": "--SRC-"
-	},
-	{
-	    "fail": "-",
-	    "id": "196",
-	    "raw": "0",
-	    "flags": "PO--CK",
-	    "threshold": 3,
-	    "name": "Reallocated_Event_Count",
-	    "value": 100,
-	    "worst": 100
-	},
-	{
-	    "value": 120,
-	    "worst": 120,
-	    "threshold": 0,
-	    "name": "Unc_Soft_Read_Err_Rate",
-	    "flags": "--SRC-",
-	    "raw": "0/0",
-	    "id": "201",
-	    "fail": "-"
-	},
-	{
-	    "raw": "0/0",
-	    "flags": "--SRC-",
-	    "value": 120,
-	    "worst": 120,
-	    "threshold": 0,
-	    "name": "Soft_ECC_Correct_Rate",
-	    "fail": "-",
-	    "id": "204"
-	},
-	{
-	    "value": 100,
-	    "worst": 100,
-	    "threshold": 0,
-	    "name": "Life_Curve_Status",
-	    "raw": "100",
-	    "flags": "PO--C-",
-	    "id": "230",
-	    "fail": "-"
-	},
-	{
-	    "id": "231",
-	    "fail": "-",
-	    "worst": 91,
-	    "value": 91,
-	    "name": "SSD_Life_Left",
-	    "threshold": 11,
-	    "flags": "------",
-	    "raw": "4294967296"
-	},
-	{
-	    "raw": "6317",
-	    "flags": "-O--CK",
-	    "name": "SandForce_Internal",
-	    "threshold": 0,
-	    "value": 0,
-	    "worst": 0,
-	    "fail": "-",
-	    "id": "233"
-	},
-	{
-	    "value": 0,
-	    "worst": 0,
-	    "name": "SandForce_Internal",
-	    "threshold": 0,
-	    "flags": "-O--CK",
-	    "raw": "4252",
-	    "id": "234",
-	    "fail": "-"
-	},
-	{
-	    "worst": 0,
-	    "value": 0,
-	    "name": "Lifetime_Writes_GiB",
-	    "threshold": 0,
-	    "flags": "-O--CK",
-	    "raw": "4252",
-	    "id": "241",
-	    "fail": "-"
-	},
-	{
-	    "flags": "-O--CK",
-	    "raw": "34599",
-	    "value": 0,
-	    "worst": 0,
-	    "threshold": 0,
-	    "name": "Lifetime_Reads_GiB",
-	    "fail": "-",
-	    "id": "242"
-	},
-	{
-	    "threshold": 10,
-	    "name": "Unknown_Attribute",
-	    "worst": 99,
-	    "value": 99,
-	    "flags": "------",
-	    "raw": "4063273",
-	    "id": "244",
-	    "fail": "-"
-	}
-    ]
-}
diff --git a/test/disk_tests/ssd_smart/sde_udevadm b/test/disk_tests/ssd_smart/sde_udevadm
deleted file mode 100644
index 440c33a..0000000
--- a/test/disk_tests/ssd_smart/sde_udevadm
+++ /dev/null
@@ -1,11 +0,0 @@
-E: DEVNAME=/dev/sde
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=KINGSTON SHFS37A120G
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_SERIAL=KINGSTON_00000000000
-E: ID_SERIAL_SHORT=000000000000
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-
diff --git a/test/disk_tests/usages/disklist b/test/disk_tests/usages/disklist
deleted file mode 100644
index 648bea5..0000000
--- a/test/disk_tests/usages/disklist
+++ /dev/null
@@ -1,14 +0,0 @@
-sda
-sdb
-sdc
-sdd
-sde
-sdf
-sdg
-sdh
-sdi
-sdj
-sdk
-sdl
-sdm
-sdn
diff --git a/test/disk_tests/usages/disklist_expected.json b/test/disk_tests/usages/disklist_expected.json
deleted file mode 100644
index 93dc251..0000000
--- a/test/disk_tests/usages/disklist_expected.json
+++ /dev/null
@@ -1,222 +0,0 @@
-{
-    "sdf" : {
-	"gpt" : 1,
-	"rpm" : 0,
-	"size" : 1536000,
-	"type" : "hdd",
-	"osdencrypted": 0,
-	"osdid" : "444",
-	"bluestore" : "0",
-	"health" : "UNKNOWN",
-	"model" : "MODEL1",
-	"used" : "mounted",
-	"wearout" : "N/A",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdf",
-	"vendor" : "ATA",
-	"serial" : "SERIAL1"
-    },
-    "sde" : {
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sde",
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"health" : "UNKNOWN",
-	"rpm" : 0,
-	"size" : 1536000,
-	"gpt" : 1,
-	"osdid" : -1,
-	"type" : "hdd",
-	"model" : "MODEL1",
-	"used" : "Device Mapper",
-	"wearout" : "N/A"
-    },
-    "sdb" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdb",
-	"model" : "MODEL1",
-	"used" : "LVM",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"type" : "hdd",
-	"osdid" : -1
-    },
-    "sda" : {
-	"model" : "MODEL1",
-	"used" : "mounted",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"type" : "hdd",
-	"osdid" : -1,
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sda"
-    },
-    "sdc" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"devpath" : "/dev/sdc",
-	"wwn" : "0x0000000000000000",
-	"used" : "ZFS",
-	"wearout" : "N/A",
-	"model" : "MODEL1",
-	"health" : "UNKNOWN",
-	"type" : "hdd",
-	"osdid" : -1,
-	"gpt" : 1,
-	"rpm" : 0,
-	"size" : 1536000
-    },
-    "sdd" : {
-	"model" : "MODEL1",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"size" : 1536000,
-	"rpm" : 0,
-	"gpt" : 1,
-	"type" : "hdd",
-	"osdid" : -1,
-	"serial" : "SERIAL1",
-	"used": "ZFS",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdd"
-    },
-    "sdg" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdg",
-	"model" : "MODEL1",
-	"used" : "LVM",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"type" : "hdd",
-	"bluestore": 1,
-	"osdencrypted": 0,
-	"osdid" : 1
-    },
-    "sdh" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdh",
-	"model" : "MODEL1",
-	"used" : "LVM",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"journals": 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"type" : "hdd",
-	"osdid" : -1
-    },
-    "sdi" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdi",
-	"model" : "MODEL1",
-	"used" : "LVM",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"type" : "hdd",
-	"db": 1,
-	"osdid" : -1
-    },
-    "sdj" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdj",
-	"model" : "MODEL1",
-	"used" : "LVM",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"bluestore": 0,
-	"type" : "hdd",
-	"osdencrypted": 1,
-	"osdid" : 0
-    },
-    "sdk" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdk",
-	"model" : "MODEL1",
-	"used" : "LVM",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"bluestore": 0,
-	"type" : "hdd",
-	"osdencrypted": 0,
-	"osdid" : 230
-    },
-    "sdl" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdl",
-	"model" : "MODEL1",
-	"used" : "LVM",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"type" : "hdd",
-	"osdid" : -1
-    },
-    "sdm" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdm",
-	"model" : "MODEL1",
-	"used" : "ZFS",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 1,
-	"size" : 1536000,
-	"rpm" : 0,
-	"type" : "hdd",
-	"osdid" : -1
-    },
-    "sdn" : {
-	"serial" : "SERIAL1",
-	"vendor" : "ATA",
-	"wwn" : "0x0000000000000000",
-	"devpath" : "/dev/sdn",
-	"model" : "MODEL1",
-	"used" : "xfs",
-	"wearout" : "N/A",
-	"health" : "UNKNOWN",
-	"gpt" : 0,
-	"size" : 1536000,
-	"rpm" : 0,
-	"type" : "hdd",
-	"osdid" : -1
-    }
-}
diff --git a/test/disk_tests/usages/lsblk b/test/disk_tests/usages/lsblk
deleted file mode 100644
index 6a725ab..0000000
--- a/test/disk_tests/usages/lsblk
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-   "blockdevices": [
-      {"path":"/dev/sdm", "parttype":null, "fstype":null},
-      {"path":"/dev/sdm1", "parttype":"6a898cc3-1dd2-11b2-99a6-080020736631", "fstype":"zfs_member"},
-      {"path":"/dev/sdm9", "parttype":"6a945a3b-1dd2-11b2-99a6-080020736631", "fstype":null},
-      {"path":"/dev/sdn", "parttype":null, "fstype":"xfs"}
-   ]
-}
diff --git a/test/disk_tests/usages/lvs b/test/disk_tests/usages/lvs
deleted file mode 100644
index 3720a80..0000000
--- a/test/disk_tests/usages/lvs
+++ /dev/null
@@ -1,6 +0,0 @@
-/dev/sdg(0);osd-block-01234;ceph.osd_id=1
-/dev/sdh(0);osd-journal-01234;ceph.osd_id=1
-/dev/sdi(0);osd-db-01234;ceph.osd_id=1,dasdf
-/dev/sdj(0);osd-data-01234;ceph.osd_id=0,asfd,ceph.encrypted=1
-/dev/sdk(0);osd-data-231231;ceph.osd_id=230,ceph.fsid=test
-/dev/sdl(0);osd-data-234132;ceph.osd_id=,bar
diff --git a/test/disk_tests/usages/mounts b/test/disk_tests/usages/mounts
deleted file mode 100644
index f8c1cd3..0000000
--- a/test/disk_tests/usages/mounts
+++ /dev/null
@@ -1,2 +0,0 @@
-/dev/sda /mountpoint1
-/dev/sdf1 /var/lib/ceph/osd/ceph-444
diff --git a/test/disk_tests/usages/partlist b/test/disk_tests/usages/partlist
deleted file mode 100644
index 43c1f68..0000000
--- a/test/disk_tests/usages/partlist
+++ /dev/null
@@ -1,6 +0,0 @@
-sdd1
-sdd2
-sde1
-sdf1
-sdm1
-sdm9
diff --git a/test/disk_tests/usages/pvs b/test/disk_tests/usages/pvs
deleted file mode 100644
index 86ec3d4..0000000
--- a/test/disk_tests/usages/pvs
+++ /dev/null
@@ -1,7 +0,0 @@
-  /dev/sdb
-  /dev/sdg
-  /dev/sdh
-  /dev/sdi
-  /dev/sdj
-  /dev/sdk
-  /dev/sdl
diff --git a/test/disk_tests/usages/sda/device/vendor b/test/disk_tests/usages/sda/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sda/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sda/queue/rotational b/test/disk_tests/usages/sda/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sda/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sda/size b/test/disk_tests/usages/sda/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sda/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sda_udevadm b/test/disk_tests/usages/sda_udevadm
deleted file mode 100644
index ab04390..0000000
--- a/test/disk_tests/usages/sda_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sda
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdb/device/vendor b/test/disk_tests/usages/sdb/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdb/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdb/queue/rotational b/test/disk_tests/usages/sdb/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdb/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdb/size b/test/disk_tests/usages/sdb/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdb/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdb_udevadm b/test/disk_tests/usages/sdb_udevadm
deleted file mode 100644
index ada1ca8..0000000
--- a/test/disk_tests/usages/sdb_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdb
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdc/device/vendor b/test/disk_tests/usages/sdc/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdc/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdc/queue/rotational b/test/disk_tests/usages/sdc/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdc/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdc/size b/test/disk_tests/usages/sdc/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdc/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdc_udevadm b/test/disk_tests/usages/sdc_udevadm
deleted file mode 100644
index 42845f3..0000000
--- a/test/disk_tests/usages/sdc_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdc
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdd/device/vendor b/test/disk_tests/usages/sdd/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdd/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdd/queue/rotational b/test/disk_tests/usages/sdd/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdd/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdd/sdd1/size b/test/disk_tests/usages/sdd/sdd1/size
deleted file mode 100644
index 83b33d2..0000000
--- a/test/disk_tests/usages/sdd/sdd1/size
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/disk_tests/usages/sdd/sdd2/size b/test/disk_tests/usages/sdd/sdd2/size
deleted file mode 100644
index 8bd1af1..0000000
--- a/test/disk_tests/usages/sdd/sdd2/size
+++ /dev/null
@@ -1 +0,0 @@
-2000
diff --git a/test/disk_tests/usages/sdd/size b/test/disk_tests/usages/sdd/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdd/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdd_udevadm b/test/disk_tests/usages/sdd_udevadm
deleted file mode 100644
index 65e880f..0000000
--- a/test/disk_tests/usages/sdd_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdd
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sde/device/vendor b/test/disk_tests/usages/sde/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sde/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sde/queue/rotational b/test/disk_tests/usages/sde/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sde/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sde/sde1/size b/test/disk_tests/usages/sde/sde1/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sde/sde1/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sde/size b/test/disk_tests/usages/sde/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sde/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sde_udevadm b/test/disk_tests/usages/sde_udevadm
deleted file mode 100644
index db77725..0000000
--- a/test/disk_tests/usages/sde_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sde
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdf/device/vendor b/test/disk_tests/usages/sdf/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdf/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdf/queue/rotational b/test/disk_tests/usages/sdf/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdf/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdf/sdf1/size b/test/disk_tests/usages/sdf/sdf1/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdf/sdf1/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdf/size b/test/disk_tests/usages/sdf/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdf/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdf_udevadm b/test/disk_tests/usages/sdf_udevadm
deleted file mode 100644
index ad49acf..0000000
--- a/test/disk_tests/usages/sdf_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdf
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdg/device/vendor b/test/disk_tests/usages/sdg/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdg/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdg/queue/rotational b/test/disk_tests/usages/sdg/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdg/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdg/size b/test/disk_tests/usages/sdg/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdg/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdg_udevadm b/test/disk_tests/usages/sdg_udevadm
deleted file mode 100644
index 6d40d35..0000000
--- a/test/disk_tests/usages/sdg_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdg
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdh/device/vendor b/test/disk_tests/usages/sdh/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdh/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdh/queue/rotational b/test/disk_tests/usages/sdh/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdh/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdh/size b/test/disk_tests/usages/sdh/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdh/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdh_udevadm b/test/disk_tests/usages/sdh_udevadm
deleted file mode 100644
index 3ff1a9e..0000000
--- a/test/disk_tests/usages/sdh_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdh
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdi/device/vendor b/test/disk_tests/usages/sdi/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdi/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdi/queue/rotational b/test/disk_tests/usages/sdi/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdi/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdi/size b/test/disk_tests/usages/sdi/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdi/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdi_udevadm b/test/disk_tests/usages/sdi_udevadm
deleted file mode 100644
index a9eae5e..0000000
--- a/test/disk_tests/usages/sdi_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdi
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdj/device/vendor b/test/disk_tests/usages/sdj/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdj/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdj/queue/rotational b/test/disk_tests/usages/sdj/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdj/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdj/size b/test/disk_tests/usages/sdj/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdj/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdj_udevadm b/test/disk_tests/usages/sdj_udevadm
deleted file mode 100644
index 39d0cf3..0000000
--- a/test/disk_tests/usages/sdj_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdj
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdk/device/vendor b/test/disk_tests/usages/sdk/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdk/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdk/queue/rotational b/test/disk_tests/usages/sdk/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdk/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdk/size b/test/disk_tests/usages/sdk/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdk/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdk_udevadm b/test/disk_tests/usages/sdk_udevadm
deleted file mode 100644
index 3baef2f..0000000
--- a/test/disk_tests/usages/sdk_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdk
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdl/device/vendor b/test/disk_tests/usages/sdl/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdl/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdl/queue/rotational b/test/disk_tests/usages/sdl/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdl/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdl/size b/test/disk_tests/usages/sdl/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdl/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdl_udevadm b/test/disk_tests/usages/sdl_udevadm
deleted file mode 100644
index ead0622..0000000
--- a/test/disk_tests/usages/sdl_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdl
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdm/device/vendor b/test/disk_tests/usages/sdm/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdm/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdm/queue/rotational b/test/disk_tests/usages/sdm/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdm/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdm/sdm1/size b/test/disk_tests/usages/sdm/sdm1/size
deleted file mode 100644
index 83b33d2..0000000
--- a/test/disk_tests/usages/sdm/sdm1/size
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/disk_tests/usages/sdm/sdm9/size b/test/disk_tests/usages/sdm/sdm9/size
deleted file mode 100644
index 8bd1af1..0000000
--- a/test/disk_tests/usages/sdm/sdm9/size
+++ /dev/null
@@ -1 +0,0 @@
-2000
diff --git a/test/disk_tests/usages/sdm/size b/test/disk_tests/usages/sdm/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdm/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdm_udevadm b/test/disk_tests/usages/sdm_udevadm
deleted file mode 100644
index 9317b9f..0000000
--- a/test/disk_tests/usages/sdm_udevadm
+++ /dev/null
@@ -1,12 +0,0 @@
-E: DEVNAME=/dev/sdm
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_PART_TABLE_TYPE=gpt
-E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/sdn/device/vendor b/test/disk_tests/usages/sdn/device/vendor
deleted file mode 100644
index 531030d..0000000
--- a/test/disk_tests/usages/sdn/device/vendor
+++ /dev/null
@@ -1 +0,0 @@
-ATA
diff --git a/test/disk_tests/usages/sdn/queue/rotational b/test/disk_tests/usages/sdn/queue/rotational
deleted file mode 100644
index d00491f..0000000
--- a/test/disk_tests/usages/sdn/queue/rotational
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/test/disk_tests/usages/sdn/size b/test/disk_tests/usages/sdn/size
deleted file mode 100644
index 13de30f..0000000
--- a/test/disk_tests/usages/sdn/size
+++ /dev/null
@@ -1 +0,0 @@
-3000
diff --git a/test/disk_tests/usages/sdn_udevadm b/test/disk_tests/usages/sdn_udevadm
deleted file mode 100644
index 5ec4a92..0000000
--- a/test/disk_tests/usages/sdn_udevadm
+++ /dev/null
@@ -1,14 +0,0 @@
-E: DEVNAME=/dev/sdn
-E: DEVTYPE=disk
-E: ID_ATA_ROTATION_RATE_RPM=0
-E: ID_BUS=ata
-E: ID_MODEL=MODEL1
-E: ID_SERIAL=SERIAL1
-E: ID_SERIAL_SHORT=SERIAL1
-E: ID_TYPE=disk
-E: ID_FS_UUID=ab54fba8-48fe-4d37-bbe7-b403f94d3bed
-E: ID_FS_UUID_ENC=ab54fba8-48fe-4d37-bbe7-b403f94d3bed
-E: ID_FS_TYPE=xfs
-E: ID_FS_USAGE=filesystem
-E: ID_WWN=0x0000000000000000
-E: ID_WWN_WITH_EXTENSION=0x0000000000000000
diff --git a/test/disk_tests/usages/zpool b/test/disk_tests/usages/zpool
deleted file mode 100644
index 3431792..0000000
--- a/test/disk_tests/usages/zpool
+++ /dev/null
@@ -1,6 +0,0 @@
-testpool	2.00T	1.00T	2.60T	-	5%	28%	1.00x	ONLINE	-
-	/dev/sdc	3.62T	1.02T	2.60T	-	5%	28%
-log      -      -      -         -      -      -
-	/dev/sdd1	15.9G	2.79M	15.9G	-	82%	0%
-cache      -      -      -         -      -      -
-	/dev/sdd2	42.5G	36.2G	6.36G	-	0%	85%
-- 
2.20.1




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH storage 2/2] smartctl: use json parsing
  2021-04-01 13:40 [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests Oguz Bektas
@ 2021-04-01 13:40 ` Oguz Bektas
  2021-04-01 14:24 ` [pve-devel] [PATCH v2 " Oguz Bektas
  2021-05-10 12:15 ` [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests Dominik Csapak
  2 siblings, 0 replies; 7+ messages in thread
From: Oguz Bektas @ 2021-04-01 13:40 UTC (permalink / raw)
  To: pve-devel

adapt the smartctl endpoint to run smartctl with the --json or -j flag
to parse it more reasonably.

also add the $format parameter to assist in switching to the new json
parsed output for nvme devices in PVE 7.0 (until 7.0 removing the 'text'
field completely would be a breaking change, so we still default to the
text field but with the parsed "key : value" pairs instead of raw
smartctl output)

for the unit tests from now we need to collect the smartctl outputs with
the json flag. the current tests cover ssd_smart and nvme_smart cases.

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
----

RFC -> PATCH:
* split patch for removing old tests
* incorporate stefan's and thomas' recommendations & nits (thanks!!)
* fix issue with array fields not being parsed
* add array element in nvme unit test (temperature_sensor)


 PVE/API2/Disks.pm                             |   9 +-
 PVE/Diskmanage.pm                             | 120 +++---
 test/disk_tests/nvme_smart/disklist           |   1 +
 .../nvme_smart/disklist_expected.json         |  16 +
 test/disk_tests/nvme_smart/nvme0/model        |   1 +
 test/disk_tests/nvme_smart/nvme0_smart        |  65 ++++
 test/disk_tests/nvme_smart/nvme0n1/device     |   1 +
 .../nvme_smart/nvme0n1/queue/rotational       |   1 +
 test/disk_tests/nvme_smart/nvme0n1/size       |   1 +
 .../nvme_smart/nvme0n1_smart_expected.json    |   6 +
 test/disk_tests/nvme_smart/nvme0n1_udevadm    |  18 +
 test/disk_tests/ssd_smart/disklist            |   1 +
 .../ssd_smart/disklist_expected.json          |  16 +
 test/disk_tests/ssd_smart/sda/device/vendor   |   1 +
 .../disk_tests/ssd_smart/sda/queue/rotational |   1 +
 test/disk_tests/ssd_smart/sda/size            |   1 +
 test/disk_tests/ssd_smart/sda_smart           | 352 ++++++++++++++++++
 .../ssd_smart/sda_smart_expected.json         | 146 ++++++++
 test/disk_tests/ssd_smart/sda_udevadm         |  11 +
 test/disklist_test.pm                         |   4 +-
 20 files changed, 714 insertions(+), 58 deletions(-)
 create mode 100644 test/disk_tests/nvme_smart/disklist
 create mode 100644 test/disk_tests/nvme_smart/disklist_expected.json
 create mode 100644 test/disk_tests/nvme_smart/nvme0/model
 create mode 100644 test/disk_tests/nvme_smart/nvme0_smart
 create mode 120000 test/disk_tests/nvme_smart/nvme0n1/device
 create mode 100644 test/disk_tests/nvme_smart/nvme0n1/queue/rotational
 create mode 100644 test/disk_tests/nvme_smart/nvme0n1/size
 create mode 100644 test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
 create mode 100644 test/disk_tests/nvme_smart/nvme0n1_udevadm
 create mode 100644 test/disk_tests/ssd_smart/disklist
 create mode 100644 test/disk_tests/ssd_smart/disklist_expected.json
 create mode 100644 test/disk_tests/ssd_smart/sda/device/vendor
 create mode 100644 test/disk_tests/ssd_smart/sda/queue/rotational
 create mode 100644 test/disk_tests/ssd_smart/sda/size
 create mode 100644 test/disk_tests/ssd_smart/sda_smart
 create mode 100644 test/disk_tests/ssd_smart/sda_smart_expected.json
 create mode 100644 test/disk_tests/ssd_smart/sda_udevadm

diff --git a/PVE/API2/Disks.pm b/PVE/API2/Disks.pm
index 33bca76..a453efc 100644
--- a/PVE/API2/Disks.pm
+++ b/PVE/API2/Disks.pm
@@ -195,6 +195,12 @@ __PACKAGE__->register_method ({
 		description => "If true returns only the health status",
 		optional => 1,
 	    },
+	    format => {
+		description => "Return json or text",
+		type => 'string',
+		enum => ['text', 'json'],
+		optional => 1,
+	    },
 	},
     },
     returns => {
@@ -204,6 +210,7 @@ __PACKAGE__->register_method ({
 	    type => { type => 'string', optional => 1 },
 	    attributes => { type => 'array', optional => 1},
 	    text => { type => 'string', optional => 1 },
+	    json => { type => 'string', optional => 1 },
 	},
     },
     code => sub {
@@ -211,7 +218,7 @@ __PACKAGE__->register_method ({
 
 	my $disk = PVE::Diskmanage::verify_blockdev_path($param->{disk});
 
-	my $result = PVE::Diskmanage::get_smart_data($disk, $param->{healthonly});
+	my $result = PVE::Diskmanage::get_smart_data($disk, $param->{healthonly}, $param->{format});
 
 	$result->{health} = 'UNKNOWN' if !defined $result->{health};
 	$result = { health => $result->{health} } if $param->{healthonly};
diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
index 64bb813..3f433fb 100644
--- a/PVE/Diskmanage.pm
+++ b/PVE/Diskmanage.pm
@@ -81,11 +81,12 @@ sub disk_is_used {
 }
 
 sub get_smart_data {
-    my ($disk, $healthonly) = @_;
+    my ($disk, $healthonly, $format) = @_;
 
     assert_blockdev($disk);
     my $smartdata = {};
     my $type;
+    $format //= 'text';
 
     my $returncode = 0;
 
@@ -95,70 +96,79 @@ sub get_smart_data {
 	    or die "failed to get nvme controller device for $disk\n");
     }
 
-    my $cmd = [$SMARTCTL, '-H'];
-    push @$cmd, '-A', '-f', 'brief' if !$healthonly;
+    my $cmd = [$SMARTCTL, '-j', '-H'];
+    push @$cmd, '-Afbrief' if !$healthonly;
     push @$cmd, $disk;
 
+    my $smart_result = '';
     eval {
-	$returncode = run_command($cmd, noerr => 1, outfunc => sub{
-	    my ($line) = @_;
+	$returncode = run_command($cmd, noerr => 1, outfunc => sub { $smart_result .= shift });
+    };
+    my $err = $@;
 
-# ATA SMART attributes, e.g.:
-# ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
-#   1 Raw_Read_Error_Rate     POSR-K   100   100   000    -    0
-#
-# SAS and NVME disks, e.g.:
-# Data Units Written:                 5,584,952 [2.85 TB]
-# Accumulated start-stop cycles:  34
-
-	    if (defined($type) && $type eq 'ata' && $line =~ m/^([ \d]{2}\d)\s+(\S+)\s+(\S{6})\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(.*)$/) {
-		my $entry = {};
-
-		$entry->{name} = $2 if defined $2;
-		$entry->{flags} = $3 if defined $3;
-		# the +0 makes a number out of the strings
-		$entry->{value} = $4+0 if defined $4;
-		$entry->{worst} = $5+0 if defined $5;
-		# some disks report the default threshold as --- instead of 000
-		if (defined($6) && $6 eq '---') {
-		    $entry->{threshold} = 0;
-		} else {
-		    $entry->{threshold} = $6+0 if defined $6;
-		}
-		$entry->{fail} = $7 if defined $7;
-		$entry->{raw} = $8 if defined $8;
-		$entry->{id} = $1 if defined $1;
-		push @{$smartdata->{attributes}}, $entry;
-	    } elsif ($line =~ m/(?:Health Status|self\-assessment test result): (.*)$/ ) {
-		$smartdata->{health} = $1;
-	    } elsif ($line =~ m/Vendor Specific SMART Attributes with Thresholds:/) {
-		$type = 'ata';
-		delete $smartdata->{text};
-	    } elsif ($line =~ m/=== START OF (READ )?SMART DATA SECTION ===/) {
-		$type = 'text';
-	    } elsif (defined($type) && $type eq 'text') {
-		$smartdata->{text} = '' if !defined $smartdata->{text};
-		$smartdata->{text} .= "$line\n";
-		# extract wearout from nvme/sas text, allow for decimal values
-		if ($line =~ m/Percentage Used(?: endurance indicator)?:\s*(\d+(?:\.\d+)?)\%/i) {
-		    $smartdata->{wearout} = 100 - $1;
+    my $json_result = decode_json($smart_result);
+
+    my $smart_health = $json_result->{smart_status}->{passed};
+    if (JSON::is_bool($smart_health)) {
+	$smart_health = $smart_health ? "PASSED" : "FAILED";
+    } else {
+	$smart_health = 'UNKNOWN';
+    }
+
+    $smartdata->{health} = $smart_health;
+
+    $type = $json_result->{device}->{type};
+    if ($type eq 'nvme') {
+	$smartdata->{type} = $format; # text or json but FIXME: remove in PVE 7.0 and use json
+
+	my $nvme_info = $json_result->{nvme_smart_health_information_log};
+
+	if (!$healthonly) {
+	    $smartdata->{wearout} = 100.0 - $nvme_info->{percentage_used};
+	}
+
+	my $add_key = sub {
+	    my ($key, $value) = @_;
+	    if ($format eq 'text') {
+		$smartdata->{text} .= "$key : $value\n";
+	    }
+	};
+
+	foreach my $key (sort keys %{$nvme_info}) {
+	    my $value = $nvme_info->{$key};
+	    # some fields can also be arrays
+	    # e.g. temperature_sensor
+	    if (ref($value) eq 'ARRAY') {
+		while (my $index = each(@$value)) {
+		    $add_key->("${key}_${index}", $value->[$index]);
 		}
-	    } elsif ($line =~ m/SMART Disabled/) {
-		$smartdata->{health} = "SMART Disabled";
+	    } else {
+		$add_key->($key, $value);
 	    }
-	});
-    };
-    my $err = $@;
+	}
+	delete $smartdata->{attributes}; # this is for ata disks only
+    } else {
+	$smartdata->{type} = 'ata';
+	foreach my $attribute (@{$json_result->{ata_smart_attributes}->{table}}) {
+	    # we need to override or delete some fields to fit expected json schema of unit tests
+	    my $flags_string = $attribute->{flags}->{string};
+	    $flags_string =~ s/\s+$//;
+	    $attribute->{flags} = $flags_string;
+	    $attribute->{raw} = $attribute->{raw}->{string};
+	    $attribute->{threshold} = delete $attribute->{thresh};
+	    $attribute->{fail} = ${attribute}->{when_failed} eq "" ? "-" : ${attribute}->{when_failed};
+	    delete ${attribute}->{when_failed};
+
+	    push @{$smartdata->{attributes}}, $attribute;
+	}
+	my @sorted_attributes = sort { $a->{id} <=> $b->{id} } @{$smartdata->{attributes}};
+	@{$smartdata->{attributes}} = @sorted_attributes;
+    }
 
-    # bit 0 and 1 mark an severe smartctl error
-    # all others are for disk status, so ignore them
-    # see smartctl(8)
-    if ((defined($returncode) && ($returncode & 0b00000011)) || $err) {
+    if ($returncode & 0b00000011 || $err) {
 	die "Error getting S.M.A.R.T. data: Exit code: $returncode\n";
     }
 
-    $smartdata->{type} = $type;
-
     return $smartdata;
 }
 
diff --git a/test/disk_tests/nvme_smart/disklist b/test/disk_tests/nvme_smart/disklist
new file mode 100644
index 0000000..d00b90e
--- /dev/null
+++ b/test/disk_tests/nvme_smart/disklist
@@ -0,0 +1 @@
+nvme0n1
diff --git a/test/disk_tests/nvme_smart/disklist_expected.json b/test/disk_tests/nvme_smart/disklist_expected.json
new file mode 100644
index 0000000..4d1c92f
--- /dev/null
+++ b/test/disk_tests/nvme_smart/disklist_expected.json
@@ -0,0 +1,16 @@
+{
+    "nvme0n1" : {
+	"wearout" : 69,
+	"vendor" : "unknown",
+	"size" : 512000,
+	"health" : "PASSED",
+	"serial" : "unknown",
+	"model" : "NVME MODEL 1",
+	"rpm" : 0,
+	"osdid" : -1,
+	"devpath" : "/dev/nvme0n1",
+	"gpt" : 0,
+	"wwn" : "unknown",
+	"type" : "nvme"
+    }
+}
diff --git a/test/disk_tests/nvme_smart/nvme0/model b/test/disk_tests/nvme_smart/nvme0/model
new file mode 100644
index 0000000..9bd6eba
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0/model
@@ -0,0 +1 @@
+NVME MODEL 1
diff --git a/test/disk_tests/nvme_smart/nvme0_smart b/test/disk_tests/nvme_smart/nvme0_smart
new file mode 100644
index 0000000..3f3c799
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0_smart
@@ -0,0 +1,65 @@
+{
+  "json_format_version": [
+    1,
+    0
+  ],
+  "smartctl": {
+    "version": [
+      7,
+      2
+    ],
+    "svn_revision": "5155",
+    "platform_info": "x86_64-linux-5.11.7-1-pve",
+    "build_info": "(local build)",
+    "argv": [
+      "smartctl",
+      "-j",
+      "-H",
+      "-Afbrief",
+      "/dev/nvme0"
+    ],
+    "exit_status": 0
+  },
+  "device": {
+    "name": "/dev/nvme0",
+    "info_name": "/dev/nvme0",
+    "type": "nvme",
+    "protocol": "NVMe"
+  },
+  "smart_status": {
+    "passed": true,
+    "nvme": {
+      "value": 0
+    }
+  },
+  "nvme_smart_health_information_log": {
+    "critical_warning": 0,
+    "temperature": 35,
+    "available_spare": 100,
+    "available_spare_threshold": 10,
+    "percentage_used": 31,
+    "data_units_read": 4546105,
+    "data_units_written": 16623231,
+    "host_reads": 154011524,
+    "host_writes": 282144186,
+    "controller_busy_time": 355,
+    "power_cycles": 514,
+    "power_on_hours": 2491,
+    "unsafe_shutdowns": 38,
+    "media_errors": 0,
+    "num_err_log_entries": 0,
+    "warning_temp_time": 0,
+    "critical_comp_time": 0,
+    "temperature_sensors": [
+	36,
+	34
+    ]
+  },
+  "temperature": {
+    "current": 35
+  },
+  "power_cycle_count": 514,
+  "power_on_time": {
+    "hours": 2491
+  }
+}
diff --git a/test/disk_tests/nvme_smart/nvme0n1/device b/test/disk_tests/nvme_smart/nvme0n1/device
new file mode 120000
index 0000000..e890f3e
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1/device
@@ -0,0 +1 @@
+../nvme0
\ No newline at end of file
diff --git a/test/disk_tests/nvme_smart/nvme0n1/queue/rotational b/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
@@ -0,0 +1 @@
+0
diff --git a/test/disk_tests/nvme_smart/nvme0n1/size b/test/disk_tests/nvme_smart/nvme0n1/size
new file mode 100644
index 0000000..83b33d2
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1/size
@@ -0,0 +1 @@
+1000
diff --git a/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json b/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
new file mode 100644
index 0000000..e3f0ce0
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
@@ -0,0 +1,6 @@
+{
+    "text" : "available_spare : 100\navailable_spare_threshold : 10\ncontroller_busy_time : 355\ncritical_comp_time : 0\ncritical_warning : 0\ndata_units_read : 4546105\ndata_units_written : 16623231\nhost_reads : 154011524\nhost_writes : 282144186\nmedia_errors : 0\nnum_err_log_entries : 0\npercentage_used : 31\npower_cycles : 514\npower_on_hours : 2491\ntemperature : 35\ntemperature_sensors_0 : 36\ntemperature_sensors_1 : 34\nunsafe_shutdowns : 38\nwarning_temp_time : 0\n",
+    "health" : "PASSED",
+    "type" : "text",
+    "wearout": 69
+}
diff --git a/test/disk_tests/nvme_smart/nvme0n1_udevadm b/test/disk_tests/nvme_smart/nvme0n1_udevadm
new file mode 100644
index 0000000..36c78ce
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1_udevadm
@@ -0,0 +1,18 @@
+
+P: /devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
+N: nvme0n1
+S: disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
+E: DEVLINKS=/dev/disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
+E: DEVNAME=/dev/nvme0n1
+E: DEVPATH=/devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
+E: DEVTYPE=disk
+E: ID_FS_TYPE=LVM2_member
+E: ID_FS_USAGE=raid
+E: ID_FS_UUID=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
+E: ID_FS_UUID_ENC=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
+E: ID_FS_VERSION=LVM2 001
+E: MAJOR=259
+E: MINOR=0
+E: SUBSYSTEM=block
+E: TAGS=:systemd:
+E: USEC_INITIALIZED=3842
diff --git a/test/disk_tests/ssd_smart/disklist b/test/disk_tests/ssd_smart/disklist
new file mode 100644
index 0000000..9191c61
--- /dev/null
+++ b/test/disk_tests/ssd_smart/disklist
@@ -0,0 +1 @@
+sda
diff --git a/test/disk_tests/ssd_smart/disklist_expected.json b/test/disk_tests/ssd_smart/disklist_expected.json
new file mode 100644
index 0000000..3681cc8
--- /dev/null
+++ b/test/disk_tests/ssd_smart/disklist_expected.json
@@ -0,0 +1,16 @@
+{
+    "sda" : {
+	"serial" : "000000000000",
+	"vendor" : "ATA",
+	"rpm" : 0,
+	"gpt" : 1,
+	"health" : "PASSED",
+	"wearout" : "98",
+	"osdid" : -1,
+	"size" : 512000,
+	"type" : "ssd",
+	"devpath" : "/dev/sda",
+	"model" : "Samsung_SSD_860_EVO_1TB",
+	"wwn" : "0x0000000000000000"
+    }
+}
diff --git a/test/disk_tests/ssd_smart/sda/device/vendor b/test/disk_tests/ssd_smart/sda/device/vendor
new file mode 100644
index 0000000..531030d
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda/device/vendor
@@ -0,0 +1 @@
+ATA
diff --git a/test/disk_tests/ssd_smart/sda/queue/rotational b/test/disk_tests/ssd_smart/sda/queue/rotational
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda/queue/rotational
@@ -0,0 +1 @@
+0
diff --git a/test/disk_tests/ssd_smart/sda/size b/test/disk_tests/ssd_smart/sda/size
new file mode 100644
index 0000000..83b33d2
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda/size
@@ -0,0 +1 @@
+1000
diff --git a/test/disk_tests/ssd_smart/sda_smart b/test/disk_tests/ssd_smart/sda_smart
new file mode 100644
index 0000000..907e7da
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda_smart
@@ -0,0 +1,352 @@
+{
+  "json_format_version": [
+    1,
+    0
+  ],
+  "smartctl": {
+    "version": [
+      7,
+      2
+    ],
+    "svn_revision": "5155",
+    "platform_info": "x86_64-linux-5.11.7-1-pve",
+    "build_info": "(local build)",
+    "argv": [
+      "smartctl",
+      "-j",
+      "-H",
+      "-Afbrief",
+      "/dev/sda"
+    ],
+    "exit_status": 0
+  },
+  "device": {
+    "name": "/dev/sda",
+    "info_name": "/dev/sda [SAT]",
+    "type": "sat",
+    "protocol": "ATA"
+  },
+  "smart_status": {
+    "passed": true
+  },
+  "ata_smart_attributes": {
+    "revision": 1,
+    "table": [
+      {
+        "id": 5,
+        "name": "Reallocated_Sector_Ct",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 51,
+          "string": "PO--CK ",
+          "prefailure": true,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 9,
+        "name": "Power_On_Hours",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 2463,
+          "string": "2463"
+        }
+      },
+      {
+        "id": 12,
+        "name": "Power_Cycle_Count",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 499,
+          "string": "499"
+        }
+      },
+      {
+        "id": 177,
+        "name": "Wear_Leveling_Count",
+        "value": 98,
+        "worst": 98,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 19,
+          "string": "PO--C- ",
+          "prefailure": true,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 20,
+          "string": "20"
+        }
+      },
+      {
+        "id": 179,
+        "name": "Used_Rsvd_Blk_Cnt_Tot",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 19,
+          "string": "PO--C- ",
+          "prefailure": true,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 181,
+        "name": "Program_Fail_Cnt_Total",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 182,
+        "name": "Erase_Fail_Count_Total",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 183,
+        "name": "Runtime_Bad_Block",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 19,
+          "string": "PO--C- ",
+          "prefailure": true,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 187,
+        "name": "Uncorrectable_Error_Cnt",
+        "value": 100,
+        "worst": 100,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 190,
+        "name": "Airflow_Temperature_Cel",
+        "value": 73,
+        "worst": 45,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 27,
+          "string": "27"
+        }
+      },
+      {
+        "id": 195,
+        "name": "ECC_Error_Rate",
+        "value": 200,
+        "worst": 200,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 26,
+          "string": "-O-RC- ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": true,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 199,
+        "name": "CRC_Error_Count",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 62,
+          "string": "-OSRCK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": true,
+          "error_rate": true,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 1,
+          "string": "1"
+        }
+      },
+      {
+        "id": 235,
+        "name": "POR_Recovery_Count",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 18,
+          "string": "-O--C- ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 39,
+          "string": "39"
+        }
+      },
+      {
+        "id": 241,
+        "name": "Total_LBAs_Written",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 19999585737,
+          "string": "19999585737"
+        }
+      }
+    ]
+  },
+  "power_on_time": {
+    "hours": 2515
+  },
+  "power_cycle_count": 508,
+  "temperature": {
+    "current": 29
+  }
+}
diff --git a/test/disk_tests/ssd_smart/sda_smart_expected.json b/test/disk_tests/ssd_smart/sda_smart_expected.json
new file mode 100644
index 0000000..36da71e
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda_smart_expected.json
@@ -0,0 +1,146 @@
+{
+   "attributes" : [
+      {
+         "fail" : "-",
+         "flags" : "PO--CK",
+         "id" : 5,
+         "name" : "Reallocated_Sector_Ct",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 9,
+         "name" : "Power_On_Hours",
+         "raw" : "2463",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 12,
+         "name" : "Power_Cycle_Count",
+         "raw" : "499",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      },
+      {
+         "fail" : "-",
+         "flags" : "PO--C-",
+         "id" : 177,
+         "name" : "Wear_Leveling_Count",
+         "raw" : "20",
+         "threshold" : 0,
+         "value" : 98,
+         "worst" : 98
+      },
+      {
+         "fail" : "-",
+         "flags" : "PO--C-",
+         "id" : 179,
+         "name" : "Used_Rsvd_Blk_Cnt_Tot",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 181,
+         "name" : "Program_Fail_Cnt_Total",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 182,
+         "name" : "Erase_Fail_Count_Total",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "PO--C-",
+         "id" : 183,
+         "name" : "Runtime_Bad_Block",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 187,
+         "name" : "Uncorrectable_Error_Cnt",
+         "raw" : "0",
+         "threshold" : 0,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 190,
+         "name" : "Airflow_Temperature_Cel",
+         "raw" : "27",
+         "threshold" : 0,
+         "value" : 73,
+         "worst" : 45
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O-RC-",
+         "id" : 195,
+         "name" : "ECC_Error_Rate",
+         "raw" : "0",
+         "threshold" : 0,
+         "value" : 200,
+         "worst" : 200
+      },
+      {
+         "fail" : "-",
+         "flags" : "-OSRCK",
+         "id" : 199,
+         "name" : "CRC_Error_Count",
+         "raw" : "1",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--C-",
+         "id" : 235,
+         "name" : "POR_Recovery_Count",
+         "raw" : "39",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 241,
+         "name" : "Total_LBAs_Written",
+         "raw" : "19999585737",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      }
+   ],
+   "health" : "PASSED",
+   "type" : "ata"
+}
diff --git a/test/disk_tests/ssd_smart/sda_udevadm b/test/disk_tests/ssd_smart/sda_udevadm
new file mode 100644
index 0000000..f662221
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda_udevadm
@@ -0,0 +1,11 @@
+E: DEVNAME=/dev/sda
+E: DEVTYPE=disk
+E: ID_ATA_ROTATION_RATE_RPM=0
+E: ID_BUS=ata
+E: ID_MODEL=Samsung_SSD_860_EVO_1TB
+E: ID_PART_TABLE_TYPE=gpt
+E: ID_SERIAL=Samsung_SSD_860_EVO_1TB_000000000000000
+E: ID_SERIAL_SHORT=000000000000
+E: ID_TYPE=disk
+E: ID_WWN=0x0000000000000000
+
diff --git a/test/disklist_test.pm b/test/disklist_test.pm
index 7f0e0be..727fb44 100644
--- a/test/disklist_test.pm
+++ b/test/disklist_test.pm
@@ -34,10 +34,10 @@ sub mocked_run_command {
 	    my $dev;
 	    my $type;
 	    if (@$cmd > 3) {
-		$dev = $cmd->[5];
+		$dev = $cmd->[4];
 		$type = 'smart';
 	    } else {
-		$dev = $cmd->[2];
+		$dev = $cmd->[3];
 		$type = 'health';
 	    }
 	    $dev =~ s|/dev/||;
-- 
2.20.1




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH v2 storage 2/2] smartctl: use json parsing
  2021-04-01 13:40 [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests Oguz Bektas
  2021-04-01 13:40 ` [pve-devel] [PATCH storage 2/2] smartctl: use json parsing Oguz Bektas
@ 2021-04-01 14:24 ` Oguz Bektas
  2021-05-10 12:21   ` Dominik Csapak
  2021-05-10 12:15 ` [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests Dominik Csapak
  2 siblings, 1 reply; 7+ messages in thread
From: Oguz Bektas @ 2021-04-01 14:24 UTC (permalink / raw)
  To: pve-devel

adapt the smartctl endpoint to run smartctl with the --json or -j flag
to parse it more reasonably.

additionally add the $format parameter to assist in switching to the new
json parsed output for nvme devices in PVE 7.0 (until 7.0 removing the
'text' field completely would be a breaking change, so we still default
to the old json fields but with the parsed key:value pairs in the 'text'
field instead of raw smartctl output)

for the unit tests from now we need to collect the smartctl outputs with
the json flag. the current tests cover ssd_smart and nvme_smart cases.

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
---
v1->v2:
* fixed bug with --format json not showing anything...


 PVE/API2/Disks.pm                             |   9 +-
 PVE/Diskmanage.pm                             | 119 +++---
 test/disk_tests/nvme_smart/disklist           |   1 +
 .../nvme_smart/disklist_expected.json         |  16 +
 test/disk_tests/nvme_smart/nvme0/model        |   1 +
 test/disk_tests/nvme_smart/nvme0_smart        |  65 ++++
 test/disk_tests/nvme_smart/nvme0n1/device     |   1 +
 .../nvme_smart/nvme0n1/queue/rotational       |   1 +
 test/disk_tests/nvme_smart/nvme0n1/size       |   1 +
 .../nvme_smart/nvme0n1_smart_expected.json    |   6 +
 test/disk_tests/nvme_smart/nvme0n1_udevadm    |  18 +
 test/disk_tests/ssd_smart/disklist            |   1 +
 .../ssd_smart/disklist_expected.json          |  16 +
 test/disk_tests/ssd_smart/sda/device/vendor   |   1 +
 .../disk_tests/ssd_smart/sda/queue/rotational |   1 +
 test/disk_tests/ssd_smart/sda/size            |   1 +
 test/disk_tests/ssd_smart/sda_smart           | 352 ++++++++++++++++++
 .../ssd_smart/sda_smart_expected.json         | 146 ++++++++
 test/disk_tests/ssd_smart/sda_udevadm         |  11 +
 test/disklist_test.pm                         |   4 +-
 20 files changed, 714 insertions(+), 57 deletions(-)
 create mode 100644 test/disk_tests/nvme_smart/disklist
 create mode 100644 test/disk_tests/nvme_smart/disklist_expected.json
 create mode 100644 test/disk_tests/nvme_smart/nvme0/model
 create mode 100644 test/disk_tests/nvme_smart/nvme0_smart
 create mode 120000 test/disk_tests/nvme_smart/nvme0n1/device
 create mode 100644 test/disk_tests/nvme_smart/nvme0n1/queue/rotational
 create mode 100644 test/disk_tests/nvme_smart/nvme0n1/size
 create mode 100644 test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
 create mode 100644 test/disk_tests/nvme_smart/nvme0n1_udevadm
 create mode 100644 test/disk_tests/ssd_smart/disklist
 create mode 100644 test/disk_tests/ssd_smart/disklist_expected.json
 create mode 100644 test/disk_tests/ssd_smart/sda/device/vendor
 create mode 100644 test/disk_tests/ssd_smart/sda/queue/rotational
 create mode 100644 test/disk_tests/ssd_smart/sda/size
 create mode 100644 test/disk_tests/ssd_smart/sda_smart
 create mode 100644 test/disk_tests/ssd_smart/sda_smart_expected.json
 create mode 100644 test/disk_tests/ssd_smart/sda_udevadm

diff --git a/PVE/API2/Disks.pm b/PVE/API2/Disks.pm
index 33bca76..a453efc 100644
--- a/PVE/API2/Disks.pm
+++ b/PVE/API2/Disks.pm
@@ -195,6 +195,12 @@ __PACKAGE__->register_method ({
 		description => "If true returns only the health status",
 		optional => 1,
 	    },
+	    format => {
+		description => "Return json or text",
+		type => 'string',
+		enum => ['text', 'json'],
+		optional => 1,
+	    },
 	},
     },
     returns => {
@@ -204,6 +210,7 @@ __PACKAGE__->register_method ({
 	    type => { type => 'string', optional => 1 },
 	    attributes => { type => 'array', optional => 1},
 	    text => { type => 'string', optional => 1 },
+	    json => { type => 'string', optional => 1 },
 	},
     },
     code => sub {
@@ -211,7 +218,7 @@ __PACKAGE__->register_method ({
 
 	my $disk = PVE::Diskmanage::verify_blockdev_path($param->{disk});
 
-	my $result = PVE::Diskmanage::get_smart_data($disk, $param->{healthonly});
+	my $result = PVE::Diskmanage::get_smart_data($disk, $param->{healthonly}, $param->{format});
 
 	$result->{health} = 'UNKNOWN' if !defined $result->{health};
 	$result = { health => $result->{health} } if $param->{healthonly};
diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
index 64bb813..2fe70bc 100644
--- a/PVE/Diskmanage.pm
+++ b/PVE/Diskmanage.pm
@@ -81,11 +81,12 @@ sub disk_is_used {
 }
 
 sub get_smart_data {
-    my ($disk, $healthonly) = @_;
+    my ($disk, $healthonly, $format) = @_;
 
     assert_blockdev($disk);
     my $smartdata = {};
     my $type;
+    $format //= 'text';
 
     my $returncode = 0;
 
@@ -95,70 +96,80 @@ sub get_smart_data {
 	    or die "failed to get nvme controller device for $disk\n");
     }
 
-    my $cmd = [$SMARTCTL, '-H'];
-    push @$cmd, '-A', '-f', 'brief' if !$healthonly;
+    my $cmd = [$SMARTCTL, '-j', '-H'];
+    push @$cmd, '-Afbrief' if !$healthonly;
     push @$cmd, $disk;
 
+    my $smart_result = '';
     eval {
-	$returncode = run_command($cmd, noerr => 1, outfunc => sub{
-	    my ($line) = @_;
+	$returncode = run_command($cmd, noerr => 1, outfunc => sub { $smart_result .= shift });
+    };
+    my $err = $@;
+
+    my $json_result = decode_json($smart_result);
+
+    my $smart_health = $json_result->{smart_status}->{passed};
+    if (JSON::is_bool($smart_health)) {
+	$smart_health = $smart_health ? "PASSED" : "FAILED";
+    } else {
+	$smart_health = 'UNKNOWN';
+    }
+
+    $smartdata->{health} = $smart_health;
+
+    $type = $json_result->{device}->{type};
+    if ($type eq 'nvme') {
+	$smartdata->{type} = $format; # text or json but FIXME: remove in PVE 7.0 and use json
+
+	my $nvme_info = $json_result->{nvme_smart_health_information_log};
+
+	if (!$healthonly) {
+	    $smartdata->{wearout} = 100.0 - $nvme_info->{percentage_used};
+	}
 
-# ATA SMART attributes, e.g.:
-# ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
-#   1 Raw_Read_Error_Rate     POSR-K   100   100   000    -    0
-#
-# SAS and NVME disks, e.g.:
-# Data Units Written:                 5,584,952 [2.85 TB]
-# Accumulated start-stop cycles:  34
-
-	    if (defined($type) && $type eq 'ata' && $line =~ m/^([ \d]{2}\d)\s+(\S+)\s+(\S{6})\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(.*)$/) {
-		my $entry = {};
-
-		$entry->{name} = $2 if defined $2;
-		$entry->{flags} = $3 if defined $3;
-		# the +0 makes a number out of the strings
-		$entry->{value} = $4+0 if defined $4;
-		$entry->{worst} = $5+0 if defined $5;
-		# some disks report the default threshold as --- instead of 000
-		if (defined($6) && $6 eq '---') {
-		    $entry->{threshold} = 0;
+	my $add_key = sub {
+	    my ($key, $value) = @_;
+	    $smartdata->{text} .= "$key : $value\n";
+	};
+
+	if ($format eq 'text') {
+	    foreach my $key (sort keys %{$nvme_info}) {
+		my $value = $nvme_info->{$key};
+		# some fields can also be arrays
+		# e.g. temperature_sensor
+		if (ref($value) eq 'ARRAY') {
+		    while (my $index = each(@$value)) {
+			$add_key->("${key}_${index}", $value->[$index]);
+		    }
 		} else {
-		    $entry->{threshold} = $6+0 if defined $6;
-		}
-		$entry->{fail} = $7 if defined $7;
-		$entry->{raw} = $8 if defined $8;
-		$entry->{id} = $1 if defined $1;
-		push @{$smartdata->{attributes}}, $entry;
-	    } elsif ($line =~ m/(?:Health Status|self\-assessment test result): (.*)$/ ) {
-		$smartdata->{health} = $1;
-	    } elsif ($line =~ m/Vendor Specific SMART Attributes with Thresholds:/) {
-		$type = 'ata';
-		delete $smartdata->{text};
-	    } elsif ($line =~ m/=== START OF (READ )?SMART DATA SECTION ===/) {
-		$type = 'text';
-	    } elsif (defined($type) && $type eq 'text') {
-		$smartdata->{text} = '' if !defined $smartdata->{text};
-		$smartdata->{text} .= "$line\n";
-		# extract wearout from nvme/sas text, allow for decimal values
-		if ($line =~ m/Percentage Used(?: endurance indicator)?:\s*(\d+(?:\.\d+)?)\%/i) {
-		    $smartdata->{wearout} = 100 - $1;
+		    $add_key->($key, $value);
 		}
-	    } elsif ($line =~ m/SMART Disabled/) {
-		$smartdata->{health} = "SMART Disabled";
 	    }
-	});
-    };
-    my $err = $@;
+	} else {
+	    $smartdata->{properties} = $nvme_info;
+	}
+    } else {
+	$smartdata->{type} = 'ata';
+	foreach my $attribute (@{$json_result->{ata_smart_attributes}->{table}}) {
+	    # we need to override or delete some fields to fit expected json schema of unit tests
+	    my $flags_string = $attribute->{flags}->{string};
+	    $flags_string =~ s/\s+$//;
+	    $attribute->{flags} = $flags_string;
+	    $attribute->{raw} = $attribute->{raw}->{string};
+	    $attribute->{threshold} = delete $attribute->{thresh};
+	    $attribute->{fail} = ${attribute}->{when_failed} eq "" ? "-" : ${attribute}->{when_failed};
+	    delete ${attribute}->{when_failed};
+
+	    push @{$smartdata->{attributes}}, $attribute;
+	}
+	my @sorted_attributes = sort { $a->{id} <=> $b->{id} } @{$smartdata->{attributes}};
+	@{$smartdata->{attributes}} = @sorted_attributes;
+    }
 
-    # bit 0 and 1 mark an severe smartctl error
-    # all others are for disk status, so ignore them
-    # see smartctl(8)
-    if ((defined($returncode) && ($returncode & 0b00000011)) || $err) {
+    if ($returncode & 0b00000011 || $err) {
 	die "Error getting S.M.A.R.T. data: Exit code: $returncode\n";
     }
 
-    $smartdata->{type} = $type;
-
     return $smartdata;
 }
 
diff --git a/test/disk_tests/nvme_smart/disklist b/test/disk_tests/nvme_smart/disklist
new file mode 100644
index 0000000..d00b90e
--- /dev/null
+++ b/test/disk_tests/nvme_smart/disklist
@@ -0,0 +1 @@
+nvme0n1
diff --git a/test/disk_tests/nvme_smart/disklist_expected.json b/test/disk_tests/nvme_smart/disklist_expected.json
new file mode 100644
index 0000000..4d1c92f
--- /dev/null
+++ b/test/disk_tests/nvme_smart/disklist_expected.json
@@ -0,0 +1,16 @@
+{
+    "nvme0n1" : {
+	"wearout" : 69,
+	"vendor" : "unknown",
+	"size" : 512000,
+	"health" : "PASSED",
+	"serial" : "unknown",
+	"model" : "NVME MODEL 1",
+	"rpm" : 0,
+	"osdid" : -1,
+	"devpath" : "/dev/nvme0n1",
+	"gpt" : 0,
+	"wwn" : "unknown",
+	"type" : "nvme"
+    }
+}
diff --git a/test/disk_tests/nvme_smart/nvme0/model b/test/disk_tests/nvme_smart/nvme0/model
new file mode 100644
index 0000000..9bd6eba
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0/model
@@ -0,0 +1 @@
+NVME MODEL 1
diff --git a/test/disk_tests/nvme_smart/nvme0_smart b/test/disk_tests/nvme_smart/nvme0_smart
new file mode 100644
index 0000000..3f3c799
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0_smart
@@ -0,0 +1,65 @@
+{
+  "json_format_version": [
+    1,
+    0
+  ],
+  "smartctl": {
+    "version": [
+      7,
+      2
+    ],
+    "svn_revision": "5155",
+    "platform_info": "x86_64-linux-5.11.7-1-pve",
+    "build_info": "(local build)",
+    "argv": [
+      "smartctl",
+      "-j",
+      "-H",
+      "-Afbrief",
+      "/dev/nvme0"
+    ],
+    "exit_status": 0
+  },
+  "device": {
+    "name": "/dev/nvme0",
+    "info_name": "/dev/nvme0",
+    "type": "nvme",
+    "protocol": "NVMe"
+  },
+  "smart_status": {
+    "passed": true,
+    "nvme": {
+      "value": 0
+    }
+  },
+  "nvme_smart_health_information_log": {
+    "critical_warning": 0,
+    "temperature": 35,
+    "available_spare": 100,
+    "available_spare_threshold": 10,
+    "percentage_used": 31,
+    "data_units_read": 4546105,
+    "data_units_written": 16623231,
+    "host_reads": 154011524,
+    "host_writes": 282144186,
+    "controller_busy_time": 355,
+    "power_cycles": 514,
+    "power_on_hours": 2491,
+    "unsafe_shutdowns": 38,
+    "media_errors": 0,
+    "num_err_log_entries": 0,
+    "warning_temp_time": 0,
+    "critical_comp_time": 0,
+    "temperature_sensors": [
+	36,
+	34
+    ]
+  },
+  "temperature": {
+    "current": 35
+  },
+  "power_cycle_count": 514,
+  "power_on_time": {
+    "hours": 2491
+  }
+}
diff --git a/test/disk_tests/nvme_smart/nvme0n1/device b/test/disk_tests/nvme_smart/nvme0n1/device
new file mode 120000
index 0000000..e890f3e
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1/device
@@ -0,0 +1 @@
+../nvme0
\ No newline at end of file
diff --git a/test/disk_tests/nvme_smart/nvme0n1/queue/rotational b/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
@@ -0,0 +1 @@
+0
diff --git a/test/disk_tests/nvme_smart/nvme0n1/size b/test/disk_tests/nvme_smart/nvme0n1/size
new file mode 100644
index 0000000..83b33d2
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1/size
@@ -0,0 +1 @@
+1000
diff --git a/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json b/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
new file mode 100644
index 0000000..e3f0ce0
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
@@ -0,0 +1,6 @@
+{
+    "text" : "available_spare : 100\navailable_spare_threshold : 10\ncontroller_busy_time : 355\ncritical_comp_time : 0\ncritical_warning : 0\ndata_units_read : 4546105\ndata_units_written : 16623231\nhost_reads : 154011524\nhost_writes : 282144186\nmedia_errors : 0\nnum_err_log_entries : 0\npercentage_used : 31\npower_cycles : 514\npower_on_hours : 2491\ntemperature : 35\ntemperature_sensors_0 : 36\ntemperature_sensors_1 : 34\nunsafe_shutdowns : 38\nwarning_temp_time : 0\n",
+    "health" : "PASSED",
+    "type" : "text",
+    "wearout": 69
+}
diff --git a/test/disk_tests/nvme_smart/nvme0n1_udevadm b/test/disk_tests/nvme_smart/nvme0n1_udevadm
new file mode 100644
index 0000000..36c78ce
--- /dev/null
+++ b/test/disk_tests/nvme_smart/nvme0n1_udevadm
@@ -0,0 +1,18 @@
+
+P: /devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
+N: nvme0n1
+S: disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
+E: DEVLINKS=/dev/disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
+E: DEVNAME=/dev/nvme0n1
+E: DEVPATH=/devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
+E: DEVTYPE=disk
+E: ID_FS_TYPE=LVM2_member
+E: ID_FS_USAGE=raid
+E: ID_FS_UUID=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
+E: ID_FS_UUID_ENC=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
+E: ID_FS_VERSION=LVM2 001
+E: MAJOR=259
+E: MINOR=0
+E: SUBSYSTEM=block
+E: TAGS=:systemd:
+E: USEC_INITIALIZED=3842
diff --git a/test/disk_tests/ssd_smart/disklist b/test/disk_tests/ssd_smart/disklist
new file mode 100644
index 0000000..9191c61
--- /dev/null
+++ b/test/disk_tests/ssd_smart/disklist
@@ -0,0 +1 @@
+sda
diff --git a/test/disk_tests/ssd_smart/disklist_expected.json b/test/disk_tests/ssd_smart/disklist_expected.json
new file mode 100644
index 0000000..3681cc8
--- /dev/null
+++ b/test/disk_tests/ssd_smart/disklist_expected.json
@@ -0,0 +1,16 @@
+{
+    "sda" : {
+	"serial" : "000000000000",
+	"vendor" : "ATA",
+	"rpm" : 0,
+	"gpt" : 1,
+	"health" : "PASSED",
+	"wearout" : "98",
+	"osdid" : -1,
+	"size" : 512000,
+	"type" : "ssd",
+	"devpath" : "/dev/sda",
+	"model" : "Samsung_SSD_860_EVO_1TB",
+	"wwn" : "0x0000000000000000"
+    }
+}
diff --git a/test/disk_tests/ssd_smart/sda/device/vendor b/test/disk_tests/ssd_smart/sda/device/vendor
new file mode 100644
index 0000000..531030d
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda/device/vendor
@@ -0,0 +1 @@
+ATA
diff --git a/test/disk_tests/ssd_smart/sda/queue/rotational b/test/disk_tests/ssd_smart/sda/queue/rotational
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda/queue/rotational
@@ -0,0 +1 @@
+0
diff --git a/test/disk_tests/ssd_smart/sda/size b/test/disk_tests/ssd_smart/sda/size
new file mode 100644
index 0000000..83b33d2
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda/size
@@ -0,0 +1 @@
+1000
diff --git a/test/disk_tests/ssd_smart/sda_smart b/test/disk_tests/ssd_smart/sda_smart
new file mode 100644
index 0000000..907e7da
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda_smart
@@ -0,0 +1,352 @@
+{
+  "json_format_version": [
+    1,
+    0
+  ],
+  "smartctl": {
+    "version": [
+      7,
+      2
+    ],
+    "svn_revision": "5155",
+    "platform_info": "x86_64-linux-5.11.7-1-pve",
+    "build_info": "(local build)",
+    "argv": [
+      "smartctl",
+      "-j",
+      "-H",
+      "-Afbrief",
+      "/dev/sda"
+    ],
+    "exit_status": 0
+  },
+  "device": {
+    "name": "/dev/sda",
+    "info_name": "/dev/sda [SAT]",
+    "type": "sat",
+    "protocol": "ATA"
+  },
+  "smart_status": {
+    "passed": true
+  },
+  "ata_smart_attributes": {
+    "revision": 1,
+    "table": [
+      {
+        "id": 5,
+        "name": "Reallocated_Sector_Ct",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 51,
+          "string": "PO--CK ",
+          "prefailure": true,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 9,
+        "name": "Power_On_Hours",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 2463,
+          "string": "2463"
+        }
+      },
+      {
+        "id": 12,
+        "name": "Power_Cycle_Count",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 499,
+          "string": "499"
+        }
+      },
+      {
+        "id": 177,
+        "name": "Wear_Leveling_Count",
+        "value": 98,
+        "worst": 98,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 19,
+          "string": "PO--C- ",
+          "prefailure": true,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 20,
+          "string": "20"
+        }
+      },
+      {
+        "id": 179,
+        "name": "Used_Rsvd_Blk_Cnt_Tot",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 19,
+          "string": "PO--C- ",
+          "prefailure": true,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 181,
+        "name": "Program_Fail_Cnt_Total",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 182,
+        "name": "Erase_Fail_Count_Total",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 183,
+        "name": "Runtime_Bad_Block",
+        "value": 100,
+        "worst": 100,
+        "thresh": 10,
+        "when_failed": "",
+        "flags": {
+          "value": 19,
+          "string": "PO--C- ",
+          "prefailure": true,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 187,
+        "name": "Uncorrectable_Error_Cnt",
+        "value": 100,
+        "worst": 100,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 190,
+        "name": "Airflow_Temperature_Cel",
+        "value": 73,
+        "worst": 45,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 27,
+          "string": "27"
+        }
+      },
+      {
+        "id": 195,
+        "name": "ECC_Error_Rate",
+        "value": 200,
+        "worst": 200,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 26,
+          "string": "-O-RC- ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": true,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 0,
+          "string": "0"
+        }
+      },
+      {
+        "id": 199,
+        "name": "CRC_Error_Count",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 62,
+          "string": "-OSRCK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": true,
+          "error_rate": true,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 1,
+          "string": "1"
+        }
+      },
+      {
+        "id": 235,
+        "name": "POR_Recovery_Count",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 18,
+          "string": "-O--C- ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": false
+        },
+        "raw": {
+          "value": 39,
+          "string": "39"
+        }
+      },
+      {
+        "id": 241,
+        "name": "Total_LBAs_Written",
+        "value": 99,
+        "worst": 99,
+        "thresh": 0,
+        "when_failed": "",
+        "flags": {
+          "value": 50,
+          "string": "-O--CK ",
+          "prefailure": false,
+          "updated_online": true,
+          "performance": false,
+          "error_rate": false,
+          "event_count": true,
+          "auto_keep": true
+        },
+        "raw": {
+          "value": 19999585737,
+          "string": "19999585737"
+        }
+      }
+    ]
+  },
+  "power_on_time": {
+    "hours": 2515
+  },
+  "power_cycle_count": 508,
+  "temperature": {
+    "current": 29
+  }
+}
diff --git a/test/disk_tests/ssd_smart/sda_smart_expected.json b/test/disk_tests/ssd_smart/sda_smart_expected.json
new file mode 100644
index 0000000..36da71e
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda_smart_expected.json
@@ -0,0 +1,146 @@
+{
+   "attributes" : [
+      {
+         "fail" : "-",
+         "flags" : "PO--CK",
+         "id" : 5,
+         "name" : "Reallocated_Sector_Ct",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 9,
+         "name" : "Power_On_Hours",
+         "raw" : "2463",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 12,
+         "name" : "Power_Cycle_Count",
+         "raw" : "499",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      },
+      {
+         "fail" : "-",
+         "flags" : "PO--C-",
+         "id" : 177,
+         "name" : "Wear_Leveling_Count",
+         "raw" : "20",
+         "threshold" : 0,
+         "value" : 98,
+         "worst" : 98
+      },
+      {
+         "fail" : "-",
+         "flags" : "PO--C-",
+         "id" : 179,
+         "name" : "Used_Rsvd_Blk_Cnt_Tot",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 181,
+         "name" : "Program_Fail_Cnt_Total",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 182,
+         "name" : "Erase_Fail_Count_Total",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "PO--C-",
+         "id" : 183,
+         "name" : "Runtime_Bad_Block",
+         "raw" : "0",
+         "threshold" : 10,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 187,
+         "name" : "Uncorrectable_Error_Cnt",
+         "raw" : "0",
+         "threshold" : 0,
+         "value" : 100,
+         "worst" : 100
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 190,
+         "name" : "Airflow_Temperature_Cel",
+         "raw" : "27",
+         "threshold" : 0,
+         "value" : 73,
+         "worst" : 45
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O-RC-",
+         "id" : 195,
+         "name" : "ECC_Error_Rate",
+         "raw" : "0",
+         "threshold" : 0,
+         "value" : 200,
+         "worst" : 200
+      },
+      {
+         "fail" : "-",
+         "flags" : "-OSRCK",
+         "id" : 199,
+         "name" : "CRC_Error_Count",
+         "raw" : "1",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--C-",
+         "id" : 235,
+         "name" : "POR_Recovery_Count",
+         "raw" : "39",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      },
+      {
+         "fail" : "-",
+         "flags" : "-O--CK",
+         "id" : 241,
+         "name" : "Total_LBAs_Written",
+         "raw" : "19999585737",
+         "threshold" : 0,
+         "value" : 99,
+         "worst" : 99
+      }
+   ],
+   "health" : "PASSED",
+   "type" : "ata"
+}
diff --git a/test/disk_tests/ssd_smart/sda_udevadm b/test/disk_tests/ssd_smart/sda_udevadm
new file mode 100644
index 0000000..f662221
--- /dev/null
+++ b/test/disk_tests/ssd_smart/sda_udevadm
@@ -0,0 +1,11 @@
+E: DEVNAME=/dev/sda
+E: DEVTYPE=disk
+E: ID_ATA_ROTATION_RATE_RPM=0
+E: ID_BUS=ata
+E: ID_MODEL=Samsung_SSD_860_EVO_1TB
+E: ID_PART_TABLE_TYPE=gpt
+E: ID_SERIAL=Samsung_SSD_860_EVO_1TB_000000000000000
+E: ID_SERIAL_SHORT=000000000000
+E: ID_TYPE=disk
+E: ID_WWN=0x0000000000000000
+
diff --git a/test/disklist_test.pm b/test/disklist_test.pm
index 7f0e0be..727fb44 100644
--- a/test/disklist_test.pm
+++ b/test/disklist_test.pm
@@ -34,10 +34,10 @@ sub mocked_run_command {
 	    my $dev;
 	    my $type;
 	    if (@$cmd > 3) {
-		$dev = $cmd->[5];
+		$dev = $cmd->[4];
 		$type = 'smart';
 	    } else {
-		$dev = $cmd->[2];
+		$dev = $cmd->[3];
 		$type = 'health';
 	    }
 	    $dev =~ s|/dev/||;
-- 
2.20.1




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests
  2021-04-01 13:40 [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests Oguz Bektas
  2021-04-01 13:40 ` [pve-devel] [PATCH storage 2/2] smartctl: use json parsing Oguz Bektas
  2021-04-01 14:24 ` [pve-devel] [PATCH v2 " Oguz Bektas
@ 2021-05-10 12:15 ` Dominik Csapak
  2021-05-10 12:27   ` Oguz Bektas
  2 siblings, 1 reply; 7+ messages in thread
From: Dominik Csapak @ 2021-05-10 12:15 UTC (permalink / raw)
  To: Proxmox VE development discussion, Oguz Bektas

hi,

sorry for the long wait on a review, but better
late than never ;)

so one high level comments:

why do you remove all disk tests ??
they did not only test the smart output, but also the
usage, ssd/hdd detection, vendor/model etc...

i understand that you do not have the original disks
for the smartctl -j output, but it should not be
*that* hard to fake it ;)

and even if it is, please change the tests so that
only the smart part is not tested anymore, e.g. with a flag
in the test itself....

so please find a way to keep the tests (as much as you can)

i'll comment more on the second patch


On 4/1/21 15:40, Oguz Bektas wrote:
> Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
> ---
>   test/disk_tests/cciss/cciss!c0d0/device/model |   1 -
>   .../disk_tests/cciss/cciss!c0d0/device/vendor |   1 -
>   .../cciss/cciss!c0d0/queue/rotational         |   1 -
>   test/disk_tests/cciss/cciss!c0d0/size         |   1 -
>   test/disk_tests/cciss/cciss!c0d0_udevadm      |  32 ---
>   test/disk_tests/cciss/disklist                |   1 -
>   test/disk_tests/cciss/disklist_expected.json  |  16 --
>   test/disk_tests/hdd_smart/disklist            |   2 -
>   .../hdd_smart/disklist_expected.json          |  30 --
>   test/disk_tests/hdd_smart/sda/device/vendor   |   1 -
>   .../disk_tests/hdd_smart/sda/queue/rotational |   1 -
>   test/disk_tests/hdd_smart/sda/size            |   1 -
>   test/disk_tests/hdd_smart/sda_health          |   5 -
>   test/disk_tests/hdd_smart/sda_smart           |  40 ---
>   .../hdd_smart/sda_smart_expected.json         | 246 -----------------
>   test/disk_tests/hdd_smart/sda_udevadm         |  11 -
>   test/disk_tests/hdd_smart/sdb/device/vendor   |   1 -
>   .../disk_tests/hdd_smart/sdb/queue/rotational |   1 -
>   test/disk_tests/hdd_smart/sdb/size            |   1 -
>   test/disk_tests/hdd_smart/sdb_health          |   5 -
>   test/disk_tests/hdd_smart/sdb_smart           |  36 ---
>   .../hdd_smart/sdb_smart_expected.json         | 216 ---------------
>   test/disk_tests/hdd_smart/sdb_udevadm         |  11 -
>   test/disk_tests/nvme_smart/disklist           |   1 -
>   .../nvme_smart/disklist_expected.json         |  16 --
>   test/disk_tests/nvme_smart/nvme0/model        |   1 -
>   test/disk_tests/nvme_smart/nvme0_smart        |  22 --
>   test/disk_tests/nvme_smart/nvme0n1/device     |   1 -
>   .../nvme_smart/nvme0n1/queue/rotational       |   1 -
>   test/disk_tests/nvme_smart/nvme0n1/size       |   1 -
>   .../nvme_smart/nvme0n1_smart_expected.json    |   6 -
>   test/disk_tests/nvme_smart/nvme0n1_udevadm    |  18 --
>   test/disk_tests/sas/disklist                  |   1 -
>   test/disk_tests/sas/disklist_expected.json    |  17 --
>   test/disk_tests/sas/sda/device/model          |   1 -
>   test/disk_tests/sas/sda/device/vendor         |   1 -
>   test/disk_tests/sas/sda/queue/rotational      |   1 -
>   test/disk_tests/sas/sda/size                  |   1 -
>   test/disk_tests/sas/sda_smart                 |  20 --
>   test/disk_tests/sas/sda_smart_expected.json   |   6 -
>   test/disk_tests/sas/sda_udevadm               |  31 ---
>   test/disk_tests/sas_ssd/disklist              |   1 -
>   .../disk_tests/sas_ssd/disklist_expected.json |  17 --
>   test/disk_tests/sas_ssd/sda/device/model      |   1 -
>   test/disk_tests/sas_ssd/sda/device/vendor     |   1 -
>   test/disk_tests/sas_ssd/sda/queue/rotational  |   1 -
>   test/disk_tests/sas_ssd/sda/size              |   1 -
>   test/disk_tests/sas_ssd/sda_smart             |  20 --
>   .../sas_ssd/sda_smart_expected.json           |   6 -
>   test/disk_tests/sas_ssd/sda_udevadm           |  31 ---
>   test/disk_tests/ssd_smart/disklist            |   5 -
>   .../ssd_smart/disklist_expected.json          |  72 -----
>   test/disk_tests/ssd_smart/sda/device/vendor   |   1 -
>   .../disk_tests/ssd_smart/sda/queue/rotational |   1 -
>   test/disk_tests/ssd_smart/sda/size            |   1 -
>   test/disk_tests/ssd_smart/sda_smart           |  39 ---
>   .../ssd_smart/sda_smart_expected.json         | 236 ----------------
>   test/disk_tests/ssd_smart/sda_udevadm         |  11 -
>   test/disk_tests/ssd_smart/sdb/device/vendor   |   1 -
>   .../disk_tests/ssd_smart/sdb/queue/rotational |   1 -
>   test/disk_tests/ssd_smart/sdb/size            |   1 -
>   test/disk_tests/ssd_smart/sdb_smart           |  41 ---
>   .../ssd_smart/sdb_smart_expected.json         | 256 ------------------
>   test/disk_tests/ssd_smart/sdb_udevadm         |  12 -
>   test/disk_tests/ssd_smart/sdc/device/vendor   |   1 -
>   .../disk_tests/ssd_smart/sdc/queue/rotational |   1 -
>   test/disk_tests/ssd_smart/sdc/size            |   1 -
>   test/disk_tests/ssd_smart/sdc_smart           |  16 --
>   .../ssd_smart/sdc_smart_expected.json         |  16 --
>   test/disk_tests/ssd_smart/sdc_udevadm         |  11 -
>   test/disk_tests/ssd_smart/sdd/device/vendor   |   1 -
>   .../disk_tests/ssd_smart/sdd/queue/rotational |   1 -
>   test/disk_tests/ssd_smart/sdd/size            |   1 -
>   test/disk_tests/ssd_smart/sdd_smart           |  40 ---
>   .../ssd_smart/sdd_smart_expected.json         | 256 ------------------
>   test/disk_tests/ssd_smart/sdd_udevadm         |  11 -
>   test/disk_tests/ssd_smart/sde/device/vendor   |   1 -
>   .../disk_tests/ssd_smart/sde/queue/rotational |   1 -
>   test/disk_tests/ssd_smart/sde/size            |   1 -
>   test/disk_tests/ssd_smart/sde_smart           |  40 ---
>   .../ssd_smart/sde_smart_expected.json         | 246 -----------------
>   test/disk_tests/ssd_smart/sde_udevadm         |  11 -
>   test/disk_tests/usages/disklist               |  14 -
>   test/disk_tests/usages/disklist_expected.json | 222 ---------------
>   test/disk_tests/usages/lsblk                  |   8 -
>   test/disk_tests/usages/lvs                    |   6 -
>   test/disk_tests/usages/mounts                 |   2 -
>   test/disk_tests/usages/partlist               |   6 -
>   test/disk_tests/usages/pvs                    |   7 -
>   test/disk_tests/usages/sda/device/vendor      |   1 -
>   test/disk_tests/usages/sda/queue/rotational   |   1 -
>   test/disk_tests/usages/sda/size               |   1 -
>   test/disk_tests/usages/sda_udevadm            |  12 -
>   test/disk_tests/usages/sdb/device/vendor      |   1 -
>   test/disk_tests/usages/sdb/queue/rotational   |   1 -
>   test/disk_tests/usages/sdb/size               |   1 -
>   test/disk_tests/usages/sdb_udevadm            |  12 -
>   test/disk_tests/usages/sdc/device/vendor      |   1 -
>   test/disk_tests/usages/sdc/queue/rotational   |   1 -
>   test/disk_tests/usages/sdc/size               |   1 -
>   test/disk_tests/usages/sdc_udevadm            |  12 -
>   test/disk_tests/usages/sdd/device/vendor      |   1 -
>   test/disk_tests/usages/sdd/queue/rotational   |   1 -
>   test/disk_tests/usages/sdd/sdd1/size          |   1 -
>   test/disk_tests/usages/sdd/sdd2/size          |   1 -
>   test/disk_tests/usages/sdd/size               |   1 -
>   test/disk_tests/usages/sdd_udevadm            |  12 -
>   test/disk_tests/usages/sde/device/vendor      |   1 -
>   test/disk_tests/usages/sde/queue/rotational   |   1 -
>   test/disk_tests/usages/sde/sde1/size          |   1 -
>   test/disk_tests/usages/sde/size               |   1 -
>   test/disk_tests/usages/sde_udevadm            |  12 -
>   test/disk_tests/usages/sdf/device/vendor      |   1 -
>   test/disk_tests/usages/sdf/queue/rotational   |   1 -
>   test/disk_tests/usages/sdf/sdf1/size          |   1 -
>   test/disk_tests/usages/sdf/size               |   1 -
>   test/disk_tests/usages/sdf_udevadm            |  12 -
>   test/disk_tests/usages/sdg/device/vendor      |   1 -
>   test/disk_tests/usages/sdg/queue/rotational   |   1 -
>   test/disk_tests/usages/sdg/size               |   1 -
>   test/disk_tests/usages/sdg_udevadm            |  12 -
>   test/disk_tests/usages/sdh/device/vendor      |   1 -
>   test/disk_tests/usages/sdh/queue/rotational   |   1 -
>   test/disk_tests/usages/sdh/size               |   1 -
>   test/disk_tests/usages/sdh_udevadm            |  12 -
>   test/disk_tests/usages/sdi/device/vendor      |   1 -
>   test/disk_tests/usages/sdi/queue/rotational   |   1 -
>   test/disk_tests/usages/sdi/size               |   1 -
>   test/disk_tests/usages/sdi_udevadm            |  12 -
>   test/disk_tests/usages/sdj/device/vendor      |   1 -
>   test/disk_tests/usages/sdj/queue/rotational   |   1 -
>   test/disk_tests/usages/sdj/size               |   1 -
>   test/disk_tests/usages/sdj_udevadm            |  12 -
>   test/disk_tests/usages/sdk/device/vendor      |   1 -
>   test/disk_tests/usages/sdk/queue/rotational   |   1 -
>   test/disk_tests/usages/sdk/size               |   1 -
>   test/disk_tests/usages/sdk_udevadm            |  12 -
>   test/disk_tests/usages/sdl/device/vendor      |   1 -
>   test/disk_tests/usages/sdl/queue/rotational   |   1 -
>   test/disk_tests/usages/sdl/size               |   1 -
>   test/disk_tests/usages/sdl_udevadm            |  12 -
>   test/disk_tests/usages/sdm/device/vendor      |   1 -
>   test/disk_tests/usages/sdm/queue/rotational   |   1 -
>   test/disk_tests/usages/sdm/sdm1/size          |   1 -
>   test/disk_tests/usages/sdm/sdm9/size          |   1 -
>   test/disk_tests/usages/sdm/size               |   1 -
>   test/disk_tests/usages/sdm_udevadm            |  12 -
>   test/disk_tests/usages/sdn/device/vendor      |   1 -
>   test/disk_tests/usages/sdn/queue/rotational   |   1 -
>   test/disk_tests/usages/sdn/size               |   1 -
>   test/disk_tests/usages/sdn_udevadm            |  14 -
>   test/disk_tests/usages/zpool                  |   6 -
>   152 files changed, 2709 deletions(-)
>   delete mode 100644 test/disk_tests/cciss/cciss!c0d0/device/model
>   delete mode 100644 test/disk_tests/cciss/cciss!c0d0/device/vendor
>   delete mode 100644 test/disk_tests/cciss/cciss!c0d0/queue/rotational
>   delete mode 100644 test/disk_tests/cciss/cciss!c0d0/size
>   delete mode 100644 test/disk_tests/cciss/cciss!c0d0_udevadm
>   delete mode 100644 test/disk_tests/cciss/disklist
>   delete mode 100644 test/disk_tests/cciss/disklist_expected.json
>   delete mode 100644 test/disk_tests/hdd_smart/disklist
>   delete mode 100644 test/disk_tests/hdd_smart/disklist_expected.json
>   delete mode 100644 test/disk_tests/hdd_smart/sda/device/vendor
>   delete mode 100644 test/disk_tests/hdd_smart/sda/queue/rotational
>   delete mode 100644 test/disk_tests/hdd_smart/sda/size
>   delete mode 100644 test/disk_tests/hdd_smart/sda_health
>   delete mode 100644 test/disk_tests/hdd_smart/sda_smart
>   delete mode 100644 test/disk_tests/hdd_smart/sda_smart_expected.json
>   delete mode 100644 test/disk_tests/hdd_smart/sda_udevadm
>   delete mode 100644 test/disk_tests/hdd_smart/sdb/device/vendor
>   delete mode 100644 test/disk_tests/hdd_smart/sdb/queue/rotational
>   delete mode 100644 test/disk_tests/hdd_smart/sdb/size
>   delete mode 100644 test/disk_tests/hdd_smart/sdb_health
>   delete mode 100644 test/disk_tests/hdd_smart/sdb_smart
>   delete mode 100644 test/disk_tests/hdd_smart/sdb_smart_expected.json
>   delete mode 100644 test/disk_tests/hdd_smart/sdb_udevadm
>   delete mode 100644 test/disk_tests/nvme_smart/disklist
>   delete mode 100644 test/disk_tests/nvme_smart/disklist_expected.json
>   delete mode 100644 test/disk_tests/nvme_smart/nvme0/model
>   delete mode 100644 test/disk_tests/nvme_smart/nvme0_smart
>   delete mode 120000 test/disk_tests/nvme_smart/nvme0n1/device
>   delete mode 100644 test/disk_tests/nvme_smart/nvme0n1/queue/rotational
>   delete mode 100644 test/disk_tests/nvme_smart/nvme0n1/size
>   delete mode 100644 test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
>   delete mode 100644 test/disk_tests/nvme_smart/nvme0n1_udevadm
>   delete mode 100644 test/disk_tests/sas/disklist
>   delete mode 100644 test/disk_tests/sas/disklist_expected.json
>   delete mode 100644 test/disk_tests/sas/sda/device/model
>   delete mode 100644 test/disk_tests/sas/sda/device/vendor
>   delete mode 100644 test/disk_tests/sas/sda/queue/rotational
>   delete mode 100644 test/disk_tests/sas/sda/size
>   delete mode 100644 test/disk_tests/sas/sda_smart
>   delete mode 100644 test/disk_tests/sas/sda_smart_expected.json
>   delete mode 100644 test/disk_tests/sas/sda_udevadm
>   delete mode 100644 test/disk_tests/sas_ssd/disklist
>   delete mode 100644 test/disk_tests/sas_ssd/disklist_expected.json
>   delete mode 100644 test/disk_tests/sas_ssd/sda/device/model
>   delete mode 100644 test/disk_tests/sas_ssd/sda/device/vendor
>   delete mode 100644 test/disk_tests/sas_ssd/sda/queue/rotational
>   delete mode 100644 test/disk_tests/sas_ssd/sda/size
>   delete mode 100644 test/disk_tests/sas_ssd/sda_smart
>   delete mode 100644 test/disk_tests/sas_ssd/sda_smart_expected.json
>   delete mode 100644 test/disk_tests/sas_ssd/sda_udevadm
>   delete mode 100644 test/disk_tests/ssd_smart/disklist
>   delete mode 100644 test/disk_tests/ssd_smart/disklist_expected.json
>   delete mode 100644 test/disk_tests/ssd_smart/sda/device/vendor
>   delete mode 100644 test/disk_tests/ssd_smart/sda/queue/rotational
>   delete mode 100644 test/disk_tests/ssd_smart/sda/size
>   delete mode 100644 test/disk_tests/ssd_smart/sda_smart
>   delete mode 100644 test/disk_tests/ssd_smart/sda_smart_expected.json
>   delete mode 100644 test/disk_tests/ssd_smart/sda_udevadm
>   delete mode 100644 test/disk_tests/ssd_smart/sdb/device/vendor
>   delete mode 100644 test/disk_tests/ssd_smart/sdb/queue/rotational
>   delete mode 100644 test/disk_tests/ssd_smart/sdb/size
>   delete mode 100644 test/disk_tests/ssd_smart/sdb_smart
>   delete mode 100644 test/disk_tests/ssd_smart/sdb_smart_expected.json
>   delete mode 100644 test/disk_tests/ssd_smart/sdb_udevadm
>   delete mode 100644 test/disk_tests/ssd_smart/sdc/device/vendor
>   delete mode 100644 test/disk_tests/ssd_smart/sdc/queue/rotational
>   delete mode 100644 test/disk_tests/ssd_smart/sdc/size
>   delete mode 100644 test/disk_tests/ssd_smart/sdc_smart
>   delete mode 100644 test/disk_tests/ssd_smart/sdc_smart_expected.json
>   delete mode 100644 test/disk_tests/ssd_smart/sdc_udevadm
>   delete mode 100644 test/disk_tests/ssd_smart/sdd/device/vendor
>   delete mode 100644 test/disk_tests/ssd_smart/sdd/queue/rotational
>   delete mode 100644 test/disk_tests/ssd_smart/sdd/size
>   delete mode 100644 test/disk_tests/ssd_smart/sdd_smart
>   delete mode 100644 test/disk_tests/ssd_smart/sdd_smart_expected.json
>   delete mode 100644 test/disk_tests/ssd_smart/sdd_udevadm
>   delete mode 100644 test/disk_tests/ssd_smart/sde/device/vendor
>   delete mode 100644 test/disk_tests/ssd_smart/sde/queue/rotational
>   delete mode 100644 test/disk_tests/ssd_smart/sde/size
>   delete mode 100644 test/disk_tests/ssd_smart/sde_smart
>   delete mode 100644 test/disk_tests/ssd_smart/sde_smart_expected.json
>   delete mode 100644 test/disk_tests/ssd_smart/sde_udevadm
>   delete mode 100644 test/disk_tests/usages/disklist
>   delete mode 100644 test/disk_tests/usages/disklist_expected.json
>   delete mode 100644 test/disk_tests/usages/lsblk
>   delete mode 100644 test/disk_tests/usages/lvs
>   delete mode 100644 test/disk_tests/usages/mounts
>   delete mode 100644 test/disk_tests/usages/partlist
>   delete mode 100644 test/disk_tests/usages/pvs
>   delete mode 100644 test/disk_tests/usages/sda/device/vendor
>   delete mode 100644 test/disk_tests/usages/sda/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sda/size
>   delete mode 100644 test/disk_tests/usages/sda_udevadm
>   delete mode 100644 test/disk_tests/usages/sdb/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdb/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdb/size
>   delete mode 100644 test/disk_tests/usages/sdb_udevadm
>   delete mode 100644 test/disk_tests/usages/sdc/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdc/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdc/size
>   delete mode 100644 test/disk_tests/usages/sdc_udevadm
>   delete mode 100644 test/disk_tests/usages/sdd/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdd/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdd/sdd1/size
>   delete mode 100644 test/disk_tests/usages/sdd/sdd2/size
>   delete mode 100644 test/disk_tests/usages/sdd/size
>   delete mode 100644 test/disk_tests/usages/sdd_udevadm
>   delete mode 100644 test/disk_tests/usages/sde/device/vendor
>   delete mode 100644 test/disk_tests/usages/sde/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sde/sde1/size
>   delete mode 100644 test/disk_tests/usages/sde/size
>   delete mode 100644 test/disk_tests/usages/sde_udevadm
>   delete mode 100644 test/disk_tests/usages/sdf/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdf/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdf/sdf1/size
>   delete mode 100644 test/disk_tests/usages/sdf/size
>   delete mode 100644 test/disk_tests/usages/sdf_udevadm
>   delete mode 100644 test/disk_tests/usages/sdg/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdg/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdg/size
>   delete mode 100644 test/disk_tests/usages/sdg_udevadm
>   delete mode 100644 test/disk_tests/usages/sdh/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdh/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdh/size
>   delete mode 100644 test/disk_tests/usages/sdh_udevadm
>   delete mode 100644 test/disk_tests/usages/sdi/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdi/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdi/size
>   delete mode 100644 test/disk_tests/usages/sdi_udevadm
>   delete mode 100644 test/disk_tests/usages/sdj/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdj/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdj/size
>   delete mode 100644 test/disk_tests/usages/sdj_udevadm
>   delete mode 100644 test/disk_tests/usages/sdk/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdk/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdk/size
>   delete mode 100644 test/disk_tests/usages/sdk_udevadm
>   delete mode 100644 test/disk_tests/usages/sdl/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdl/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdl/size
>   delete mode 100644 test/disk_tests/usages/sdl_udevadm
>   delete mode 100644 test/disk_tests/usages/sdm/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdm/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdm/sdm1/size
>   delete mode 100644 test/disk_tests/usages/sdm/sdm9/size
>   delete mode 100644 test/disk_tests/usages/sdm/size
>   delete mode 100644 test/disk_tests/usages/sdm_udevadm
>   delete mode 100644 test/disk_tests/usages/sdn/device/vendor
>   delete mode 100644 test/disk_tests/usages/sdn/queue/rotational
>   delete mode 100644 test/disk_tests/usages/sdn/size
>   delete mode 100644 test/disk_tests/usages/sdn_udevadm
>   delete mode 100644 test/disk_tests/usages/zpool
> 
> diff --git a/test/disk_tests/cciss/cciss!c0d0/device/model b/test/disk_tests/cciss/cciss!c0d0/device/model
> deleted file mode 100644
> index 676b97d..0000000
> --- a/test/disk_tests/cciss/cciss!c0d0/device/model
> +++ /dev/null
> @@ -1 +0,0 @@
> -LOGICAL_VOLUME
> diff --git a/test/disk_tests/cciss/cciss!c0d0/device/vendor b/test/disk_tests/cciss/cciss!c0d0/device/vendor
> deleted file mode 100644
> index e8b2ad6..0000000
> --- a/test/disk_tests/cciss/cciss!c0d0/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -HP
> diff --git a/test/disk_tests/cciss/cciss!c0d0/queue/rotational b/test/disk_tests/cciss/cciss!c0d0/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/cciss/cciss!c0d0/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/cciss/cciss!c0d0/size b/test/disk_tests/cciss/cciss!c0d0/size
> deleted file mode 100644
> index f599e28..0000000
> --- a/test/disk_tests/cciss/cciss!c0d0/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -10
> diff --git a/test/disk_tests/cciss/cciss!c0d0_udevadm b/test/disk_tests/cciss/cciss!c0d0_udevadm
> deleted file mode 100644
> index 21e8899..0000000
> --- a/test/disk_tests/cciss/cciss!c0d0_udevadm
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -P: /devices/pci0000:40/0000:40:13.0/0000:45:00.0/cciss0/c0d0/block/cciss!c0d0
> -N: cciss/c0d0
> -S: disk/by-id/cciss-SERIAL111
> -S: disk/by-id/wwn-0x00000000000000000000000000000000
> -S: disk/by-path/pci-0000:45:00.0-cciss-disk0
> -E: DEVLINKS=/dev/disk/by-id/cciss-000000000000000000000000000000000 /dev/disk/by-id/wwn-0x000000000000000000000000000000000/dev/disk/by-path/pci-0000:45:00.0-cciss-disk0
> -E: DEVNAME=/dev/cciss/c0d0
> -E: DEVPATH=/devices/pci0000:40/0000:40:13.0/0000:45:00.0/cciss0/c0d0/block/cciss!c0d0
> -E: DEVTYPE=disk
> -E: ID_BUS=cciss
> -E: ID_MODEL=LOGICAL_VOLUME
> -E: ID_MODEL_ENC=LOGICAL\x20VOLUME\x20\x20
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=cfe72deb-65d1-487c-bdfa-8af66dc1a969
> -E: ID_PATH=pci-0000:45:00.0-cciss-disk0
> -E: ID_PATH_TAG=pci-0000_45_00_0-cciss-disk0
> -E: ID_REVISION=7.24
> -E: ID_SCSI=1
> -E: ID_SCSI_SERIAL=SERIAL1
> -E: ID_SERIAL=SERIAL111
> -E: ID_SERIAL_SHORT=SER111
> -E: ID_TYPE=disk
> -E: ID_VENDOR=HP
> -E: ID_VENDOR_ENC=HP\x20\x20\x20\x20\x20\x20
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_VENDOR_EXTENSION=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x00000000000000000000000000000000
> -E: MAJOR=104
> -E: MINOR=0
> -E: SUBSYSTEM=block
> -E: TAGS=:systemd:
> -E: USEC_INITIALIZED=2247
> diff --git a/test/disk_tests/cciss/disklist b/test/disk_tests/cciss/disklist
> deleted file mode 100644
> index aa174aa..0000000
> --- a/test/disk_tests/cciss/disklist
> +++ /dev/null
> @@ -1 +0,0 @@
> -cciss!c0d0
> diff --git a/test/disk_tests/cciss/disklist_expected.json b/test/disk_tests/cciss/disklist_expected.json
> deleted file mode 100644
> index eff58db..0000000
> --- a/test/disk_tests/cciss/disklist_expected.json
> +++ /dev/null
> @@ -1,16 +0,0 @@
> -{
> -    "cciss/c0d0" : {
> -	"wearout" : "N/A",
> -	"vendor" : "HP",
> -	"rpm" : -1,
> -	"type" : "unknown",
> -	"serial" : "SER111",
> -	"osdid" : -1,
> -	"health" : "UNKNOWN",
> -	"model" : "LOGICAL_VOLUME",
> -	"size" : 5120,
> -	"wwn" : "0x0000000000000000",
> -	"gpt" : 1,
> -	"devpath" : "/dev/cciss/c0d0"
> -    }
> -}
> diff --git a/test/disk_tests/hdd_smart/disklist b/test/disk_tests/hdd_smart/disklist
> deleted file mode 100644
> index 9f6776c..0000000
> --- a/test/disk_tests/hdd_smart/disklist
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -sda
> -sdb
> diff --git a/test/disk_tests/hdd_smart/disklist_expected.json b/test/disk_tests/hdd_smart/disklist_expected.json
> deleted file mode 100644
> index 02a341e..0000000
> --- a/test/disk_tests/hdd_smart/disklist_expected.json
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -{
> -    "sdb" : {
> -	"devpath" : "/dev/sdb",
> -	"size" : 1024000,
> -	"gpt" : 1,
> -	"osdid" : -1,
> -	"rpm" : 7200,
> -	"model" : "ST4000NM0033-9ZM170",
> -	"vendor" : "ATA",
> -	"health" : "PASSED",
> -	"type" : "hdd",
> -	"wwn" : "0x0000000000000000",
> -	"wearout" : "N/A",
> -	"serial" : "00000000"
> -    },
> -    "sda" : {
> -	"osdid" : -1,
> -	"size" : 1024000,
> -	"gpt" : 1,
> -	"devpath" : "/dev/sda",
> -	"model" : "ST4000DM000-1F2168",
> -	"rpm" : 5900,
> -	"type" : "hdd",
> -	"health" : "PASSED",
> -	"vendor" : "ATA",
> -	"serial" : "00000000",
> -	"wearout" : "N/A",
> -	"wwn" : "0x0000000000000000"
> -    }
> -}
> diff --git a/test/disk_tests/hdd_smart/sda/device/vendor b/test/disk_tests/hdd_smart/sda/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/hdd_smart/sda/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/hdd_smart/sda/queue/rotational b/test/disk_tests/hdd_smart/sda/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/hdd_smart/sda/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/hdd_smart/sda/size b/test/disk_tests/hdd_smart/sda/size
> deleted file mode 100644
> index 8bd1af1..0000000
> --- a/test/disk_tests/hdd_smart/sda/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -2000
> diff --git a/test/disk_tests/hdd_smart/sda_health b/test/disk_tests/hdd_smart/sda_health
> deleted file mode 100644
> index faf4ce3..0000000
> --- a/test/disk_tests/hdd_smart/sda_health
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
> -Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> diff --git a/test/disk_tests/hdd_smart/sda_smart b/test/disk_tests/hdd_smart/sda_smart
> deleted file mode 100644
> index a3f8f0a..0000000
> --- a/test/disk_tests/hdd_smart/sda_smart
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
> -Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> -
> -SMART Attributes Data Structure revision number: 10
> -Vendor Specific SMART Attributes with Thresholds:
> -ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
> -  1 Raw_Read_Error_Rate     POSR--   117   099   006    -    158983656
> -  3 Spin_Up_Time            PO----   092   091   000    -    0
> -  4 Start_Stop_Count        -O--CK   100   100   020    -    189
> -  5 Reallocated_Sector_Ct   PO--CK   100   100   010    -    0
> -  7 Seek_Error_Rate         POSR--   075   060   030    -    30779387
> -  9 Power_On_Hours          -O--CK   099   099   000    -    1250
> - 10 Spin_Retry_Count        PO--C-   100   100   097    -    0
> - 12 Power_Cycle_Count       -O--CK   100   100   020    -    190
> -183 Runtime_Bad_Block       -O--CK   100   100   000    -    0
> -184 End-to-End_Error        -O--CK   100   100   099    -    0
> -187 Reported_Uncorrect      -O--CK   100   100   000    -    0
> -188 Command_Timeout         -O--CK   100   100   000    -    0 0 0
> -189 High_Fly_Writes         -O-RCK   100   100   000    -    0
> -190 Airflow_Temperature_Cel -O---K   069   061   045    -    31 (Min/Max 20/33)
> -191 G-Sense_Error_Rate      -O--CK   100   100   000    -    0
> -192 Power-Off_Retract_Count -O--CK   100   100   000    -    43
> -193 Load_Cycle_Count        -O--CK   100   100   000    -    201
> -194 Temperature_Celsius     -O---K   031   040   000    -    31 (0 17 0 0 0)
> -197 Current_Pending_Sector  -O--C-   100   100   000    -    0
> -198 Offline_Uncorrectable   ----C-   100   100   000    -    0
> -199 UDMA_CRC_Error_Count    -OSRCK   200   200   000    -    0
> -240 Head_Flying_Hours       ------   100   253   000    -    1259h+06m+33.546s
> -241 Total_LBAs_Written      ------   100   253   000    -    24013587236
> -242 Total_LBAs_Read         ------   100   253   000    -    66916845706732
> -                            ||||||_ K auto-keep
> -                            |||||__ C event count
> -                            ||||___ R error rate
> -                            |||____ S speed/performance
> -                            ||_____ O updated online
> -                            |______ P prefailure warning
> -
> diff --git a/test/disk_tests/hdd_smart/sda_smart_expected.json b/test/disk_tests/hdd_smart/sda_smart_expected.json
> deleted file mode 100644
> index 01bb860..0000000
> --- a/test/disk_tests/hdd_smart/sda_smart_expected.json
> +++ /dev/null
> @@ -1,246 +0,0 @@
> -{
> -    "attributes" : [
> -	{
> -	    "threshold" : 6,
> -	    "fail" : "-",
> -	    "flags" : "POSR--",
> -	    "value" : 117,
> -	    "id" : "  1",
> -	    "raw" : "158983656",
> -	    "name" : "Raw_Read_Error_Rate",
> -	    "worst" : 99
> -	},
> -	{
> -	    "flags" : "PO----",
> -	    "value" : 92,
> -	    "raw" : "0",
> -	    "name" : "Spin_Up_Time",
> -	    "worst" : 91,
> -	    "id" : "  3",
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "value" : 100,
> -	    "flags" : "-O--CK",
> -	    "id" : "  4",
> -	    "name" : "Start_Stop_Count",
> -	    "worst" : 100,
> -	    "raw" : "189",
> -	    "threshold" : 20,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "value" : 100,
> -	    "flags" : "PO--CK",
> -	    "id" : "  5",
> -	    "name" : "Reallocated_Sector_Ct",
> -	    "worst" : 100,
> -	    "raw" : "0",
> -	    "threshold" : 10,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "flags" : "POSR--",
> -	    "value" : 75,
> -	    "raw" : "30779387",
> -	    "worst" : 60,
> -	    "name" : "Seek_Error_Rate",
> -	    "id" : "  7",
> -	    "fail" : "-",
> -	    "threshold" : 30
> -	},
> -	{
> -	    "raw" : "1250",
> -	    "worst" : 99,
> -	    "name" : "Power_On_Hours",
> -	    "id" : "  9",
> -	    "flags" : "-O--CK",
> -	    "value" : 99,
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "value" : 100,
> -	    "flags" : "PO--C-",
> -	    "id" : " 10",
> -	    "name" : "Spin_Retry_Count",
> -	    "worst" : 100,
> -	    "raw" : "0",
> -	    "threshold" : 97,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "flags" : "-O--CK",
> -	    "value" : 100,
> -	    "id" : " 12",
> -	    "raw" : "190",
> -	    "worst" : 100,
> -	    "name" : "Power_Cycle_Count",
> -	    "threshold" : 20,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "value" : 100,
> -	    "id" : "183",
> -	    "raw" : "0",
> -	    "worst" : 100,
> -	    "name" : "Runtime_Bad_Block"
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 99,
> -	    "flags" : "-O--CK",
> -	    "value" : 100,
> -	    "raw" : "0",
> -	    "worst" : 100,
> -	    "name" : "End-to-End_Error",
> -	    "id" : "184"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Reported_Uncorrect",
> -	    "raw" : "0",
> -	    "id" : "187",
> -	    "value" : 100,
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "flags" : "-O--CK",
> -	    "value" : 100,
> -	    "raw" : "0 0 0",
> -	    "worst" : 100,
> -	    "name" : "Command_Timeout",
> -	    "id" : "188",
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "flags" : "-O-RCK",
> -	    "value" : 100,
> -	    "id" : "189",
> -	    "raw" : "0",
> -	    "name" : "High_Fly_Writes",
> -	    "worst" : 100
> -	},
> -	{
> -	    "worst" : 61,
> -	    "name" : "Airflow_Temperature_Cel",
> -	    "raw" : "31 (Min/Max 20/33)",
> -	    "id" : "190",
> -	    "value" : 69,
> -	    "flags" : "-O---K",
> -	    "fail" : "-",
> -	    "threshold" : 45
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "name" : "G-Sense_Error_Rate",
> -	    "raw" : "0",
> -	    "id" : "191",
> -	    "value" : 100,
> -	    "flags" : "-O--CK"
> -	},
> -	{
> -	    "id" : "192",
> -	    "raw" : "43",
> -	    "name" : "Power-Off_Retract_Count",
> -	    "worst" : 100,
> -	    "flags" : "-O--CK",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "flags" : "-O--CK",
> -	    "value" : 100,
> -	    "raw" : "201",
> -	    "worst" : 100,
> -	    "name" : "Load_Cycle_Count",
> -	    "id" : "193",
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 0,
> -	    "value" : 31,
> -	    "flags" : "-O---K",
> -	    "name" : "Temperature_Celsius",
> -	    "worst" : 40,
> -	    "raw" : "31 (0 17 0 0 0)",
> -	    "id" : "194"
> -	},
> -	{
> -	    "value" : 100,
> -	    "flags" : "-O--C-",
> -	    "id" : "197",
> -	    "worst" : 100,
> -	    "name" : "Current_Pending_Sector",
> -	    "raw" : "0",
> -	    "threshold" : 0,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Offline_Uncorrectable",
> -	    "raw" : "0",
> -	    "id" : "198",
> -	    "value" : 100,
> -	    "flags" : "----C-",
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "value" : 200,
> -	    "flags" : "-OSRCK",
> -	    "id" : "199",
> -	    "worst" : 200,
> -	    "name" : "UDMA_CRC_Error_Count",
> -	    "raw" : "0"
> -	},
> -	{
> -	    "raw" : "1259h+06m+33.546s",
> -	    "name" : "Head_Flying_Hours",
> -	    "worst" : 253,
> -	    "id" : "240",
> -	    "flags" : "------",
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 0,
> -	    "name" : "Total_LBAs_Written",
> -	    "worst" : 253,
> -	    "raw" : "24013587236",
> -	    "id" : "241",
> -	    "value" : 100,
> -	    "flags" : "------"
> -	},
> -	{
> -	    "flags" : "------",
> -	    "value" : 100,
> -	    "id" : "242",
> -	    "raw" : "66916845706732",
> -	    "worst" : 253,
> -	    "name" : "Total_LBAs_Read",
> -	    "threshold" : 0,
> -	    "fail" : "-"
> -	}
> -    ],
> -    "health" : "PASSED",
> -    "type" : "ata"
> -}
> diff --git a/test/disk_tests/hdd_smart/sda_udevadm b/test/disk_tests/hdd_smart/sda_udevadm
> deleted file mode 100644
> index d9b5497..0000000
> --- a/test/disk_tests/hdd_smart/sda_udevadm
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -E: DEVNAME=/dev/sda
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=5900
> -E: ID_BUS=ata
> -E: ID_MODEL=ST4000DM000-1F2168
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=4f2e07a6-5437-2b4e-b6e8-9cba98639324
> -E: ID_SERIAL_SHORT=00000000
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/hdd_smart/sdb/device/vendor b/test/disk_tests/hdd_smart/sdb/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/hdd_smart/sdb/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/hdd_smart/sdb/queue/rotational b/test/disk_tests/hdd_smart/sdb/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/hdd_smart/sdb/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/hdd_smart/sdb/size b/test/disk_tests/hdd_smart/sdb/size
> deleted file mode 100644
> index 8bd1af1..0000000
> --- a/test/disk_tests/hdd_smart/sdb/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -2000
> diff --git a/test/disk_tests/hdd_smart/sdb_health b/test/disk_tests/hdd_smart/sdb_health
> deleted file mode 100644
> index faf4ce3..0000000
> --- a/test/disk_tests/hdd_smart/sdb_health
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
> -Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> diff --git a/test/disk_tests/hdd_smart/sdb_smart b/test/disk_tests/hdd_smart/sdb_smart
> deleted file mode 100644
> index ce52bea..0000000
> --- a/test/disk_tests/hdd_smart/sdb_smart
> +++ /dev/null
> @@ -1,36 +0,0 @@
> -smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.4.10-1-pve] (local build)
> -Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> -
> -SMART Attributes Data Structure revision number: 10
> -Vendor Specific SMART Attributes with Thresholds:
> -ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH FAIL RAW_VALUE
> -  1 Raw_Read_Error_Rate     POSR--   083   063   044    -    215697022
> -  3 Spin_Up_Time            PO----   092   091   000    -    0
> -  4 Start_Stop_Count        -O--CK   100   100   020    -    265
> -  5 Reallocated_Sector_Ct   PO--CK   100   100   010    -    0
> -  7 Seek_Error_Rate         POSR--   091   060   030    -    1572375006
> -  9 Power_On_Hours          -O--CK   089   089   000    -    9885
> - 10 Spin_Retry_Count        PO--C-   100   100   097    -    0
> - 12 Power_Cycle_Count       -O--CK   100   100   020    -    265
> -184 End-to-End_Error        -O--CK   100   100   099    -    0
> -187 Reported_Uncorrect      -O--CK   100   100   000    -    0
> -188 Command_Timeout         -O--CK   100   100   000    -    0
> -189 High_Fly_Writes         -O--CK   100   100   000    -    0
> -190 Airflow_Temperature_Cel -O-RCK   045   036   045    NOW  55 (147 229 55 24 0)
> -191 G-Sense_Error_Rate      -O---K   100   100   000    -    0
> -192 Power-Off_Retract_Count -O--CK   100   100   000    -    57
> -193 Load_Cycle_Count        -O--CK   100   100   000    -    265
> -194 Temperature_Celsius     -O--CK   055   064   000    -    55 (0 16 0 0 0)
> -195 Hardware_ECC_Recovered  -O---K   023   013   000    -    215697022
> -197 Current_Pending_Sector  -O--C-   100   100   000    -    0
> -198 Offline_Uncorrectable   ----C-   100   100   000    -    0
> -199 UDMA_CRC_Error_Count    -OSRCK   200   200   000    -    0
> -                            ||||||_ K auto-keep
> -                            |||||__ C event count
> -                            ||||___ R error rate
> -                            |||____ S speed/performance
> -                            ||_____ O updated online
> -                            |______ P prefailure warning
> diff --git a/test/disk_tests/hdd_smart/sdb_smart_expected.json b/test/disk_tests/hdd_smart/sdb_smart_expected.json
> deleted file mode 100644
> index 41e55fb..0000000
> --- a/test/disk_tests/hdd_smart/sdb_smart_expected.json
> +++ /dev/null
> @@ -1,216 +0,0 @@
> -{
> -    "attributes" : [
> -	{
> -	    "threshold" : 44,
> -	    "fail" : "-",
> -	    "id" : "  1",
> -	    "name" : "Raw_Read_Error_Rate",
> -	    "worst" : 63,
> -	    "raw" : "215697022",
> -	    "value" : 83,
> -	    "flags" : "POSR--"
> -	},
> -	{
> -	    "flags" : "PO----",
> -	    "value" : 92,
> -	    "id" : "  3",
> -	    "raw" : "0",
> -	    "worst" : 91,
> -	    "name" : "Spin_Up_Time",
> -	    "threshold" : 0,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 20,
> -	    "value" : 100,
> -	    "flags" : "-O--CK",
> -	    "worst" : 100,
> -	    "name" : "Start_Stop_Count",
> -	    "raw" : "265",
> -	    "id" : "  4"
> -	},
> -	{
> -	    "flags" : "PO--CK",
> -	    "value" : 100,
> -	    "id" : "  5",
> -	    "raw" : "0",
> -	    "name" : "Reallocated_Sector_Ct",
> -	    "worst" : 100,
> -	    "threshold" : 10,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "id" : "  7",
> -	    "raw" : "1572375006",
> -	    "name" : "Seek_Error_Rate",
> -	    "worst" : 60,
> -	    "flags" : "POSR--",
> -	    "value" : 91,
> -	    "threshold" : 30,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "raw" : "9885",
> -	    "name" : "Power_On_Hours",
> -	    "worst" : 89,
> -	    "id" : "  9",
> -	    "flags" : "-O--CK",
> -	    "value" : 89,
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 97,
> -	    "value" : 100,
> -	    "flags" : "PO--C-",
> -	    "worst" : 100,
> -	    "name" : "Spin_Retry_Count",
> -	    "raw" : "0",
> -	    "id" : " 10"
> -	},
> -	{
> -	    "threshold" : 20,
> -	    "fail" : "-",
> -	    "id" : " 12",
> -	    "raw" : "265",
> -	    "name" : "Power_Cycle_Count",
> -	    "worst" : 100,
> -	    "flags" : "-O--CK",
> -	    "value" : 100
> -	},
> -	{
> -	    "name" : "End-to-End_Error",
> -	    "worst" : 100,
> -	    "raw" : "0",
> -	    "id" : "184",
> -	    "value" : 100,
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "threshold" : 99
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "id" : "187",
> -	    "raw" : "0",
> -	    "name" : "Reported_Uncorrect",
> -	    "worst" : 100,
> -	    "flags" : "-O--CK",
> -	    "value" : 100
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "id" : "188",
> -	    "raw" : "0",
> -	    "name" : "Command_Timeout",
> -	    "worst" : 100,
> -	    "flags" : "-O--CK",
> -	    "value" : 100
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 0,
> -	    "raw" : "0",
> -	    "worst" : 100,
> -	    "name" : "High_Fly_Writes",
> -	    "id" : "189",
> -	    "flags" : "-O--CK",
> -	    "value" : 100
> -	},
> -	{
> -	    "flags" : "-O-RCK",
> -	    "value" : 45,
> -	    "raw" : "55 (147 229 55 24 0)",
> -	    "worst" : 36,
> -	    "name" : "Airflow_Temperature_Cel",
> -	    "id" : "190",
> -	    "fail" : "NOW",
> -	    "threshold" : 45
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 0,
> -	    "raw" : "0",
> -	    "worst" : 100,
> -	    "name" : "G-Sense_Error_Rate",
> -	    "id" : "191",
> -	    "flags" : "-O---K",
> -	    "value" : 100
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "id" : "192",
> -	    "raw" : "57",
> -	    "worst" : 100,
> -	    "name" : "Power-Off_Retract_Count",
> -	    "flags" : "-O--CK",
> -	    "value" : 100
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "flags" : "-O--CK",
> -	    "name" : "Load_Cycle_Count",
> -	    "worst" : 100,
> -	    "raw" : "265",
> -	    "id" : "193"
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "value" : 55,
> -	    "id" : "194",
> -	    "raw" : "55 (0 16 0 0 0)",
> -	    "name" : "Temperature_Celsius",
> -	    "worst" : 64
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "id" : "195",
> -	    "name" : "Hardware_ECC_Recovered",
> -	    "worst" : 13,
> -	    "raw" : "215697022",
> -	    "value" : 23,
> -	    "flags" : "-O---K"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Current_Pending_Sector",
> -	    "raw" : "0",
> -	    "id" : "197",
> -	    "value" : 100,
> -	    "flags" : "-O--C-",
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Offline_Uncorrectable",
> -	    "raw" : "0",
> -	    "id" : "198",
> -	    "value" : 100,
> -	    "flags" : "----C-",
> -	    "fail" : "-",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "fail" : "-",
> -	    "threshold" : 0,
> -	    "value" : 200,
> -	    "flags" : "-OSRCK",
> -	    "worst" : 200,
> -	    "name" : "UDMA_CRC_Error_Count",
> -	    "raw" : "0",
> -	    "id" : "199"
> -	}
> -    ],
> -    "type" : "ata",
> -    "health" : "PASSED"
> -}
> diff --git a/test/disk_tests/hdd_smart/sdb_udevadm b/test/disk_tests/hdd_smart/sdb_udevadm
> deleted file mode 100644
> index 3bc3a57..0000000
> --- a/test/disk_tests/hdd_smart/sdb_udevadm
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -E: DEVNAME=/dev/sdb
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=7200
> -E: ID_BUS=ata
> -E: ID_MODEL=ST4000NM0033-9ZM170
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=4f2e07a6-5437-2b4e-b6e8-9cba98639324
> -E: ID_SERIAL_SHORT=00000000
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/nvme_smart/disklist b/test/disk_tests/nvme_smart/disklist
> deleted file mode 100644
> index d00b90e..0000000
> --- a/test/disk_tests/nvme_smart/disklist
> +++ /dev/null
> @@ -1 +0,0 @@
> -nvme0n1
> diff --git a/test/disk_tests/nvme_smart/disklist_expected.json b/test/disk_tests/nvme_smart/disklist_expected.json
> deleted file mode 100644
> index 4d1c92f..0000000
> --- a/test/disk_tests/nvme_smart/disklist_expected.json
> +++ /dev/null
> @@ -1,16 +0,0 @@
> -{
> -    "nvme0n1" : {
> -	"wearout" : 69,
> -	"vendor" : "unknown",
> -	"size" : 512000,
> -	"health" : "PASSED",
> -	"serial" : "unknown",
> -	"model" : "NVME MODEL 1",
> -	"rpm" : 0,
> -	"osdid" : -1,
> -	"devpath" : "/dev/nvme0n1",
> -	"gpt" : 0,
> -	"wwn" : "unknown",
> -	"type" : "nvme"
> -    }
> -}
> diff --git a/test/disk_tests/nvme_smart/nvme0/model b/test/disk_tests/nvme_smart/nvme0/model
> deleted file mode 100644
> index 9bd6eba..0000000
> --- a/test/disk_tests/nvme_smart/nvme0/model
> +++ /dev/null
> @@ -1 +0,0 @@
> -NVME MODEL 1
> diff --git a/test/disk_tests/nvme_smart/nvme0_smart b/test/disk_tests/nvme_smart/nvme0_smart
> deleted file mode 100644
> index f371d5b..0000000
> --- a/test/disk_tests/nvme_smart/nvme0_smart
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.19-1-pve] (local build)
> -Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> -
> -SMART/Health Information (NVMe Log 0x02, NSID 0xffffffff)
> -Critical Warning:                   0x00
> -Temperature:                        32 Celsius
> -Available Spare:                    100%
> -Available Spare Threshold:          10%
> -Percentage Used:                    31%
> -Data Units Read:                    1,299,288 [665 GB]
> -Data Units Written:                 5,592,478 [2.86 TB]
> -Host Read Commands:                 30,360,807
> -Host Write Commands:                470,356,196
> -Controller Busy Time:               12
> -Power Cycles:                       98
> -Power On Hours:                     687
> -Unsafe Shutdowns:                   21
> -Media and Data Integrity Errors:    0
> -Error Information Log Entries:      0
> diff --git a/test/disk_tests/nvme_smart/nvme0n1/device b/test/disk_tests/nvme_smart/nvme0n1/device
> deleted file mode 120000
> index e890f3e..0000000
> --- a/test/disk_tests/nvme_smart/nvme0n1/device
> +++ /dev/null
> @@ -1 +0,0 @@
> -../nvme0
> \ No newline at end of file
> diff --git a/test/disk_tests/nvme_smart/nvme0n1/queue/rotational b/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
> deleted file mode 100644
> index 573541a..0000000
> --- a/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -0
> diff --git a/test/disk_tests/nvme_smart/nvme0n1/size b/test/disk_tests/nvme_smart/nvme0n1/size
> deleted file mode 100644
> index 83b33d2..0000000
> --- a/test/disk_tests/nvme_smart/nvme0n1/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -1000
> diff --git a/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json b/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
> deleted file mode 100644
> index af8eade..0000000
> --- a/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -{
> -    "text" : "\nSMART/Health Information (NVMe Log 0x02, NSID 0xffffffff)\nCritical Warning:                   0x00\nTemperature:                        32 Celsius\nAvailable Spare:                    100%\nAvailable Spare Threshold:          10%\nPercentage Used:                    31%\nData Units Read:                    1,299,288 [665 GB]\nData Units Written:                 5,592,478 [2.86 TB]\nHost Read Commands:                 30,360,807\nHost Write Commands:                470,356,196\nController Busy Time:               12\nPower Cycles:                       98\nPower On Hours:                     687\nUnsafe Shutdowns:                   21\nMedia and Data Integrity Errors:    0\nError Information Log Entries:      0\n",
> -    "health" : "PASSED",
> -    "type" : "text",
> -    "wearout": 69
> -}
> diff --git a/test/disk_tests/nvme_smart/nvme0n1_udevadm b/test/disk_tests/nvme_smart/nvme0n1_udevadm
> deleted file mode 100644
> index 36c78ce..0000000
> --- a/test/disk_tests/nvme_smart/nvme0n1_udevadm
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -
> -P: /devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
> -N: nvme0n1
> -S: disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
> -E: DEVLINKS=/dev/disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
> -E: DEVNAME=/dev/nvme0n1
> -E: DEVPATH=/devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
> -E: DEVTYPE=disk
> -E: ID_FS_TYPE=LVM2_member
> -E: ID_FS_USAGE=raid
> -E: ID_FS_UUID=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
> -E: ID_FS_UUID_ENC=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
> -E: ID_FS_VERSION=LVM2 001
> -E: MAJOR=259
> -E: MINOR=0
> -E: SUBSYSTEM=block
> -E: TAGS=:systemd:
> -E: USEC_INITIALIZED=3842
> diff --git a/test/disk_tests/sas/disklist b/test/disk_tests/sas/disklist
> deleted file mode 100644
> index 9191c61..0000000
> --- a/test/disk_tests/sas/disklist
> +++ /dev/null
> @@ -1 +0,0 @@
> -sda
> diff --git a/test/disk_tests/sas/disklist_expected.json b/test/disk_tests/sas/disklist_expected.json
> deleted file mode 100644
> index 39b14a5..0000000
> --- a/test/disk_tests/sas/disklist_expected.json
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -{
> -    "sda" : {
> -	"gpt" : 1,
> -	"devpath" : "/dev/sda",
> -	"type" : "unknown",
> -	"model" : "MODEL1",
> -	"health" : "UNKNOWN",
> -	"osdid" : -1,
> -	"wwn" : "0x0000000000000000",
> -	"vendor" : "VENDOR1",
> -	"rpm" : -1,
> -	"size" : 5120000,
> -	"serial" : "SER2",
> -	"wearout" : "N/A",
> -	"by_id_link" : "/dev/disk/by-id/scsi-00000000000000000"
> -    }
> -}
> diff --git a/test/disk_tests/sas/sda/device/model b/test/disk_tests/sas/sda/device/model
> deleted file mode 100644
> index 6b69674..0000000
> --- a/test/disk_tests/sas/sda/device/model
> +++ /dev/null
> @@ -1 +0,0 @@
> -MODEL1
> diff --git a/test/disk_tests/sas/sda/device/vendor b/test/disk_tests/sas/sda/device/vendor
> deleted file mode 100644
> index a7894eb..0000000
> --- a/test/disk_tests/sas/sda/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -VENDOR1
> diff --git a/test/disk_tests/sas/sda/queue/rotational b/test/disk_tests/sas/sda/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/sas/sda/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/sas/sda/size b/test/disk_tests/sas/sda/size
> deleted file mode 100644
> index 5caff40..0000000
> --- a/test/disk_tests/sas/sda/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -10000
> diff --git a/test/disk_tests/sas/sda_smart b/test/disk_tests/sas/sda_smart
> deleted file mode 100644
> index 856af39..0000000
> --- a/test/disk_tests/sas/sda_smart
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -=== START OF READ SMART DATA SECTION ===
> -SMART Health Status: OK
> -
> -Percentage used endurance indicator: 0%
> -Current Drive Temperature:     20 C
> -Drive Trip Temperature:        70 C
> -
> -Manufactured in week 47 of year 2012
> -Specified cycle count over device lifetime:  0
> -Accumulated start-stop cycles:  0
> -Specified load-unload count over device lifetime:  0
> -Accumulated load-unload cycles:  0
> -Elements in grown defect list: 0
> -
> -Vendor (Seagate) cache information
> -  Blocks sent to initiator = 1286675833552896
> -
> -Vendor (Seagate/Hitachi) factory information
> -  number of hours powered up = 7127.12
> -  number of minutes until next internal SMART test = 0
> diff --git a/test/disk_tests/sas/sda_smart_expected.json b/test/disk_tests/sas/sda_smart_expected.json
> deleted file mode 100644
> index 2964372..0000000
> --- a/test/disk_tests/sas/sda_smart_expected.json
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -{
> -    "health" : "OK",
> -    "text" : "\nPercentage used endurance indicator: 0%\nCurrent Drive Temperature:     20 C\nDrive Trip Temperature:        70 C\n\nManufactured in week 47 of year 2012\nSpecified cycle count over device lifetime:  0\nAccumulated start-stop cycles:  0\nSpecified load-unload count over device lifetime:  0\nAccumulated load-unload cycles:  0\nElements in grown defect list: 0\n\nVendor (Seagate) cache information\n  Blocks sent to initiator = 1286675833552896\n\nVendor (Seagate/Hitachi) factory information\n  number of hours powered up = 7127.12\n  number of minutes until next internal SMART test = 0\n",
> -    "type" : "text",
> -    "wearout": 100
> -}
> diff --git a/test/disk_tests/sas/sda_udevadm b/test/disk_tests/sas/sda_udevadm
> deleted file mode 100644
> index ac0744d..0000000
> --- a/test/disk_tests/sas/sda_udevadm
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -P: /devices/pci0000:00/0000:00:03.0/0000:02:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sda
> -N: sda
> -S: disk/by-id/scsi-00000000000000000
> -S: disk/by-id/wwn-0x0000000000000000
> -S: disk/by-path/pci-0000:02:00.0-sas-0x0000000000000000-lun-0
> -E: DEVLINKS=/dev/disk/by-id/scsi-00000000000000000 /dev/disk/by-id/wwn-0x0000000000000000 /dev/disk/by-path/pci-0000:02:00.0-sas-0x0000000000000000-lun-0
> -E: DEVNAME=/dev/sda
> -E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:02:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sda
> -E: DEVTYPE=disk
> -E: ID_BUS=scsi
> -E: ID_MODEL=MODEL1
> -E: ID_MODEL_ENC=MODEL1\x20\x20\x20\x20\x20\x20
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=605740f0-44a1-4dc5-9fea-bde166df963e
> -E: ID_PATH=pci-0000:02:00.0-sas-0x0000000000000000-lun-0
> -E: ID_PATH_TAG=pci-0000_02_00_0-sas-0x0000000000000000-lun-0
> -E: ID_REVISION=ES64
> -E: ID_SCSI=1
> -E: ID_SCSI_SERIAL=SERIAL
> -E: ID_SERIAL=SERIAL2
> -E: ID_SERIAL_SHORT=SER2
> -E: ID_TYPE=disk
> -E: ID_VENDOR=VENDOR1
> -E: ID_VENDOR_ENC=VENDOR1\x20
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> -E: MAJOR=8
> -E: MINOR=0
> -E: SUBSYSTEM=block
> -E: TAGS=:systemd:
> -E: USEC_INITIALIZED=667541
> diff --git a/test/disk_tests/sas_ssd/disklist b/test/disk_tests/sas_ssd/disklist
> deleted file mode 100644
> index 9191c61..0000000
> --- a/test/disk_tests/sas_ssd/disklist
> +++ /dev/null
> @@ -1 +0,0 @@
> -sda
> diff --git a/test/disk_tests/sas_ssd/disklist_expected.json b/test/disk_tests/sas_ssd/disklist_expected.json
> deleted file mode 100644
> index dd9b748..0000000
> --- a/test/disk_tests/sas_ssd/disklist_expected.json
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -{
> -    "sda" : {
> -	"gpt" : 1,
> -	"devpath" : "/dev/sda",
> -	"type" : "ssd",
> -	"model" : "MODEL1",
> -	"health" : "OK",
> -	"osdid" : -1,
> -	"wwn" : "0x0000000000000000",
> -	"vendor" : "VENDOR1",
> -	"rpm" : 0,
> -	"size" : 5120000,
> -	"serial" : "SER2",
> -	"wearout" : 100,
> -	"by_id_link" : "/dev/disk/by-id/scsi-00000000000000000"
> -    }
> -}
> diff --git a/test/disk_tests/sas_ssd/sda/device/model b/test/disk_tests/sas_ssd/sda/device/model
> deleted file mode 100644
> index 6b69674..0000000
> --- a/test/disk_tests/sas_ssd/sda/device/model
> +++ /dev/null
> @@ -1 +0,0 @@
> -MODEL1
> diff --git a/test/disk_tests/sas_ssd/sda/device/vendor b/test/disk_tests/sas_ssd/sda/device/vendor
> deleted file mode 100644
> index a7894eb..0000000
> --- a/test/disk_tests/sas_ssd/sda/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -VENDOR1
> diff --git a/test/disk_tests/sas_ssd/sda/queue/rotational b/test/disk_tests/sas_ssd/sda/queue/rotational
> deleted file mode 100644
> index 573541a..0000000
> --- a/test/disk_tests/sas_ssd/sda/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -0
> diff --git a/test/disk_tests/sas_ssd/sda/size b/test/disk_tests/sas_ssd/sda/size
> deleted file mode 100644
> index 5caff40..0000000
> --- a/test/disk_tests/sas_ssd/sda/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -10000
> diff --git a/test/disk_tests/sas_ssd/sda_smart b/test/disk_tests/sas_ssd/sda_smart
> deleted file mode 100644
> index 856af39..0000000
> --- a/test/disk_tests/sas_ssd/sda_smart
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -=== START OF READ SMART DATA SECTION ===
> -SMART Health Status: OK
> -
> -Percentage used endurance indicator: 0%
> -Current Drive Temperature:     20 C
> -Drive Trip Temperature:        70 C
> -
> -Manufactured in week 47 of year 2012
> -Specified cycle count over device lifetime:  0
> -Accumulated start-stop cycles:  0
> -Specified load-unload count over device lifetime:  0
> -Accumulated load-unload cycles:  0
> -Elements in grown defect list: 0
> -
> -Vendor (Seagate) cache information
> -  Blocks sent to initiator = 1286675833552896
> -
> -Vendor (Seagate/Hitachi) factory information
> -  number of hours powered up = 7127.12
> -  number of minutes until next internal SMART test = 0
> diff --git a/test/disk_tests/sas_ssd/sda_smart_expected.json b/test/disk_tests/sas_ssd/sda_smart_expected.json
> deleted file mode 100644
> index 2964372..0000000
> --- a/test/disk_tests/sas_ssd/sda_smart_expected.json
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -{
> -    "health" : "OK",
> -    "text" : "\nPercentage used endurance indicator: 0%\nCurrent Drive Temperature:     20 C\nDrive Trip Temperature:        70 C\n\nManufactured in week 47 of year 2012\nSpecified cycle count over device lifetime:  0\nAccumulated start-stop cycles:  0\nSpecified load-unload count over device lifetime:  0\nAccumulated load-unload cycles:  0\nElements in grown defect list: 0\n\nVendor (Seagate) cache information\n  Blocks sent to initiator = 1286675833552896\n\nVendor (Seagate/Hitachi) factory information\n  number of hours powered up = 7127.12\n  number of minutes until next internal SMART test = 0\n",
> -    "type" : "text",
> -    "wearout": 100
> -}
> diff --git a/test/disk_tests/sas_ssd/sda_udevadm b/test/disk_tests/sas_ssd/sda_udevadm
> deleted file mode 100644
> index ac0744d..0000000
> --- a/test/disk_tests/sas_ssd/sda_udevadm
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -P: /devices/pci0000:00/0000:00:03.0/0000:02:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sda
> -N: sda
> -S: disk/by-id/scsi-00000000000000000
> -S: disk/by-id/wwn-0x0000000000000000
> -S: disk/by-path/pci-0000:02:00.0-sas-0x0000000000000000-lun-0
> -E: DEVLINKS=/dev/disk/by-id/scsi-00000000000000000 /dev/disk/by-id/wwn-0x0000000000000000 /dev/disk/by-path/pci-0000:02:00.0-sas-0x0000000000000000-lun-0
> -E: DEVNAME=/dev/sda
> -E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:02:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sda
> -E: DEVTYPE=disk
> -E: ID_BUS=scsi
> -E: ID_MODEL=MODEL1
> -E: ID_MODEL_ENC=MODEL1\x20\x20\x20\x20\x20\x20
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=605740f0-44a1-4dc5-9fea-bde166df963e
> -E: ID_PATH=pci-0000:02:00.0-sas-0x0000000000000000-lun-0
> -E: ID_PATH_TAG=pci-0000_02_00_0-sas-0x0000000000000000-lun-0
> -E: ID_REVISION=ES64
> -E: ID_SCSI=1
> -E: ID_SCSI_SERIAL=SERIAL
> -E: ID_SERIAL=SERIAL2
> -E: ID_SERIAL_SHORT=SER2
> -E: ID_TYPE=disk
> -E: ID_VENDOR=VENDOR1
> -E: ID_VENDOR_ENC=VENDOR1\x20
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> -E: MAJOR=8
> -E: MINOR=0
> -E: SUBSYSTEM=block
> -E: TAGS=:systemd:
> -E: USEC_INITIALIZED=667541
> diff --git a/test/disk_tests/ssd_smart/disklist b/test/disk_tests/ssd_smart/disklist
> deleted file mode 100644
> index 18048d5..0000000
> --- a/test/disk_tests/ssd_smart/disklist
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -sda
> -sdb
> -sdc
> -sdd
> -sde
> diff --git a/test/disk_tests/ssd_smart/disklist_expected.json b/test/disk_tests/ssd_smart/disklist_expected.json
> deleted file mode 100644
> index d84b9dc..0000000
> --- a/test/disk_tests/ssd_smart/disklist_expected.json
> +++ /dev/null
> @@ -1,72 +0,0 @@
> -{
> -    "sda" : {
> -	"serial" : "000000000000",
> -	"vendor" : "ATA",
> -	"rpm" : 0,
> -	"gpt" : 1,
> -	"health" : "PASSED",
> -	"wearout" : "100",
> -	"osdid" : -1,
> -	"size" : 512000,
> -	"type" : "ssd",
> -	"devpath" : "/dev/sda",
> -	"model" : "Crucial_CT500MX200SSD1",
> -	"wwn" : "0x0000000000000000"
> -    },
> -    "sdb" : {
> -	"model" : "INTEL_SSDSC2BB080G6",
> -	"devpath" : "/dev/sdb",
> -	"osdid" : -1,
> -	"type" : "ssd",
> -	"size" : 512000,
> -	"wwn" : "0x0000000000000000",
> -	"gpt" : 1,
> -	"rpm" : 0,
> -	"vendor" : "ATA",
> -	"serial" : "000000000000000000",
> -	"wearout" : "97",
> -	"health" : "PASSED"
> -    },
> -    "sdc" : {
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdc",
> -	"model" : "Samsung SSD 850 PRO 512GB",
> -	"osdid" : -1,
> -	"type" : "ssd",
> -	"size" : 512000,
> -	"wearout" : "99",
> -	"health" : "PASSED",
> -	"gpt" : 1,
> -	"rpm" : 0,
> -	"vendor" : "ATA",
> -	"serial" : "000000000000"
> -    },
> -    "sdd" : {
> -	"rpm" : 0,
> -	"gpt" : 1,
> -	"serial" : "000000000000",
> -	"vendor" : "ATA",
> -	"wearout" : "100",
> -	"health" : "PASSED",
> -	"devpath" : "/dev/sdd",
> -	"model" : "SanDisk SD8SB8U1T001122",
> -	"size" : 512000,
> -	"osdid" : -1,
> -	"type" : "ssd",
> -	"wwn" : "0x0000000000000000"
> -    },
> -    "sde" : {
> -	"type" : "ssd",
> -	"osdid" : -1,
> -	"size" : 512000,
> -	"model" : "KINGSTON SHFS37A120G",
> -	"devpath" : "/dev/sde",
> -	"wwn" : "0x0000000000000000",
> -	"vendor" : "ATA",
> -	"serial" : "000000000000",
> -	"gpt" : 1,
> -	"rpm" : 0,
> -	"health" : "PASSED",
> -	"wearout" : "91"
> -    }
> -}
> diff --git a/test/disk_tests/ssd_smart/sda/device/vendor b/test/disk_tests/ssd_smart/sda/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/ssd_smart/sda/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/ssd_smart/sda/queue/rotational b/test/disk_tests/ssd_smart/sda/queue/rotational
> deleted file mode 100644
> index 573541a..0000000
> --- a/test/disk_tests/ssd_smart/sda/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -0
> diff --git a/test/disk_tests/ssd_smart/sda/size b/test/disk_tests/ssd_smart/sda/size
> deleted file mode 100644
> index 83b33d2..0000000
> --- a/test/disk_tests/ssd_smart/sda/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -1000
> diff --git a/test/disk_tests/ssd_smart/sda_smart b/test/disk_tests/ssd_smart/sda_smart
> deleted file mode 100644
> index 2857588..0000000
> --- a/test/disk_tests/ssd_smart/sda_smart
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
> -Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> -
> -SMART Attributes Data Structure revision number: 16
> -Vendor Specific SMART Attributes with Thresholds:
> -ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
> -  1 Raw_Read_Error_Rate     POSR-K   100   100   000    -    0
> -  5 Reallocate_NAND_Blk_Cnt -O--CK   100   100   010    -    0
> -  9 Power_On_Hours          -O--CK   100   100   000    -    1309
> - 12 Power_Cycle_Count       -O--CK   100   100   000    -    200
> -171 Program_Fail_Count      -O--CK   100   100   000    -    0
> -172 Erase_Fail_Count        -O--CK   100   100   000    -    0
> -173 Ave_Block-Erase_Count   -O--CK   100   100   000    -    12
> -174 Unexpect_Power_Loss_Ct  -O--CK   100   100   000    -    53
> -180 Unused_Reserve_NAND_Blk PO--CK   000   000   000    -    5565
> -183 SATA_Interfac_Downshift -O--CK   100   100   000    -    0
> -184 Error_Correction_Count  -O--CK   100   100   000    -    0
> -187 Reported_Uncorrect      -O--CK   100   100   000    -    0
> -194 Temperature_Celsius     -O---K   068   054   000    -    32 (Min/Max 22/46)
> -196 Reallocated_Event_Count -O--CK   100   100   000    -    0
> -197 Current_Pending_Sector  -O--CK   100   100   000    -    0
> -198 Offline_Uncorrectable   ----CK   100   100   000    -    0
> -199 UDMA_CRC_Error_Count    -O--CK   100   100   000    -    0
> -202 Percent_Lifetime_Used   ----CK   100   100   001    -    0
> -206 Write_Error_Rate        -OSR--   100   100   000    -    0
> -210 Success_RAIN_Recov_Cnt  -O--CK   100   100   000    -    0
> -246 Total_Host_Sector_Write -O--CK   100   100   000    -    6751830403
> -247 Host_Program_Page_Count -O--CK   100   100   000    -    211228065
> -248 Bckgnd_Program_Page_Cnt -O--CK   100   100   000    -    253276904
> -                            ||||||_ K auto-keep
> -                            |||||__ C event count
> -                            ||||___ R error rate
> -                            |||____ S speed/performance
> -                            ||_____ O updated online
> -                            |______ P prefailure warning
> -
> diff --git a/test/disk_tests/ssd_smart/sda_smart_expected.json b/test/disk_tests/ssd_smart/sda_smart_expected.json
> deleted file mode 100644
> index a71fab2..0000000
> --- a/test/disk_tests/ssd_smart/sda_smart_expected.json
> +++ /dev/null
> @@ -1,236 +0,0 @@
> -{
> -    "type" : "ata",
> -    "health" : "PASSED",
> -    "attributes" : [
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Raw_Read_Error_Rate",
> -	    "id" : "  1",
> -	    "flags" : "POSR-K",
> -	    "raw" : "0",
> -	    "fail" : "-",
> -	    "value" : 100
> -	},
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 10,
> -	    "name" : "Reallocate_NAND_Blk_Cnt",
> -	    "id" : "  5",
> -	    "flags" : "-O--CK",
> -	    "raw" : "0",
> -	    "fail" : "-",
> -	    "value" : 100
> -	},
> -	{
> -	    "name" : "Power_On_Hours",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "raw" : "1309",
> -	    "flags" : "-O--CK",
> -	    "id" : "  9"
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "name" : "Power_Cycle_Count",
> -	    "worst" : 100,
> -	    "raw" : "200",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "id" : " 12",
> -	    "value" : 100
> -	},
> -	{
> -	    "value" : 100,
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "id" : "171",
> -	    "threshold" : 0,
> -	    "name" : "Program_Fail_Count",
> -	    "worst" : 100
> -	},
> -	{
> -	    "value" : 100,
> -	    "id" : "172",
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Erase_Fail_Count"
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "name" : "Ave_Block-Erase_Count",
> -	    "worst" : 100,
> -	    "raw" : "12",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "id" : "173",
> -	    "value" : 100
> -	},
> -	{
> -	    "name" : "Unexpect_Power_Loss_Ct",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "raw" : "53",
> -	    "flags" : "-O--CK",
> -	    "id" : "174"
> -	},
> -	{
> -	    "raw" : "5565",
> -	    "flags" : "PO--CK",
> -	    "fail" : "-",
> -	    "id" : "180",
> -	    "value" : 0,
> -	    "threshold" : 0,
> -	    "name" : "Unused_Reserve_NAND_Blk",
> -	    "worst" : 0
> -	},
> -	{
> -	    "name" : "SATA_Interfac_Downshift",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "id" : "183",
> -	    "value" : 100
> -	},
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Error_Correction_Count",
> -	    "id" : "184",
> -	    "flags" : "-O--CK",
> -	    "raw" : "0",
> -	    "fail" : "-",
> -	    "value" : 100
> -	},
> -	{
> -	    "name" : "Reported_Uncorrect",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "raw" : "0",
> -	    "id" : "187"
> -	},
> -	{
> -	    "worst" : 54,
> -	    "name" : "Temperature_Celsius",
> -	    "threshold" : 0,
> -	    "id" : "194",
> -	    "fail" : "-",
> -	    "flags" : "-O---K",
> -	    "raw" : "32 (Min/Max 22/46)",
> -	    "value" : 68
> -	},
> -	{
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "id" : "196",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Reallocated_Event_Count",
> -	    "worst" : 100
> -	},
> -	{
> -	    "id" : "197",
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "raw" : "0",
> -	    "value" : 100,
> -	    "worst" : 100,
> -	    "name" : "Current_Pending_Sector",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "name" : "Offline_Uncorrectable",
> -	    "worst" : 100,
> -	    "flags" : "----CK",
> -	    "raw" : "0",
> -	    "fail" : "-",
> -	    "id" : "198",
> -	    "value" : 100
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "UDMA_CRC_Error_Count",
> -	    "threshold" : 0,
> -	    "id" : "199",
> -	    "fail" : "-",
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "value" : 100
> -	},
> -	{
> -	    "value" : 100,
> -	    "id" : "202",
> -	    "flags" : "----CK",
> -	    "raw" : "0",
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "threshold" : 1,
> -	    "name" : "Percent_Lifetime_Used"
> -	},
> -	{
> -	    "name" : "Write_Error_Rate",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "raw" : "0",
> -	    "flags" : "-OSR--",
> -	    "id" : "206"
> -	},
> -	{
> -	    "name" : "Success_RAIN_Recov_Cnt",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "id" : "210",
> -	    "value" : 100
> -	},
> -	{
> -	    "value" : 100,
> -	    "id" : "246",
> -	    "fail" : "-",
> -	    "raw" : "6751830403",
> -	    "flags" : "-O--CK",
> -	    "worst" : 100,
> -	    "name" : "Total_Host_Sector_Write",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "name" : "Host_Program_Page_Count",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "raw" : "211228065",
> -	    "flags" : "-O--CK",
> -	    "id" : "247",
> -	    "value" : 100
> -	},
> -	{
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "raw" : "253276904",
> -	    "flags" : "-O--CK",
> -	    "id" : "248",
> -	    "name" : "Bckgnd_Program_Page_Cnt",
> -	    "threshold" : 0,
> -	    "worst" : 100
> -	}
> -    ]
> -}
> diff --git a/test/disk_tests/ssd_smart/sda_udevadm b/test/disk_tests/ssd_smart/sda_udevadm
> deleted file mode 100644
> index 3290a13..0000000
> --- a/test/disk_tests/ssd_smart/sda_udevadm
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -E: DEVNAME=/dev/sda
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=Crucial_CT500MX200SSD1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_SERIAL=Crucial_CT500MX200SSD1_000000000000
> -E: ID_SERIAL_SHORT=000000000000
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -
> diff --git a/test/disk_tests/ssd_smart/sdb/device/vendor b/test/disk_tests/ssd_smart/sdb/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/ssd_smart/sdb/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/ssd_smart/sdb/queue/rotational b/test/disk_tests/ssd_smart/sdb/queue/rotational
> deleted file mode 100644
> index 573541a..0000000
> --- a/test/disk_tests/ssd_smart/sdb/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -0
> diff --git a/test/disk_tests/ssd_smart/sdb/size b/test/disk_tests/ssd_smart/sdb/size
> deleted file mode 100644
> index 83b33d2..0000000
> --- a/test/disk_tests/ssd_smart/sdb/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -1000
> diff --git a/test/disk_tests/ssd_smart/sdb_smart b/test/disk_tests/ssd_smart/sdb_smart
> deleted file mode 100644
> index 79eea84..0000000
> --- a/test/disk_tests/ssd_smart/sdb_smart
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.4.21-1-pve] (local build)
> -Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> -
> -SMART Attributes Data Structure revision number: 1
> -Vendor Specific SMART Attributes with Thresholds:
> -ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
> -  5 Reallocated_Sector_Ct   -O--CK   100   100   000    -    0
> -  9 Power_On_Hours          -O--CK   100   100   000    -    1259
> - 12 Power_Cycle_Count       -O--CK   100   100   000    -    191
> -170 Available_Reservd_Space PO--CK   100   100   010    -    0
> -171 Program_Fail_Count      -O--CK   100   100   000    -    0
> -172 Erase_Fail_Count        -O--CK   100   100   000    -    0
> -174 Unsafe_Shutdown_Count   -O--CK   100   100   000    -    164
> -175 Power_Loss_Cap_Test     PO--CK   100   100   010    -    5670 (1 343)
> -183 SATA_Downshift_Count    -O--CK   100   100   000    -    0
> -184 End-to-End_Error        PO--CK   100   100   090    -    0
> -187 Reported_Uncorrect      -O--CK   100   100   000    -    0
> -190 Temperature_Case        -O---K   072   071   000    -    28 (Min/Max 21/30)
> -192 Unsafe_Shutdown_Count   -O--CK   100   100   000    -    164
> -194 Temperature_Internal    -O---K   100   100   000    -    28
> -197 Current_Pending_Sector  -O--C-   100   100   000    -    0
> -199 CRC_Error_Count         -OSRCK   100   100   000    -    0
> -225 Host_Writes_32MiB       -O--CK   100   100   000    -    296600
> -226 Workld_Media_Wear_Indic -O--CK   100   100   000    -    3747
> -227 Workld_Host_Reads_Perc  -O--CK   100   100   000    -    0
> -228 Workload_Minutes        -O--CK   100   100   000    -    75111
> -232 Available_Reservd_Space PO--CK   100   100   010    -    0
> -233 Media_Wearout_Indicator -O--CK   097   097   000    -    0
> -234 Thermal_Throttle        -O--CK   100   100   000    -    0/0
> -241 Host_Writes_32MiB       -O--CK   100   100   000    -    296600
> -242 Host_Reads_32MiB        -O--CK   100   100   000    -    1207
> -                            ||||||_ K auto-keep
> -                            |||||__ C event count
> -                            ||||___ R error rate
> -                            |||____ S speed/performance
> -                            ||_____ O updated online
> -                            |______ P prefailure warning
> -
> diff --git a/test/disk_tests/ssd_smart/sdb_smart_expected.json b/test/disk_tests/ssd_smart/sdb_smart_expected.json
> deleted file mode 100644
> index 6f55c3e..0000000
> --- a/test/disk_tests/ssd_smart/sdb_smart_expected.json
> +++ /dev/null
> @@ -1,256 +0,0 @@
> -{
> -    "health" : "PASSED",
> -    "type" : "ata",
> -    "attributes" : [
> -	{
> -	    "name" : "Reallocated_Sector_Ct",
> -	    "threshold" : 0,
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "raw" : "0",
> -	    "id" : "  5",
> -	    "value" : 100
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Power_On_Hours",
> -	    "threshold" : 0,
> -	    "id" : "  9",
> -	    "fail" : "-",
> -	    "raw" : "1259",
> -	    "flags" : "-O--CK",
> -	    "value" : 100
> -	},
> -	{
> -	    "value" : 100,
> -	    "id" : " 12",
> -	    "raw" : "191",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Power_Cycle_Count"
> -	},
> -	{
> -	    "id" : "170",
> -	    "raw" : "0",
> -	    "flags" : "PO--CK",
> -	    "fail" : "-",
> -	    "value" : 100,
> -	    "worst" : 100,
> -	    "threshold" : 10,
> -	    "name" : "Available_Reservd_Space"
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "name" : "Program_Fail_Count",
> -	    "worst" : 100,
> -	    "value" : 100,
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "id" : "171"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Erase_Fail_Count",
> -	    "threshold" : 0,
> -	    "id" : "172",
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "raw" : "0",
> -	    "value" : 100
> -	},
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Unsafe_Shutdown_Count",
> -	    "value" : 100,
> -	    "id" : "174",
> -	    "raw" : "164",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-"
> -	},
> -	{
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "flags" : "PO--CK",
> -	    "raw" : "5670 (1 343)",
> -	    "id" : "175",
> -	    "name" : "Power_Loss_Cap_Test",
> -	    "threshold" : 10,
> -	    "worst" : 100
> -	},
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "SATA_Downshift_Count",
> -	    "value" : 100,
> -	    "id" : "183",
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "End-to-End_Error",
> -	    "threshold" : 90,
> -	    "value" : 100,
> -	    "id" : "184",
> -	    "fail" : "-",
> -	    "raw" : "0",
> -	    "flags" : "PO--CK"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Reported_Uncorrect",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "id" : "187",
> -	    "fail" : "-",
> -	    "raw" : "0",
> -	    "flags" : "-O--CK"
> -	},
> -	{
> -	    "worst" : 71,
> -	    "name" : "Temperature_Case",
> -	    "threshold" : 0,
> -	    "id" : "190",
> -	    "fail" : "-",
> -	    "raw" : "28 (Min/Max 21/30)",
> -	    "flags" : "-O---K",
> -	    "value" : 72
> -	},
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Unsafe_Shutdown_Count",
> -	    "value" : 100,
> -	    "id" : "192",
> -	    "raw" : "164",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-"
> -	},
> -	{
> -	    "id" : "194",
> -	    "fail" : "-",
> -	    "raw" : "28",
> -	    "flags" : "-O---K",
> -	    "value" : 100,
> -	    "worst" : 100,
> -	    "name" : "Temperature_Internal",
> -	    "threshold" : 0
> -	},
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Current_Pending_Sector",
> -	    "value" : 100,
> -	    "id" : "197",
> -	    "raw" : "0",
> -	    "flags" : "-O--C-",
> -	    "fail" : "-"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "CRC_Error_Count",
> -	    "value" : 100,
> -	    "id" : "199",
> -	    "flags" : "-OSRCK",
> -	    "raw" : "0",
> -	    "fail" : "-"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Host_Writes_32MiB",
> -	    "threshold" : 0,
> -	    "id" : "225",
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "raw" : "296600",
> -	    "value" : 100
> -	},
> -	{
> -	    "value" : 100,
> -	    "id" : "226",
> -	    "raw" : "3747",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Workld_Media_Wear_Indic"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Workld_Host_Reads_Perc",
> -	    "id" : "227",
> -	    "raw" : "0",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "value" : 100
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "name" : "Workload_Minutes",
> -	    "worst" : 100,
> -	    "raw" : "75111",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "id" : "228",
> -	    "value" : 100
> -	},
> -	{
> -	    "fail" : "-",
> -	    "raw" : "0",
> -	    "flags" : "PO--CK",
> -	    "id" : "232",
> -	    "value" : 100,
> -	    "name" : "Available_Reservd_Space",
> -	    "threshold" : 10,
> -	    "worst" : 100
> -	},
> -	{
> -	    "value" : 97,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "raw" : "0",
> -	    "id" : "233",
> -	    "name" : "Media_Wearout_Indicator",
> -	    "threshold" : 0,
> -	    "worst" : 97
> -	},
> -	{
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "raw" : "0/0",
> -	    "flags" : "-O--CK",
> -	    "id" : "234",
> -	    "name" : "Thermal_Throttle",
> -	    "threshold" : 0,
> -	    "worst" : 100
> -	},
> -	{
> -	    "worst" : 100,
> -	    "name" : "Host_Writes_32MiB",
> -	    "threshold" : 0,
> -	    "id" : "241",
> -	    "fail" : "-",
> -	    "raw" : "296600",
> -	    "flags" : "-O--CK",
> -	    "value" : 100
> -	},
> -	{
> -	    "value" : 100,
> -	    "id" : "242",
> -	    "fail" : "-",
> -	    "raw" : "1207",
> -	    "flags" : "-O--CK",
> -	    "worst" : 100,
> -	    "name" : "Host_Reads_32MiB",
> -	    "threshold" : 0
> -	}
> -    ]
> -}
> diff --git a/test/disk_tests/ssd_smart/sdb_udevadm b/test/disk_tests/ssd_smart/sdb_udevadm
> deleted file mode 100644
> index bb723c8..0000000
> --- a/test/disk_tests/ssd_smart/sdb_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdb
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=INTEL_SSDSC2BB080G6
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=21c18951-8568-488c-a2a8-24441eb4b165
> -E: ID_SERIAL=INTEL_SSDSC2BB080G6_000000000000000000
> -E: ID_SERIAL_SHORT=000000000000000000
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/ssd_smart/sdc/device/vendor b/test/disk_tests/ssd_smart/sdc/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/ssd_smart/sdc/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/ssd_smart/sdc/queue/rotational b/test/disk_tests/ssd_smart/sdc/queue/rotational
> deleted file mode 100644
> index 573541a..0000000
> --- a/test/disk_tests/ssd_smart/sdc/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -0
> diff --git a/test/disk_tests/ssd_smart/sdc/size b/test/disk_tests/ssd_smart/sdc/size
> deleted file mode 100644
> index 83b33d2..0000000
> --- a/test/disk_tests/ssd_smart/sdc/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -1000
> diff --git a/test/disk_tests/ssd_smart/sdc_smart b/test/disk_tests/ssd_smart/sdc_smart
> deleted file mode 100644
> index 927f6d2..0000000
> --- a/test/disk_tests/ssd_smart/sdc_smart
> +++ /dev/null
> @@ -1,16 +0,0 @@
> -smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.4.8-1-pve] (local build)
> -Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> -
> -SMART Attributes Data Structure revision number: 1
> -Vendor Specific SMART Attributes with Thresholds:
> -ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
> -177 Wear_Leveling_Count     PO--CK   099   099   000    -    34
> -                            ||||||_ K auto-keep
> -                            |||||__ C event count
> -                            ||||___ R error rate
> -                            |||____ S speed/performance
> -                            ||_____ O updated onlinie
> -                            |______ P prefailure warning
> diff --git a/test/disk_tests/ssd_smart/sdc_smart_expected.json b/test/disk_tests/ssd_smart/sdc_smart_expected.json
> deleted file mode 100644
> index f0cffcf..0000000
> --- a/test/disk_tests/ssd_smart/sdc_smart_expected.json
> +++ /dev/null
> @@ -1,16 +0,0 @@
> -{
> -    "type" : "ata",
> -    "health" : "PASSED",
> -    "attributes" : [
> -	{
> -	    "value" : 99,
> -	    "fail" : "-",
> -	    "raw" : "34",
> -	    "flags" : "PO--CK",
> -	    "id" : "177",
> -	    "name" : "Wear_Leveling_Count",
> -	    "threshold" : 0,
> -	    "worst" : 99
> -	}
> -    ]
> -}
> diff --git a/test/disk_tests/ssd_smart/sdc_udevadm b/test/disk_tests/ssd_smart/sdc_udevadm
> deleted file mode 100644
> index 5adb3ef..0000000
> --- a/test/disk_tests/ssd_smart/sdc_udevadm
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -E: DEVNAME=/dev/sdc
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=Samsung SSD 850 PRO 512GB
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_SERIAL=SAMSUNG_00000000
> -E: ID_SERIAL_SHORT=000000000000
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -
> diff --git a/test/disk_tests/ssd_smart/sdd/device/vendor b/test/disk_tests/ssd_smart/sdd/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/ssd_smart/sdd/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/ssd_smart/sdd/queue/rotational b/test/disk_tests/ssd_smart/sdd/queue/rotational
> deleted file mode 100644
> index 573541a..0000000
> --- a/test/disk_tests/ssd_smart/sdd/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -0
> diff --git a/test/disk_tests/ssd_smart/sdd/size b/test/disk_tests/ssd_smart/sdd/size
> deleted file mode 100644
> index 83b33d2..0000000
> --- a/test/disk_tests/ssd_smart/sdd/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -1000
> diff --git a/test/disk_tests/ssd_smart/sdd_smart b/test/disk_tests/ssd_smart/sdd_smart
> deleted file mode 100644
> index 2ad16af..0000000
> --- a/test/disk_tests/ssd_smart/sdd_smart
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.4.19-1-pve] (local build)
> -Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> -
> -SMART Attributes Data Structure revision number: 4
> -Vendor Specific SMART Attributes with Thresholds:
> -ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
> -  5 Reallocated_Sector_Ct   -O--CK   100   100   ---    -    0
> -  9 Power_On_Hours          -O--CK   100   100   ---    -    799
> - 12 Power_Cycle_Count       -O--CK   100   100   ---    -    92
> -165 Unknown_Attribute       -O--CK   100   100   ---    -    9699447
> -166 Unknown_Attribute       -O--CK   100   100   ---    -    1
> -167 Unknown_Attribute       -O--CK   100   100   ---    -    46
> -168 Unknown_Attribute       -O--CK   100   100   ---    -    5
> -169 Unknown_Attribute       -O--CK   100   100   ---    -    1079
> -170 Unknown_Attribute       -O--CK   100   100   ---    -    0
> -171 Unknown_Attribute       -O--CK   100   100   ---    -    0
> -172 Unknown_Attribute       -O--CK   100   100   ---    -    0
> -173 Unknown_Attribute       -O--CK   100   100   ---    -    1
> -174 Unknown_Attribute       -O--CK   100   100   ---    -    22
> -184 End-to-End_Error        -O--CK   100   100   ---    -    0
> -187 Reported_Uncorrect      -O--CK   100   100   ---    -    0
> -188 Command_Timeout         -O--CK   100   100   ---    -    0
> -194 Temperature_Celsius     -O---K   073   064   ---    -    27 (Min/Max 23/64)
> -199 UDMA_CRC_Error_Count    -O--CK   100   100   ---    -    0
> -230 Unknown_SSD_Attribute   -O--CK   100   100   ---    -    146029805602
> -232 Available_Reservd_Space PO--CK   100   100   004    -    100
> -233 Media_Wearout_Indicator -O--CK   100   100   ---    -    1574
> -234 Unknown_Attribute       -O--CK   100   100   ---    -    2303
> -241 Total_LBAs_Written      ----CK   253   253   ---    -    2111
> -242 Total_LBAs_Read         ----CK   253   253   ---    -    1542
> -244 Unknown_Attribute       -O--CK   000   100   ---    -    0
> -                            ||||||_ K auto-keep
> -                            |||||__ C event count
> -                            ||||___ R error rate
> -                            |||____ S speed/performance
> -                            ||_____ O updated online
> -                            |______ P prefailure warning
> diff --git a/test/disk_tests/ssd_smart/sdd_smart_expected.json b/test/disk_tests/ssd_smart/sdd_smart_expected.json
> deleted file mode 100644
> index a85e7d7..0000000
> --- a/test/disk_tests/ssd_smart/sdd_smart_expected.json
> +++ /dev/null
> @@ -1,256 +0,0 @@
> -{
> -    "attributes" : [
> -	{
> -	    "id" : "  5",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "raw" : "0",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "name" : "Reallocated_Sector_Ct"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "  9",
> -	    "name" : "Power_On_Hours",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "raw" : "799"
> -	},
> -	{
> -	    "name" : "Power_Cycle_Count",
> -	    "raw" : "92",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "id" : " 12",
> -	    "flags" : "-O--CK"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "165",
> -	    "name" : "Unknown_Attribute",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "raw" : "9699447"
> -	},
> -	{
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "raw" : "1",
> -	    "name" : "Unknown_Attribute",
> -	    "flags" : "-O--CK",
> -	    "id" : "166",
> -	    "worst" : 100,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "id" : "167",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "raw" : "46",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Unknown_Attribute"
> -	},
> -	{
> -	    "name" : "Unknown_Attribute",
> -	    "raw" : "5",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "id" : "168",
> -	    "flags" : "-O--CK"
> -	},
> -	{
> -	    "flags" : "-O--CK",
> -	    "id" : "169",
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "raw" : "1079",
> -	    "name" : "Unknown_Attribute"
> -	},
> -	{
> -	    "raw" : "0",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "name" : "Unknown_Attribute",
> -	    "id" : "170",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "worst" : 100
> -	},
> -	{
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "id" : "171",
> -	    "flags" : "-O--CK",
> -	    "name" : "Unknown_Attribute",
> -	    "raw" : "0",
> -	    "value" : 100,
> -	    "threshold" : 0
> -	},
> -	{
> -	    "name" : "Unknown_Attribute",
> -	    "raw" : "0",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "id" : "172",
> -	    "flags" : "-O--CK"
> -	},
> -	{
> -	    "name" : "Unknown_Attribute",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "raw" : "1",
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "173"
> -	},
> -	{
> -	    "name" : "Unknown_Attribute",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "raw" : "22",
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "174"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "184",
> -	    "name" : "End-to-End_Error",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "raw" : "0"
> -	},
> -	{
> -	    "name" : "Reported_Uncorrect",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "raw" : "0",
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "187"
> -	},
> -	{
> -	    "name" : "Command_Timeout",
> -	    "raw" : "0",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "id" : "188",
> -	    "flags" : "-O--CK"
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "value" : 73,
> -	    "raw" : "27 (Min/Max 23/64)",
> -	    "name" : "Temperature_Celsius",
> -	    "flags" : "-O---K",
> -	    "id" : "194",
> -	    "worst" : 64,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "199",
> -	    "name" : "UDMA_CRC_Error_Count",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "raw" : "0"
> -	},
> -	{
> -	    "name" : "Unknown_SSD_Attribute",
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "raw" : "146029805602",
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "230"
> -	},
> -	{
> -	    "raw" : "100",
> -	    "value" : 100,
> -	    "threshold" : 4,
> -	    "name" : "Available_Reservd_Space",
> -	    "id" : "232",
> -	    "flags" : "PO--CK",
> -	    "fail" : "-",
> -	    "worst" : 100
> -	},
> -	{
> -	    "threshold" : 0,
> -	    "value" : 100,
> -	    "raw" : "1574",
> -	    "name" : "Media_Wearout_Indicator",
> -	    "flags" : "-O--CK",
> -	    "id" : "233",
> -	    "worst" : 100,
> -	    "fail" : "-"
> -	},
> -	{
> -	    "id" : "234",
> -	    "flags" : "-O--CK",
> -	    "fail" : "-",
> -	    "worst" : 100,
> -	    "raw" : "2303",
> -	    "value" : 100,
> -	    "threshold" : 0,
> -	    "name" : "Unknown_Attribute"
> -	},
> -	{
> -	    "fail" : "-",
> -	    "worst" : 253,
> -	    "id" : "241",
> -	    "flags" : "----CK",
> -	    "name" : "Total_LBAs_Written",
> -	    "raw" : "2111",
> -	    "value" : 253,
> -	    "threshold" : 0
> -	},
> -	{
> -	    "worst" : 253,
> -	    "fail" : "-",
> -	    "flags" : "----CK",
> -	    "id" : "242",
> -	    "name" : "Total_LBAs_Read",
> -	    "threshold" : 0,
> -	    "value" : 253,
> -	    "raw" : "1542"
> -	},
> -	{
> -	    "name" : "Unknown_Attribute",
> -	    "value" : 0,
> -	    "threshold" : 0,
> -	    "raw" : "0",
> -	    "worst" : 100,
> -	    "fail" : "-",
> -	    "flags" : "-O--CK",
> -	    "id" : "244"
> -	}
> -    ],
> -    "type" : "ata",
> -    "health" : "PASSED"
> -}
> diff --git a/test/disk_tests/ssd_smart/sdd_udevadm b/test/disk_tests/ssd_smart/sdd_udevadm
> deleted file mode 100644
> index d46a7d4..0000000
> --- a/test/disk_tests/ssd_smart/sdd_udevadm
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -E: DEVNAME=/dev/sdd
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=SanDisk SD8SB8U1T001122
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_SERIAL=SANDISK_00000000000
> -E: ID_SERIAL_SHORT=000000000000
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -
> diff --git a/test/disk_tests/ssd_smart/sde/device/vendor b/test/disk_tests/ssd_smart/sde/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/ssd_smart/sde/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/ssd_smart/sde/queue/rotational b/test/disk_tests/ssd_smart/sde/queue/rotational
> deleted file mode 100644
> index 573541a..0000000
> --- a/test/disk_tests/ssd_smart/sde/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -0
> diff --git a/test/disk_tests/ssd_smart/sde/size b/test/disk_tests/ssd_smart/sde/size
> deleted file mode 100644
> index 83b33d2..0000000
> --- a/test/disk_tests/ssd_smart/sde/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -1000
> diff --git a/test/disk_tests/ssd_smart/sde_smart b/test/disk_tests/ssd_smart/sde_smart
> deleted file mode 100644
> index f6f01d6..0000000
> --- a/test/disk_tests/ssd_smart/sde_smart
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.65-1-pve] (local build)
> -Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
> -
> -=== START OF READ SMART DATA SECTION ===
> -SMART overall-health self-assessment test result: PASSED
> -
> -SMART Attributes Data Structure revision number: 10
> -Vendor Specific SMART Attributes with Thresholds:
> -ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
> -  1 Raw_Read_Error_Rate     -O--CK   120   120   050    -    0/0
> -  5 Retired_Block_Count     PO--CK   100   100   003    -    0
> -  9 Power_On_Hours_and_Msec -O--CK   091   091   000    -    7963h+07m+54.620s
> - 12 Power_Cycle_Count       -O--CK   099   099   000    -    1153
> -171 Program_Fail_Count      -O-R--   100   100   000    -    0
> -172 Erase_Fail_Count        -O--CK   100   100   000    -    0
> -174 Unexpect_Power_Loss_Ct  ----CK   000   000   000    -    113
> -177 Wear_Range_Delta        ------   000   000   000    -    1
> -181 Program_Fail_Count      -O-R--   100   100   000    -    0
> -182 Erase_Fail_Count        -O--CK   100   100   000    -    0
> -187 Reported_Uncorrect      -O--C-   100   100   000    -    0
> -189 Airflow_Temperature_Cel ------   027   049   000    -    27 (Min/Max 2/49)
> -194 Temperature_Celsius     -O---K   027   049   000    -    27 (Min/Max 2/49)
> -195 ECC_Uncorr_Error_Count  --SRC-   120   120   000    -    0/0
> -196 Reallocated_Event_Count PO--CK   100   100   003    -    0
> -201 Unc_Soft_Read_Err_Rate  --SRC-   120   120   000    -    0/0
> -204 Soft_ECC_Correct_Rate   --SRC-   120   120   000    -    0/0
> -230 Life_Curve_Status       PO--C-   100   100   000    -    100
> -231 SSD_Life_Left           ------   091   091   011    -    4294967296
> -233 SandForce_Internal      -O--CK   000   000   000    -    6317
> -234 SandForce_Internal      -O--CK   000   000   000    -    4252
> -241 Lifetime_Writes_GiB     -O--CK   000   000   000    -    4252
> -242 Lifetime_Reads_GiB      -O--CK   000   000   000    -    34599
> -244 Unknown_Attribute       ------   099   099   010    -    4063273
> -                            ||||||_ K auto-keep
> -                            |||||__ C event count
> -                            ||||___ R error rate
> -                            |||____ S speed/performance
> -                            ||_____ O updated online
> -                            |______ P prefailure warning
> -
> diff --git a/test/disk_tests/ssd_smart/sde_smart_expected.json b/test/disk_tests/ssd_smart/sde_smart_expected.json
> deleted file mode 100644
> index 1d45c1d..0000000
> --- a/test/disk_tests/ssd_smart/sde_smart_expected.json
> +++ /dev/null
> @@ -1,246 +0,0 @@
> -{
> -    "health": "PASSED",
> -    "type": "ata",
> -    "attributes": [
> -	{
> -	    "fail": "-",
> -	    "id": "  1",
> -	    "raw": "0/0",
> -	    "flags": "-O--CK",
> -	    "name": "Raw_Read_Error_Rate",
> -	    "threshold": 50,
> -	    "value": 120,
> -	    "worst": 120
> -	},
> -	{
> -	    "id": "  5",
> -	    "fail": "-",
> -	    "value": 100,
> -	    "worst": 100,
> -	    "threshold": 3,
> -	    "name": "Retired_Block_Count",
> -	    "flags": "PO--CK",
> -	    "raw": "0"
> -	},
> -	{
> -	    "fail": "-",
> -	    "id": "  9",
> -	    "raw": "7963h+07m+54.620s",
> -	    "flags": "-O--CK",
> -	    "worst": 91,
> -	    "value": 91,
> -	    "name": "Power_On_Hours_and_Msec",
> -	    "threshold": 0
> -	},
> -	{
> -	    "id": " 12",
> -	    "fail": "-",
> -	    "threshold": 0,
> -	    "name": "Power_Cycle_Count",
> -	    "worst": 99,
> -	    "value": 99,
> -	    "flags": "-O--CK",
> -	    "raw": "1153"
> -	},
> -	{
> -	    "flags": "-O-R--",
> -	    "raw": "0",
> -	    "worst": 100,
> -	    "value": 100,
> -	    "threshold": 0,
> -	    "name": "Program_Fail_Count",
> -	    "fail": "-",
> -	    "id": "171"
> -	},
> -	{
> -	    "fail": "-",
> -	    "id": "172",
> -	    "flags": "-O--CK",
> -	    "raw": "0",
> -	    "name": "Erase_Fail_Count",
> -	    "threshold": 0,
> -	    "worst": 100,
> -	    "value": 100
> -	},
> -	{
> -	    "fail": "-",
> -	    "id": "174",
> -	    "raw": "113",
> -	    "flags": "----CK",
> -	    "value": 0,
> -	    "worst": 0,
> -	    "threshold": 0,
> -	    "name": "Unexpect_Power_Loss_Ct"
> -	},
> -	{
> -	    "id": "177",
> -	    "fail": "-",
> -	    "value": 0,
> -	    "worst": 0,
> -	    "name": "Wear_Range_Delta",
> -	    "threshold": 0,
> -	    "flags": "------",
> -	    "raw": "1"
> -	},
> -	{
> -	    "flags": "-O-R--",
> -	    "raw": "0",
> -	    "threshold": 0,
> -	    "name": "Program_Fail_Count",
> -	    "worst": 100,
> -	    "value": 100,
> -	    "fail": "-",
> -	    "id": "181"
> -	},
> -	{
> -	    "threshold": 0,
> -	    "name": "Erase_Fail_Count",
> -	    "value": 100,
> -	    "worst": 100,
> -	    "flags": "-O--CK",
> -	    "raw": "0",
> -	    "id": "182",
> -	    "fail": "-"
> -	},
> -	{
> -	    "flags": "-O--C-",
> -	    "raw": "0",
> -	    "value": 100,
> -	    "worst": 100,
> -	    "threshold": 0,
> -	    "name": "Reported_Uncorrect",
> -	    "fail": "-",
> -	    "id": "187"
> -	},
> -	{
> -	    "value": 27,
> -	    "worst": 49,
> -	    "name": "Airflow_Temperature_Cel",
> -	    "threshold": 0,
> -	    "flags": "------",
> -	    "raw": "27 (Min/Max 2/49)",
> -	    "id": "189",
> -	    "fail": "-"
> -	},
> -	{
> -	    "threshold": 0,
> -	    "name": "Temperature_Celsius",
> -	    "worst": 49,
> -	    "value": 27,
> -	    "flags": "-O---K",
> -	    "raw": "27 (Min/Max 2/49)",
> -	    "id": "194",
> -	    "fail": "-"
> -	},
> -	{
> -	    "id": "195",
> -	    "fail": "-",
> -	    "worst": 120,
> -	    "value": 120,
> -	    "threshold": 0,
> -	    "name": "ECC_Uncorr_Error_Count",
> -	    "raw": "0/0",
> -	    "flags": "--SRC-"
> -	},
> -	{
> -	    "fail": "-",
> -	    "id": "196",
> -	    "raw": "0",
> -	    "flags": "PO--CK",
> -	    "threshold": 3,
> -	    "name": "Reallocated_Event_Count",
> -	    "value": 100,
> -	    "worst": 100
> -	},
> -	{
> -	    "value": 120,
> -	    "worst": 120,
> -	    "threshold": 0,
> -	    "name": "Unc_Soft_Read_Err_Rate",
> -	    "flags": "--SRC-",
> -	    "raw": "0/0",
> -	    "id": "201",
> -	    "fail": "-"
> -	},
> -	{
> -	    "raw": "0/0",
> -	    "flags": "--SRC-",
> -	    "value": 120,
> -	    "worst": 120,
> -	    "threshold": 0,
> -	    "name": "Soft_ECC_Correct_Rate",
> -	    "fail": "-",
> -	    "id": "204"
> -	},
> -	{
> -	    "value": 100,
> -	    "worst": 100,
> -	    "threshold": 0,
> -	    "name": "Life_Curve_Status",
> -	    "raw": "100",
> -	    "flags": "PO--C-",
> -	    "id": "230",
> -	    "fail": "-"
> -	},
> -	{
> -	    "id": "231",
> -	    "fail": "-",
> -	    "worst": 91,
> -	    "value": 91,
> -	    "name": "SSD_Life_Left",
> -	    "threshold": 11,
> -	    "flags": "------",
> -	    "raw": "4294967296"
> -	},
> -	{
> -	    "raw": "6317",
> -	    "flags": "-O--CK",
> -	    "name": "SandForce_Internal",
> -	    "threshold": 0,
> -	    "value": 0,
> -	    "worst": 0,
> -	    "fail": "-",
> -	    "id": "233"
> -	},
> -	{
> -	    "value": 0,
> -	    "worst": 0,
> -	    "name": "SandForce_Internal",
> -	    "threshold": 0,
> -	    "flags": "-O--CK",
> -	    "raw": "4252",
> -	    "id": "234",
> -	    "fail": "-"
> -	},
> -	{
> -	    "worst": 0,
> -	    "value": 0,
> -	    "name": "Lifetime_Writes_GiB",
> -	    "threshold": 0,
> -	    "flags": "-O--CK",
> -	    "raw": "4252",
> -	    "id": "241",
> -	    "fail": "-"
> -	},
> -	{
> -	    "flags": "-O--CK",
> -	    "raw": "34599",
> -	    "value": 0,
> -	    "worst": 0,
> -	    "threshold": 0,
> -	    "name": "Lifetime_Reads_GiB",
> -	    "fail": "-",
> -	    "id": "242"
> -	},
> -	{
> -	    "threshold": 10,
> -	    "name": "Unknown_Attribute",
> -	    "worst": 99,
> -	    "value": 99,
> -	    "flags": "------",
> -	    "raw": "4063273",
> -	    "id": "244",
> -	    "fail": "-"
> -	}
> -    ]
> -}
> diff --git a/test/disk_tests/ssd_smart/sde_udevadm b/test/disk_tests/ssd_smart/sde_udevadm
> deleted file mode 100644
> index 440c33a..0000000
> --- a/test/disk_tests/ssd_smart/sde_udevadm
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -E: DEVNAME=/dev/sde
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=KINGSTON SHFS37A120G
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_SERIAL=KINGSTON_00000000000
> -E: ID_SERIAL_SHORT=000000000000
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -
> diff --git a/test/disk_tests/usages/disklist b/test/disk_tests/usages/disklist
> deleted file mode 100644
> index 648bea5..0000000
> --- a/test/disk_tests/usages/disklist
> +++ /dev/null
> @@ -1,14 +0,0 @@
> -sda
> -sdb
> -sdc
> -sdd
> -sde
> -sdf
> -sdg
> -sdh
> -sdi
> -sdj
> -sdk
> -sdl
> -sdm
> -sdn
> diff --git a/test/disk_tests/usages/disklist_expected.json b/test/disk_tests/usages/disklist_expected.json
> deleted file mode 100644
> index 93dc251..0000000
> --- a/test/disk_tests/usages/disklist_expected.json
> +++ /dev/null
> @@ -1,222 +0,0 @@
> -{
> -    "sdf" : {
> -	"gpt" : 1,
> -	"rpm" : 0,
> -	"size" : 1536000,
> -	"type" : "hdd",
> -	"osdencrypted": 0,
> -	"osdid" : "444",
> -	"bluestore" : "0",
> -	"health" : "UNKNOWN",
> -	"model" : "MODEL1",
> -	"used" : "mounted",
> -	"wearout" : "N/A",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdf",
> -	"vendor" : "ATA",
> -	"serial" : "SERIAL1"
> -    },
> -    "sde" : {
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sde",
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"health" : "UNKNOWN",
> -	"rpm" : 0,
> -	"size" : 1536000,
> -	"gpt" : 1,
> -	"osdid" : -1,
> -	"type" : "hdd",
> -	"model" : "MODEL1",
> -	"used" : "Device Mapper",
> -	"wearout" : "N/A"
> -    },
> -    "sdb" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdb",
> -	"model" : "MODEL1",
> -	"used" : "LVM",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"type" : "hdd",
> -	"osdid" : -1
> -    },
> -    "sda" : {
> -	"model" : "MODEL1",
> -	"used" : "mounted",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"type" : "hdd",
> -	"osdid" : -1,
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sda"
> -    },
> -    "sdc" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"devpath" : "/dev/sdc",
> -	"wwn" : "0x0000000000000000",
> -	"used" : "ZFS",
> -	"wearout" : "N/A",
> -	"model" : "MODEL1",
> -	"health" : "UNKNOWN",
> -	"type" : "hdd",
> -	"osdid" : -1,
> -	"gpt" : 1,
> -	"rpm" : 0,
> -	"size" : 1536000
> -    },
> -    "sdd" : {
> -	"model" : "MODEL1",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"gpt" : 1,
> -	"type" : "hdd",
> -	"osdid" : -1,
> -	"serial" : "SERIAL1",
> -	"used": "ZFS",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdd"
> -    },
> -    "sdg" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdg",
> -	"model" : "MODEL1",
> -	"used" : "LVM",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"type" : "hdd",
> -	"bluestore": 1,
> -	"osdencrypted": 0,
> -	"osdid" : 1
> -    },
> -    "sdh" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdh",
> -	"model" : "MODEL1",
> -	"used" : "LVM",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"journals": 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"type" : "hdd",
> -	"osdid" : -1
> -    },
> -    "sdi" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdi",
> -	"model" : "MODEL1",
> -	"used" : "LVM",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"type" : "hdd",
> -	"db": 1,
> -	"osdid" : -1
> -    },
> -    "sdj" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdj",
> -	"model" : "MODEL1",
> -	"used" : "LVM",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"bluestore": 0,
> -	"type" : "hdd",
> -	"osdencrypted": 1,
> -	"osdid" : 0
> -    },
> -    "sdk" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdk",
> -	"model" : "MODEL1",
> -	"used" : "LVM",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"bluestore": 0,
> -	"type" : "hdd",
> -	"osdencrypted": 0,
> -	"osdid" : 230
> -    },
> -    "sdl" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdl",
> -	"model" : "MODEL1",
> -	"used" : "LVM",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"type" : "hdd",
> -	"osdid" : -1
> -    },
> -    "sdm" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdm",
> -	"model" : "MODEL1",
> -	"used" : "ZFS",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 1,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"type" : "hdd",
> -	"osdid" : -1
> -    },
> -    "sdn" : {
> -	"serial" : "SERIAL1",
> -	"vendor" : "ATA",
> -	"wwn" : "0x0000000000000000",
> -	"devpath" : "/dev/sdn",
> -	"model" : "MODEL1",
> -	"used" : "xfs",
> -	"wearout" : "N/A",
> -	"health" : "UNKNOWN",
> -	"gpt" : 0,
> -	"size" : 1536000,
> -	"rpm" : 0,
> -	"type" : "hdd",
> -	"osdid" : -1
> -    }
> -}
> diff --git a/test/disk_tests/usages/lsblk b/test/disk_tests/usages/lsblk
> deleted file mode 100644
> index 6a725ab..0000000
> --- a/test/disk_tests/usages/lsblk
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -{
> -   "blockdevices": [
> -      {"path":"/dev/sdm", "parttype":null, "fstype":null},
> -      {"path":"/dev/sdm1", "parttype":"6a898cc3-1dd2-11b2-99a6-080020736631", "fstype":"zfs_member"},
> -      {"path":"/dev/sdm9", "parttype":"6a945a3b-1dd2-11b2-99a6-080020736631", "fstype":null},
> -      {"path":"/dev/sdn", "parttype":null, "fstype":"xfs"}
> -   ]
> -}
> diff --git a/test/disk_tests/usages/lvs b/test/disk_tests/usages/lvs
> deleted file mode 100644
> index 3720a80..0000000
> --- a/test/disk_tests/usages/lvs
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -/dev/sdg(0);osd-block-01234;ceph.osd_id=1
> -/dev/sdh(0);osd-journal-01234;ceph.osd_id=1
> -/dev/sdi(0);osd-db-01234;ceph.osd_id=1,dasdf
> -/dev/sdj(0);osd-data-01234;ceph.osd_id=0,asfd,ceph.encrypted=1
> -/dev/sdk(0);osd-data-231231;ceph.osd_id=230,ceph.fsid=test
> -/dev/sdl(0);osd-data-234132;ceph.osd_id=,bar
> diff --git a/test/disk_tests/usages/mounts b/test/disk_tests/usages/mounts
> deleted file mode 100644
> index f8c1cd3..0000000
> --- a/test/disk_tests/usages/mounts
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -/dev/sda /mountpoint1
> -/dev/sdf1 /var/lib/ceph/osd/ceph-444
> diff --git a/test/disk_tests/usages/partlist b/test/disk_tests/usages/partlist
> deleted file mode 100644
> index 43c1f68..0000000
> --- a/test/disk_tests/usages/partlist
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -sdd1
> -sdd2
> -sde1
> -sdf1
> -sdm1
> -sdm9
> diff --git a/test/disk_tests/usages/pvs b/test/disk_tests/usages/pvs
> deleted file mode 100644
> index 86ec3d4..0000000
> --- a/test/disk_tests/usages/pvs
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -  /dev/sdb
> -  /dev/sdg
> -  /dev/sdh
> -  /dev/sdi
> -  /dev/sdj
> -  /dev/sdk
> -  /dev/sdl
> diff --git a/test/disk_tests/usages/sda/device/vendor b/test/disk_tests/usages/sda/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sda/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sda/queue/rotational b/test/disk_tests/usages/sda/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sda/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sda/size b/test/disk_tests/usages/sda/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sda/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sda_udevadm b/test/disk_tests/usages/sda_udevadm
> deleted file mode 100644
> index ab04390..0000000
> --- a/test/disk_tests/usages/sda_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sda
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdb/device/vendor b/test/disk_tests/usages/sdb/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdb/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdb/queue/rotational b/test/disk_tests/usages/sdb/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdb/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdb/size b/test/disk_tests/usages/sdb/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdb/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdb_udevadm b/test/disk_tests/usages/sdb_udevadm
> deleted file mode 100644
> index ada1ca8..0000000
> --- a/test/disk_tests/usages/sdb_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdb
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdc/device/vendor b/test/disk_tests/usages/sdc/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdc/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdc/queue/rotational b/test/disk_tests/usages/sdc/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdc/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdc/size b/test/disk_tests/usages/sdc/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdc/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdc_udevadm b/test/disk_tests/usages/sdc_udevadm
> deleted file mode 100644
> index 42845f3..0000000
> --- a/test/disk_tests/usages/sdc_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdc
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdd/device/vendor b/test/disk_tests/usages/sdd/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdd/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdd/queue/rotational b/test/disk_tests/usages/sdd/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdd/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdd/sdd1/size b/test/disk_tests/usages/sdd/sdd1/size
> deleted file mode 100644
> index 83b33d2..0000000
> --- a/test/disk_tests/usages/sdd/sdd1/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -1000
> diff --git a/test/disk_tests/usages/sdd/sdd2/size b/test/disk_tests/usages/sdd/sdd2/size
> deleted file mode 100644
> index 8bd1af1..0000000
> --- a/test/disk_tests/usages/sdd/sdd2/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -2000
> diff --git a/test/disk_tests/usages/sdd/size b/test/disk_tests/usages/sdd/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdd/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdd_udevadm b/test/disk_tests/usages/sdd_udevadm
> deleted file mode 100644
> index 65e880f..0000000
> --- a/test/disk_tests/usages/sdd_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdd
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sde/device/vendor b/test/disk_tests/usages/sde/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sde/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sde/queue/rotational b/test/disk_tests/usages/sde/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sde/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sde/sde1/size b/test/disk_tests/usages/sde/sde1/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sde/sde1/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sde/size b/test/disk_tests/usages/sde/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sde/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sde_udevadm b/test/disk_tests/usages/sde_udevadm
> deleted file mode 100644
> index db77725..0000000
> --- a/test/disk_tests/usages/sde_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sde
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdf/device/vendor b/test/disk_tests/usages/sdf/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdf/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdf/queue/rotational b/test/disk_tests/usages/sdf/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdf/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdf/sdf1/size b/test/disk_tests/usages/sdf/sdf1/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdf/sdf1/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdf/size b/test/disk_tests/usages/sdf/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdf/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdf_udevadm b/test/disk_tests/usages/sdf_udevadm
> deleted file mode 100644
> index ad49acf..0000000
> --- a/test/disk_tests/usages/sdf_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdf
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdg/device/vendor b/test/disk_tests/usages/sdg/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdg/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdg/queue/rotational b/test/disk_tests/usages/sdg/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdg/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdg/size b/test/disk_tests/usages/sdg/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdg/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdg_udevadm b/test/disk_tests/usages/sdg_udevadm
> deleted file mode 100644
> index 6d40d35..0000000
> --- a/test/disk_tests/usages/sdg_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdg
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdh/device/vendor b/test/disk_tests/usages/sdh/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdh/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdh/queue/rotational b/test/disk_tests/usages/sdh/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdh/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdh/size b/test/disk_tests/usages/sdh/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdh/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdh_udevadm b/test/disk_tests/usages/sdh_udevadm
> deleted file mode 100644
> index 3ff1a9e..0000000
> --- a/test/disk_tests/usages/sdh_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdh
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdi/device/vendor b/test/disk_tests/usages/sdi/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdi/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdi/queue/rotational b/test/disk_tests/usages/sdi/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdi/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdi/size b/test/disk_tests/usages/sdi/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdi/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdi_udevadm b/test/disk_tests/usages/sdi_udevadm
> deleted file mode 100644
> index a9eae5e..0000000
> --- a/test/disk_tests/usages/sdi_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdi
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdj/device/vendor b/test/disk_tests/usages/sdj/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdj/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdj/queue/rotational b/test/disk_tests/usages/sdj/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdj/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdj/size b/test/disk_tests/usages/sdj/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdj/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdj_udevadm b/test/disk_tests/usages/sdj_udevadm
> deleted file mode 100644
> index 39d0cf3..0000000
> --- a/test/disk_tests/usages/sdj_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdj
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdk/device/vendor b/test/disk_tests/usages/sdk/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdk/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdk/queue/rotational b/test/disk_tests/usages/sdk/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdk/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdk/size b/test/disk_tests/usages/sdk/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdk/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdk_udevadm b/test/disk_tests/usages/sdk_udevadm
> deleted file mode 100644
> index 3baef2f..0000000
> --- a/test/disk_tests/usages/sdk_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdk
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdl/device/vendor b/test/disk_tests/usages/sdl/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdl/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdl/queue/rotational b/test/disk_tests/usages/sdl/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdl/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdl/size b/test/disk_tests/usages/sdl/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdl/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdl_udevadm b/test/disk_tests/usages/sdl_udevadm
> deleted file mode 100644
> index ead0622..0000000
> --- a/test/disk_tests/usages/sdl_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdl
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdm/device/vendor b/test/disk_tests/usages/sdm/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdm/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdm/queue/rotational b/test/disk_tests/usages/sdm/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdm/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdm/sdm1/size b/test/disk_tests/usages/sdm/sdm1/size
> deleted file mode 100644
> index 83b33d2..0000000
> --- a/test/disk_tests/usages/sdm/sdm1/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -1000
> diff --git a/test/disk_tests/usages/sdm/sdm9/size b/test/disk_tests/usages/sdm/sdm9/size
> deleted file mode 100644
> index 8bd1af1..0000000
> --- a/test/disk_tests/usages/sdm/sdm9/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -2000
> diff --git a/test/disk_tests/usages/sdm/size b/test/disk_tests/usages/sdm/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdm/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdm_udevadm b/test/disk_tests/usages/sdm_udevadm
> deleted file mode 100644
> index 9317b9f..0000000
> --- a/test/disk_tests/usages/sdm_udevadm
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -E: DEVNAME=/dev/sdm
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_PART_TABLE_TYPE=gpt
> -E: ID_PART_TABLE_UUID=8417b93f-eff9-4e8f-8d84-dc2e77fc07a2
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/sdn/device/vendor b/test/disk_tests/usages/sdn/device/vendor
> deleted file mode 100644
> index 531030d..0000000
> --- a/test/disk_tests/usages/sdn/device/vendor
> +++ /dev/null
> @@ -1 +0,0 @@
> -ATA
> diff --git a/test/disk_tests/usages/sdn/queue/rotational b/test/disk_tests/usages/sdn/queue/rotational
> deleted file mode 100644
> index d00491f..0000000
> --- a/test/disk_tests/usages/sdn/queue/rotational
> +++ /dev/null
> @@ -1 +0,0 @@
> -1
> diff --git a/test/disk_tests/usages/sdn/size b/test/disk_tests/usages/sdn/size
> deleted file mode 100644
> index 13de30f..0000000
> --- a/test/disk_tests/usages/sdn/size
> +++ /dev/null
> @@ -1 +0,0 @@
> -3000
> diff --git a/test/disk_tests/usages/sdn_udevadm b/test/disk_tests/usages/sdn_udevadm
> deleted file mode 100644
> index 5ec4a92..0000000
> --- a/test/disk_tests/usages/sdn_udevadm
> +++ /dev/null
> @@ -1,14 +0,0 @@
> -E: DEVNAME=/dev/sdn
> -E: DEVTYPE=disk
> -E: ID_ATA_ROTATION_RATE_RPM=0
> -E: ID_BUS=ata
> -E: ID_MODEL=MODEL1
> -E: ID_SERIAL=SERIAL1
> -E: ID_SERIAL_SHORT=SERIAL1
> -E: ID_TYPE=disk
> -E: ID_FS_UUID=ab54fba8-48fe-4d37-bbe7-b403f94d3bed
> -E: ID_FS_UUID_ENC=ab54fba8-48fe-4d37-bbe7-b403f94d3bed
> -E: ID_FS_TYPE=xfs
> -E: ID_FS_USAGE=filesystem
> -E: ID_WWN=0x0000000000000000
> -E: ID_WWN_WITH_EXTENSION=0x0000000000000000
> diff --git a/test/disk_tests/usages/zpool b/test/disk_tests/usages/zpool
> deleted file mode 100644
> index 3431792..0000000
> --- a/test/disk_tests/usages/zpool
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -testpool	2.00T	1.00T	2.60T	-	5%	28%	1.00x	ONLINE	-
> -	/dev/sdc	3.62T	1.02T	2.60T	-	5%	28%
> -log      -      -      -         -      -      -
> -	/dev/sdd1	15.9G	2.79M	15.9G	-	82%	0%
> -cache      -      -      -         -      -      -
> -	/dev/sdd2	42.5G	36.2G	6.36G	-	0%	85%
> 





^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] [PATCH v2 storage 2/2] smartctl: use json parsing
  2021-04-01 14:24 ` [pve-devel] [PATCH v2 " Oguz Bektas
@ 2021-05-10 12:21   ` Dominik Csapak
  2021-05-10 12:35     ` Oguz Bektas
  0 siblings, 1 reply; 7+ messages in thread
From: Dominik Csapak @ 2021-05-10 12:21 UTC (permalink / raw)
  To: Proxmox VE development discussion, Oguz Bektas

some comments inline

On 4/1/21 16:24, Oguz Bektas wrote:
> adapt the smartctl endpoint to run smartctl with the --json or -j flag
> to parse it more reasonably.
> 
> additionally add the $format parameter to assist in switching to the new
> json parsed output for nvme devices in PVE 7.0 (until 7.0 removing the
> 'text' field completely would be a breaking change, so we still default
> to the old json fields but with the parsed key:value pairs in the 'text'
> field instead of raw smartctl output)
> 
> for the unit tests from now we need to collect the smartctl outputs with
> the json flag. the current tests cover ssd_smart and nvme_smart cases.
> 
> Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
> ---
> v1->v2:
> * fixed bug with --format json not showing anything...
> 
> 
>   PVE/API2/Disks.pm                             |   9 +-
>   PVE/Diskmanage.pm                             | 119 +++---
>   test/disk_tests/nvme_smart/disklist           |   1 +
>   .../nvme_smart/disklist_expected.json         |  16 +
>   test/disk_tests/nvme_smart/nvme0/model        |   1 +
>   test/disk_tests/nvme_smart/nvme0_smart        |  65 ++++
>   test/disk_tests/nvme_smart/nvme0n1/device     |   1 +
>   .../nvme_smart/nvme0n1/queue/rotational       |   1 +
>   test/disk_tests/nvme_smart/nvme0n1/size       |   1 +
>   .../nvme_smart/nvme0n1_smart_expected.json    |   6 +
>   test/disk_tests/nvme_smart/nvme0n1_udevadm    |  18 +
>   test/disk_tests/ssd_smart/disklist            |   1 +
>   .../ssd_smart/disklist_expected.json          |  16 +
>   test/disk_tests/ssd_smart/sda/device/vendor   |   1 +
>   .../disk_tests/ssd_smart/sda/queue/rotational |   1 +
>   test/disk_tests/ssd_smart/sda/size            |   1 +
>   test/disk_tests/ssd_smart/sda_smart           | 352 ++++++++++++++++++
>   .../ssd_smart/sda_smart_expected.json         | 146 ++++++++
>   test/disk_tests/ssd_smart/sda_udevadm         |  11 +
>   test/disklist_test.pm                         |   4 +-
>   20 files changed, 714 insertions(+), 57 deletions(-)
>   create mode 100644 test/disk_tests/nvme_smart/disklist
>   create mode 100644 test/disk_tests/nvme_smart/disklist_expected.json
>   create mode 100644 test/disk_tests/nvme_smart/nvme0/model
>   create mode 100644 test/disk_tests/nvme_smart/nvme0_smart
>   create mode 120000 test/disk_tests/nvme_smart/nvme0n1/device
>   create mode 100644 test/disk_tests/nvme_smart/nvme0n1/queue/rotational
>   create mode 100644 test/disk_tests/nvme_smart/nvme0n1/size
>   create mode 100644 test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
>   create mode 100644 test/disk_tests/nvme_smart/nvme0n1_udevadm
>   create mode 100644 test/disk_tests/ssd_smart/disklist
>   create mode 100644 test/disk_tests/ssd_smart/disklist_expected.json
>   create mode 100644 test/disk_tests/ssd_smart/sda/device/vendor
>   create mode 100644 test/disk_tests/ssd_smart/sda/queue/rotational
>   create mode 100644 test/disk_tests/ssd_smart/sda/size
>   create mode 100644 test/disk_tests/ssd_smart/sda_smart
>   create mode 100644 test/disk_tests/ssd_smart/sda_smart_expected.json
>   create mode 100644 test/disk_tests/ssd_smart/sda_udevadm
> 
> diff --git a/PVE/API2/Disks.pm b/PVE/API2/Disks.pm
> index 33bca76..a453efc 100644
> --- a/PVE/API2/Disks.pm
> +++ b/PVE/API2/Disks.pm
> @@ -195,6 +195,12 @@ __PACKAGE__->register_method ({
>   		description => "If true returns only the health status",
>   		optional => 1,
>   	    },
> +	    format => {
> +		description => "Return json or text",
> +		type => 'string',
> +		enum => ['text', 'json'],
> +		optional => 1,
> +	    },
>   	},
>       },
>       returns => {
> @@ -204,6 +210,7 @@ __PACKAGE__->register_method ({
>   	    type => { type => 'string', optional => 1 },
>   	    attributes => { type => 'array', optional => 1},
>   	    text => { type => 'string', optional => 1 },
> +	    json => { type => 'string', optional => 1 },
>   	},
>       },
>       code => sub {
> @@ -211,7 +218,7 @@ __PACKAGE__->register_method ({
>   
>   	my $disk = PVE::Diskmanage::verify_blockdev_path($param->{disk});
>   
> -	my $result = PVE::Diskmanage::get_smart_data($disk, $param->{healthonly});
> +	my $result = PVE::Diskmanage::get_smart_data($disk, $param->{healthonly}, $param->{format});
>   
>   	$result->{health} = 'UNKNOWN' if !defined $result->{health};
>   	$result = { health => $result->{health} } if $param->{healthonly};
> diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
> index 64bb813..2fe70bc 100644
> --- a/PVE/Diskmanage.pm
> +++ b/PVE/Diskmanage.pm
> @@ -81,11 +81,12 @@ sub disk_is_used {
>   }
>   
>   sub get_smart_data {
> -    my ($disk, $healthonly) = @_;
> +    my ($disk, $healthonly, $format) = @_;
>   
>       assert_blockdev($disk);
>       my $smartdata = {};
>       my $type;
> +    $format //= 'text';
>   
>       my $returncode = 0;
>   
> @@ -95,70 +96,80 @@ sub get_smart_data {
>   	    or die "failed to get nvme controller device for $disk\n");
>       }
>   
> -    my $cmd = [$SMARTCTL, '-H'];
> -    push @$cmd, '-A', '-f', 'brief' if !$healthonly;
> +    my $cmd = [$SMARTCTL, '-j', '-H'];
> +    push @$cmd, '-Afbrief' if !$healthonly;

any particular reason to change this line? i think
it makes it harder to read what flags we give
(-Afbrief vs -A -f brief)

>       push @$cmd, $disk;
>   
> +    my $smart_result = '';
>       eval {
> -	$returncode = run_command($cmd, noerr => 1, outfunc => sub{
> -	    my ($line) = @_;
> +	$returncode = run_command($cmd, noerr => 1, outfunc => sub { $smart_result .= shift });
> +    };
> +    my $err = $@;
> +
> +    my $json_result = decode_json($smart_result);
> +
> +    my $smart_health = $json_result->{smart_status}->{passed};
> +    if (JSON::is_bool($smart_health)) {
> +	$smart_health = $smart_health ? "PASSED" : "FAILED";
> +    } else {
> +	$smart_health = 'UNKNOWN';
> +    }
> +
> +    $smartdata->{health} = $smart_health;
> +
> +    $type = $json_result->{device}->{type};
> +    if ($type eq 'nvme') {
> +	$smartdata->{type} = $format; # text or json but FIXME: remove in PVE 7.0 and use json
> +
> +	my $nvme_info = $json_result->{nvme_smart_health_information_log};
> +
> +	if (!$healthonly) {
> +	    $smartdata->{wearout} = 100.0 - $nvme_info->{percentage_used};
> +	}
>   
> -# ATA SMART attributes, e.g.:
> -# ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
> -#   1 Raw_Read_Error_Rate     POSR-K   100   100   000    -    0
> -#
> -# SAS and NVME disks, e.g.:
> -# Data Units Written:                 5,584,952 [2.85 TB]
> -# Accumulated start-stop cycles:  34
> -
> -	    if (defined($type) && $type eq 'ata' && $line =~ m/^([ \d]{2}\d)\s+(\S+)\s+(\S{6})\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(.*)$/) {
> -		my $entry = {};
> -
> -		$entry->{name} = $2 if defined $2;
> -		$entry->{flags} = $3 if defined $3;
> -		# the +0 makes a number out of the strings
> -		$entry->{value} = $4+0 if defined $4;
> -		$entry->{worst} = $5+0 if defined $5;
> -		# some disks report the default threshold as --- instead of 000
> -		if (defined($6) && $6 eq '---') {
> -		    $entry->{threshold} = 0;
> +	my $add_key = sub {
> +	    my ($key, $value) = @_;
> +	    $smartdata->{text} .= "$key : $value\n";
> +	};
> +
> +	if ($format eq 'text') {
> +	    foreach my $key (sort keys %{$nvme_info}) {
> +		my $value = $nvme_info->{$key};
> +		# some fields can also be arrays
> +		# e.g. temperature_sensor
> +		if (ref($value) eq 'ARRAY') {
> +		    while (my $index = each(@$value)) {
> +			$add_key->("${key}_${index}", $value->[$index]);
> +		    }

while this is ok, we probably could also do a
'pretty-print' json output here in case $value is not a scalar

that way we would also catch (potential) objects, not only arrays
(though i do not know if that can happen)

>   		} else {
> -		    $entry->{threshold} = $6+0 if defined $6;
> -		}
> -		$entry->{fail} = $7 if defined $7;
> -		$entry->{raw} = $8 if defined $8;
> -		$entry->{id} = $1 if defined $1;
> -		push @{$smartdata->{attributes}}, $entry;
> -	    } elsif ($line =~ m/(?:Health Status|self\-assessment test result): (.*)$/ ) {
> -		$smartdata->{health} = $1;
> -	    } elsif ($line =~ m/Vendor Specific SMART Attributes with Thresholds:/) {
> -		$type = 'ata';
> -		delete $smartdata->{text};
> -	    } elsif ($line =~ m/=== START OF (READ )?SMART DATA SECTION ===/) {
> -		$type = 'text';
> -	    } elsif (defined($type) && $type eq 'text') {
> -		$smartdata->{text} = '' if !defined $smartdata->{text};
> -		$smartdata->{text} .= "$line\n";
> -		# extract wearout from nvme/sas text, allow for decimal values
> -		if ($line =~ m/Percentage Used(?: endurance indicator)?:\s*(\d+(?:\.\d+)?)\%/i) {
> -		    $smartdata->{wearout} = 100 - $1;
> +		    $add_key->($key, $value);
>   		}
> -	    } elsif ($line =~ m/SMART Disabled/) {
> -		$smartdata->{health} = "SMART Disabled";
>   	    }
> -	});
> -    };
> -    my $err = $@;
> +	} else {
> +	    $smartdata->{properties} = $nvme_info;
> +	}
> +    } else {
> +	$smartdata->{type} = 'ata';
> +	foreach my $attribute (@{$json_result->{ata_smart_attributes}->{table}}) {
> +	    # we need to override or delete some fields to fit expected json schema of unit tests
> +	    my $flags_string = $attribute->{flags}->{string};
> +	    $flags_string =~ s/\s+$//;
> +	    $attribute->{flags} = $flags_string;
> +	    $attribute->{raw} = $attribute->{raw}->{string};
> +	    $attribute->{threshold} = delete $attribute->{thresh};
> +	    $attribute->{fail} = ${attribute}->{when_failed} eq "" ? "-" : ${attribute}->{when_failed};
> +	    delete ${attribute}->{when_failed};
> +
> +	    push @{$smartdata->{attributes}}, $attribute;
> +	}
> +	my @sorted_attributes = sort { $a->{id} <=> $b->{id} } @{$smartdata->{attributes}};
> +	@{$smartdata->{attributes}} = @sorted_attributes;
> +    }
>   
> -    # bit 0 and 1 mark an severe smartctl error
> -    # all others are for disk status, so ignore them
> -    # see smartctl(8)
> -    if ((defined($returncode) && ($returncode & 0b00000011)) || $err) {
> +    if ($returncode & 0b00000011 || $err) {

again, any reason to change this? especially the comment about the 
return code ?

>   	die "Error getting S.M.A.R.T. data: Exit code: $returncode\n";
>       }
>   
> -    $smartdata->{type} = $type;
> -
>       return $smartdata;
>   }
>   
> diff --git a/test/disk_tests/nvme_smart/disklist b/test/disk_tests/nvme_smart/disklist
> new file mode 100644
> index 0000000..d00b90e
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/disklist
> @@ -0,0 +1 @@
> +nvme0n1
> diff --git a/test/disk_tests/nvme_smart/disklist_expected.json b/test/disk_tests/nvme_smart/disklist_expected.json
> new file mode 100644
> index 0000000..4d1c92f
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/disklist_expected.json
> @@ -0,0 +1,16 @@
> +{
> +    "nvme0n1" : {
> +	"wearout" : 69,
> +	"vendor" : "unknown",
> +	"size" : 512000,
> +	"health" : "PASSED",
> +	"serial" : "unknown",
> +	"model" : "NVME MODEL 1",
> +	"rpm" : 0,
> +	"osdid" : -1,
> +	"devpath" : "/dev/nvme0n1",
> +	"gpt" : 0,
> +	"wwn" : "unknown",
> +	"type" : "nvme"
> +    }
> +}
> diff --git a/test/disk_tests/nvme_smart/nvme0/model b/test/disk_tests/nvme_smart/nvme0/model
> new file mode 100644
> index 0000000..9bd6eba
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/nvme0/model
> @@ -0,0 +1 @@
> +NVME MODEL 1
> diff --git a/test/disk_tests/nvme_smart/nvme0_smart b/test/disk_tests/nvme_smart/nvme0_smart
> new file mode 100644
> index 0000000..3f3c799
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/nvme0_smart
> @@ -0,0 +1,65 @@
> +{
> +  "json_format_version": [
> +    1,
> +    0
> +  ],
> +  "smartctl": {
> +    "version": [
> +      7,
> +      2
> +    ],
> +    "svn_revision": "5155",
> +    "platform_info": "x86_64-linux-5.11.7-1-pve",
> +    "build_info": "(local build)",
> +    "argv": [
> +      "smartctl",
> +      "-j",
> +      "-H",
> +      "-Afbrief",
> +      "/dev/nvme0"
> +    ],
> +    "exit_status": 0
> +  },
> +  "device": {
> +    "name": "/dev/nvme0",
> +    "info_name": "/dev/nvme0",
> +    "type": "nvme",
> +    "protocol": "NVMe"
> +  },
> +  "smart_status": {
> +    "passed": true,
> +    "nvme": {
> +      "value": 0
> +    }
> +  },
> +  "nvme_smart_health_information_log": {
> +    "critical_warning": 0,
> +    "temperature": 35,
> +    "available_spare": 100,
> +    "available_spare_threshold": 10,
> +    "percentage_used": 31,
> +    "data_units_read": 4546105,
> +    "data_units_written": 16623231,
> +    "host_reads": 154011524,
> +    "host_writes": 282144186,
> +    "controller_busy_time": 355,
> +    "power_cycles": 514,
> +    "power_on_hours": 2491,
> +    "unsafe_shutdowns": 38,
> +    "media_errors": 0,
> +    "num_err_log_entries": 0,
> +    "warning_temp_time": 0,
> +    "critical_comp_time": 0,
> +    "temperature_sensors": [
> +	36,
> +	34
> +    ]
> +  },
> +  "temperature": {
> +    "current": 35
> +  },
> +  "power_cycle_count": 514,
> +  "power_on_time": {
> +    "hours": 2491
> +  }
> +}
> diff --git a/test/disk_tests/nvme_smart/nvme0n1/device b/test/disk_tests/nvme_smart/nvme0n1/device
> new file mode 120000
> index 0000000..e890f3e
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/nvme0n1/device
> @@ -0,0 +1 @@
> +../nvme0
> \ No newline at end of file
> diff --git a/test/disk_tests/nvme_smart/nvme0n1/queue/rotational b/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
> new file mode 100644
> index 0000000..573541a
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/nvme0n1/queue/rotational
> @@ -0,0 +1 @@
> +0
> diff --git a/test/disk_tests/nvme_smart/nvme0n1/size b/test/disk_tests/nvme_smart/nvme0n1/size
> new file mode 100644
> index 0000000..83b33d2
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/nvme0n1/size
> @@ -0,0 +1 @@
> +1000
> diff --git a/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json b/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
> new file mode 100644
> index 0000000..e3f0ce0
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/nvme0n1_smart_expected.json
> @@ -0,0 +1,6 @@
> +{
> +    "text" : "available_spare : 100\navailable_spare_threshold : 10\ncontroller_busy_time : 355\ncritical_comp_time : 0\ncritical_warning : 0\ndata_units_read : 4546105\ndata_units_written : 16623231\nhost_reads : 154011524\nhost_writes : 282144186\nmedia_errors : 0\nnum_err_log_entries : 0\npercentage_used : 31\npower_cycles : 514\npower_on_hours : 2491\ntemperature : 35\ntemperature_sensors_0 : 36\ntemperature_sensors_1 : 34\nunsafe_shutdowns : 38\nwarning_temp_time : 0\n",
> +    "health" : "PASSED",
> +    "type" : "text",
> +    "wearout": 69
> +}
> diff --git a/test/disk_tests/nvme_smart/nvme0n1_udevadm b/test/disk_tests/nvme_smart/nvme0n1_udevadm
> new file mode 100644
> index 0000000..36c78ce
> --- /dev/null
> +++ b/test/disk_tests/nvme_smart/nvme0n1_udevadm
> @@ -0,0 +1,18 @@
> +
> +P: /devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
> +N: nvme0n1
> +S: disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
> +E: DEVLINKS=/dev/disk/by-id/lvm-pv-uuid-Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
> +E: DEVNAME=/dev/nvme0n1
> +E: DEVPATH=/devices/pci0000:00/0000:00:01.1/0000:02:00.0/nvme/nvme0/nvme0n1
> +E: DEVTYPE=disk
> +E: ID_FS_TYPE=LVM2_member
> +E: ID_FS_USAGE=raid
> +E: ID_FS_UUID=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
> +E: ID_FS_UUID_ENC=Py4eod-qfzj-i8Q3-Dxu6-xf0Q-H3Wr-w5Fo8V
> +E: ID_FS_VERSION=LVM2 001
> +E: MAJOR=259
> +E: MINOR=0
> +E: SUBSYSTEM=block
> +E: TAGS=:systemd:
> +E: USEC_INITIALIZED=3842
> diff --git a/test/disk_tests/ssd_smart/disklist b/test/disk_tests/ssd_smart/disklist
> new file mode 100644
> index 0000000..9191c61
> --- /dev/null
> +++ b/test/disk_tests/ssd_smart/disklist
> @@ -0,0 +1 @@
> +sda
> diff --git a/test/disk_tests/ssd_smart/disklist_expected.json b/test/disk_tests/ssd_smart/disklist_expected.json
> new file mode 100644
> index 0000000..3681cc8
> --- /dev/null
> +++ b/test/disk_tests/ssd_smart/disklist_expected.json
> @@ -0,0 +1,16 @@
> +{
> +    "sda" : {
> +	"serial" : "000000000000",
> +	"vendor" : "ATA",
> +	"rpm" : 0,
> +	"gpt" : 1,
> +	"health" : "PASSED",
> +	"wearout" : "98",
> +	"osdid" : -1,
> +	"size" : 512000,
> +	"type" : "ssd",
> +	"devpath" : "/dev/sda",
> +	"model" : "Samsung_SSD_860_EVO_1TB",
> +	"wwn" : "0x0000000000000000"
> +    }
> +}
> diff --git a/test/disk_tests/ssd_smart/sda/device/vendor b/test/disk_tests/ssd_smart/sda/device/vendor
> new file mode 100644
> index 0000000..531030d
> --- /dev/null
> +++ b/test/disk_tests/ssd_smart/sda/device/vendor
> @@ -0,0 +1 @@
> +ATA
> diff --git a/test/disk_tests/ssd_smart/sda/queue/rotational b/test/disk_tests/ssd_smart/sda/queue/rotational
> new file mode 100644
> index 0000000..573541a
> --- /dev/null
> +++ b/test/disk_tests/ssd_smart/sda/queue/rotational
> @@ -0,0 +1 @@
> +0
> diff --git a/test/disk_tests/ssd_smart/sda/size b/test/disk_tests/ssd_smart/sda/size
> new file mode 100644
> index 0000000..83b33d2
> --- /dev/null
> +++ b/test/disk_tests/ssd_smart/sda/size
> @@ -0,0 +1 @@
> +1000
> diff --git a/test/disk_tests/ssd_smart/sda_smart b/test/disk_tests/ssd_smart/sda_smart
> new file mode 100644
> index 0000000..907e7da
> --- /dev/null
> +++ b/test/disk_tests/ssd_smart/sda_smart
> @@ -0,0 +1,352 @@
> +{
> +  "json_format_version": [
> +    1,
> +    0
> +  ],
> +  "smartctl": {
> +    "version": [
> +      7,
> +      2
> +    ],
> +    "svn_revision": "5155",
> +    "platform_info": "x86_64-linux-5.11.7-1-pve",
> +    "build_info": "(local build)",
> +    "argv": [
> +      "smartctl",
> +      "-j",
> +      "-H",
> +      "-Afbrief",
> +      "/dev/sda"
> +    ],
> +    "exit_status": 0
> +  },
> +  "device": {
> +    "name": "/dev/sda",
> +    "info_name": "/dev/sda [SAT]",
> +    "type": "sat",
> +    "protocol": "ATA"
> +  },
> +  "smart_status": {
> +    "passed": true
> +  },
> +  "ata_smart_attributes": {
> +    "revision": 1,
> +    "table": [
> +      {
> +        "id": 5,
> +        "name": "Reallocated_Sector_Ct",
> +        "value": 100,
> +        "worst": 100,
> +        "thresh": 10,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 51,
> +          "string": "PO--CK ",
> +          "prefailure": true,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 0,
> +          "string": "0"
> +        }
> +      },
> +      {
> +        "id": 9,
> +        "name": "Power_On_Hours",
> +        "value": 99,
> +        "worst": 99,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 50,
> +          "string": "-O--CK ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 2463,
> +          "string": "2463"
> +        }
> +      },
> +      {
> +        "id": 12,
> +        "name": "Power_Cycle_Count",
> +        "value": 99,
> +        "worst": 99,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 50,
> +          "string": "-O--CK ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 499,
> +          "string": "499"
> +        }
> +      },
> +      {
> +        "id": 177,
> +        "name": "Wear_Leveling_Count",
> +        "value": 98,
> +        "worst": 98,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 19,
> +          "string": "PO--C- ",
> +          "prefailure": true,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": false
> +        },
> +        "raw": {
> +          "value": 20,
> +          "string": "20"
> +        }
> +      },
> +      {
> +        "id": 179,
> +        "name": "Used_Rsvd_Blk_Cnt_Tot",
> +        "value": 100,
> +        "worst": 100,
> +        "thresh": 10,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 19,
> +          "string": "PO--C- ",
> +          "prefailure": true,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": false
> +        },
> +        "raw": {
> +          "value": 0,
> +          "string": "0"
> +        }
> +      },
> +      {
> +        "id": 181,
> +        "name": "Program_Fail_Cnt_Total",
> +        "value": 100,
> +        "worst": 100,
> +        "thresh": 10,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 50,
> +          "string": "-O--CK ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 0,
> +          "string": "0"
> +        }
> +      },
> +      {
> +        "id": 182,
> +        "name": "Erase_Fail_Count_Total",
> +        "value": 100,
> +        "worst": 100,
> +        "thresh": 10,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 50,
> +          "string": "-O--CK ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 0,
> +          "string": "0"
> +        }
> +      },
> +      {
> +        "id": 183,
> +        "name": "Runtime_Bad_Block",
> +        "value": 100,
> +        "worst": 100,
> +        "thresh": 10,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 19,
> +          "string": "PO--C- ",
> +          "prefailure": true,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": false
> +        },
> +        "raw": {
> +          "value": 0,
> +          "string": "0"
> +        }
> +      },
> +      {
> +        "id": 187,
> +        "name": "Uncorrectable_Error_Cnt",
> +        "value": 100,
> +        "worst": 100,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 50,
> +          "string": "-O--CK ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 0,
> +          "string": "0"
> +        }
> +      },
> +      {
> +        "id": 190,
> +        "name": "Airflow_Temperature_Cel",
> +        "value": 73,
> +        "worst": 45,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 50,
> +          "string": "-O--CK ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 27,
> +          "string": "27"
> +        }
> +      },
> +      {
> +        "id": 195,
> +        "name": "ECC_Error_Rate",
> +        "value": 200,
> +        "worst": 200,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 26,
> +          "string": "-O-RC- ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": true,
> +          "event_count": true,
> +          "auto_keep": false
> +        },
> +        "raw": {
> +          "value": 0,
> +          "string": "0"
> +        }
> +      },
> +      {
> +        "id": 199,
> +        "name": "CRC_Error_Count",
> +        "value": 99,
> +        "worst": 99,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 62,
> +          "string": "-OSRCK ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": true,
> +          "error_rate": true,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 1,
> +          "string": "1"
> +        }
> +      },
> +      {
> +        "id": 235,
> +        "name": "POR_Recovery_Count",
> +        "value": 99,
> +        "worst": 99,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 18,
> +          "string": "-O--C- ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": false
> +        },
> +        "raw": {
> +          "value": 39,
> +          "string": "39"
> +        }
> +      },
> +      {
> +        "id": 241,
> +        "name": "Total_LBAs_Written",
> +        "value": 99,
> +        "worst": 99,
> +        "thresh": 0,
> +        "when_failed": "",
> +        "flags": {
> +          "value": 50,
> +          "string": "-O--CK ",
> +          "prefailure": false,
> +          "updated_online": true,
> +          "performance": false,
> +          "error_rate": false,
> +          "event_count": true,
> +          "auto_keep": true
> +        },
> +        "raw": {
> +          "value": 19999585737,
> +          "string": "19999585737"
> +        }
> +      }
> +    ]
> +  },
> +  "power_on_time": {
> +    "hours": 2515
> +  },
> +  "power_cycle_count": 508,
> +  "temperature": {
> +    "current": 29
> +  }
> +}
> diff --git a/test/disk_tests/ssd_smart/sda_smart_expected.json b/test/disk_tests/ssd_smart/sda_smart_expected.json
> new file mode 100644
> index 0000000..36da71e
> --- /dev/null
> +++ b/test/disk_tests/ssd_smart/sda_smart_expected.json
> @@ -0,0 +1,146 @@
> +{
> +   "attributes" : [
> +      {
> +         "fail" : "-",
> +         "flags" : "PO--CK",
> +         "id" : 5,
> +         "name" : "Reallocated_Sector_Ct",
> +         "raw" : "0",
> +         "threshold" : 10,
> +         "value" : 100,
> +         "worst" : 100
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O--CK",
> +         "id" : 9,
> +         "name" : "Power_On_Hours",
> +         "raw" : "2463",
> +         "threshold" : 0,
> +         "value" : 99,
> +         "worst" : 99
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O--CK",
> +         "id" : 12,
> +         "name" : "Power_Cycle_Count",
> +         "raw" : "499",
> +         "threshold" : 0,
> +         "value" : 99,
> +         "worst" : 99
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "PO--C-",
> +         "id" : 177,
> +         "name" : "Wear_Leveling_Count",
> +         "raw" : "20",
> +         "threshold" : 0,
> +         "value" : 98,
> +         "worst" : 98
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "PO--C-",
> +         "id" : 179,
> +         "name" : "Used_Rsvd_Blk_Cnt_Tot",
> +         "raw" : "0",
> +         "threshold" : 10,
> +         "value" : 100,
> +         "worst" : 100
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O--CK",
> +         "id" : 181,
> +         "name" : "Program_Fail_Cnt_Total",
> +         "raw" : "0",
> +         "threshold" : 10,
> +         "value" : 100,
> +         "worst" : 100
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O--CK",
> +         "id" : 182,
> +         "name" : "Erase_Fail_Count_Total",
> +         "raw" : "0",
> +         "threshold" : 10,
> +         "value" : 100,
> +         "worst" : 100
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "PO--C-",
> +         "id" : 183,
> +         "name" : "Runtime_Bad_Block",
> +         "raw" : "0",
> +         "threshold" : 10,
> +         "value" : 100,
> +         "worst" : 100
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O--CK",
> +         "id" : 187,
> +         "name" : "Uncorrectable_Error_Cnt",
> +         "raw" : "0",
> +         "threshold" : 0,
> +         "value" : 100,
> +         "worst" : 100
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O--CK",
> +         "id" : 190,
> +         "name" : "Airflow_Temperature_Cel",
> +         "raw" : "27",
> +         "threshold" : 0,
> +         "value" : 73,
> +         "worst" : 45
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O-RC-",
> +         "id" : 195,
> +         "name" : "ECC_Error_Rate",
> +         "raw" : "0",
> +         "threshold" : 0,
> +         "value" : 200,
> +         "worst" : 200
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-OSRCK",
> +         "id" : 199,
> +         "name" : "CRC_Error_Count",
> +         "raw" : "1",
> +         "threshold" : 0,
> +         "value" : 99,
> +         "worst" : 99
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O--C-",
> +         "id" : 235,
> +         "name" : "POR_Recovery_Count",
> +         "raw" : "39",
> +         "threshold" : 0,
> +         "value" : 99,
> +         "worst" : 99
> +      },
> +      {
> +         "fail" : "-",
> +         "flags" : "-O--CK",
> +         "id" : 241,
> +         "name" : "Total_LBAs_Written",
> +         "raw" : "19999585737",
> +         "threshold" : 0,
> +         "value" : 99,
> +         "worst" : 99
> +      }
> +   ],
> +   "health" : "PASSED",
> +   "type" : "ata"
> +}
> diff --git a/test/disk_tests/ssd_smart/sda_udevadm b/test/disk_tests/ssd_smart/sda_udevadm
> new file mode 100644
> index 0000000..f662221
> --- /dev/null
> +++ b/test/disk_tests/ssd_smart/sda_udevadm
> @@ -0,0 +1,11 @@
> +E: DEVNAME=/dev/sda
> +E: DEVTYPE=disk
> +E: ID_ATA_ROTATION_RATE_RPM=0
> +E: ID_BUS=ata
> +E: ID_MODEL=Samsung_SSD_860_EVO_1TB
> +E: ID_PART_TABLE_TYPE=gpt
> +E: ID_SERIAL=Samsung_SSD_860_EVO_1TB_000000000000000
> +E: ID_SERIAL_SHORT=000000000000
> +E: ID_TYPE=disk
> +E: ID_WWN=0x0000000000000000
> +
> diff --git a/test/disklist_test.pm b/test/disklist_test.pm
> index 7f0e0be..727fb44 100644
> --- a/test/disklist_test.pm
> +++ b/test/disklist_test.pm
> @@ -34,10 +34,10 @@ sub mocked_run_command {
>   	    my $dev;
>   	    my $type;
>   	    if (@$cmd > 3) {
> -		$dev = $cmd->[5];
> +		$dev = $cmd->[4];
>   		$type = 'smart';
>   	    } else {
> -		$dev = $cmd->[2];
> +		$dev = $cmd->[3];
>   		$type = 'health';
>   	    }
>   	    $dev =~ s|/dev/||;
> 





^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests
  2021-05-10 12:15 ` [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests Dominik Csapak
@ 2021-05-10 12:27   ` Oguz Bektas
  0 siblings, 0 replies; 7+ messages in thread
From: Oguz Bektas @ 2021-05-10 12:27 UTC (permalink / raw)
  To: Dominik Csapak; +Cc: Proxmox VE development discussion

On Mon, May 10, 2021 at 02:15:37PM +0200, Dominik Csapak wrote:
> hi,
> 
> sorry for the long wait on a review, but better
> late than never ;)
> 
> so one high level comments:
> 
> why do you remove all disk tests ??
> they did not only test the smart output, but also the
> usage, ssd/hdd detection, vendor/model etc...
> 
> i understand that you do not have the original disks
> for the smartctl -j output, but it should not be
> *that* hard to fake it ;)

at the time i couldn't figure out a way to keep all the tests working
while also adding the json changes, so for proof of concept i went for
the simpler option.

thomas thought it would also be acceptable to incrementally
add the new tests over time, making sure that everything works with the
new changes.

i have to admit i haven't really tried to fake the outputs, mainly
because there were a lot of disk types that produce different kind of
results (one issue stefan noticed at an earlier version was that his
disk's smart result returned an array with the temperature sensors,
while the disks i've tested did not have these.)

all these vendor-specific quirks make it really hard to produce reliable
tests without the real hardware.

> 
> and even if it is, please change the tests so that
> only the smart part is not tested anymore, e.g. with a flag
> in the test itself....

that can be an option, indeed
> 
> so please find a way to keep the tests (as much as you can)
> 
> i'll comment more on the second patch
> 
> 




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] [PATCH v2 storage 2/2] smartctl: use json parsing
  2021-05-10 12:21   ` Dominik Csapak
@ 2021-05-10 12:35     ` Oguz Bektas
  0 siblings, 0 replies; 7+ messages in thread
From: Oguz Bektas @ 2021-05-10 12:35 UTC (permalink / raw)
  To: Dominik Csapak; +Cc: Proxmox VE development discussion

thanks for reviewing! :)


On Mon, May 10, 2021 at 02:21:12PM +0200, Dominik Csapak wrote:
> some comments inline
> 
> >       }
> > -    my $cmd = [$SMARTCTL, '-H'];
> > -    push @$cmd, '-A', '-f', 'brief' if !$healthonly;
> > +    my $cmd = [$SMARTCTL, '-j', '-H'];
> > +    push @$cmd, '-Afbrief' if !$healthonly;
> 
> any particular reason to change this line? i think
> it makes it harder to read what flags we give
> (-Afbrief vs -A -f brief)

i think my idea was that the cli parameter count for the
disklist_test.pm would be reduced -- but i notice that actually this
doesn't bring anything so i suppose we can leave this part out.

> > +	if ($format eq 'text') {
> > +	    foreach my $key (sort keys %{$nvme_info}) {
> > +		my $value = $nvme_info->{$key};
> > +		# some fields can also be arrays
> > +		# e.g. temperature_sensor
> > +		if (ref($value) eq 'ARRAY') {
> > +		    while (my $index = each(@$value)) {
> > +			$add_key->("${key}_${index}", $value->[$index]);
> > +		    }
> 
> while this is ok, we probably could also do a
> 'pretty-print' json output here in case $value is not a scalar
> 
> that way we would also catch (potential) objects, not only arrays
> (though i do not know if that can happen)

hmm yes, haven't seen any other examples besides that array case, but i will look
into it.


 > +	my @sorted_attributes = sort { $a->{id} <=> $b->{id} } @{$smartdata->{attributes}};
> > +	@{$smartdata->{attributes}} = @sorted_attributes;
> > +    }
> > -    # bit 0 and 1 mark an severe smartctl error
> > -    # all others are for disk status, so ignore them
> > -    # see smartctl(8)
> > -    if ((defined($returncode) && ($returncode & 0b00000011)) || $err) {
> > +    if ($returncode & 0b00000011 || $err) {
> 
> again, any reason to change this? especially the comment about the return
> code ?

the comment was removed by mistake, sorry!

i was also thinking whether it's acceptable to take the exit code from
the json result (although then we might have to handle for potential
errors during parsing, so it might be better to keep it as before)




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-05-10 12:35 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-01 13:40 [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests Oguz Bektas
2021-04-01 13:40 ` [pve-devel] [PATCH storage 2/2] smartctl: use json parsing Oguz Bektas
2021-04-01 14:24 ` [pve-devel] [PATCH v2 " Oguz Bektas
2021-05-10 12:21   ` Dominik Csapak
2021-05-10 12:35     ` Oguz Bektas
2021-05-10 12:15 ` [pve-devel] [PATCH storage 1/2] smartctl: remove to-be-replaced disk_tests Dominik Csapak
2021-05-10 12:27   ` Oguz Bektas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal