1 package org.apache.commons.jcs;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import junit.extensions.ActiveTestSuite;
23 import junit.framework.Test;
24 import junit.framework.TestCase;
25 import org.apache.commons.jcs.access.CacheAccess;
26
27 /**
28 * Test which exercises the indexed disk cache. This one uses three different
29 * regions for thre threads.
30 *
31 * @version $Id: TestTCPLateralCache.java 1593844 2014-05-11 19:53:32Z rmannibucau $
32 */
33 public class TestTCPLateralCache
34 extends TestCase
35 {
36 /**
37 * Number of items to cache, twice the configured maxObjects for the memory
38 * cache regions.
39 */
40 private static int items = 200;
41
42 /**
43 * Constructor for the TestDiskCache object.
44 *
45 * @param testName
46 */
47 public TestTCPLateralCache( String testName )
48 {
49 super( testName );
50 }
51
52 /**
53 * Main method passes this test to the text test runner.
54 *
55 * @param args
56 */
57 public static void main( String args[] )
58 {
59 String[] testCaseName = { TestTCPLateralCache.class.getName() };
60 junit.textui.TestRunner.main( testCaseName );
61 }
62
63 /**
64 * A unit test suite for JUnit
65 *
66 * @return The test suite
67 */
68 public static Test suite()
69 {
70 ActiveTestSuite suite = new ActiveTestSuite();
71
72 suite.addTest( new TestTCPLateralCache( "testTcpRegion1_no_receiver" )
73 {
74 @Override
75 public void runTest()
76 throws Exception
77 {
78 this.runTestForRegion( "testTcpRegion1" );
79 }
80 } );
81
82 // suite.addTest( new TestTCPLateralCache( "testIndexedDiskCache2" )
83 // {
84 // public void runTest() throws Exception
85 // {
86 // this.runTestForRegion( "indexedRegion2" );
87 // }
88 // } );
89 //
90 // suite.addTest( new TestTCPLateralCache( "testIndexedDiskCache3" )
91 // {
92 // public void runTest() throws Exception
93 // {
94 // this.runTestForRegion( "indexedRegion3" );
95 // }
96 // } );
97
98 return suite;
99 }
100
101 /**
102 * Test setup
103 */
104 @Override
105 public void setUp()
106 {
107 JCS.setConfigFilename( "/TestTCPLateralCache.ccf" );
108 }
109
110 /**
111 * Adds items to cache, gets them, and removes them. The item count is more
112 * than the size of the memory cache, so items should spool to disk.
113 *
114 * @param region
115 * Name of the region to access
116 *
117 * @throws Exception
118 * If an error occurs
119 */
120 public void runTestForRegion( String region )
121 throws Exception
122 {
123 CacheAccess<String, String> jcs = JCS.getInstance( region );
124
125 // Add items to cache
126
127 for ( int i = 0; i <= items; i++ )
128 {
129 jcs.put( i + ":key", region + " data " + i );
130 }
131
132 // Test that all items are in cache
133
134 for ( int i = 0; i <= items; i++ )
135 {
136 String value = jcs.get( i + ":key" );
137
138 assertEquals( region + " data " + i, value );
139 }
140
141 // Remove all the items
142
143 for ( int i = 0; i <= items; i++ )
144 {
145 jcs.remove( i + ":key" );
146 }
147
148 // Verify removal
149
150 for ( int i = 0; i <= items; i++ )
151 {
152 assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
153 }
154 }
155 }