1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
import pytest
from unittest import mock
from tests.fixtures import host_sysfs, import_cephadm
_cephadm = import_cephadm()
@pytest.fixture
def enclosure(host_sysfs):
e = _cephadm.Enclosure(
enc_id='1',
enc_path='/sys/class/scsi_generic/sg2/device/enclosure/0:0:1:0',
dev_path='/sys/class/scsi_generic/sg2')
yield e
class TestEnclosure:
def test_enc_metadata(self, enclosure):
"""Check metadata for the enclosure e.g. vendor and model"""
assert enclosure.vendor == "EnclosuresInc"
assert enclosure.components == '12'
assert enclosure.model == "D12"
assert enclosure.enc_id == '1'
assert enclosure.ses_paths == ['sg2']
assert enclosure.path_count == 1
def test_enc_slots(self, enclosure):
"""Check slot count"""
assert len(enclosure.slot_map) == 12
def test_enc_slot_format(self, enclosure):
"""Check the attributes of a slot are as expected"""
assert all(k in ['fault', 'locate', 'serial', 'status']
for k, _v in enclosure.slot_map['0'].items())
def test_enc_slot_status(self, enclosure):
"""Check the number of occupied slots is correct"""
occupied_slots = [slot_id for slot_id in enclosure.slot_map
if enclosure.slot_map[slot_id].get('status').upper() == 'OK']
assert len(occupied_slots) == 6
def test_enc_disk_count(self, enclosure):
"""Check the disks found matches the slot info"""
assert len(enclosure.device_lookup) == 6
assert enclosure.device_count == 6
def test_enc_device_serial(self, enclosure):
"""Check the device serial numbers are as expected"""
assert all(fake_serial in enclosure.device_lookup.keys()
for fake_serial in [
'fake000',
'fake001',
'fake002',
'fake003',
'fake004',
'fake005'])
def test_enc_slot_to_serial(self, enclosure):
"""Check serial number to slot matches across slot_map and device_lookup"""
for serial, slot in enclosure.device_lookup.items():
assert enclosure.slot_map[slot].get('serial') == serial
|