public void scan()

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");
    }