use of org.bboxdb.network.client.future.TupleListFuture in project bboxdb by jnidzwetzki.
the class RequestWorker method runThread.
@Override
protected void runThread() throws Exception {
while (!Thread.currentThread().isInterrupted()) {
try {
final TupleListFuture future = queue.take();
synchronized (activeWorker) {
activeWorker.incrementAndGet();
activeWorker.notifyAll();
}
if (future != null) {
future.waitForAll();
final Iterator<Tuple> iter = future.iterator();
while (iter.hasNext()) {
iter.next();
}
}
synchronized (activeWorker) {
activeWorker.decrementAndGet();
activeWorker.notifyAll();
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return;
}
}
}
use of org.bboxdb.network.client.future.TupleListFuture in project bboxdb by jnidzwetzki.
the class TestNetworkCommunication method testGetByKey.
/**
* Insert a tuple and request it via key
* @throws ExecutionException
* @throws InterruptedException
* @throws BBoxDBException
*/
@Test(timeout = 60000)
public void testGetByKey() throws InterruptedException, ExecutionException, BBoxDBException {
System.out.println("=== Running testGetByKey");
final String table = DISTRIBUTION_GROUP + "_relation12333";
final BBoxDBConnection bboxdbConnection = connectToServer();
final BBoxDBClient bboxDBClient = bboxdbConnection.getBboxDBClient();
// Create table
final EmptyResultFuture resultCreateTable = bboxDBClient.createTable(table, new TupleStoreConfiguration());
resultCreateTable.waitForAll();
Assert.assertFalse(resultCreateTable.isFailed());
// Inside our bbox query
final Tuple tuple1 = new Tuple("abc", new BoundingBox(0d, 1d, 0d, 1d), "abc".getBytes());
final EmptyResultFuture result1 = bboxDBClient.insertTuple(table, tuple1);
result1.waitForAll();
final TupleListFuture future = bboxDBClient.queryKey(table, "abc");
future.waitForAll();
final List<Tuple> resultList = Lists.newArrayList(future.iterator());
Assert.assertEquals(1, resultList.size());
System.out.println("=== End testGetByKey");
disconnect(bboxDBClient);
}
use of org.bboxdb.network.client.future.TupleListFuture in project bboxdb by jnidzwetzki.
the class TestNetworkCommunication method testQueriesWithoutTables.
/**
* Start a bounding box query without inserted tuples
* @throws ExecutionException
* @throws InterruptedException
* @throws BBoxDBException
*/
@Test(timeout = 60000)
public void testQueriesWithoutTables() throws InterruptedException, ExecutionException, BBoxDBException {
final BBoxDBConnection bboxdbConnection = connectToServer();
final BBoxDBClient bboxDBClient = bboxdbConnection.getBboxDBClient();
final String table = DISTRIBUTION_GROUP + "_nonexisting";
System.out.println("== Waiting for queryBoundingBox");
final BoundingBox boundingBox = new BoundingBox(-1d, 2d, -1d, 2d);
final TupleListFuture result1 = bboxDBClient.queryBoundingBox(table, boundingBox);
result1.setRetryPolicy(FutureRetryPolicy.RETRY_POLICY_NONE);
result1.waitForAll();
Assert.assertTrue(result1.isFailed());
Assert.assertEquals(ErrorMessages.ERROR_TABLE_NOT_EXIST, result1.getMessage(0));
System.out.println("== Waiting for queryKey");
final TupleListFuture result2 = bboxDBClient.queryKey(table, "abc");
result2.setRetryPolicy(FutureRetryPolicy.RETRY_POLICY_NONE);
result2.waitForAll();
Assert.assertTrue(result2.isFailed());
Assert.assertEquals(ErrorMessages.ERROR_TABLE_NOT_EXIST, result2.getMessage(0));
System.out.println("== Waiting for queryInsertedTime");
final TupleListFuture result3 = bboxDBClient.queryInsertedTime(table, 1234);
result3.setRetryPolicy(FutureRetryPolicy.RETRY_POLICY_NONE);
result3.waitForAll();
Assert.assertTrue(result3.isFailed());
Assert.assertEquals(ErrorMessages.ERROR_TABLE_NOT_EXIST, result3.getMessage(0));
System.out.println("== Waiting for queryVersionTime");
final TupleListFuture result4 = bboxDBClient.queryVersionTime(table, 1234);
result4.setRetryPolicy(FutureRetryPolicy.RETRY_POLICY_NONE);
result4.waitForAll();
Assert.assertTrue(result4.isFailed());
Assert.assertEquals(ErrorMessages.ERROR_TABLE_NOT_EXIST, result4.getMessage(0));
System.out.println("== Waiting for queryBoundingBoxAndTime");
final TupleListFuture result5 = bboxDBClient.queryBoundingBoxAndTime(table, boundingBox, 1234);
result5.setRetryPolicy(FutureRetryPolicy.RETRY_POLICY_NONE);
result5.waitForAll();
Assert.assertTrue(result5.isFailed());
Assert.assertEquals(ErrorMessages.ERROR_TABLE_NOT_EXIST, result5.getMessage(0));
disconnect(bboxDBClient);
}
use of org.bboxdb.network.client.future.TupleListFuture in project bboxdb by jnidzwetzki.
the class TestNetworkCommunication method testPaging.
/**
* Insert some tuples and request it via paging
* @throws ExecutionException
* @throws InterruptedException
* @throws BBoxDBException
*/
@Test(timeout = 60000)
public void testPaging() throws InterruptedException, ExecutionException, BBoxDBException {
System.out.println("=== Running testPaging");
final String table = DISTRIBUTION_GROUP + "_relation9999";
final BBoxDBConnection bboxdbConnection = connectToServer();
final BBoxDBClient bboxDBClient = bboxdbConnection.getBboxDBClient();
// Create table
final EmptyResultFuture resultCreateTable = bboxDBClient.createTable(table, new TupleStoreConfiguration());
resultCreateTable.waitForAll();
Assert.assertFalse(resultCreateTable.isFailed());
// Inside our bbox query
final Tuple tuple1 = new Tuple("abc", new BoundingBox(0d, 1d, 0d, 1d), "abc".getBytes());
final EmptyResultFuture result1 = bboxDBClient.insertTuple(table, tuple1);
final Tuple tuple2 = new Tuple("def", new BoundingBox(0d, 0.5d, 0d, 0.5d), "def".getBytes());
final EmptyResultFuture result2 = bboxDBClient.insertTuple(table, tuple2);
final Tuple tuple3 = new Tuple("geh", new BoundingBox(0.5d, 1.5d, 0.5d, 1.5d), "geh".getBytes());
final EmptyResultFuture result3 = bboxDBClient.insertTuple(table, tuple3);
final Tuple tuple4 = new Tuple("ijk", new BoundingBox(-10d, -9d, -10d, -9d), "ijk".getBytes());
final EmptyResultFuture result4 = bboxDBClient.insertTuple(table, tuple4);
final Tuple tuple5 = new Tuple("lmn", new BoundingBox(1d, 2d, 1d, 2d), "lmn".getBytes());
final EmptyResultFuture result5 = bboxDBClient.insertTuple(table, tuple5);
result1.waitForAll();
result2.waitForAll();
result3.waitForAll();
result4.waitForAll();
result5.waitForAll();
// Without paging
System.out.println("Pages = unlimited");
bboxDBClient.setPagingEnabled(false);
bboxDBClient.setTuplesPerPage((short) 0);
final TupleListFuture future = bboxDBClient.queryBoundingBox(table, new BoundingBox(-10d, 10d, -10d, 10d));
future.waitForAll();
final List<Tuple> resultList = Lists.newArrayList(future.iterator());
Assert.assertEquals(5, resultList.size());
// With paging (tuples per page 10)
System.out.println("Pages = 10");
bboxDBClient.setPagingEnabled(true);
bboxDBClient.setTuplesPerPage((short) 10);
final TupleListFuture future2 = bboxDBClient.queryBoundingBox(table, new BoundingBox(-10d, 10d, -10d, 10d));
future2.waitForAll();
final List<Tuple> resultList2 = Lists.newArrayList(future2.iterator());
Assert.assertEquals(5, resultList2.size());
// With paging (tuples per page 5)
System.out.println("Pages = 5");
bboxDBClient.setPagingEnabled(true);
bboxDBClient.setTuplesPerPage((short) 5);
final TupleListFuture future3 = bboxDBClient.queryBoundingBox(table, new BoundingBox(-10d, 10d, -10d, 10d));
future3.waitForAll();
final List<Tuple> resultList3 = Lists.newArrayList(future3.iterator());
Assert.assertEquals(5, resultList3.size());
// With paging (tuples per page 2)
System.out.println("Pages = 2");
bboxDBClient.setPagingEnabled(true);
bboxDBClient.setTuplesPerPage((short) 2);
final TupleListFuture future4 = bboxDBClient.queryBoundingBox(table, new BoundingBox(-10d, 10d, -10d, 10d));
System.out.println("Client is waiting on: " + future4);
future4.waitForAll();
final List<Tuple> resultList4 = Lists.newArrayList(future4.iterator());
Assert.assertEquals(5, resultList4.size());
// With paging (tuples per page 1)
System.out.println("Pages = 1");
bboxDBClient.setPagingEnabled(true);
bboxDBClient.setTuplesPerPage((short) 1);
final TupleListFuture future5 = bboxDBClient.queryBoundingBox(table, new BoundingBox(-10d, 10d, -10d, 10d));
future5.waitForAll();
final List<Tuple> resultList5 = Lists.newArrayList(future5.iterator());
Assert.assertEquals(5, resultList5.size());
System.out.println("=== End testPaging");
disconnect(bboxDBClient);
}
use of org.bboxdb.network.client.future.TupleListFuture in project bboxdb by jnidzwetzki.
the class NetworkQueryHelper method executeBoudingboxAndTimeQuery.
/**
* Execute a bounding box and time query
* @param bboxDBConnection
* @throws BBoxDBException
* @throws InterruptedException
*/
public static void executeBoudingboxAndTimeQuery(final BBoxDB bboxDBClient, final String distributionGroup) throws BBoxDBException, InterruptedException {
final String table = distributionGroup + "_relation9990";
// Create table
final EmptyResultFuture resultCreateTable = bboxDBClient.createTable(table, new TupleStoreConfiguration());
resultCreateTable.waitForAll();
Assert.assertFalse(resultCreateTable.isFailed());
// Inside our bbox query
final Tuple tuple1 = new Tuple("abc", new BoundingBox(0d, 1d, 0d, 1d), "abc".getBytes(), 4);
final EmptyResultFuture result1 = bboxDBClient.insertTuple(table, tuple1);
final Tuple tuple2 = new Tuple("def", new BoundingBox(0d, 0.5d, 0d, 0.5d), "def".getBytes(), 4);
final EmptyResultFuture result2 = bboxDBClient.insertTuple(table, tuple2);
final Tuple tuple3 = new Tuple("geh", new BoundingBox(0.5d, 1.5d, 0.5d, 1.5d), "geh".getBytes(), 1);
final EmptyResultFuture result3 = bboxDBClient.insertTuple(table, tuple3);
// Outside our bbox query
final Tuple tuple4 = new Tuple("ijk", new BoundingBox(-10d, -9d, -10d, -9d), "ijk".getBytes());
final EmptyResultFuture result4 = bboxDBClient.insertTuple(table, tuple4);
final Tuple tuple5 = new Tuple("lmn", new BoundingBox(1000d, 1001d, 1000d, 1001d), "lmn".getBytes());
final EmptyResultFuture result5 = bboxDBClient.insertTuple(table, tuple5);
result1.waitForAll();
result2.waitForAll();
result3.waitForAll();
result4.waitForAll();
result5.waitForAll();
final TupleListFuture future = bboxDBClient.queryBoundingBoxAndTime(table, new BoundingBox(-1d, 2d, -1d, 2d), 2);
future.waitForAll();
final List<Tuple> resultList = Lists.newArrayList(future.iterator());
Assert.assertEquals(3, resultList.size());
Assert.assertTrue(resultList.contains(tuple1));
Assert.assertTrue(resultList.contains(tuple2));
Assert.assertTrue(resultList.contains(tuple3));
Assert.assertFalse(resultList.contains(tuple4));
Assert.assertFalse(resultList.contains(tuple5));
}
Aggregations