KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sleepycat > je > dbi > MemoryBudgetTest


1 /*
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2002,2006 Oracle. All rights reserved.
5  *
6  * $Id: MemoryBudgetTest.java,v 1.15 2006/10/30 21:14:43 bostic Exp $
7  */

8
9 package com.sleepycat.je.dbi;
10
11 import java.io.File JavaDoc;
12 import java.io.IOException JavaDoc;
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 /**
24  */

25 public class MemoryBudgetTest extends TestCase {
26     private File JavaDoc envHome;
27     
28     public MemoryBudgetTest() {
29         envHome = new File JavaDoc(System.getProperty(TestUtils.DEST_DIR));
30     }
31
32     public void setUp()
33         throws IOException JavaDoc {
34
35         TestUtils.removeLogFiles("Setup", envHome, false);
36     }
37     
38     public void tearDown()
39         throws Exception JavaDoc {
40
41         TestUtils.removeLogFiles("TearDown", envHome, false);
42     }
43     
44     public void testDefaults()
45         throws Exception JavaDoc {
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     /*
54         System.out.println("max= " + testBudget.getMaxMemory());
55         System.out.println("tree= " + testBudget.getCacheBudget());
56         System.out.println("log= " + testBudget.getLogBufferBudget());
57         System.out.println("thresh= " + testBudget.getEvictorCheckThreshold());
58     */

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         /*
71          * The tree and log buffer budget together is equal to
72          * the max memory budget.
73          */

74         assertEquals((testBudget.getCacheBudget() +
75                       testBudget.getLogBufferBudget()),
76                       testBudget.getMaxMemory());
77
78         env.close();
79     }
80
81     /* Verify that the proportionally based setting works. */
82     public void testCacheSizing()
83         throws Exception JavaDoc {
84
85         long jvmMemory = MemoryBudget.getRuntimeMaxMemory();
86
87     /*
88      * Runtime.maxMemory() may return Long.MAX_VALUE if there is no
89      * inherent limit.
90      */

91     if (jvmMemory == Long.MAX_VALUE) {
92         jvmMemory = 1 << 26;
93     }
94
95         /* The default cache size ought to be percentage based. */
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         /* Try setting the percentage.*/
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         /* Try overriding */
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