1 package org.apache.commons.jcs3.auxiliary.remote;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.apache.commons.jcs3.auxiliary.AuxiliaryCache;
7 import org.apache.commons.jcs3.auxiliary.remote.behavior.IRemoteCacheAttributes;
8 import org.apache.commons.jcs3.engine.CacheStatus;
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 import junit.framework.TestCase;
30
31
32
33
34 public class RemoteCacheNoWaitFacadeUnitTest
35 extends TestCase
36 {
37
38
39
40 public void testAddNoWait_InList()
41 {
42
43 final List<RemoteCacheNoWait<String, String>> noWaits = new ArrayList<>();
44 final IRemoteCacheAttributes cattr = new RemoteCacheAttributes();
45 cattr.setCacheName( "testCache1" );
46
47 final RemoteCache<String, String> client = new RemoteCache<>(cattr, null, null, null);
48 final RemoteCacheNoWait<String, String> noWait = new RemoteCacheNoWait<>( client );
49 noWaits.add( noWait );
50
51 final RemoteCacheNoWaitFacade<String, String> facade = new RemoteCacheNoWaitFacade<>(noWaits, cattr, null, null, null );
52
53
54 assertEquals( "Should have one entry.", 1, facade.noWaits.size() );
55 assertTrue( "Should be in the list.", facade.noWaits.contains( noWait ) );
56 assertSame( "Should have same facade.", facade, ((RemoteCache<String, String>)facade.noWaits.get(0).getRemoteCache()).getFacade() );
57 }
58
59
60
61
62 public void testFailover()
63 {
64
65 final IRemoteCacheAttributes cattr = new RemoteCacheAttributes();
66 cattr.setCacheName("testCache1");
67 cattr.setFailoverServers("localhost:1101,localhost:1102");
68 cattr.setReceive(false);
69
70 final TestRemoteCacheFactory factory = new TestRemoteCacheFactory();
71 factory.initialize();
72
73 final AuxiliaryCache<String, String> cache = factory.createCache(cattr, null, null, null);
74 final RemoteCacheNoWaitFacade<String, String> facade =
75 (RemoteCacheNoWaitFacade<String, String>) cache;
76 assertEquals("Should have two failovers.", 2, cattr.getFailovers().size());
77 assertEquals("Should have two managers.", 2, factory.managers.size());
78 assertEquals("Should have primary server.", 0, cattr.getFailoverIndex());
79 RemoteCacheNoWait<String, String> primary = facade.getPrimaryServer();
80 assertEquals("Should be ALIVE", CacheStatus.ALIVE, primary.getStatus());
81
82
83 facade.getPrimaryServer().getCacheEventQueue().destroy();
84 assertEquals("Should be ERROR", CacheStatus.ERROR, primary.getStatus());
85 facade.attemptRestorePrimary = false;
86 facade.connectAndRestore();
87
88
89 assertEquals("Should have two failovers.", 2, cattr.getFailovers().size());
90 assertEquals("Should have two managers.", 2, factory.managers.size());
91 assertEquals("Should have switched to secondary server.", 1, cattr.getFailoverIndex());
92 assertNotSame("Should have diferent primary now", primary, facade.getPrimaryServer());
93 assertEquals("Should be ALIVE", CacheStatus.ALIVE, facade.getPrimaryServer().getStatus());
94 }
95 }