]> git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/java/src/test/java/org/rocksdb/BuiltinComparatorTest.java
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / rocksdb / java / src / test / java / org / rocksdb / BuiltinComparatorTest.java
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).
5
6 package org.rocksdb;
7
8 import org.junit.ClassRule;
9 import org.junit.Rule;
10 import org.junit.Test;
11 import org.junit.rules.TemporaryFolder;
12
13 import static org.assertj.core.api.Assertions.assertThat;
14
15 public class BuiltinComparatorTest {
16
17 @ClassRule
18 public static final RocksNativeLibraryResource ROCKS_NATIVE_LIBRARY_RESOURCE =
19 new RocksNativeLibraryResource();
20
21 @Rule
22 public TemporaryFolder dbFolder = new TemporaryFolder();
23
24 @Test
25 public void builtinForwardComparator()
26 throws RocksDBException {
27 try (final Options options = new Options()
28 .setCreateIfMissing(true)
29 .setComparator(BuiltinComparator.BYTEWISE_COMPARATOR);
30 final RocksDB rocksDb = RocksDB.open(options,
31 dbFolder.getRoot().getAbsolutePath())
32 ) {
33 rocksDb.put("abc1".getBytes(), "abc1".getBytes());
34 rocksDb.put("abc2".getBytes(), "abc2".getBytes());
35 rocksDb.put("abc3".getBytes(), "abc3".getBytes());
36
37 try(final RocksIterator rocksIterator = rocksDb.newIterator()) {
38 // Iterate over keys using a iterator
39 rocksIterator.seekToFirst();
40 assertThat(rocksIterator.isValid()).isTrue();
41 assertThat(rocksIterator.key()).isEqualTo(
42 "abc1".getBytes());
43 assertThat(rocksIterator.value()).isEqualTo(
44 "abc1".getBytes());
45 rocksIterator.next();
46 assertThat(rocksIterator.isValid()).isTrue();
47 assertThat(rocksIterator.key()).isEqualTo(
48 "abc2".getBytes());
49 assertThat(rocksIterator.value()).isEqualTo(
50 "abc2".getBytes());
51 rocksIterator.next();
52 assertThat(rocksIterator.isValid()).isTrue();
53 assertThat(rocksIterator.key()).isEqualTo(
54 "abc3".getBytes());
55 assertThat(rocksIterator.value()).isEqualTo(
56 "abc3".getBytes());
57 rocksIterator.next();
58 assertThat(rocksIterator.isValid()).isFalse();
59 // Get last one
60 rocksIterator.seekToLast();
61 assertThat(rocksIterator.isValid()).isTrue();
62 assertThat(rocksIterator.key()).isEqualTo(
63 "abc3".getBytes());
64 assertThat(rocksIterator.value()).isEqualTo(
65 "abc3".getBytes());
66 // Seek for abc
67 rocksIterator.seek("abc".getBytes());
68 assertThat(rocksIterator.isValid()).isTrue();
69 assertThat(rocksIterator.key()).isEqualTo(
70 "abc1".getBytes());
71 assertThat(rocksIterator.value()).isEqualTo(
72 "abc1".getBytes());
73 }
74 }
75 }
76
77 @Test
78 public void builtinReverseComparator()
79 throws RocksDBException {
80 try (final Options options = new Options()
81 .setCreateIfMissing(true)
82 .setComparator(BuiltinComparator.REVERSE_BYTEWISE_COMPARATOR);
83 final RocksDB rocksDb = RocksDB.open(options,
84 dbFolder.getRoot().getAbsolutePath())
85 ) {
86
87 rocksDb.put("abc1".getBytes(), "abc1".getBytes());
88 rocksDb.put("abc2".getBytes(), "abc2".getBytes());
89 rocksDb.put("abc3".getBytes(), "abc3".getBytes());
90
91 try (final RocksIterator rocksIterator = rocksDb.newIterator()) {
92 // Iterate over keys using a iterator
93 rocksIterator.seekToFirst();
94 assertThat(rocksIterator.isValid()).isTrue();
95 assertThat(rocksIterator.key()).isEqualTo(
96 "abc3".getBytes());
97 assertThat(rocksIterator.value()).isEqualTo(
98 "abc3".getBytes());
99 rocksIterator.next();
100 assertThat(rocksIterator.isValid()).isTrue();
101 assertThat(rocksIterator.key()).isEqualTo(
102 "abc2".getBytes());
103 assertThat(rocksIterator.value()).isEqualTo(
104 "abc2".getBytes());
105 rocksIterator.next();
106 assertThat(rocksIterator.isValid()).isTrue();
107 assertThat(rocksIterator.key()).isEqualTo(
108 "abc1".getBytes());
109 assertThat(rocksIterator.value()).isEqualTo(
110 "abc1".getBytes());
111 rocksIterator.next();
112 assertThat(rocksIterator.isValid()).isFalse();
113 // Get last one
114 rocksIterator.seekToLast();
115 assertThat(rocksIterator.isValid()).isTrue();
116 assertThat(rocksIterator.key()).isEqualTo(
117 "abc1".getBytes());
118 assertThat(rocksIterator.value()).isEqualTo(
119 "abc1".getBytes());
120 // Will be invalid because abc is after abc1
121 rocksIterator.seek("abc".getBytes());
122 assertThat(rocksIterator.isValid()).isFalse();
123 // Will be abc3 because the next one after abc999
124 // is abc3
125 rocksIterator.seek("abc999".getBytes());
126 assertThat(rocksIterator.key()).isEqualTo(
127 "abc3".getBytes());
128 assertThat(rocksIterator.value()).isEqualTo(
129 "abc3".getBytes());
130 }
131 }
132 }
133
134 @Test
135 public void builtinComparatorEnum(){
136 assertThat(BuiltinComparator.BYTEWISE_COMPARATOR.ordinal())
137 .isEqualTo(0);
138 assertThat(
139 BuiltinComparator.REVERSE_BYTEWISE_COMPARATOR.ordinal())
140 .isEqualTo(1);
141 assertThat(BuiltinComparator.values().length).isEqualTo(2);
142 assertThat(BuiltinComparator.valueOf("BYTEWISE_COMPARATOR")).
143 isEqualTo(BuiltinComparator.BYTEWISE_COMPARATOR);
144 }
145 }