1 package org.apache.commons.jcs3.auxiliary.disk.indexed;
2
3 import org.apache.commons.jcs3.JCS;
4 import org.apache.commons.jcs3.access.CacheAccess;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import junit.framework.TestCase;
26
27
28
29
30 public class HugeQuantityIndDiskCacheLoadTest
31 extends TestCase
32 {
33
34 @Override
35 public void setUp()
36 {
37 JCS.setConfigFilename( "/TestDiskCacheHuge.ccf" );
38 }
39
40
41
42
43
44
45
46 public void testLargeNumberOfItems()
47 throws Exception
48 {
49 final int items = 300000;
50 final String region = "testCache1";
51
52 final CacheAccess<String, String> jcs = JCS.getInstance( region );
53
54 try
55 {
56 System.out.println( "Start: " + measureMemoryUse() );
57
58
59
60 for ( int i = 0; i <= items; i++ )
61 {
62 jcs.put( i + ":key", region + " data " + i );
63 }
64
65 System.out.println( jcs.getStats() );
66 System.out.println( "--------------------------" );
67 System.out.println( "After put: " + measureMemoryUse() );
68
69 Thread.sleep( 5000 );
70
71 System.out.println( jcs.getStats() );
72 System.out.println( "--------------------------" );
73 System.out.println( "After wait: " + measureMemoryUse() );
74
75
76
77 for ( int i = 0; i <= items; i++ )
78 {
79 final String value = jcs.get( i + ":key" );
80
81 assertEquals( region + " data " + i, value );
82 }
83
84 System.out.println( "After get: " + measureMemoryUse() );
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 }
100 finally
101 {
102
103 System.out.println( jcs.getStats() );
104 System.out.println( "--------------------------" );
105 System.out.println( "End: " + measureMemoryUse() );
106 }
107 }
108
109
110
111
112
113
114
115 protected long measureMemoryUse()
116 throws InterruptedException
117 {
118 System.gc();
119 Thread.sleep( 3000 );
120 System.gc();
121 return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
122 }
123 }