in hugegraph-store/hg-store-test/src/main/java/org/apache/hugegraph/store/HgSessionManagerTest.java [612:755]
public void scanBatch() {
HgStoreTestUtil.println("--- test scanBatch ---");
String tableName = "UNIT_SCAN_BATCH_1";
String keyName = "SCAN-BATCH";
int keyAmt = 10_000;
HgStoreSession session = getStoreSession();
if (HgStoreTestUtil.amountOf(
session.scanIterator(tableName, HgStoreTestUtil.toAllPartitionKey(keyName),
keyAmt)) < keyAmt) {
HgStoreTestUtil.batchPut(session, tableName, keyName, keyAmt);
}
Assert.assertEquals(keyAmt, HgStoreTestUtil.amountOf(session.scanIterator(tableName)));
List<HgKvIterator<HgKvEntry>> iterators = null;
List<HgOwnerKey> prefixes = null;
List<HgOwnerKey> startList = Arrays.asList(
HgStoreTestUtil.toAllPartitionKey(keyName + "-001")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-003")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-005")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-007")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-009")
);
List<HgOwnerKey> endList = Arrays.asList(
HgStoreTestUtil.toAllPartitionKey(keyName + "-002")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-004")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-006")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-008")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-010")
);
List<HgOwnerKey> prefixList = Arrays.asList(
HgStoreTestUtil.toAllPartitionKey(keyName + "-001")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-002")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-003")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-004")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-005")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-006")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-007")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-008")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-009")
);
HgStoreTestUtil.println("-- test scan-batch all --");
HgScanQuery scanQuery = HgScanQuery.tableOf(tableName);
iterators = session.scanBatch(scanQuery);
Assert.assertEquals(3, iterators.size());
Assert.assertEquals(keyAmt, HgStoreTestUtil.println(iterators));
HgStoreTestUtil.println("-- test scan-batch prefix --");
iterators = session.scanBatch(
HgScanQuery.prefixOf(tableName, prefixList)
);
Assert.assertEquals(3, iterators.size());
Assert.assertEquals(900,
iterators.parallelStream().mapToInt(e -> HgStoreTestUtil.amountOf(e))
.sum()
);
HgStoreTestUtil.println("-- test scan-batch range --");
iterators = session.scanBatch(HgScanQuery.rangeOf(tableName, startList, endList));
Assert.assertEquals(3, iterators.size());
Assert.assertEquals(
HgStoreTestUtil.amountOf(
session.scanIterator(tableName
, HgStoreTestUtil.toAllPartitionKey(keyName + "-001")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-010")
)
)
,
iterators.parallelStream().mapToInt(e -> HgStoreTestUtil.amountOf(e)).sum()
);
HgStoreTestUtil.println("-- test scan-batch limit --");
int limit = 1;
iterators = session.scanBatch(
HgScanQuery.rangeOf(tableName, startList, endList)
.builder()
.setLimit(limit)
.build()
);
//HgStoreTestUtil.println(iterators);
Assert.assertEquals(iterators.size() * limit,
iterators.parallelStream().mapToInt(e -> HgStoreTestUtil.amountOf(e))
.sum()
);
HgStoreTestUtil.println("-- test scan-batch multi-table --");
if (HgStoreTestUtil.amountOf(
session.scanIterator("g+oe", HgStoreTestUtil.toAllPartitionKey(keyName), keyAmt)) <
keyAmt) {
HgStoreTestUtil.batchPut(session, "g+oe", keyName, keyAmt);
HgStoreTestUtil.batchPut(session, "g+ie", keyName, keyAmt);
}
prefixes = Collections.singletonList(HgStoreTestUtil.toAllPartitionKey(keyName));
tableName = "g+oe,g+ie";
iterators = session.scanBatch(
HgScanQuery.prefixOf(tableName, prefixes)
);
//HgStoreTestUtil.println(iterators);
Assert.assertEquals(keyAmt * 2, HgStoreTestUtil.amountIn(iterators));
iterators = session.scanBatch(
HgScanQuery.prefixOf(tableName, prefixList)
);
Assert.assertEquals(900 * 2, HgStoreTestUtil.amountIn(iterators));
HgStoreTestUtil.println("-- test scan-batch per-key-limit --");
tableName = "PER_KEY_LIMIT_TABLE";
keyName = "PER_KEY_LIMIT";
if (HgStoreTestUtil.amountOf(
session.scanIterator(tableName, HgStoreTestUtil.toAllPartitionKey(keyName),
keyAmt)) < keyAmt) {
HgStoreTestUtil.batchPut(session, tableName, keyName, keyAmt);
}
prefixes = Arrays.asList(
HgStoreTestUtil.toAllPartitionKey(keyName + "-01")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-02")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-03")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-04")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-05")
);
iterators = session.scanBatch(
HgScanQuery.prefixOf(tableName, prefixes).builder().setPerKeyLimit(1).build()
);
//HgStoreTestUtil.println(iterators);
Assert.assertEquals(prefixes.size() * 3, HgStoreTestUtil.amountIn(iterators));
}