1 package org.apache.commons.jcs3.auxiliary.lateral.socket.tcp;
2
3 import java.util.Random;
4
5 import org.apache.commons.jcs3.JCS;
6 import org.apache.commons.jcs3.access.CacheAccess;
7 import org.apache.commons.jcs3.auxiliary.lateral.LateralCacheAttributes;
8 import org.apache.commons.jcs3.engine.CacheElement;
9 import org.apache.commons.jcs3.engine.behavior.ICacheElement;
10 import org.apache.commons.jcs3.utils.serialization.StandardSerializer;
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 import junit.framework.TestCase;
32
33
34
35 public class LateralTCPConcurrentRandomTestUtil
36 extends TestCase
37 {
38
39 private static final boolean isSysOut = false;
40
41
42
43
44
45
46
47 public LateralTCPConcurrentRandomTestUtil( final String testName )
48 {
49 super( testName );
50 }
51
52
53
54
55 @Override
56 public void setUp()
57 {
58 JCS.setConfigFilename( "/TestTCPLateralCacheConcurrent.ccf" );
59 }
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 public void runTestForRegion( final String region, final int range, final int numOps, final int testNum )
76 throws Exception
77 {
78 final boolean show = true;
79
80 final CacheAccess<String, String> cache = JCS.getInstance( region );
81
82 final TCPLateralCacheAttributes lattr2 = new TCPLateralCacheAttributes();
83 lattr2.setTcpListenerPort( 1103 );
84 lattr2.setTransmissionType(LateralCacheAttributes.Type.TCP);
85 lattr2.setTcpServer( "localhost:1102" );
86
87
88
89
90 final LateralTCPService<String, String> service =
91 new LateralTCPService<>(lattr2, new StandardSerializer());
92 service.setListenerId( 123456 );
93
94 try
95 {
96 for ( int i = 1; i < numOps; i++ )
97 {
98 final Random ran = new Random( i );
99 final int n = ran.nextInt( 4 );
100 final int kn = ran.nextInt( range );
101 final String key = "key" + kn;
102 if ( n == 1 )
103 {
104 final ICacheElement<String, String> element = new CacheElement<>( region, key, region + ":data" + i
105 + " junk asdfffffffadfasdfasf " + kn + ":" + n );
106 service.update( element );
107 if ( show )
108 {
109 p( "put " + key );
110 }
111 }
112
113 else if ( n == 2 )
114 {
115 service.remove( region, key );
116 if ( show )
117 {
118 p( "removed " + key );
119 }
120 }
121
122 else
123 {
124
125 try
126 {
127 final Object obj = service.get( region, key );
128 if ( show && obj != null )
129 {
130 p( obj.toString() );
131 }
132 }
133 catch ( final Exception e )
134 {
135
136 e.printStackTrace();
137 }
138 }
139
140 if ( i % 100 == 0 )
141 {
142 p( cache.getStats() );
143 }
144
145 }
146 p( "Finished random cycle of " + numOps );
147 }
148 catch ( final Exception e )
149 {
150 p( e.toString() );
151 e.printStackTrace( System.out );
152 throw e;
153 }
154
155 final CacheAccess<String, String> jcs = JCS.getInstance( region );
156 final String key = "testKey" + testNum;
157 final String data = "testData" + testNum;
158 jcs.put( key, data );
159 final String value = jcs.get( key );
160 assertEquals( "Couldn't put normally.", data, value );
161
162
163 for ( int i = 1; i < numOps; i++ )
164 {
165 final String keyL = "key" + i;
166 final String dataL = jcs.get( keyL );
167 if ( dataL != null )
168 {
169 assertTrue( "Incorrect region detected.", dataL.startsWith( region ) );
170 }
171
172 }
173
174
175
176
177
178
179
180
181
182
183
184
185
186 }
187
188
189
190
191 public static void p( final String s )
192 {
193 if ( isSysOut )
194 {
195 System.out.println( s );
196 }
197 }
198 }