package org.araqne.storage.api; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.araqne.storage.api.RCDirectBufferManager.ExceedPoolSizeLimitException; import org.junit.BeforeClass; import org.junit.Test; public class RCDirectBufferManagerImplTest { private static RCDirectBufferManagerImpl manager; private static String poolName1 = "pool1"; private static String poolName2 = "pool2"; private static String poolName3 = "pool3"; private static String usageName1 = "usage1"; private static String usageName2 = "usage2"; private static String usageName3 = "usage3"; private static long usingMemorySize1; private static long usingMemorySize2; private static long usingMemorySize3; private static long availableMemorySize1; private static long availableMemorySize2; private static long availableMemorySize3; @BeforeClass public static void before() throws ExceedPoolSizeLimitException { manager = RCDirectBufferManagerImpl.getTestManager(); manager.setMemoryLimitOfPool(poolName1, 2L); manager.allocateDirect(1, poolName1, usageName1); manager.allocateDirect(1, poolName1, usageName2); usingMemorySize1 = 2L; availableMemorySize1 = 0L; manager.setMemoryLimitOfPool(poolName2, 3L); manager.allocateDirect(1, poolName2, usageName1); usingMemorySize2 = 1L; availableMemorySize2 = 2L; manager.allocateDirect(1, poolName3, usageName1); manager.allocateDirect(1, poolName3, usageName2); manager.allocateDirect(1, poolName3, usageName3); manager.allocateDirect(1, poolName3, usageName1); manager.allocateDirect(1, poolName3, usageName1); usingMemorySize3 = 5L; availableMemorySize3 = Long.MAX_VALUE - usingMemorySize3; } @Test public void poolSizeLimitTest() { try { manager.allocateDirect(1, poolName1, usageName3); } catch (ExceedPoolSizeLimitException e) { return; } // Should Not reach. assertTrue(false); } @Test public void getUsingPoolSizeTest() { assertEquals(usingMemorySize1, manager.getUsingPoolSize(poolName1)); assertEquals(usingMemorySize2, manager.getUsingPoolSize(poolName2)); assertEquals(usingMemorySize3, manager.getUsingPoolSize(poolName3)); } @Test public void getAvailablePoolSizeTest() { assertEquals(availableMemorySize1, manager.getAvailablePoolSize(poolName1)); assertEquals(availableMemorySize2, manager.getAvailablePoolSize(poolName2)); assertEquals(availableMemorySize3, manager.getAvailablePoolSize(poolName3)); } }