in hugegraph-store/hg-store-test/src/main/java/org/apache/hugegraph/store/HgSessionManagerTest.java [320:486]
public void scan() {
HgStoreTestUtil.println("--- test scanIterator ---");
String tableName = "UNIT_SCAN_ITERATOR";
String keyName = "SCAN-ITER";
int keyAmt = 100;
HgStoreSession session = getStoreSession();
if (HgStoreTestUtil.amountOf(
session.scanIterator(tableName, HgStoreTestUtil.toAllPartitionKey(keyName), 10)) <
10) {
HgStoreTestUtil.batchPut(session, tableName, keyName, keyAmt);
}
int count = 0;
int limit = 0;
int max = 99999;
HgKvIterator<HgKvEntry> iterator = null;
// println("-- test scan all --");
iterator = session.scanIterator(tableName);
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
if (count % 10 == 0) {
// println(entry);
}
if (count >= max) break;
}
iterator.close();
Assert.assertEquals(keyAmt, count);
// println("-- test 0 element --");
iterator = session.scanIterator(tableName, HgStoreTestUtil.toAllPartitionKey("__SCAN-001"),
HgStoreTestUtil.toAllPartitionKey("__SCAN-100"), 0);
Assert.assertFalse(iterator.hasNext());
try {
iterator.next();
Assert.fail();
} catch (Throwable t) {
// println("-- test NoSuchElementException --");
Assert.assertTrue(t instanceof NoSuchElementException);
}
iterator.close();
// println("-- test limit 1 to 10 --");
for (int i = 1; i <= 10; i++) {
// println("- limit " + i + " -");
limit = i;
iterator = session.scanIterator(tableName,
HgStoreTestUtil.toAllPartitionKey(keyName + "-0"),
HgStoreTestUtil.toAllPartitionKey(keyName + "-1"),
limit);
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
// println(entry);
}
iterator.close();
Assert.assertEquals(limit, count);
}
// println("-- test limit 1 to 10 not enough --");
for (int i = 1; i <= 10; i++) {
// println("- limit " + i + " -");
limit = i;
iterator = session.scanIterator(tableName
, HgStoreTestUtil.toAllPartitionKey(keyName + "-001")
, HgStoreTestUtil.toAllPartitionKey(keyName + "-005"), limit);
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
// println(entry);
}
iterator.close();
if (i <= 5) {
Assert.assertEquals(limit, count);
} else {
Assert.assertEquals(5, count);
}
}
// println("-- test limit 0 (no limit) --");
limit = 0;
iterator =
session.scanIterator(tableName, HgStoreTestUtil.toAllPartitionKey(keyName + "-0"),
HgStoreTestUtil.toAllPartitionKey(keyName + "-2"), limit);
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
if (count % 10 == 0) {
// println(entry);
}
if (count >= max) break;
}
iterator.close();
Assert.assertEquals(keyAmt, count);
// println("-- test scan prefix --");
iterator =
session.scanIterator(tableName, HgStoreTestUtil.toAllPartitionKey(keyName + "-"));
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
if (count % 10 == 0) {
// println(entry);
}
if (count >= max) break;
}
iterator.close();
Assert.assertEquals(keyAmt, count);
// println("-- test scan via hash code --");
iterator = session.scanIterator(tableName, 0, 65535, HgKvStore.SCAN_HASHCODE, EMPTY_BYTES);
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
if (count % 10 == 0) {
// println(entry);
}
if (count >= max) break;
}
iterator.close();
Assert.assertEquals(keyAmt, count);
// println("-- test range limit scan type --");
iterator = session.scanIterator(tableName
, HgStoreTestUtil.toAllPartitionKey("WWWWWWW")
, HgStoreClientConst.EMPTY_OWNER_KEY
, 0, HgKvStore.SCAN_ANY, EMPTY_BYTES
);
iterator.close();
// println("-- test range limit scan type -session.scanIterator over--");
Assert.assertEquals(0, HgStoreTestUtil.amountOf(iterator));
// println("-- test range limit scan type -session.assertEquals over--");
// println("-- test range limit scan type -100");
iterator = session.scanIterator(tableName
, HgStoreTestUtil.toAllPartitionKey(keyName + "-100")
, HgStoreClientConst.EMPTY_OWNER_KEY
, 0, HgKvStore.SCAN_ANY, EMPTY_BYTES
);
// println("-- test range limit scan type -100 over");
Assert.assertEquals(1, HgStoreTestUtil.amountOf(iterator));
// println("-- test range limit scan type -100 assertEquals 1");
// println("-- test range limit scan type -51 ");
iterator = session.scanIterator(tableName
, HgStoreTestUtil.toAllPartitionKey(keyName + "-051")
, HgStoreClientConst.EMPTY_OWNER_KEY
);
// println("-- test range limit scan type -51 over");
//HgStoreTestUtil.println(iterator);
Assert.assertEquals(50, HgStoreTestUtil.amountOf(iterator));
// println("-- test range limit scan type -51 assertEquals");
//TODO: add more...
HgStoreTestUtil.println("-- test scanIterator end");
}