]> git.proxmox.com Git - ceph.git/blob - ceph/src/ceph-volume/ceph_volume/tests/test_inventory.py
9721fccdb6434b8e510a47c25784a99d7b67ba1c
[ceph.git] / ceph / src / ceph-volume / ceph_volume / tests / test_inventory.py
1 # -*- coding: utf-8 -*-
2
3 import pytest
4 from ceph_volume.util.device import Devices
5
6
7 @pytest.fixture
8 def device_report_keys(device_info):
9 device_info(devices={
10 # example output of disk.get_devices()
11 '/dev/sdb': {'human_readable_size': '1.82 TB',
12 'locked': 0,
13 'model': 'PERC H700',
14 'nr_requests': '128',
15 'partitions': {},
16 'path': '/dev/sdb',
17 'removable': '0',
18 'rev': '2.10',
19 'ro': '0',
20 'rotational': '1',
21 'sas_address': '',
22 'sas_device_handle': '',
23 'scheduler_mode': 'cfq',
24 'sectors': 0,
25 'sectorsize': '512',
26 'size': 1999844147200.0,
27 'support_discard': '',
28 'vendor': 'DELL',
29 'device_id': 'Vendor-Model-Serial'}
30 }
31 )
32 report = Devices().json_report()[0]
33 return list(report.keys())
34
35 @pytest.fixture
36 def device_sys_api_keys(device_info):
37 device_info(devices={
38 # example output of disk.get_devices()
39 '/dev/sdb': {'human_readable_size': '1.82 TB',
40 'locked': 0,
41 'model': 'PERC H700',
42 'nr_requests': '128',
43 'partitions': {},
44 'path': '/dev/sdb',
45 'removable': '0',
46 'rev': '2.10',
47 'ro': '0',
48 'rotational': '1',
49 'sas_address': '',
50 'sas_device_handle': '',
51 'scheduler_mode': 'cfq',
52 'sectors': 0,
53 'sectorsize': '512',
54 'size': 1999844147200.0,
55 'support_discard': '',
56 'vendor': 'DELL'}
57 }
58 )
59 report = Devices().json_report()[0]
60 return list(report['sys_api'].keys())
61
62
63 class TestInventory(object):
64
65 expected_keys = [
66 'path',
67 'rejected_reasons',
68 'sys_api',
69 'available',
70 'lvs',
71 'device_id',
72 ]
73
74 expected_sys_api_keys = [
75 'human_readable_size',
76 'locked',
77 'model',
78 'nr_requests',
79 'partitions',
80 'path',
81 'removable',
82 'rev',
83 'ro',
84 'rotational',
85 'sas_address',
86 'sas_device_handle',
87 'scheduler_mode',
88 'sectors',
89 'sectorsize',
90 'size',
91 'support_discard',
92 'vendor',
93 ]
94
95 def test_json_inventory_keys_unexpected(self, device_report_keys):
96 for k in device_report_keys:
97 assert k in self.expected_keys, "unexpected key {} in report".format(k)
98
99 def test_json_inventory_keys_missing(self, device_report_keys):
100 for k in self.expected_keys:
101 assert k in device_report_keys, "expected key {} in report".format(k)
102
103 def test_sys_api_keys_unexpected(self, device_sys_api_keys):
104 for k in device_sys_api_keys:
105 assert k in self.expected_sys_api_keys, "unexpected key {} in sys_api field".format(k)
106
107 def test_sys_api_keys_missing(self, device_sys_api_keys):
108 for k in self.expected_sys_api_keys:
109 assert k in device_sys_api_keys, "expected key {} in sys_api field".format(k)
110