public static void assertEquals(byte[] expected, ByteBuffer actual) { assertEquals(expected.length, actual.remaining()); for (int i = 0; i < expected.length; i++) { assertEquals(expected[i], actual.get(actual.position() + i)); } }
public void testComparator() { assertNotNull(reader.getComparator()); }
public void testMultithreadScan() throws Exception { int threads = 10; ExecutorService exec = Executors.newFixedThreadPool(threads); List<Callable<Boolean>> tasks = new ArrayList<Callable<Boolean>>(); for (int i = 0; i < threads; i++) { tasks.add(new Callable<Boolean>() { @Override public Boolean call() throws Exception { testScan(); return true; } }); } int i = 0; while (i++ < 1000) { for (Future<Boolean> ft : exec.invokeAll(tasks)) { assertTrue(ft.get()); } } }
@Override protected final void setUp() throws IOException { data = new TreeMap<>(new ByteComparator().toBytesComparator()); for (int i = 0; i < 100; i++) { data.put(wrapInt(i), wrapInt(i)); } reader = createReader(data); }
public void testStatistics() throws IOException { SortedStatistics stats = reader.getStatistics(); try { assertEquals(data.size(), stats.keyCount()); assertTrue(Arrays.equals(data.firstKey(), stats.firstKey())); assertTrue(Arrays.equals(data.lastKey(), stats.lastKey())); int keySize = 0; int valSize = 0; for (Entry<byte[], byte[]> entry : data.entrySet()) { keySize += entry.getKey().length; valSize += entry.getValue().length; } double avgKey = keySize / data.size(); double avgVal = valSize / data.size(); assertEquals(avgVal, stats.avgValueSize()); assertEquals(avgKey, stats.avgKeySize()); } finally { stats.close(); } }
@Override protected void tearDown() throws IOException { for (File f : SortedReaderTestCase.getSoplogsToDelete()) { f.delete(); } } }
protected SortedOplog createSoplog(int start, int count, int id) throws IOException { SortedOplog soplog = factory.createSortedOplog(new File("test-" + id + ".soplog")); SortedOplogWriter wtr = soplog.createWriter(); try { for (int i = start; i < start + count; i++) { wtr.append(SortedReaderTestCase.wrapInt(i), SortedReaderTestCase.wrapInt(i)); } } finally { wtr.close(null); } return soplog; }
public void testScan() throws IOException { SortedIterator<ByteBuffer> scan = reader.scan(); try { Iterator<Entry<byte[], byte[]>> iter = data.entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); } }
@Override public Boolean call() throws Exception { testScan(); return true; } });
public void testTail() throws IOException { byte[] split = wrapInt(50); SortedIterator<ByteBuffer> scan = reader.tail(split, true); try { Iterator<Entry<byte[], byte[]>> iter = data.tailMap(split, true).entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); } scan = reader.tail(split, false); try { Iterator<Entry<byte[], byte[]>> iter = data.tailMap(split, false).entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); } }
@Override protected void tearDown() throws IOException { for (File f : SortedReaderTestCase.getSoplogsToDelete()) { f.delete(); } } }
Arrays.fill(value, 4, value.length, (byte) 42); wtr.append(SortedReaderTestCase.wrapInt(i), value); SortedReaderTestCase.wrapInt(20000), true, SortedReaderTestCase.wrapInt(0), true); try { for (int i = 17998; i >= 2000; i -= 2) { SortedReaderTestCase.wrapInt(17997), true, SortedReaderTestCase.wrapInt(2001), true); try { for (int i = 17996; i >= 2002; i -= 2) {
public void testScanReverse() throws IOException { SortedIterator<ByteBuffer> scan = reader.withAscending(false).scan(); try { Iterator<Entry<byte[], byte[]>> iter = data.descendingMap().entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); } }
public void testHead() throws IOException { byte[] split = wrapInt(50); SortedIterator<ByteBuffer> scan = reader.head(split, true); try { Iterator<Entry<byte[], byte[]>> iter = data.headMap(split, true).entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); } scan = reader.head(split, false); try { Iterator<Entry<byte[], byte[]>> iter = data.headMap(split, false).entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); } }
public void tearDown() throws Exception { compactor.close(); for (File f : SortedReaderTestCase.getSoplogsToDelete()) { f.delete(); } }
private void doIter(SortedIterator<ByteBuffer> scan, Iterator<Entry<byte[], byte[]>> iter) { while (scan.hasNext() || iter.hasNext()) { Entry<byte[], byte[]> expected = iter.next(); assertEquals(expected.getKey(), scan.next()); assertEquals(expected.getValue(), scan.value()); } }
public void testMightContain() throws IOException { for (byte[] key : data.keySet()) { assertTrue(reader.mightContain(key)); } }
public void testScanWithBounds() throws IOException { byte[] lhs = wrapInt(10); byte[] rhs = wrapInt(90); try { Iterator<Entry<byte[], byte[]>> iter = data.subMap(lhs, rhs).entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); try { Iterator<Entry<byte[], byte[]>> iter = data.subMap(lhs, false, rhs, false).entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); try { Iterator<Entry<byte[], byte[]>> iter = data.subMap(lhs, true, rhs, true).entrySet().iterator(); doIter(scan, iter); } finally { scan.close();