use of com.cinchapi.concourse.server.model.Value in project concourse by cinchapi.
the class RangeLockServiceTest method testReadGteisRangeBlockedIfWritingGtValue.
@Test
public void testReadGteisRangeBlockedIfWritingGtValue() throws InterruptedException {
final Text key = Variables.register("key", TestData.getText());
final Value value = Variables.register("value", TestData.getValue());
final CountDownLatch startLatch = new CountDownLatch(1);
final CountDownLatch finishLatch = new CountDownLatch(1);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
Value gtValue = Variables.register("gtValue", increase(value));
rangeLockService.getWriteLock(key, gtValue).lock();
startLatch.countDown();
try {
finishLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
rangeLockService.getWriteLock(key, gtValue).unlock();
}
});
t.start();
startLatch.await();
Assert.assertTrue(rangeLockService.isRangeBlocked(LockType.READ, RangeToken.forReading(key, Operator.GREATER_THAN_OR_EQUALS, value)));
finishLatch.countDown();
}
use of com.cinchapi.concourse.server.model.Value in project concourse by cinchapi.
the class RangeLockServiceTest method testReadGteIsNotRangeBlockedIfWritingLtValue.
@Test
public void testReadGteIsNotRangeBlockedIfWritingLtValue() throws InterruptedException {
final Text key = Variables.register("key", TestData.getText());
final Value value = Variables.register("value", TestData.getValue());
final CountDownLatch startLatch = new CountDownLatch(1);
final CountDownLatch finishLatch = new CountDownLatch(1);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
Value ltValue = Variables.register("ltValue", decrease(value));
rangeLockService.getWriteLock(key, ltValue).lock();
startLatch.countDown();
try {
finishLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
rangeLockService.getWriteLock(key, ltValue).unlock();
}
});
t.start();
startLatch.await();
Assert.assertFalse(rangeLockService.isRangeBlocked(LockType.READ, RangeToken.forReading(key, Operator.GREATER_THAN_OR_EQUALS, value)));
finishLatch.countDown();
}
use of com.cinchapi.concourse.server.model.Value in project concourse by cinchapi.
the class RangeLockServiceTest method testReadBwIsRangedBlockedIfWritingLtHigherValue.
@Test
public void testReadBwIsRangedBlockedIfWritingLtHigherValue() throws InterruptedException {
final Text key = Variables.register("key", TestData.getText());
final Value value = Variables.register("value", TestData.getValue());
final Value value1 = Variables.register("value1", increase(value));
final CountDownLatch startLatch = new CountDownLatch(1);
final CountDownLatch finishLatch = new CountDownLatch(1);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
Value ltHigherValue = Variables.register("ltHigherValue", decrease(value1, value));
rangeLockService.getWriteLock(key, ltHigherValue).lock();
startLatch.countDown();
try {
finishLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
rangeLockService.getWriteLock(key, ltHigherValue).unlock();
}
});
t.start();
startLatch.await();
Assert.assertTrue(rangeLockService.isRangeBlocked(LockType.READ, RangeToken.forReading(key, Operator.BETWEEN, value, value1)));
finishLatch.countDown();
}
use of com.cinchapi.concourse.server.model.Value in project concourse by cinchapi.
the class RangeLockServiceTest method testReadLteisRangeBlockedIfWritingEqValue.
@Test
public void testReadLteisRangeBlockedIfWritingEqValue() throws InterruptedException {
final Text key = Variables.register("key", TestData.getText());
final Value value = Variables.register("value", TestData.getValue());
final CountDownLatch startLatch = new CountDownLatch(1);
final CountDownLatch finishLatch = new CountDownLatch(1);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
rangeLockService.getWriteLock(key, value).lock();
startLatch.countDown();
try {
finishLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
rangeLockService.getWriteLock(key, value).unlock();
}
});
t.start();
startLatch.await();
Assert.assertTrue(rangeLockService.isRangeBlocked(LockType.READ, RangeToken.forReading(key, Operator.LESS_THAN_OR_EQUALS, value)));
finishLatch.countDown();
}
use of com.cinchapi.concourse.server.model.Value in project concourse by cinchapi.
the class RangeLockServiceTest method testReadEqualsIsRangeBlockedIfWritingSameValue.
@Test
public void testReadEqualsIsRangeBlockedIfWritingSameValue() throws InterruptedException {
final Text key = Variables.register("key", TestData.getText());
final Value value = Variables.register("value", TestData.getValue());
final CountDownLatch startLatch = new CountDownLatch(1);
final CountDownLatch finishLatch = new CountDownLatch(1);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
rangeLockService.getWriteLock(key, value).lock();
startLatch.countDown();
try {
finishLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
rangeLockService.getWriteLock(key, value).unlock();
}
});
t.start();
startLatch.await();
Assert.assertTrue(rangeLockService.isRangeBlocked(LockType.READ, RangeToken.forReading(key, Operator.EQUALS, value)));
finishLatch.countDown();
}
Aggregations