def test_acquire_no_lockspace(self): fs = FakeSanlock() fs.write_resource("lockspace", "resource", [("path", 1048576)]) fd = fs.register() with self.assertRaises(fs.SanlockException) as e: fs.acquire("lockspace", "resource", [("path", 1048576)], slkfd=fd) self.assertEqual(e.exception.errno, errno.ENOSPC)
def fake_sanlock(monkeypatch): fs = FakeSanlock() monkeypatch.setattr(clusterlock, "sanlock", fs) # FakeSanlock does not implement the depracated init_resource, so we will # create the resource using write_resource, so we can test acquire and # release. fs.write_resource(LS_NAME, LEASE.name, [(LEASE.path, LEASE.offset)]) return fs
def test_write_resource_failure(self): fs = FakeSanlock() fs.errors["write_resource"] = ExpectedError with self.assertRaises(ExpectedError): fs.write_resource("lockspace", "resource", [("path", 1048576)]) with self.assertRaises(fs.SanlockException) as e: fs.read_resource("path", 1048576) self.assertEqual(e.exception.errno, fs.SANLK_LEADER_MAGIC)
def test_write_read_resource(self): fs = FakeSanlock() fs.write_resource("lockspace", "resource", [("path", 1048576)]) info = fs.read_resource("path", 1048576) expected = {"resource": "resource", "lockspace": "lockspace", "version": 0} self.assertEqual(info, expected)
def test_acquire(self): fs = FakeSanlock() fs.write_resource("lockspace", "resource", [("path", 1048576)]) fs.add_lockspace("lockspace", 1, "path") fd = fs.register() fs.acquire("lockspace", "resource", [("path", 1048576)], slkfd=fd) res = fs.read_resource("path", 1048576) self.assertTrue(res["acquired"], "resource is not acquired")
def test_write_read_resource(self): fs = FakeSanlock() fs.write_resource("lockspace", "resource", [("path", 1048576)]) info = fs.read_resource("path", 1048576) expected = { "resource": "resource", "lockspace": "lockspace", "version": 0 } self.assertEqual(info, expected)
def test_acquire_an_acquired_resource(self): fs = FakeSanlock() fs.write_resource("lockspace", "resource", [("path", 1048576)]) fs.add_lockspace("lockspace", 1, "path") fd = fs.register() fs.acquire("lockspace", "resource", [("path", 1048576)], slkfd=fd) with self.assertRaises(fs.SanlockException) as e: fs.acquire("lockspace", "resource", [("path", 1048576)], slkfd=fd) self.assertEqual(e.exception.errno, errno.EEXIST) res = fs.read_resource("path", 1048576) self.assertTrue(res["acquired"], "resource is not acquired")
def test_read_resource_failure(self): fs = FakeSanlock() fs.errors["read_resource"] = ExpectedError fs.write_resource("lockspace", "resource", [("path", 1048576)]) with self.assertRaises(ExpectedError): fs.read_resource("path", 1048576)