in hugegraph-store/hg-store-test/src/main/java/org/apache/hugegraph/store/HgSessionManagerRaftFakePDTest.java [491:596]
public void scanIterator() {
HgStoreTestUtil.println("--- test scanIterator ---");
String tableName = "UNIT_SCAN";
String keyName = "SCAN-ITER";
HgStoreSession session = getStoreSession();
HgStoreTestUtil.batchPut(session, tableName, keyName, 10000);
int count = 0;
int limit = 0;
int max = 99999;
HgKvIterator<HgKvEntry> iterator = null;
HgStoreTestUtil.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) {
HgStoreTestUtil.println("-- test NoSuchElementException --");
Assert.assertTrue(t instanceof NoSuchElementException);
}
HgStoreTestUtil.println("-- test limit 1 to 10 --");
for (int i = 1; i <= 10; i++) {
HgStoreTestUtil.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();
HgStoreTestUtil.println(entry);
}
Assert.assertEquals(limit, count);
}
HgStoreTestUtil.println("-- test limit 1 to 10 not enough --");
for (int i = 1; i <= 10; i++) {
HgStoreTestUtil.println("- limit " + i + " -");
limit = i;
iterator = session.scanIterator(tableName,
HgStoreTestUtil.toAllPartitionKey(keyName + "-00001"),
HgStoreTestUtil.toAllPartitionKey(keyName + "-00005"),
limit);
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
HgStoreTestUtil.println(entry);
}
if (i <= 5) {
Assert.assertEquals(limit, count);
} else {
Assert.assertEquals(5, count);
}
}
HgStoreTestUtil.println("-- test limit 0 (no limit) --");
limit = 0;
iterator =
session.scanIterator(tableName, HgStoreTestUtil.toAllPartitionKey(keyName + "-0"),
HgStoreTestUtil.toAllPartitionKey(keyName + "-1"), limit);
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
if (count % 1000 == 0) {
HgStoreTestUtil.println(entry);
}
if (count >= max) break;
}
Assert.assertEquals(10000, count);
HgStoreTestUtil.println("-- test scan all --");
iterator = session.scanIterator(tableName);
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
if (count % 1000 == 0) {
HgStoreTestUtil.println(entry);
}
if (count >= max) break;
}
Assert.assertEquals(10000, count);
HgStoreTestUtil.println("-- test scan prefix --");
iterator =
session.scanIterator(tableName, HgStoreTestUtil.toAllPartitionKey(keyName + "-01"));
count = 0;
while (iterator.hasNext()) {
count++;
HgKvEntry entry = iterator.next();
if (count % 100 == 0) {
HgStoreTestUtil.println(entry);
}
if (count >= max) break;
}
Assert.assertEquals(1000, count);
}