]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume tests.util new path/device mount interface
authorAlfredo Deza <adeza@redhat.com>
Thu, 19 Oct 2017 15:30:29 +0000 (11:30 -0400)
committerAlfredo Deza <adeza@redhat.com>
Fri, 20 Oct 2017 16:10:06 +0000 (12:10 -0400)
Signed-off-by: Alfredo Deza <adeza@redhat.com>
src/ceph-volume/ceph_volume/tests/util/test_system.py

index 7cb6a1f14fa8cd300744224a22f164d55369e8c1..c7ccb7d21469a46212920836a065e5957ba45a40 100644 (file)
@@ -1,6 +1,7 @@
 import os
 import pwd
 import getpass
+import pytest
 from textwrap import dedent
 from ceph_volume.util import system
 
@@ -34,7 +35,74 @@ class TestMkdirP(object):
         assert os.path.isdir(path)
 
 
-class TestIsMounted(object):
+@pytest.fixture
+def fake_proc(tmpdir, monkeypatch):
+    PROCDIR = str(tmpdir)
+    proc_path = os.path.join(PROCDIR, 'mounts')
+    with open(proc_path, 'w') as f:
+        f.write(dedent("""nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
+            rootfs / rootfs rw 0 0
+            sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
+            proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
+            devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=238292k,nr_inodes=59573,mode=755 0 0
+            securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
+            tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0
+            devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
+            tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0
+            tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0
+            cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
+            cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
+            configfs /sys/kernel/config configfs rw,relatime 0 0
+            /dev/mapper/VolGroup00-LogVol00 / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
+            selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
+            debugfs /sys/kernel/debug debugfs rw,relatime 0 0
+            hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0
+            mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0
+            sunrpc /far/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
+            /dev/sde4 /two/field/path
+            nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
+            /dev/sde2 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
+            tmpfs /far/lib/ceph/osd/ceph-5 tmpfs rw,seclabel,relatime 0 0
+            tmpfs /far/lib/ceph/osd/ceph-7 tmpfs rw,seclabel,relatime 0 0
+            /dev/sda1 /far/lib/ceph/osd/ceph-0 xfs rw,seclabel,noatime,attr2,inode64,noquota 0 0
+            tmpfs /run/user/1000 tmpfs rw,seclabel,nosuid,nodev,relatime,size=50040k,mode=700,uid=1000,gid=1000 0 0
+            /dev/sdc2 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
+            tmpfs /run/user/1000 tmpfs rw,seclabel,mode=700,uid=1000,gid=1000 0 0"""))
+    monkeypatch.setattr(system, 'PROCDIR', PROCDIR)
+    monkeypatch.setattr(os.path, 'exists', lambda x: True)
+
+
+class TestPathIsMounted(object):
+
+    def test_is_mounted(self, fake_proc):
+        assert system.path_is_mounted('/boot') is True
+
+    def test_is_not_mounted(self, fake_proc):
+        assert system.path_is_mounted('/far/fib/feph') is False
+
+    def test_is_not_mounted_at_destination(self, fake_proc):
+        assert system.path_is_mounted('/boot', destination='/dev/sda1') is False
+
+    def test_is_mounted_at_destination(self, fake_proc):
+        assert system.path_is_mounted('/boot', destination='/dev/sdc2') is True
+
+
+class TestDeviceIsMounted(object):
+
+    def test_is_mounted(self, fake_proc):
+        assert system.device_is_mounted('/dev/sda1') is True
+
+    def test_path_is_not_device(self, fake_proc):
+        assert system.device_is_mounted('/far/lib/ceph/osd/ceph-7') is False
+
+    def test_is_not_mounted_at_destination(self, fake_proc):
+        assert system.device_is_mounted('/dev/sda1', destination='/far/lib/ceph/osd/test-1') is False
+
+    def test_is_mounted_at_destination(self, fake_proc):
+        assert system.device_is_mounted('/dev/sda1', destination='/far/lib/ceph/osd/ceph-7') is False
+
+
+class TestGetMounts(object):
 
     def test_not_mounted(self, tmpdir, monkeypatch):
         PROCDIR = str(tmpdir)
@@ -42,48 +110,36 @@ class TestIsMounted(object):
         with open(proc_path, 'w') as f:
             f.write('')
         monkeypatch.setattr(system, 'PROCDIR', PROCDIR)
