use of org.apache.hyracks.storage.common.buffercache.VirtualPage in project asterixdb by apache.
the class LIFOMetadataFrameTest method test.
@Test
public void test() throws HyracksDataException {
LIFOMetaDataFrame frame = new LIFOMetaDataFrame();
VirtualPage page = new VirtualPage(ByteBuffer.allocate(512), 512);
MutableArrayValueReference testKey = new MutableArrayValueReference("TestLSNKey".getBytes());
frame.setPage(page);
frame.init();
LongPointable longPointable = (LongPointable) LongPointable.FACTORY.createPointable();
frame.get(testKey, longPointable);
Assert.assertNull(longPointable.getByteArray());
byte[] longBytes = new byte[Long.BYTES];
MutableArrayValueReference value = new MutableArrayValueReference(longBytes);
int space = frame.getSpace() - (value.getLength() + Integer.BYTES * 2 + testKey.getLength());
for (long l = 1L; l < 52L; l++) {
LongPointable.setLong(longBytes, 0, l);
frame.put(testKey, value);
Assert.assertEquals(space, frame.getSpace());
frame.get(testKey, longPointable);
Assert.assertEquals(l, longPointable.longValue());
}
Assert.assertEquals(frame.getFreePage(), -1);
// add 10 pages and monitor space
for (int i = 0; i < 10; i++) {
frame.addFreePage(i);
space -= Integer.BYTES;
Assert.assertEquals(space, frame.getSpace());
}
for (int i = 9; i >= 0; i--) {
int freePage = frame.getFreePage();
Assert.assertEquals(freePage, i);
space += Integer.BYTES;
Assert.assertEquals(space, frame.getSpace());
}
Assert.assertTrue(frame.getFreePage() < 0);
}
Aggregations