use of org.apache.accumulo.core.file.rfile.BlockIndex.BlockIndexEntry in project accumulo by apache.
the class BlockIndexTest method test1.
@Test
public void test1() 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("", i), "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 < 129; i++) blockIndex = BlockIndex.getIndex(cacheBlock, new IndexEntry(prevKey, num, 0, 0, 0));
BlockIndexEntry[] indexEntries = blockIndex.getIndexEntries();
for (int i = 0; i < indexEntries.length; i++) {
int row = Integer.parseInt(indexEntries[i].getPrevKey().getRowData().toString());
BlockIndexEntry bie;
bie = blockIndex.seekBlock(new Key(RFileTest.formatString("", row), "cf1", "cq1"), cacheBlock);
if (i == 0)
assertSame(null, bie);
else
assertSame(indexEntries[i - 1], bie);
assertSame(bie, blockIndex.seekBlock(new Key(RFileTest.formatString("", row - 1), "cf1", "cq1"), cacheBlock));
bie = blockIndex.seekBlock(new Key(RFileTest.formatString("", row + 1), "cf1", "cq1"), cacheBlock);
assertSame(indexEntries[i], bie);
RelativeKey rk = new RelativeKey();
rk.setPrevKey(bie.getPrevKey());
rk.readFields(cacheBlock);
assertEquals(rk.getKey(), new Key(RFileTest.formatString("", row + 1), "cf1", "cq1"));
}
cacheBlock.close();
}
use of org.apache.accumulo.core.file.rfile.BlockIndex.BlockIndexEntry 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