]> git.proxmox.com Git - ceph.git/blame - ceph/src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py
import 14.2.4 nautilus point release
[ceph.git] / ceph / src / ceph-volume / ceph_volume / tests / util / test_arg_validators.py
CommitLineData
b5b8bbf5 1import argparse
3a9019d9 2import pytest
3efd9988 3from ceph_volume import exceptions
b5b8bbf5
FG
4from ceph_volume.util import arg_validators
5
6
3efd9988
FG
7class TestOSDPath(object):
8
9 def setup(self):
10 self.validator = arg_validators.OSDPath()
11
12 def test_is_not_root(self):
13 with pytest.raises(exceptions.SuperUserError):
14 self.validator('')
15
16 def test_path_is_not_a_directory(self, is_root, tmpfile, monkeypatch):
17 monkeypatch.setattr(arg_validators.disk, 'is_partition', lambda x: False)
18 validator = arg_validators.OSDPath()
19 with pytest.raises(argparse.ArgumentError):
20 validator(tmpfile())
21
22 def test_files_are_missing(self, is_root, tmpdir, monkeypatch):
23 tmppath = str(tmpdir)
24 monkeypatch.setattr(arg_validators.disk, 'is_partition', lambda x: False)
25 validator = arg_validators.OSDPath()
26 with pytest.raises(argparse.ArgumentError) as error:
27 validator(tmppath)
81eedcae 28 assert 'Required file (ceph_fsid) was not found in OSD' in str(error.value)
3a9019d9
FG
29
30
31class TestExcludeGroupOptions(object):
32
33 def setup(self):
34 self.parser = argparse.ArgumentParser()
35
36 def test_flags_in_one_group(self):
37 argv = ['<prog>', '--filestore', '--bar']
38 filestore_group = self.parser.add_argument_group('filestore')
39 bluestore_group = self.parser.add_argument_group('bluestore')
40 filestore_group.add_argument('--filestore')
41 bluestore_group.add_argument('--bluestore')
42 result = arg_validators.exclude_group_options(
43 self.parser,
44 ['filestore', 'bluestore'],
45 argv=argv
46 )
47 assert result is None
48
49 def test_flags_in_no_group(self):
50 argv = ['<prog>', '--foo', '--bar']
51 filestore_group = self.parser.add_argument_group('filestore')
52 bluestore_group = self.parser.add_argument_group('bluestore')
53 filestore_group.add_argument('--filestore')
54 bluestore_group.add_argument('--bluestore')
55 result = arg_validators.exclude_group_options(
56 self.parser,
57 ['filestore', 'bluestore'],
58 argv=argv
59 )
60 assert result is None
61
62 def test_flags_conflict(self, capsys):
63 argv = ['<prog>', '--filestore', '--bluestore']
64 filestore_group = self.parser.add_argument_group('filestore')
65 bluestore_group = self.parser.add_argument_group('bluestore')
66 filestore_group.add_argument('--filestore')
67 bluestore_group.add_argument('--bluestore')
68
69 arg_validators.exclude_group_options(
70 self.parser, ['filestore', 'bluestore'], argv=argv
71 )
72 stdout, stderr = capsys.readouterr()
494da23a 73 assert 'Cannot use --filestore (filestore) with --bluestore (bluestore)' in stderr
1adf2230
AA
74
75
76class TestValidDevice(object):
77
78 def setup(self):
79 self.validator = arg_validators.ValidDevice()
80
81 def test_path_is_valid(self, fake_call):
82 result = self.validator('/')
83 assert result.abspath == '/'
84
85 def test_path_is_invalid(self, fake_call):
86 with pytest.raises(argparse.ArgumentError):
87 self.validator('/device/does/not/exist')