From 1b900c3dc797979fd92f463015a29f7ba5df3cda Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Tue, 4 Jan 2022 18:27:47 +0800 Subject: [PATCH 1/4] add rawBatchDelete test Signed-off-by: iosmanthus --- .../java/org/tikv/raw/RawKVClientTest.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/tikv/raw/RawKVClientTest.java b/src/test/java/org/tikv/raw/RawKVClientTest.java index bd4b7dd939e..62e68e1b87b 100644 --- a/src/test/java/org/tikv/raw/RawKVClientTest.java +++ b/src/test/java/org/tikv/raw/RawKVClientTest.java @@ -45,6 +45,7 @@ import org.tikv.kvproto.Kvrpcpb; 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; @@ -307,6 +308,23 @@ public void deleteRangeTest() { 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 simpleTest() { ByteString key = rawKey("key"); @@ -366,7 +384,9 @@ public void validate() { baseTest(100, 100, 100, 100, false, true, true, true, true); } - /** Example of benchmarking base test */ + /** + * Example of benchmarking base test + */ public void benchmark() { baseTest(TEST_CASES, TEST_CASES, 200, 5000, true, false, false, false, false); baseTest(TEST_CASES, TEST_CASES, 200, 5000, true, true, true, true, true); @@ -449,7 +469,9 @@ private void prepare() { int i = cnt; completionService.submit( () -> { - for (int j = 0; j < base; j++) checkDelete(remainingKeys.get(i * base + j).getKey()); + for (int j = 0; j < base; j++) { + checkDelete(remainingKeys.get(i * base + j).getKey()); + } return null; }); } @@ -955,6 +977,7 @@ private static ByteString rawValue(String value) { } private static class ByteStringComparator implements Comparator { + @Override public int compare(ByteString startKey, ByteString endKey) { return FastByteComparisons.compareTo(startKey.toByteArray(), endKey.toByteArray()); From 1c741a236ac42ea72de559f12c35e7505ef2ef41 Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Tue, 4 Jan 2022 18:36:14 +0800 Subject: [PATCH 2/4] ./dev/javafmt Signed-off-by: iosmanthus --- src/test/java/org/tikv/raw/RawKVClientTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/org/tikv/raw/RawKVClientTest.java b/src/test/java/org/tikv/raw/RawKVClientTest.java index 62e68e1b87b..5ed719f7151 100644 --- a/src/test/java/org/tikv/raw/RawKVClientTest.java +++ b/src/test/java/org/tikv/raw/RawKVClientTest.java @@ -384,9 +384,7 @@ public void validate() { baseTest(100, 100, 100, 100, false, true, true, true, true); } - /** - * Example of benchmarking base test - */ + /** Example of benchmarking base test */ public void benchmark() { baseTest(TEST_CASES, TEST_CASES, 200, 5000, true, false, false, false, false); baseTest(TEST_CASES, TEST_CASES, 200, 5000, true, true, true, true, true); From 9a899b97c46b68411ea6aa3950450ee8c51da8cb Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Tue, 4 Jan 2022 19:07:49 +0800 Subject: [PATCH 3/4] finish tests Signed-off-by: iosmanthus --- .../java/org/tikv/raw/RawKVClientTest.java | 89 +++++++++++++++++-- 1 file changed, 82 insertions(+), 7 deletions(-) diff --git a/src/test/java/org/tikv/raw/RawKVClientTest.java b/src/test/java/org/tikv/raw/RawKVClientTest.java index 5ed719f7151..f87c36ecd87 100644 --- a/src/test/java/org/tikv/raw/RawKVClientTest.java +++ b/src/test/java/org/tikv/raw/RawKVClientTest.java @@ -17,14 +17,32 @@ package org.tikv.raw; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import com.google.protobuf.ByteString; -import java.util.*; -import java.util.concurrent.*; +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; +import java.util.Optional; +import java.util.Random; +import java.util.TreeMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorCompletionService; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; import org.apache.commons.lang3.RandomStringUtils; import org.junit.After; +import org.junit.Assume; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -43,6 +61,7 @@ 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 { @@ -325,6 +344,59 @@ public void batchDeleteTest() { } } + @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"); @@ -384,7 +456,9 @@ public void validate() { baseTest(100, 100, 100, 100, false, true, true, true, true); } - /** Example of benchmarking base test */ + /** + * Example of benchmarking base test + */ public void benchmark() { baseTest(TEST_CASES, TEST_CASES, 200, 5000, true, false, false, false, false); baseTest(TEST_CASES, TEST_CASES, 200, 5000, true, true, true, true, true); @@ -434,8 +508,8 @@ private void baseTest( } // 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) { @@ -797,7 +871,8 @@ private void rawDeleteRangeTest(boolean benchmark) { } } - 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++) { From 037c10b88df058db22601f9b5de72955df254abf Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Tue, 4 Jan 2022 19:07:58 +0800 Subject: [PATCH 4/4] ./dev/javafmt Signed-off-by: iosmanthus --- src/test/java/org/tikv/raw/RawKVClientTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/org/tikv/raw/RawKVClientTest.java b/src/test/java/org/tikv/raw/RawKVClientTest.java index f87c36ecd87..ae5e1f0953d 100644 --- a/src/test/java/org/tikv/raw/RawKVClientTest.java +++ b/src/test/java/org/tikv/raw/RawKVClientTest.java @@ -456,9 +456,7 @@ public void validate() { baseTest(100, 100, 100, 100, false, true, true, true, true); } - /** - * Example of benchmarking base test - */ + /** Example of benchmarking base test */ public void benchmark() { baseTest(TEST_CASES, TEST_CASES, 200, 5000, true, false, false, false, false); baseTest(TEST_CASES, TEST_CASES, 200, 5000, true, true, true, true, true);