1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2 // This source code is licensed under both the GPLv2 (found in the
3 // COPYING file in the root directory) and Apache 2.0 License
4 // (found in the LICENSE.Apache file in the root directory).
7 import org
.junit
.ClassRule
;
10 import org
.junit
.rules
.TemporaryFolder
;
12 import static org
.assertj
.core
.api
.Assertions
.assertThat
;
14 public class RocksIteratorTest
{
17 public static final RocksMemoryResource rocksMemoryResource
=
18 new RocksMemoryResource();
21 public TemporaryFolder dbFolder
= new TemporaryFolder();
24 public void rocksIterator() throws RocksDBException
{
25 try (final Options options
= new Options()
26 .setCreateIfMissing(true)
27 .setCreateMissingColumnFamilies(true);
28 final RocksDB db
= RocksDB
.open(options
,
29 dbFolder
.getRoot().getAbsolutePath())) {
30 db
.put("key1".getBytes(), "value1".getBytes());
31 db
.put("key2".getBytes(), "value2".getBytes());
33 try (final RocksIterator iterator
= db
.newIterator()) {
34 iterator
.seekToFirst();
35 assertThat(iterator
.isValid()).isTrue();
36 assertThat(iterator
.key()).isEqualTo("key1".getBytes());
37 assertThat(iterator
.value()).isEqualTo("value1".getBytes());
39 assertThat(iterator
.isValid()).isTrue();
40 assertThat(iterator
.key()).isEqualTo("key2".getBytes());
41 assertThat(iterator
.value()).isEqualTo("value2".getBytes());
43 assertThat(iterator
.isValid()).isFalse();
44 iterator
.seekToLast();
46 assertThat(iterator
.isValid()).isTrue();
47 assertThat(iterator
.key()).isEqualTo("key1".getBytes());
48 assertThat(iterator
.value()).isEqualTo("value1".getBytes());
49 iterator
.seekToFirst();
50 iterator
.seekToLast();
51 assertThat(iterator
.isValid()).isTrue();
52 assertThat(iterator
.key()).isEqualTo("key2".getBytes());
53 assertThat(iterator
.value()).isEqualTo("value2".getBytes());
57 try (final RocksIterator iterator
= db
.newIterator()) {
58 iterator
.seek("key0".getBytes());
59 assertThat(iterator
.isValid()).isTrue();
60 assertThat(iterator
.key()).isEqualTo("key1".getBytes());
62 iterator
.seek("key1".getBytes());
63 assertThat(iterator
.isValid()).isTrue();
64 assertThat(iterator
.key()).isEqualTo("key1".getBytes());
66 iterator
.seek("key1.5".getBytes());
67 assertThat(iterator
.isValid()).isTrue();
68 assertThat(iterator
.key()).isEqualTo("key2".getBytes());
70 iterator
.seek("key2".getBytes());
71 assertThat(iterator
.isValid()).isTrue();
72 assertThat(iterator
.key()).isEqualTo("key2".getBytes());
74 iterator
.seek("key3".getBytes());
75 assertThat(iterator
.isValid()).isFalse();
78 try (final RocksIterator iterator
= db
.newIterator()) {
79 iterator
.seekForPrev("key0".getBytes());
80 assertThat(iterator
.isValid()).isFalse();
82 iterator
.seekForPrev("key1".getBytes());
83 assertThat(iterator
.isValid()).isTrue();
84 assertThat(iterator
.key()).isEqualTo("key1".getBytes());
86 iterator
.seekForPrev("key1.5".getBytes());
87 assertThat(iterator
.isValid()).isTrue();
88 assertThat(iterator
.key()).isEqualTo("key1".getBytes());
90 iterator
.seekForPrev("key2".getBytes());
91 assertThat(iterator
.isValid()).isTrue();
92 assertThat(iterator
.key()).isEqualTo("key2".getBytes());
94 iterator
.seekForPrev("key3".getBytes());
95 assertThat(iterator
.isValid()).isTrue();
96 assertThat(iterator
.key()).isEqualTo("key2".getBytes());