]>
git.proxmox.com Git - ceph.git/blob - ceph/src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py
1e8a49e2624c246b0a2f9ff03008dc00283eee8a
4 from ceph_volume
import exceptions
5 from ceph_volume
.util
import arg_validators
8 class TestOSDPath(object):
11 self
.validator
= arg_validators
.OSDPath()
13 def test_is_not_root(self
, monkeypatch
):
14 monkeypatch
.setattr(os
, 'getuid', lambda: 100)
15 with pytest
.raises(exceptions
.SuperUserError
):
18 def test_path_is_not_a_directory(self
, is_root
, tmpfile
, monkeypatch
):
19 monkeypatch
.setattr(arg_validators
.disk
, 'is_partition', lambda x
: False)
20 validator
= arg_validators
.OSDPath()
21 with pytest
.raises(argparse
.ArgumentError
):
24 def test_files_are_missing(self
, is_root
, tmpdir
, monkeypatch
):
26 monkeypatch
.setattr(arg_validators
.disk
, 'is_partition', lambda x
: False)
27 validator
= arg_validators
.OSDPath()
28 with pytest
.raises(argparse
.ArgumentError
) as error
:
30 assert 'Required file (ceph_fsid) was not found in OSD' in str(error
.value
)
33 class TestExcludeGroupOptions(object):
36 self
.parser
= argparse
.ArgumentParser()
38 def test_flags_in_one_group(self
):
39 argv
= ['<prog>', '--filestore', '--bar']
40 filestore_group
= self
.parser
.add_argument_group('filestore')
41 bluestore_group
= self
.parser
.add_argument_group('bluestore')
42 filestore_group
.add_argument('--filestore')
43 bluestore_group
.add_argument('--bluestore')
44 result
= arg_validators
.exclude_group_options(
46 ['filestore', 'bluestore'],
51 def test_flags_in_no_group(self
):
52 argv
= ['<prog>', '--foo', '--bar']
53 filestore_group
= self
.parser
.add_argument_group('filestore')
54 bluestore_group
= self
.parser
.add_argument_group('bluestore')
55 filestore_group
.add_argument('--filestore')
56 bluestore_group
.add_argument('--bluestore')
57 result
= arg_validators
.exclude_group_options(
59 ['filestore', 'bluestore'],
64 def test_flags_conflict(self
, capsys
):
65 argv
= ['<prog>', '--filestore', '--bluestore']
66 filestore_group
= self
.parser
.add_argument_group('filestore')
67 bluestore_group
= self
.parser
.add_argument_group('bluestore')
68 filestore_group
.add_argument('--filestore')
69 bluestore_group
.add_argument('--bluestore')
71 arg_validators
.exclude_group_options(
72 self
.parser
, ['filestore', 'bluestore'], argv
=argv
74 stdout
, stderr
= capsys
.readouterr()
75 assert 'Cannot use --filestore (filestore) with --bluestore (bluestore)' in stderr
78 class TestValidDevice(object):
81 self
.validator
= arg_validators
.ValidDevice()
83 def test_path_is_valid(self
, fake_call
, patch_bluestore_label
):
84 result
= self
.validator('/')
85 assert result
.abspath
== '/'
87 def test_path_is_invalid(self
, fake_call
, patch_bluestore_label
):
88 with pytest
.raises(argparse
.ArgumentError
):
89 self
.validator('/device/does/not/exist')