Search in sources :

Example 6 with VirtualPage

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);
}
Also used : VirtualPage(org.apache.hyracks.storage.common.buffercache.VirtualPage) LongPointable(org.apache.hyracks.data.std.primitive.LongPointable) MutableArrayValueReference(org.apache.hyracks.storage.am.common.freepage.MutableArrayValueReference) Test(org.junit.Test)

Aggregations

VirtualPage (org.apache.hyracks.storage.common.buffercache.VirtualPage)6 HyracksDataException (org.apache.hyracks.api.exceptions.HyracksDataException)2 ByteBuffer (java.nio.ByteBuffer)1 LongPointable (org.apache.hyracks.data.std.primitive.LongPointable)1 MutableArrayValueReference (org.apache.hyracks.storage.am.common.freepage.MutableArrayValueReference)1 Test (org.junit.Test)1