]>
Commit | Line | Data |
---|---|---|
3efd9988 FG |
1 | import os |
2 | import pytest | |
3 | from ceph_volume.devices.simple import activate | |
4 | ||
5 | ||
6 | class TestActivate(object): | |
7 | ||
8 | def test_no_data_uuid(self, factory, tmpfile, is_root, monkeypatch, capture): | |
9 | json_config = tmpfile(contents='{}') | |
10 | args = factory(osd_id='0', osd_fsid='1234', json_config=json_config) | |
11 | with pytest.raises(RuntimeError): | |
12 | activate.Activate([]).activate(args) | |
13 | ||
14 | def test_invalid_json_path(self): | |
15 | os.environ['CEPH_VOLUME_SIMPLE_JSON_DIR'] = '/non/existing/path' | |
16 | with pytest.raises(RuntimeError) as error: | |
17 | activate.Activate(['1', 'asdf']).main() | |
18 | assert 'RuntimeError: Expected JSON config path not found' in str(error) | |
19 | ||
20 | def test_main_spits_help_with_no_arguments(self, capsys): | |
21 | activate.Activate([]).main() | |
22 | stdout, stderr = capsys.readouterr() | |
23 | assert 'Activate OSDs by mounting devices previously configured' in stdout | |
b32b8144 FG |
24 | |
25 | ||
26 | class TestValidateDevices(object): | |
27 | ||
28 | def test_filestore_missing_journal(self): | |
29 | activation = activate.Activate([]) | |
30 | with pytest.raises(RuntimeError) as error: | |
31 | activation.validate_devices({'type': 'filestore', 'data': {}}) | |
32 | assert 'Unable to activate filestore OSD due to missing devices' in str(error) | |
33 | ||
34 | def test_filestore_missing_data(self): | |
35 | activation = activate.Activate([]) | |
36 | with pytest.raises(RuntimeError) as error: | |
37 | activation.validate_devices({'type': 'filestore', 'journal': {}}) | |
38 | assert 'Unable to activate filestore OSD due to missing devices' in str(error) | |
39 | ||
40 | def test_filestore_journal_device_found(self, capsys): | |
41 | activation = activate.Activate([]) | |
42 | with pytest.raises(RuntimeError): | |
43 | activation.validate_devices({'type': 'filestore', 'journal': {}}) | |
44 | stdout, stderr = capsys.readouterr() | |
45 | assert "devices found: ['journal']" in stdout | |
46 | ||
47 | def test_filestore_data_device_found(self, capsys): | |
48 | activation = activate.Activate([]) | |
49 | with pytest.raises(RuntimeError): | |
50 | activation.validate_devices({'type': 'filestore', 'data': {}}) | |
51 | stdout, stderr = capsys.readouterr() | |
52 | assert "devices found: ['data']" in stdout | |
53 | ||
54 | def test_filestore_with_all_devices(self): | |
55 | activation = activate.Activate([]) | |
56 | result = activation.validate_devices({'type': 'filestore', 'journal': {}, 'data': {}}) | |
57 | assert result is True | |
58 | ||
59 | def test_bluestore_with_all_devices(self): | |
60 | activation = activate.Activate([]) | |
61 | result = activation.validate_devices({'type': 'bluestore', 'data': {}, 'block': {}}) | |
62 | assert result is True | |
63 | ||
64 | def test_bluestore_is_default(self): | |
65 | activation = activate.Activate([]) | |
66 | result = activation.validate_devices({'data': {}, 'block': {}}) | |
67 | assert result is True | |
68 | ||
69 | def test_bluestore_data_device_found(self, capsys): | |
70 | activation = activate.Activate([]) | |
71 | with pytest.raises(RuntimeError): | |
72 | activation.validate_devices({'data': {}}) | |
73 | stdout, stderr = capsys.readouterr() | |
74 | assert "devices found: ['data']" in stdout | |
75 | ||
76 | def test_bluestore_missing_data(self): | |
77 | activation = activate.Activate([]) | |
78 | with pytest.raises(RuntimeError) as error: | |
79 | activation.validate_devices({'type': 'bluestore', 'block': {}}) | |
80 | assert 'Unable to activate bluestore OSD due to missing devices' in str(error) | |
81 | ||
82 | def test_bluestore_block_device_found(self, capsys): | |
83 | activation = activate.Activate([]) | |
84 | with pytest.raises(RuntimeError): | |
85 | activation.validate_devices({'block': {}}) | |
86 | stdout, stderr = capsys.readouterr() | |
87 | assert "devices found: ['block']" in stdout |