]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
python-common: Also test mgr/test_orchestrator/dummy_data.json 32182/head
authorSebastian Wagner <sebastian.wagner@suse.com>
Wed, 11 Dec 2019 14:28:35 +0000 (15:28 +0100)
committerSebastian Wagner <sebastian.wagner@suse.com>
Wed, 11 Dec 2019 21:34:03 +0000 (22:34 +0100)
Make sure, `pybind/mgr/test_orchestrator/dummy_data.json` is not getting out of date.

Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
src/python-common/ceph/deployment/inventory.py
src/python-common/ceph/tests/c-v-inventory.json [new file with mode: 0644]
src/python-common/ceph/tests/test_inventory.py

index a5cd34812214895e619685f8ca8e64fbb2700b2d..5edd27c4be7bd733ac20898108640b0372329ae6 100644 (file)
@@ -3,6 +3,8 @@ try:
 except ImportError:
     pass  # for type checking
 
+import json
+
 
 class Devices(object):
     """
@@ -64,6 +66,8 @@ class Device(object):
     @classmethod
     def from_json(cls, input):
         # type: (Dict[str, Any]) -> Device
+        if not isinstance(input, dict):
+            raise ValueError('Device: Expected dict. Got `{}...`'.format(json.dumps(input)[:10]))
         ret = cls(
             **{
                 key: input.get(key, None)
diff --git a/src/python-common/ceph/tests/c-v-inventory.json b/src/python-common/ceph/tests/c-v-inventory.json
new file mode 100644 (file)
index 0000000..f9425ee
--- /dev/null
@@ -0,0 +1,153 @@
+[
+  {
+    "available": false,
+    "rejected_reasons": [
+      "locked"
+    ],
+    "sys_api": {
+      "scheduler_mode": "",
+      "rotational": "0",
+      "vendor": "",
+      "human_readable_size": "50.00 GB",
+      "sectors": 0,
+      "sas_device_handle": "",
+      "partitions": {},
+      "rev": "",
+      "sas_address": "",
+      "locked": 1,
+      "sectorsize": "512",
+      "removable": "0",
+      "path": "/dev/dm-0",
+      "support_discard": "",
+      "model": "",
+      "ro": "0",
+      "nr_requests": "128",
+      "size": 53687091200
+    },
+    "lvs": [],
+    "path": "/dev/dm-0"
+  },
+  {
+    "available": false,
+    "rejected_reasons": [
+      "locked"
+    ],
+    "sys_api": {
+      "scheduler_mode": "",
+      "rotational": "0",
+      "vendor": "",
+      "human_readable_size": "31.47 GB",
+      "sectors": 0,
+      "sas_device_handle": "",
+      "partitions": {},
+      "rev": "",
+      "sas_address": "",
+      "locked": 1,
+      "sectorsize": "512",
+      "removable": "0",
+      "path": "/dev/dm-1",
+      "support_discard": "",
+      "model": "",
+      "ro": "0",
+      "nr_requests": "128",
+      "size": 33789313024
+    },
+    "lvs": [],
+    "path": "/dev/dm-1"
+  },
+  {
+    "available": false,
+    "rejected_reasons": [
+      "locked"
+    ],
+    "sys_api": {
+      "scheduler_mode": "",
+      "rotational": "0",
+      "vendor": "",
+      "human_readable_size": "394.27 GB",
+      "sectors": 0,
+      "sas_device_handle": "",
+      "partitions": {},
+      "rev": "",
+      "sas_address": "",
+      "locked": 1,
+      "sectorsize": "512",
+      "removable": "0",
+      "path": "/dev/dm-2",
+      "support_discard": "",
+      "model": "",
+      "ro": "0",
+      "nr_requests": "128",
+      "size": 423347879936
+    },
+    "lvs": [],
+    "path": "/dev/dm-2"
+  },
+  {
+    "available": false,
+    "rejected_reasons": [
+      "locked"
+    ],
+    "sys_api": {
+      "scheduler_mode": "cfq",
+      "rotational": "0",
+      "vendor": "ATA",
+      "human_readable_size": "476.94 GB",
+      "sectors": 0,
+      "sas_device_handle": "",
+      "partitions": {
+        "sda2": {
+          "start": "411648",
+          "holders": [],
+          "sectorsize": 512,
+          "sectors": "2097152",
+          "size": "1024.00 MB"
+        },
+        "sda3": {
+          "start": "2508800",
+          "holders": [
+            "dm-1",
+            "dm-2",
+            "dm-0"
+          ],
+          "sectorsize": 512,
+          "sectors": "997705728",
+          "size": "475.74 GB"
+        },
+        "sda1": {
+          "start": "2048",
+          "holders": [],
+          "sectorsize": 512,
+          "sectors": "409600",
+          "size": "200.00 MB"
+        }
+      },
+      "rev": "0000",
+      "sas_address": "",
+      "locked": 1,
+      "sectorsize": "512",
+      "removable": "0",
+      "path": "/dev/sda",
+      "support_discard": "",
+      "model": "SanDisk SD8SN8U5",
+      "ro": "0",
+      "nr_requests": "128",
+      "size": 512110190592
+    },
+    "lvs": [
+      {
+        "comment": "not used by ceph",
+        "name": "swap"
+      },
+      {
+        "comment": "not used by ceph",
+        "name": "home"
+      },
+      {
+        "comment": "not used by ceph",
+        "name": "root"
+      }
+    ],
+    "path": "/dev/sda"
+  }
+]
\ No newline at end of file
index 647564b2dd2df68dd011e8db418ee2727eca3289..69c1c306cf8015a6ad595a35a9495ae27d814aef 100644 (file)
 import json
+import os
+import pytest
 
 from ceph.deployment.inventory import Devices
 
 
-def test_from_json():
-    data = json.loads("""
-    [
-  {
-    "available": false,
-    "rejected_reasons": [
-      "locked"
-    ],
-    "sys_api": {
-      "scheduler_mode": "",
-      "rotational": "0",
-      "vendor": "",
-      "human_readable_size": "50.00 GB",
-      "sectors": 0,
-      "sas_device_handle": "",
-      "partitions": {},
-      "rev": "",
-      "sas_address": "",
-      "locked": 1,
-      "sectorsize": "512",
-      "removable": "0",
-      "path": "/dev/dm-0",
-      "support_discard": "",
-      "model": "",
-      "ro": "0",
-      "nr_requests": "128",
-      "size": 53687091200
-    },
-    "lvs": [],
-    "path": "/dev/dm-0"
-  },
-  {
-    "available": false,
-    "rejected_reasons": [
-      "locked"
-    ],
-    "sys_api": {
-      "scheduler_mode": "",
-      "rotational": "0",
-      "vendor": "",
-      "human_readable_size": "31.47 GB",
-      "sectors": 0,
-      "sas_device_handle": "",
-      "partitions": {},
-      "rev": "",
-      "sas_address": "",
-      "locked": 1,
-      "sectorsize": "512",
-      "removable": "0",
-      "path": "/dev/dm-1",
-      "support_discard": "",
-      "model": "",
-      "ro": "0",
-      "nr_requests": "128",
-      "size": 33789313024
-    },
-    "lvs": [],
-    "path": "/dev/dm-1"
-  },
-  {
-    "available": false,
-    "rejected_reasons": [
-      "locked"
-    ],
-    "sys_api": {
-      "scheduler_mode": "",
-      "rotational": "0",
-      "vendor": "",
-      "human_readable_size": "394.27 GB",
-      "sectors": 0,
-      "sas_device_handle": "",
-      "partitions": {},
-      "rev": "",
-      "sas_address": "",
-      "locked": 1,
-      "sectorsize": "512",
-      "removable": "0",
-      "path": "/dev/dm-2",
-      "support_discard": "",
-      "model": "",
-      "ro": "0",
-      "nr_requests": "128",
-      "size": 423347879936
-    },
-    "lvs": [],
-    "path": "/dev/dm-2"
-  },
-  {
-    "available": false,
-    "rejected_reasons": [
-      "locked"
-    ],
-    "sys_api": {
-      "scheduler_mode": "cfq",
-      "rotational": "0",
-      "vendor": "ATA",
-      "human_readable_size": "476.94 GB",
-      "sectors": 0,
-      "sas_device_handle": "",
-      "partitions": {
-        "sda2": {
-          "start": "411648",
-          "holders": [],
-          "sectorsize": 512,
-          "sectors": "2097152",
-          "size": "1024.00 MB"
-        },
-        "sda3": {
-          "start": "2508800",
-          "holders": [
-            "dm-1",
-            "dm-2",
-            "dm-0"
-          ],
-          "sectorsize": 512,
-          "sectors": "997705728",
-          "size": "475.74 GB"
-        },
-        "sda1": {
-          "start": "2048",
-          "holders": [],
-          "sectorsize": 512,
-          "sectors": "409600",
-          "size": "200.00 MB"
-        }
-      },
-      "rev": "0000",
-      "sas_address": "",
-      "locked": 1,
-      "sectorsize": "512",
-      "removable": "0",
-      "path": "/dev/sda",
-      "support_discard": "",
-      "model": "SanDisk SD8SN8U5",
-      "ro": "0",
-      "nr_requests": "128",
-      "size": 512110190592
-    },
-    "lvs": [
-      {
-        "comment": "not used by ceph",
-        "name": "swap"
-      },
-      {
-        "comment": "not used by ceph",
-        "name": "home"
-      },
-      {
-        "comment": "not used by ceph",
-        "name": "root"
-      }
-    ],
-    "path": "/dev/sda"
-  }
-]""".strip())
+@pytest.mark.parametrize("filename",
+                         [
+                             os.path.dirname(__file__) + '/c-v-inventory.json',
+                             os.path.dirname(__file__) + '/../../../pybind/mgr/test_orchestrator/du'
+                                                         'mmy_data.json',
+                         ])
+def test_from_json(filename):
+    with open(filename) as f:
+        data = json.load(f)
+    if 'inventory' in data:
+        data = data['inventory']
     ds = Devices.from_json(data)
-    assert len(ds.devices) == 4
+    assert len(ds.devices) == len(data)
     assert Devices.from_json(ds.to_json()) == ds