public long[] getReusableIds( int numberOfIds ) { return freeIdKeeper.getIds( numberOfIds ); }
@Test public void allocateEmptyBatchWhenNoIdsAreAvailable() throws IOException { FreeIdKeeper freeIdKeeper = getFreeIdKeeperAggressive(); long[] ids = freeIdKeeper.getIds( 1024 ); assertSame( PrimitiveLongCollections.EMPTY_LONG_ARRAY, ids ); assertEquals( 0, freeIdKeeper.getCount() ); }
@Test public void allocateBatchWhenHaveMoreIdsInMemory() throws IOException { FreeIdKeeper freeIdKeeper = getFreeIdKeeperAggressive(); for ( long id = 1L; id < 7L; id++ ) { freeIdKeeper.freeId( id ); } long[] ids = freeIdKeeper.getIds( 5 ); assertArrayEquals( new long[]{1L, 2L, 3L, 4L, 5L}, ids); assertEquals( 1, freeIdKeeper.getCount() ); }
@Test public void allocateBatchWhenHaveLessIdsInMemory() throws IOException { FreeIdKeeper freeIdKeeper = getFreeIdKeeperAggressive(); for ( long id = 1L; id < 4L; id++ ) { freeIdKeeper.freeId( id ); } long[] ids = freeIdKeeper.getIds( 5 ); assertArrayEquals( new long[]{1L, 2L, 3L}, ids ); assertEquals( 0, freeIdKeeper.getCount() ); }
@Test public void allocateBatchWhenHaveLessIdsInMemoryAndOnDisk() throws IOException { FreeIdKeeper freeIdKeeper = getFreeIdKeeperAggressive( 4 ); for ( long id = 1L; id < 10L; id++ ) { freeIdKeeper.freeId( id ); } long[] ids = freeIdKeeper.getIds( 15 ); assertArrayEquals( new long[]{9L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L}, ids ); assertEquals( 0, freeIdKeeper.getCount() ); }
@Test public void allocateBatchWhenHaveLessIdsInMemoryButHaveOnDiskMore() throws IOException { FreeIdKeeper freeIdKeeper = getFreeIdKeeperAggressive( 4 ); for ( long id = 1L; id < 11L; id++ ) { freeIdKeeper.freeId( id ); } long[] ids = freeIdKeeper.getIds( 7 ); assertArrayEquals( new long[]{9L, 10L, 5L, 6L, 7L, 8L, 1L}, ids ); assertEquals( 3, freeIdKeeper.getCount() ); }
public long[] getReusableIds( int numberOfIds ) { return freeIdKeeper.getIds( numberOfIds ); }