Assert.assertNotNull(token3); Assert.assertEquals(ImmutableSet.of(token1, token2, token3), server.getTokens(client)); Assert.assertEquals(5, server.getMinLockedInVersionId(client).longValue()); Assert.assertNull(server.getMinLockedInVersionId(LockClient.ANONYMOUS)); Assert.assertEquals(ImmutableSet.of(token1, token3), server.getTokens(client)); Assert.assertEquals(10, server.getMinLockedInVersionId(client).longValue()); Assert.assertNull(server.getMinLockedInVersionId(LockClient.ANONYMOUS)); Assert.assertTrue(server.getTokens(client).isEmpty()); Assert.assertNull(server.getMinLockedInVersionId(client));
/** Convert a write lock to a read lock */ @Test public void testConvertWriteToRead() throws Exception { final LockRequest request1 = LockRequest.builder(ImmutableSortedMap.of(lock1, LockMode.WRITE)) .build(); final LockRequest request2 = LockRequest.builder(ImmutableSortedMap.of(lock1, LockMode.READ)) .build(); HeldLocksToken token1 = server.lockWithFullLockResponse(client, request1).getToken(); Assert.assertNotNull(token1); Assert.assertEquals(client, token1.getClient()); Assert.assertEquals(request1.getLockDescriptors(), token1.getLockDescriptors()); Future<?> future = executor.submit((Callable<Void>) () -> { barrier.await(); HeldLocksToken validToken = server.lockWithFullLockResponse(LockClient.ANONYMOUS, request2).getToken(); Assert.assertNotNull(validToken); Assert.assertEquals(LockClient.ANONYMOUS, validToken.getClient()); Assert.assertEquals(request2.getLockDescriptors(), validToken.getLockDescriptors()); Assert.assertTrue(server.unlock(validToken)); return null; }); barrier.await(); Thread.sleep(50); HeldLocksToken token2 = server.lockWithFullLockResponse(client, request2).getToken(); Assert.assertNotNull(token2); Assert.assertEquals(client, token2.getClient()); Assert.assertEquals(request2.getLockDescriptors(), token2.getLockDescriptors()); Assert.assertTrue(server.unlock(token1)); future.get(); Assert.assertTrue(server.unlock(token2)); Assert.assertTrue(server.getTokens(client).isEmpty()); }
Assert.assertTrue(server.getTokens(client).isEmpty()); Assert.assertNull(token2); server.unlockAndFreeze(token); Assert.assertTrue(server.getTokens(client).isEmpty()); token3 = server.lockWithFullLockResponse(client, request).getToken(); Assert.assertNull(token3); Assert.assertTrue(server.getTokens(client).isEmpty()); HeldLocksToken token4 = server.lockWithFullLockResponse(client, LockRequest.builder(ImmutableSortedMap.of( lock2, LockMode.WRITE)).doNotBlock().build()).getToken(); Assert.assertNotNull(token4); Assert.assertEquals(ImmutableSet.of(token4), server.getTokens(client)); token = server.lockWithFullLockResponse(client, request).getToken(); Assert.assertNull(token);
Assert.assertEquals(request.getLockDescriptors(), token.getLockDescriptors()); server.unlock(token); Assert.assertTrue(server.getTokens(client).isEmpty());
Assert.assertNotNull(token3); Assert.assertEquals(ImmutableSet.of(token1, token2, token3), server.getTokens(client)); Assert.assertEquals(5, server.getMinLockedInVersionId(client).longValue()); Assert.assertEquals(ImmutableSet.of(token1, token3), server.getTokens(client)); Assert.assertEquals(10, server.getMinLockedInVersionId(client).longValue()); Assert.assertTrue(server.getTokens(client).isEmpty()); Assert.assertNull(server.getMinLockedInVersionId(client));
- token.getExpirationDateMs()); server.unlock(token); Assert.assertTrue(server.getTokens(client).isEmpty());
ImmutableSortedMap.of(lock1, LockMode.READ)).doNotBlock().build()).getToken(); Assert.assertNotNull(token); Assert.assertEquals(ImmutableSet.of(token), server.getTokens(client)); try { server.getTokens(LockClient.ANONYMOUS); Assert.fail(); } catch (IllegalArgumentException expected) { server.getTokens(LockClient.INTERNAL_LOCK_GRANT_CLIENT); Assert.fail(); } catch (IllegalArgumentException expected) { Assert.assertTrue(server.getTokens(client).isEmpty());
Assert.assertNotNull(token3); Assert.assertEquals(ImmutableSet.of(token1, token2, token3), server.getTokens(client)); Assert.assertEquals(5, server.getMinLockedInVersionId(client).longValue()); Assert.assertNull(server.getMinLockedInVersionId(LockClient.ANONYMOUS)); Assert.assertEquals(ImmutableSet.of(token1, token3), server.getTokens(client)); Assert.assertEquals(10, server.getMinLockedInVersionId(client).longValue()); Assert.assertNull(server.getMinLockedInVersionId(LockClient.ANONYMOUS)); Assert.assertTrue(server.getTokens(client).isEmpty()); Assert.assertNull(server.getMinLockedInVersionId(client));
server.unlock(token2); server.unlock(token3); Assert.assertTrue(server.getTokens(client).isEmpty());