1 package org.apache.commons.jcs3.auxiliary.disk.indexed;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.IOException;
23
24 import org.apache.commons.jcs3.auxiliary.disk.DiskTestObject;
25 import org.apache.commons.jcs3.auxiliary.disk.behavior.IDiskCacheAttributes.DiskLimitType;
26 import org.apache.commons.jcs3.engine.CacheElement;
27 import org.apache.commons.jcs3.engine.behavior.ICacheElement;
28
29 public class IndexDiskCacheSizeUnitTest extends IndexDiskCacheUnitTestAbstract {
30
31 @Override
32 public IndexedDiskCacheAttributes getCacheAttributes() {
33 final IndexedDiskCacheAttributes ret = new IndexedDiskCacheAttributes();
34 ret.setDiskLimitType(DiskLimitType.SIZE);
35 return ret;
36 }
37 public void testRecycleBin()
38 throws IOException
39 {
40 final IndexedDiskCacheAttributes cattr = getCacheAttributes();
41 cattr.setCacheName( "testRemoveItems" );
42 cattr.setOptimizeAtRemoveCount( 7 );
43 cattr.setMaxKeySize( 8);
44 cattr.setMaxPurgatorySize( 0 );
45 cattr.setDiskPath( "target/test-sandbox/BreakIndexTest" );
46 final IndexedDiskCache<String, DiskTestObject> disk = new IndexedDiskCache<>( cattr );
47
48 final String[] test = { "a", "bb", "ccc", "dddd", "eeeee", "ffffff", "ggggggg", "hhhhhhhhh", "iiiiiiiiii" };
49 final String[] expect = { null, "bb", "ccc", null, null, "ffffff", null, "hhhhhhhhh", "iiiiiiiiii" };
50 final DiskTestObject value = DiskTestObjectUtil.createCacheElementsWithTestObjects( 1, 1, cattr .getCacheName())[0].getVal();
51
52
53 for ( int i = 0; i < 6; i++ )
54 {
55 final ICacheElement<String, DiskTestObject> element = new CacheElement<>( "testRecycleBin", "key:" + test[i], value);
56
57 disk.processUpdate( element );
58 }
59
60 for ( int i = 3; i < 5; i++ )
61 {
62
63 disk.remove( "key:" + test[i] );
64 }
65
66
67
68 for ( int i = 7; i < 9; i++ )
69 {
70 final ICacheElement<String, DiskTestObject> element = new CacheElement<>( "testRecycleBin", "key:" + test[i], value);
71
72 disk.processUpdate( element );
73 }
74
75 try
76 {
77 for ( int i = 0; i < 9; i++ )
78 {
79 final ICacheElement<String, DiskTestObject> element = disk.get( "key:" + test[i] );
80 if ( element != null )
81 {
82
83 }
84 else
85 {
86
87 }
88
89 final String expectedValue = expect[i];
90 if ( expectedValue == null )
91 {
92 assertNull( "Expected a null element", element );
93 }
94 else
95 {
96 assertNotNull( "The element for key [" + "key:" + test[i] + "] should not be null. i = " + i,
97 element );
98 assertEquals( "Elements contents do not match expected", element.getVal(), value );
99 }
100 }
101 }
102 catch ( final Exception e )
103 {
104 e.printStackTrace();
105 fail( "Should not get an exception: " + e.toString() );
106 }
107
108 disk.removeAll();
109 }
110 }