From 36d010973fd343bb56e89ab59b5c5818244378b1 Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Thu, 24 Mar 2022 14:47:08 +0800 Subject: [PATCH] [to #464] add unit tests for exported API of RawKVClient (#471) Co-authored-by: Jian Zhang --- .../java/org/tikv/raw/RawKVClientTest.java | 81 ++++++++++++++++++- 1 file changed, 77 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/tikv/raw/RawKVClientTest.java b/src/test/java/org/tikv/raw/RawKVClientTest.java index c81c6fc97a..d4ad7bdbe0 100644 --- a/src/test/java/org/tikv/raw/RawKVClientTest.java +++ b/src/test/java/org/tikv/raw/RawKVClientTest.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; @@ -43,6 +44,7 @@ import java.util.stream.Collectors; import org.apache.commons.lang3.RandomStringUtils; import org.junit.After; import org.junit.Assert; +import org.junit.Assume; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -61,9 +63,9 @@ import org.tikv.common.util.FastByteComparisons; import org.tikv.common.util.Pair; import org.tikv.common.util.ScanOption; import org.tikv.kvproto.Kvrpcpb; +import org.tikv.kvproto.Kvrpcpb.KvPair; public class RawKVClientTest extends BaseRawKVTest { - private static final String RAW_PREFIX = "raw_\u0001_"; private static final int KEY_POOL_SIZE = 1000000; private static final int TEST_CASES = 10000; @@ -326,6 +328,76 @@ public class RawKVClientTest extends BaseRawKVTest { client.deleteRange(ByteString.EMPTY, ByteString.EMPTY); } + @Test + public void batchDeleteTest() { + int cnt = 8; + List keys = new ArrayList<>(); + for (int i = 0; i < cnt; i++) { + ByteString key = getRandomRawKey().concat(ByteString.copyFromUtf8("batch_delete_test")); + client.put(key, key); + keys.add(key); + } + + client.batchDelete(keys); + + for (int i = 0; i < cnt; i++) { + checkNotExist(keys.get(i)); + } + } + + @Test + public void scan0test() { + int cnt = 8; + ByteString prefix = ByteString.copyFromUtf8("scan0_test"); + client.deletePrefix(prefix); + List keys = new ArrayList<>(); + for (int i = 0; i < cnt; i++) { + ByteString key = prefix.concat(getRandomRawKey()); + client.put(key, key); + keys.add(key); + } + + int i = 0; + Iterator iter = client.scan0(prefix, ByteString.EMPTY, cnt); + while (iter.hasNext()) { + i++; + KvPair pair = iter.next(); + assertEquals(pair.getKey(), pair.getValue()); + } + assertEquals(cnt, i); + + i = 0; + iter = client.scan0(prefix, ByteString.EMPTY, true); + while (iter.hasNext()) { + i++; + KvPair pair = iter.next(); + assertEquals(pair.getValue(), ByteString.EMPTY); + } + assertEquals(cnt, i); + } + + @Test + public void ingestTest() { + Assume.assumeTrue(tikvVersionNewerThan("5.2.0")); + int cnt = 8; + ByteString prefix = ByteString.copyFromUtf8("ingest_test"); + client.deletePrefix(prefix); + List> kvs = new ArrayList<>(); + for (int i = 0; i < cnt; i++) { + ByteString key = prefix.concat(getRandomRawKey()); + kvs.add(Pair.create(key, key)); + } + kvs.sort( + (o1, o2) -> { + Key k1 = Key.toRawKey(o1.first.toByteArray()); + Key k2 = Key.toRawKey(o2.first.toByteArray()); + return k1.compareTo(k2); + }); + client.ingest(kvs); + + assertEquals(client.scan(prefix, ByteString.EMPTY).size(), cnt); + } + @Test public void simpleTest() { ByteString key = rawKey("key"); @@ -463,8 +535,8 @@ public class RawKVClientTest extends BaseRawKVTest { } // TODO: check whether cluster supports ttl - // long ttl = 10; - // rawTTLTest(10, ttl, benchmark); + long ttl = 10; + rawTTLTest(10, ttl, benchmark); prepare(); } catch (final TiKVException e) { @@ -826,7 +898,8 @@ public class RawKVClientTest extends BaseRawKVTest { } } - private void rawTTLTest(int cases, long ttl, boolean benchmark) { + public void rawTTLTest(int cases, long ttl, boolean benchmark) { + Assume.assumeTrue(tikvVersionNewerThan("v5.0.0")); logger.info("ttl testing"); if (benchmark) { for (int i = 0; i < cases; i++) {