import pytest from ceph_volume.devices import lvm class TestLVM(object): def test_main_spits_help_with_no_arguments(self, capsys): lvm.main.LVM([]).main() stdout, stderr = capsys.readouterr() assert 'Use LVM and LVM-based technologies like dmcache to deploy' in stdout def test_main_shows_activate_subcommands(self, capsys): lvm.main.LVM([]).main() stdout, stderr = capsys.readouterr() assert 'activate ' in stdout assert 'Discover and mount' in stdout def test_main_shows_prepare_subcommands(self, capsys): lvm.main.LVM([]).main() stdout, stderr = capsys.readouterr() assert 'prepare ' in stdout assert 'Format an LVM device' in stdout class TestPrepareDevice(object): def test_cannot_use_device(self): with pytest.raises(RuntimeError) as error: lvm.prepare.Prepare([]).prepare_device( '/dev/var/foo', 'data', 'asdf', '0') assert 'Cannot use device (/dev/var/foo)' in str(error) assert 'A vg/lv path or an existing device is needed' in str(error) class TestPrepare(object): def test_main_spits_help_with_no_arguments(self, capsys): lvm.prepare.Prepare([]).main() stdout, stderr = capsys.readouterr() assert 'Prepare an OSD by assigning an ID and FSID' in stdout def test_main_shows_full_help(self, capsys): with pytest.raises(SystemExit): lvm.prepare.Prepare(argv=['--help']).main() stdout, stderr = capsys.readouterr() assert 'Use the filestore objectstore' in stdout assert 'Use the bluestore objectstore' in stdout assert 'A physical device or logical' in stdout class TestGetJournalLV(object): @pytest.mark.parametrize('arg', ['', '///', None, '/dev/sda1']) def test_no_journal_on_invalid_path(self, monkeypatch, arg): monkeypatch.setattr(lvm.prepare.api, 'get_lv', lambda **kw: False) prepare = lvm.prepare.Prepare([]) assert prepare.get_lv(arg) is None def test_no_journal_lv_found(self, monkeypatch): # patch it with 0 so we know we are getting to get_lv monkeypatch.setattr(lvm.prepare.api, 'get_lv', lambda **kw: 0) prepare = lvm.prepare.Prepare([]) assert prepare.get_lv('vg/lv') == 0 class TestActivate(object): def test_main_spits_help_with_no_arguments(self, capsys): lvm.activate.Activate([]).main() stdout, stderr = capsys.readouterr() assert 'Activate OSDs by discovering them with' in stdout def test_main_shows_full_help(self, capsys): with pytest.raises(SystemExit): lvm.activate.Activate(argv=['--help']).main() stdout, stderr = capsys.readouterr() assert 'optional arguments' in stdout assert 'positional arguments' in stdout