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