use of com.thinkaurelius.titan.graphdb.database.idassigner.StandardIDPool in project titan by thinkaurelius.
the class IDPoolTest method testStandardIDPool2.
@Test
public void testStandardIDPool2() throws InterruptedException {
final MockIDAuthority idauth = new MockIDAuthority(10000, Integer.MAX_VALUE, 2000);
testIDPoolWith(new IDPoolFactory() {
@Override
public StandardIDPool get(int partitionID) {
return new StandardIDPool(idauth, partitionID, partitionID, Integer.MAX_VALUE, Duration.ofMillis(4000), 0.1);
}
}, 2, 5, 10000);
}
use of com.thinkaurelius.titan.graphdb.database.idassigner.StandardIDPool in project titan by thinkaurelius.
the class IDPoolTest method testAllocationTimeoutAndRecovery.
@Test
public void testAllocationTimeoutAndRecovery() throws BackendException {
IMocksControl ctrl = EasyMock.createStrictControl();
final int partition = 42;
final int idNamespace = 777;
final Duration timeout = Duration.ofSeconds(1L);
final IDAuthority mockAuthority = ctrl.createMock(IDAuthority.class);
// Sleep for two seconds, then throw a backendexception
// this whole delegate could be deleted if we abstracted StandardIDPool's internal executor and stopwatches
expect(mockAuthority.getIDBlock(partition, idNamespace, timeout)).andDelegateTo(new IDAuthority() {
@Override
public IDBlock getIDBlock(int partition, int idNamespace, Duration timeout) throws BackendException {
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
fail();
}
throw new TemporaryBackendException("slow backend");
}
@Override
public List<KeyRange> getLocalIDPartition() throws BackendException {
throw new IllegalArgumentException();
}
@Override
public void setIDBlockSizer(IDBlockSizer sizer) {
throw new IllegalArgumentException();
}
@Override
public void close() throws BackendException {
throw new IllegalArgumentException();
}
@Override
public String getUniqueID() {
throw new IllegalArgumentException();
}
@Override
public boolean supportsInterruption() {
return true;
}
});
expect(mockAuthority.getIDBlock(partition, idNamespace, timeout)).andReturn(new IDBlock() {
@Override
public long numIds() {
return 2;
}
@Override
public long getId(long index) {
return 200;
}
});
expect(mockAuthority.supportsInterruption()).andStubReturn(true);
ctrl.replay();
StandardIDPool pool = new StandardIDPool(mockAuthority, partition, idNamespace, Integer.MAX_VALUE, timeout, 0.1);
try {
pool.nextID();
fail();
} catch (TitanException e) {
}
long nextID = pool.nextID();
assertEquals(200, nextID);
ctrl.verify();
}
use of com.thinkaurelius.titan.graphdb.database.idassigner.StandardIDPool in project titan by thinkaurelius.
the class IDPoolTest method testPoolExhaustion2.
@Test
public void testPoolExhaustion2() {
int idUpper = 10000;
MockIDAuthority idauth = new MockIDAuthority(200, idUpper);
StandardIDPool pool = new StandardIDPool(idauth, 0, 1, Integer.MAX_VALUE, Duration.ofMillis(2000), 0.2);
for (int i = 1; i < idUpper * 2; i++) {
try {
long id = pool.nextID();
assertTrue(id < idUpper);
} catch (IDPoolExhaustedException e) {
assertEquals(idUpper, i);
break;
}
}
}
Aggregations