From e8b40e607b22e3e5b67346508b26866fb4a32a92 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Wed, 11 Dec 2019 15:28:35 +0100 Subject: [PATCH] python-common: Also test mgr/test_orchestrator/dummy_data.json Make sure, `pybind/mgr/test_orchestrator/dummy_data.json` is not getting out of date. Signed-off-by: Sebastian Wagner --- .../ceph/deployment/inventory.py | 4 + .../ceph/tests/c-v-inventory.json | 153 ++++++++++++++++ .../ceph/tests/test_inventory.py | 170 ++---------------- 3 files changed, 171 insertions(+), 156 deletions(-) create mode 100644 src/python-common/ceph/tests/c-v-inventory.json diff --git a/src/python-common/ceph/deployment/inventory.py b/src/python-common/ceph/deployment/inventory.py index a5cd3481221..5edd27c4be7 100644 --- a/src/python-common/ceph/deployment/inventory.py +++ b/src/python-common/ceph/deployment/inventory.py @@ -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 index 00000000000..f9425ee7355 --- /dev/null +++ b/src/python-common/ceph/tests/c-v-inventory.json @@ -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 diff --git a/src/python-common/ceph/tests/test_inventory.py b/src/python-common/ceph/tests/test_inventory.py index 647564b2dd2..69c1c306cf8 100644 --- a/src/python-common/ceph/tests/test_inventory.py +++ b/src/python-common/ceph/tests/test_inventory.py @@ -1,163 +1,21 @@ 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 -- 2.39.5