1 8 9 package com.sleepycat.je.dbi; 10 11 import java.io.File ; 12 import java.io.IOException ; 13 14 import junit.framework.TestCase; 15 16 import com.sleepycat.je.DbInternal; 17 import com.sleepycat.je.Environment; 18 import com.sleepycat.je.EnvironmentConfig; 19 import com.sleepycat.je.config.EnvironmentParams; 20 import com.sleepycat.je.dbi.MemoryBudget; 21 import com.sleepycat.je.util.TestUtils; 22 23 25 public class MemoryBudgetTest extends TestCase { 26 private File envHome; 27 28 public MemoryBudgetTest() { 29 envHome = new File (System.getProperty(TestUtils.DEST_DIR)); 30 } 31 32 public void setUp() 33 throws IOException { 34 35 TestUtils.removeLogFiles("Setup", envHome, false); 36 } 37 38 public void tearDown() 39 throws Exception { 40 41 TestUtils.removeLogFiles("TearDown", envHome, false); 42 } 43 44 public void testDefaults() 45 throws Exception { 46 47 EnvironmentConfig envConfig = TestUtils.initEnvConfig(); 48 envConfig.setAllowCreate(true); 49 Environment env = new Environment(envHome, envConfig); 50 EnvironmentImpl envImpl = DbInternal.envGetEnvironmentImpl(env); 51 MemoryBudget testBudget = envImpl.getMemoryBudget(); 52 53 59 60 assertTrue(testBudget.getMaxMemory() > 0); 61 assertTrue(testBudget.getCacheBudget() > 0); 62 assertTrue(testBudget.getLogBufferBudget() > 0); 63 64 assertTrue(testBudget.getMaxMemory() <= 65 MemoryBudget.getRuntimeMaxMemory()); 66 assertTrue((testBudget.getLogBufferBudget() + 67 testBudget.getCacheBudget()) <= 68 testBudget.getMaxMemory()); 69 70 74 assertEquals((testBudget.getCacheBudget() + 75 testBudget.getLogBufferBudget()), 76 testBudget.getMaxMemory()); 77 78 env.close(); 79 } 80 81 82 public void testCacheSizing() 83 throws Exception { 84 85 long jvmMemory = MemoryBudget.getRuntimeMaxMemory(); 86 87 91 if (jvmMemory == Long.MAX_VALUE) { 92 jvmMemory = 1 << 26; 93 } 94 95 96 EnvironmentConfig envConfig = TestUtils.initEnvConfig(); 97 envConfig.setAllowCreate(true); 98 Environment env = new Environment(envHome, envConfig); 99 EnvironmentImpl envImpl = DbInternal.envGetEnvironmentImpl(env); 100 long percentConfig = envImpl.getConfigManager(). 101 getInt(EnvironmentParams.MAX_MEMORY_PERCENT); 102 103 EnvironmentConfig c = env.getConfig(); 104 long expectedMem = (jvmMemory * percentConfig) / 100; 105 assertEquals(expectedMem, c.getCacheSize()); 106 assertEquals(expectedMem, envImpl.getMemoryBudget().getMaxMemory()); 107 env.close(); 108 109 110 expectedMem = (jvmMemory * 30) / 100; 111 envConfig = TestUtils.initEnvConfig(); 112 envConfig.setCachePercent(30); 113 env = new Environment(envHome, envConfig); 114 envImpl = DbInternal.envGetEnvironmentImpl(env); 115 c = env.getConfig(); 116 assertEquals(expectedMem, c.getCacheSize()); 117 assertEquals(expectedMem, envImpl.getMemoryBudget().getMaxMemory()); 118 env.close(); 119 120 121 envConfig = TestUtils.initEnvConfig(); 122 envConfig.setCacheSize(MemoryBudget.MIN_MAX_MEMORY_SIZE + 10); 123 env = new Environment(envHome, envConfig); 124 envImpl = DbInternal.envGetEnvironmentImpl(env); 125 c = env.getConfig(); 126 assertEquals(MemoryBudget.MIN_MAX_MEMORY_SIZE + 10, c.getCacheSize()); 127 assertEquals(MemoryBudget.MIN_MAX_MEMORY_SIZE + 10, 128 envImpl.getMemoryBudget().getMaxMemory()); 129 env.close(); 130 } 131 } 132 133 | Popular Tags |