def test_set_logging_err(self): v = Volume("host", "vol") v.fs = 12345 _m_set_logging = Mock(return_value=-1) with patch("gluster.gfapi.api.glfs_set_logging", _m_set_logging): self.assertRaises(LibgfapiException, v.set_logging, "/dev/null", 7) _m_set_logging.assert_called_once_with(v.fs, None, 7)
def test_mount_error(self): # glfs_new() failed _m_glfs_new = Mock(return_value=None) v = Volume("host", "vol") with patch("gluster.gfapi.api.glfs_new", _m_glfs_new): self.assertRaises(LibgfapiException, v.mount) self.assertFalse(v.fs) self.assertFalse(v.mounted) _m_glfs_new.assert_called_once_with("vol") # glfs_set_volfile_server() failed _m_set_vol = Mock(return_value=-1) v = Volume("host", "vol") with patch("gluster.gfapi.api.glfs_set_volfile_server", _m_set_vol): self.assertRaises(LibgfapiException, v.mount) self.assertFalse(v.mounted) _m_glfs_new.assert_called_once_with("vol") _m_set_vol.assert_called_once_with(v.fs, v.protocol, v.host, v.port) # glfs_init() failed _m_glfs_init = Mock(return_value=-1) v = Volume("host", "vol") with patch("gluster.gfapi.api.glfs_init", _m_glfs_init): self.assertRaises(LibgfapiException, v.mount) self.assertFalse(v.mounted) _m_glfs_init.assert_called_once_with(v.fs)
def test_mount_umount_success(self): v = Volume("host", "vol") v.mount() self.assertTrue(v.mounted) self.assertTrue(v.fs) v.umount() self.assertFalse(v.mounted) self.assertFalse(v.fs)
def test_mount_multiple_hosts(self): _m_set_vol = Mock(return_value=0) with patch("gluster.gfapi.api.glfs_set_volfile_server", _m_set_vol): hosts = ["host1", "host2"] v = Volume(hosts, "vol") v.mount() self.assertEqual(_m_set_vol.call_count, len(hosts)) v.umount()
def test_unix_socket_mount(self): if not os.access(GLUSTERD_SOCK_FILE, os.R_OK | os.W_OK): raise SkipTest("Unix socket file %s not accessible" % GLUSTERD_SOCK_FILE) vol = Volume(GLUSTERD_SOCK_FILE, VOLNAME, proto="unix") vol.mount() self.assertTrue(vol.mounted) vol.umount() self.assertFalse(vol.mounted)
def test_umount_error(self): v = Volume("host", "vol") v.mount() _m_glfs_fini = Mock(return_value=-1) with patch("gluster.gfapi.api.glfs_fini", _m_glfs_fini): self.assertRaises(LibgfapiException, v.umount) _m_glfs_fini.assert_called_once_with(v.fs) # Should still be mounted as umount failed. self.assertTrue(v.mounted)
def test_set_logging(self): _m_set_logging = Mock() # Called after mount() v = Volume("host", "vol") with patch("gluster.gfapi.api.glfs_set_logging", _m_set_logging): v.mount() v.set_logging("/path/whatever", 7) self.assertEqual(v.log_file, "/path/whatever") self.assertEqual(v.log_level, 7)
def test_mount_multiple(self): _m_glfs_new = Mock() v = Volume("host", "vol") with patch("gluster.gfapi.api.glfs_new", _m_glfs_new): # Mounting for first time v.mount() _m_glfs_new.assert_called_once_with("vol") _m_glfs_new.reset_mock() for i in range(0, 5): v.mount() self.assertFalse(_m_glfs_new.called) self.assertTrue(v.mounted)
def test_mount_err(self): # Volume does not exist fake_volname = str(uuid4().hex)[:10] vol = Volume(HOST, fake_volname) self.assertRaises(LibgfapiException, vol.mount) self.assertFalse(vol.mounted) # Invalid host - glfs_set_volfile_server will fail fake_hostname = str(uuid4().hex)[:10] vol = Volume(fake_hostname, VOLNAME) self.assertRaises(LibgfapiException, vol.mount) self.assertFalse(vol.mounted)
def setUpClass(cls): cls._saved_glfs_new = gluster.gfapi.api.glfs_new gluster.gfapi.api.glfs_new = _mock_glfs_new cls._saved_glfs_set_volfile_server = \ gluster.gfapi.api.glfs_set_volfile_server gluster.gfapi.api.glfs_set_volfile_server = \ _mock_glfs_set_volfile_server cls._saved_glfs_init = gluster.gfapi.api.glfs_init gluster.gfapi.api.glfs_init = _mock_glfs_init cls._saved_glfs_fini = gluster.gfapi.api.glfs_fini gluster.gfapi.api.glfs_fini = _mock_glfs_fini cls._saved_glfs_close = gluster.gfapi.api.glfs_close gluster.gfapi.api.glfs_close = _mock_glfs_close cls._saved_glfs_closedir = gluster.gfapi.api.glfs_closedir gluster.gfapi.api.glfs_closedir = _mock_glfs_closedir cls._saved_glfs_set_logging = gluster.gfapi.api.glfs_set_logging gluster.gfapi.api.glfs_set_logging = _mock_glfs_set_logging cls.vol = Volume("mockhost", "test") cls.vol.fs = 12345 cls.vol._mounted = True
def test_initialization_success(self): v = Volume("host", "vol", "tcp", 9876) self.assertEqual(v.host, "host") self.assertEqual(v.volname, "vol") self.assertEqual(v.protocol, "tcp") self.assertEqual(v.port, 9876) self.assertFalse(v.mounted)
def setUpClass(cls): cls.vol = Volume(HOST, VOLNAME) ret = cls.vol.mount() if ret == 0: # Cleanup volume cls.vol.rmtree("/", ignore_errors=True) cls.testfile = "testfile"
def test_set_logging(self): # Create volume object instance vol = Volume(HOST, VOLNAME) # Call set_logging before mount() log_file = "/tmp/%s" % (uuid4().hex) vol.set_logging(log_file, 7) # Mount the volume vol.mount() self.assertTrue(vol.mounted) self.assertEqual(vol.log_file, log_file) self.assertEqual(vol.log_level, 7) # Check that log has been created and exists self.assertTrue(os.path.exists(log_file)) # Change the logging after mounting log_file2 = "/tmp/%s" % (uuid4().hex) vol.set_logging(log_file2, 7) self.assertEqual(vol.log_file, log_file2) # Unmount the volume vol.umount() self.assertFalse(vol.mounted)
def _statvfs_data(vol): gvol = Volume("localhost", vol["name"]) gvol.mount() statvfs_data = gvol.statvfs("/") gvol.umount() data = { "volume": vol["name"], "status": vol["status"], "type": vol["type"], "num_bricks": vol["num_bricks"], "size": ((statvfs_data.f_blocks - (statvfs_data.f_bfree - statvfs_data.f_bavail)) * statvfs_data.f_bsize), "avail": statvfs_data.f_bavail * statvfs_data.f_bsize, "itotal": (statvfs_data.f_files - (statvfs_data.f_ffree - statvfs_data.f_favail)), "iavail": statvfs_data.f_favail } data["used"] = data["size"] - data["avail"] data["iused"] = data["itotal"] - data["iavail"] data["pcent"] = 0 data["ipcent"] = 0 if data["size"] > 0: data["pcent"] = data["used"] * 100 / data["size"] if data["itotal"] > 0: data["ipcent"] = data["iused"] * 100 / data["itotal"] data['pcent'] = "%s%%" % data['pcent'] data['ipcent'] = "%s%%" % data['ipcent'] return data
def test_get_volume_id(self): vol = Volume(HOST, VOLNAME) vol.mount() self.assertTrue(vol.mounted) self.assertTrue(vol.volid == None) volid = vol.get_volume_id() self.assertTrue(volid != None) try: volid = uuid.UUID(str(volid)) except ValueError: self.fail("Invalid UUID") self.assertTrue(vol.volid != None) vol.umount()
def test_mount_umount_default(self): # Create volume object instance vol = Volume(HOST, VOLNAME) # Check attribute init self.assertEqual(vol.log_file, "/dev/null") self.assertEqual(vol.log_level, 7) self.assertEqual(vol.hosts[0], HOST) self.assertEqual(vol.volname, VOLNAME) self.assertEqual(vol.port, 24007) self.assertFalse(vol.mounted) # Mount the volume vol.mount() # Check mounted property self.assertTrue(vol.mounted) # Unmount the volume vol.umount() # Check mounted property again self.assertFalse(vol.mounted) # Do a double umount - should not crash or raise exception vol.umount() self.assertFalse(vol.mounted) # Do a double mount - should not crash or raise exception vol.mount() vol.mount() self.assertTrue(vol.mounted) # Unmount the volume vol.umount() self.assertFalse(vol.mounted)
def test_mount_umount_default(self): # Create volume object instance vol = Volume(HOST, VOLNAME) # Check attribute init self.assertEqual(vol.log_file, None) self.assertEqual(vol.log_level, 7) self.assertEqual(vol.host, HOST) self.assertEqual(vol.volname, VOLNAME) self.assertEqual(vol.port, 24007) self.assertFalse(vol.mounted) # Mount the volume vol.mount() # Check mounted property self.assertTrue(vol.mounted) # Unmount the volume vol.umount() # Check mounted property again self.assertFalse(vol.mounted) # Do a double umount - should not crash or raise exception vol.umount() self.assertFalse(vol.mounted) # Do a double mount - should not crash or raise exception vol.mount() vol.mount() self.assertTrue(vol.mounted) # Unmount the volume vol.umount() self.assertFalse(vol.mounted)
def setUpClass(cls): cls.vol = Volume(HOST, VOLNAME) cls.vol.mount() # Cleanup volume cls.vol.rmtree("/", ignore_errors=True)
def test_unix_socket_mount(self): vol = Volume(GLUSTERD_SOCK_FILE, VOLNAME, proto="unix") vol.mount() self.assertTrue(vol.mounted) vol.umount() self.assertFalse(vol.mounted)