-        assert system.is_mounted('sdb') is False
+        assert system.get_mounts() == {}
 
-    def test_is_mounted_(self, tmpdir, monkeypatch):
-        PROCDIR = str(tmpdir)
-        proc_path = os.path.join(PROCDIR, 'mounts')
-        with open(proc_path, 'w') as f:
-            f.write(dedent("""nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
-                    /dev/sdc2 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
-                    tmpfs /run/user/1000 tmpfs rw,seclabel,mode=700,uid=1000,gid=1000 0 0"""))
-        monkeypatch.setattr(system, 'PROCDIR', PROCDIR)
-        monkeypatch.setattr(os.path, 'exists', lambda x: True)
-        assert system.is_mounted('/dev/sdc2') is True
+    def test_is_mounted_(self, fake_proc):
+        result = system.get_mounts()
+        assert result['/dev/sdc2'] == ['/boot']
 
-    def test_ignores_two_fields(self, tmpdir, monkeypatch):
-        PROCDIR = str(tmpdir)
-        proc_path = os.path.join(PROCDIR, 'mounts')
-        with open(proc_path, 'w') as f:
-            f.write(dedent("""nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
-                    /dev/sdc2 /boot
-                    tmpfs /run/user/1000 tmpfs rw,seclabel,mode=700,uid=1000,gid=1000 0 0"""))
-        monkeypatch.setattr(system, 'PROCDIR', PROCDIR)
-        monkeypatch.setattr(os.path, 'exists', lambda x: True)
-        assert system.is_mounted('/dev/sdc2') is False
+    def test_ignores_two_fields(self, fake_proc):
+        result = system.get_mounts()
+        assert result.get('/dev/sde4') is None
 
-    def test_not_mounted_at_destination(self, tmpdir, monkeypatch):
-        PROCDIR = str(tmpdir)
-        proc_path = os.path.join(PROCDIR, 'mounts')
-        with open(proc_path, 'w') as f:
-            f.write(dedent("""nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
-                    /dev/sdc2 /var/lib/ceph/osd/ceph-9 xfs rw,attr2,inode64,noquota 0 0
-                    tmpfs /run/user/1000 tmpfs rw,seclabel,mode=700,uid=1000,gid=1000 0 0"""))
-        monkeypatch.setattr(system, 'PROCDIR', PROCDIR)
-        monkeypatch.setattr(os.path, 'exists', lambda x: True)
-        assert system.is_mounted('/dev/sdc2', '/var/lib/ceph/osd/ceph-0') is False
+    def test_tmpfs_is_reported(self, fake_proc):
+        result = system.get_mounts()
+        assert result['tmpfs'][0] == '/dev/shm'
+
+    def test_non_skip_devs_arent_reported(self, fake_proc):
+        result = system.get_mounts()
+        assert result.get('cgroup') is None
+
+    def test_multiple_mounts_are_appended(self, fake_proc):
+        result = system.get_mounts()
+        assert len(result['tmpfs']) == 7
 
-    def test_is_mounted_at_destination(self, tmpdir, monkeypatch):
+    def test_nonexistent_devices_are_skipped(self, tmpdir, monkeypatch):
         PROCDIR = str(tmpdir)
         proc_path = os.path.join(PROCDIR, 'mounts')
         with open(proc_path, 'w') as f:
             f.write(dedent("""nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
-                    /dev/sdc2 /var/lib/ceph/osd/ceph-0 xfs rw,attr2,inode64,noquota 0 0
-                    tmpfs /run/user/1000 tmpfs rw,seclabel,mode=700,uid=1000,gid=1000 0 0"""))
+                    /dev/sda1 /far/lib/ceph/osd/ceph-0 xfs rw,attr2,inode64,noquota 0 0
+                    /dev/sda2 /far/lib/ceph/osd/ceph-1 xfs rw,attr2,inode64,noquota 0 0"""))
         monkeypatch.setattr(system, 'PROCDIR', PROCDIR)
-        monkeypatch.setattr(os.path, 'exists', lambda x: True)
-        assert system.is_mounted('/dev/sdc2', '/var/lib/ceph/osd/ceph-0') is True
+        monkeypatch.setattr(os.path, 'exists', lambda x: False if x == '/dev/sda1' else True)
+        result = system.get_mounts()
+        assert result.get('/dev/sda1') is None