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(); } }
public void testScanEquality() throws IOException { byte[] val = wrapInt(10); // [val,val] SortedIterator<ByteBuffer> scan = reader.scan(val); try { Iterator<Entry<byte[], byte[]>> iter = data.subMap(val, true, val, true).entrySet().iterator(); doIter(scan, iter); } finally { scan.close(); } }
public void testInUse() throws Exception { FlushCounter handler = new FlushCounter(); SortedOplogSet sos = createSoplogSet("inuse"); for (int i = 0; i < 1000; i++) { sos.put(wrapInt(i), wrapInt(i)); } flushAndWait(handler, sos); // start iterating over soplog SortedIterator<ByteBuffer> range = sos.scan(); assertEquals(0, ((SizeTieredCompactor) sos.getCompactor()).countInactiveReaders()); for (int i = 1000; i < 5000; i++) { sos.put(wrapInt(i), wrapInt(i)); if (i % 100 == 0) { sos.flush(null, handler); } } flushAndWait(handler, sos); compactAndWait(sos, false); assertEquals(1, ((SizeTieredCompactor) sos.getCompactor()).countInactiveReaders()); range.close(); compactAndWait(sos, false); assertEquals(0, ((SizeTieredCompactor) sos.getCompactor()).countInactiveReaders()); validate(sos, 5000); sos.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 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(); } }
protected void validateEmpty(SortedOplogSet sos) throws IOException { assertEquals(0, sos.bufferSize()); assertEquals(0, sos.unflushedSize()); SortedIterator<ByteBuffer> iter = sos.scan(); assertFalse(iter.hasNext()); iter.close(); sos.close(); }
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(); } }
@Override public void close() { for (SortedIterator<ByteBuffer> iter : iters) { iter.close(); } // TODO release the reference as soon as the iterator is finished TrackedReference.decrementAll(soplogs); }