use of org.apache.accumulo.core.spi.cache.CacheEntry in project accumulo by apache.
the class BlockIndexTest method testSame.
@Test
public void testSame() throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
Key prevKey = null;
int num = 1000;
for (int i = 0; i < num; i++) {
Key key = new Key(RFileTest.formatString("", 1), "cf1", "cq1");
new RelativeKey(prevKey, key).write(out);
new Value().write(out);
prevKey = key;
}
for (int i = 0; i < num; i++) {
Key key = new Key(RFileTest.formatString("", 3), "cf1", "cq1");
new RelativeKey(prevKey, key).write(out);
new Value().write(out);
prevKey = key;
}
for (int i = 0; i < num; i++) {
Key key = new Key(RFileTest.formatString("", 5), "cf1", "cq1");
new RelativeKey(prevKey, key).write(out);
new Value().write(out);
prevKey = key;
}
out.close();
final byte[] data = baos.toByteArray();
CacheEntry ce = new MyCacheEntry(data);
CachableBlockFile.CachedBlockRead cacheBlock = new CachableBlockFile.CachedBlockRead(ce, data);
BlockIndex blockIndex = null;
for (int i = 0; i < 257; i++) blockIndex = BlockIndex.getIndex(cacheBlock, new IndexEntry(prevKey, num, 0, 0, 0));
assertSame(null, blockIndex.seekBlock(new Key(RFileTest.formatString("", 0), "cf1", "cq1"), cacheBlock));
assertSame(null, blockIndex.seekBlock(new Key(RFileTest.formatString("", 1), "cf1", "cq1"), cacheBlock));
for (int i = 2; i < 6; i++) {
Key seekKey = new Key(RFileTest.formatString("", i), "cf1", "cq1");
BlockIndexEntry bie = blockIndex.seekBlock(seekKey, cacheBlock);
assertTrue(bie.getPrevKey().compareTo(seekKey) < 0);
RelativeKey rk = new RelativeKey();
rk.setPrevKey(bie.getPrevKey());
rk.readFields(cacheBlock);
assertTrue(rk.getKey().compareTo(seekKey) <= 0);
}
cacheBlock.close();
}
Aggregations