KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > cache > test > standAloneAop > ReplicatedObjectGraphAopTest


1 /*
2 * JBoss, the OpenSource J2EE webOS
3 *
4 * Distributable under LGPL license.
5 * See terms of license at gnu.org.
6 */

7 package org.jboss.test.cache.test.standAloneAop;
8
9 import junit.framework.Test;
10 import junit.framework.TestCase;
11 import junit.framework.TestSuite;
12 import org.jboss.cache.aop.TreeCacheAop;
13 import org.jboss.logging.Logger;
14
15 /**
16  * Test object graph handling in aop, e.g., circular reference, multiple reference, link, etc.
17  * @author Ben Wang
18  */

19
20 public class ReplicatedObjectGraphAopTest extends TestCase
21 {
22    Logger log = Logger.getLogger(ReplicatedObjectGraphAopTest.class);
23    TreeCacheAopTester tester1;
24    TreeCacheAopTester tester2;
25
26
27    public ReplicatedObjectGraphAopTest(String JavaDoc name)
28    {
29       super(name);
30    }
31
32    protected void setUp() throws Exception JavaDoc
33    {
34       super.setUp();
35       log.info("setUp() ....");
36       String JavaDoc configFile = "META-INF/replSync-service.xml";
37       tester1 = new TreeCacheAopTester(configFile);
38       tester2 = new TreeCacheAopTester(configFile);
39    }
40
41    protected void tearDown() throws Exception JavaDoc
42    {
43       super.tearDown();
44       tester1.stop();
45       tester1 = null;
46       tester2.stop();
47       tester2 = null;
48    }
49
50 // public void testDummy() {}
51

52    public void testSetup()
53    {
54       log.info("testSetup() ....");
55       try {
56          tester1.testSetup();
57          tester2.testSetup();
58       } catch (Exception JavaDoc ex) {
59          ex.printStackTrace();
60          fail("testSetup(): fails. " + ex.toString());
61       }
62    }
63
64
65    private void stage1()
66    {
67       tester1.createPerson("/person/joe", "Joe Black", 31);
68       Person joe = (Person) tester1.getPerson("/person/joe");
69       tester1.createPerson("/person/ben", "Ben Hogan", 51);
70       Person ben = (Person) tester1.getPerson("/person/ben");
71
72       Address addr = tester1.createAddress();
73       addr.setStreet("123 Albert Ave.");
74       addr.setCity("Sunnyvale");
75       addr.setZip(94087);
76
77       // They share the sub-object: address
78
joe.setAddress(addr);
79       assertEquals("Joe's address should still be valid ", "Sunnyvale", tester1.getCity("/person/joe"));
80       ben.setAddress(addr);
81       assertEquals("Ben's address should still be valid ", "Sunnyvale", tester1.getCity("/person/ben"));
82    }
83
84    private void stage2(TreeCacheAopTester tester)
85    {
86       //
87
tester.removePerson("/person/joe");
88       log.info("stage2(): " + tester.printCacheDetails());
89       assertEquals("Ben's address should still be valid ", "Sunnyvale", tester.getCity("/person/ben"));
90       Person ben = (Person) tester.getPerson("/person/ben");
91       Address addr = ben.getAddress();
92       addr.setCity("Santa Clara");
93       assertEquals("Ben's address should be changed ", "Santa Clara", tester.getCity("/person/ben"));
94    }
95
96    public void testRefCountCheckRepl() throws Exception JavaDoc
97    {
98       log.info("testRefCountCheckRepl() ...");
99       stage1();
100       assertEquals("Ben and Joe's address should be the same ", tester1.getCity("/person/joe"),
101             tester1.getCity("/person/ben"));
102       stage2(tester2);
103       assertEquals("Ben's address should be changed on tester1 as well ", "Santa Clara", tester1.getCity("/person/ben"));
104       tester2.removePerson("/person/ben");
105       log.info("testRefCountCheckRepl(): tester1 " + tester1.printCacheDetails());
106       log.info("testRefCountCheckRepl(): tester2 " + tester2.printCacheDetails());
107    }
108
109    public void testCircularReference1() throws Exception JavaDoc
110    {
111 // try {Thread.sleep(10000); } catch (Exception e) {};
112
log.info("testCircularReference1() ...");
113       Link parent = new Link("parent");
114       Link child = new Link("child");
115       parent.setLink(child);
116       child.setLink(parent);
117       TreeCacheAop cache1 = tester1.getCache();
118       cache1.putObject("/link/parent", parent);
119       assertEquals("parent", ((Link) cache1.getObject("/link/parent")).getName());
120       assertEquals("child", ((Link) cache1.getObject("/link/parent")).getLink().getName());
121 // tester1.getCache().putObject("/link/parent/child", child);
122
log.info("testCircularReference1(): tester1 " + tester1.printCacheDetails());
123       TreeCacheAop cache2 = tester2.getCache();
124       assertEquals("parent", ((Link) cache2.getObject("/link/parent")).getName());
125       assertEquals("child", ((Link) cache2.getObject("/link/parent")).getLink().getName());
126       log.info("testCircularReference1(): tester2 " + tester2.printCacheDetails());
127       ((Link) cache2.getObject("/link/parent")).setLink(null);
128       assertNull("Child should be null", ((Link) cache2.getObject("/link/parent")).getLink());
129    }
130
131    public void testCircularReference2() throws Exception JavaDoc
132    {
133 // try {Thread.sleep(10000); } catch (Exception e) {};
134
log.info("testCircularReference2() ...");
135       Link parent = new Link("parent");
136       Link child = new Link("child");
137       tester1.getCache().putObject("/link/parent", parent);
138       parent.setLink(child);
139       child.setLink(parent);
140       TreeCacheAop cache1 = tester1.getCache();
141       assertEquals("parent", ((Link) cache1.getObject("/link/parent")).getName());
142       assertEquals("child", ((Link) cache1.getObject("/link/parent")).getLink().getName());
143       log.info("testCircularReference2(): tester1 " + tester1.printCacheDetails());
144       TreeCacheAop cache2 = tester2.getCache();
145       assertEquals("parent", ((Link) cache2.getObject("/link/parent")).getName());
146       assertEquals("child", ((Link) cache2.getObject("/link/parent")).getLink().getName());
147       log.info("testCircularReference2(): tester2 " + tester2.printCacheDetails());
148       ((Link) cache2.getObject("/link/parent")).setLink(null);
149       assertNull("Child should be null", ((Link) cache2.getObject("/link/parent")).getLink());
150    }
151
152    public void testCircularReference3() throws Exception JavaDoc
153    {
154 // try {Thread.sleep(10000); } catch (Exception e) {};
155
log.info("testCircularReference3() ...");
156       Link parent = new Link("parent");
157       Link child = new Link("child");
158       tester1.getCache().putObject("/link/parent", parent);
159       tester1.getCache().putObject("/link/child", child);
160       parent.setLink(child);
161       child.setLink(parent);
162       TreeCacheAop cache1 = tester1.getCache();
163       assertEquals("parent", ((Link) cache1.getObject("/link/parent")).getName());
164       assertEquals("child", ((Link) cache1.getObject("/link/parent")).getLink().getName());
165       assertEquals("child", ((Link) cache1.getObject("/link/child")).getName());
166       assertEquals("parent", ((Link) cache1.getObject("/link/child")).getLink().getName());
167 // tester1.getCache().putObject("/link/parent/child", child);
168
log.info("testCircularReference3(): tester1 " + tester1.printCacheDetails());
169       TreeCacheAop cache2 = tester2.getCache();
170       assertEquals("parent", ((Link) cache2.getObject("/link/parent")).getName());
171       assertEquals("child", ((Link) cache2.getObject("/link/parent")).getLink().getName());
172       assertEquals("child", ((Link) cache2.getObject("/link/child")).getName());
173       assertEquals("parent", ((Link) cache2.getObject("/link/child")).getLink().getName());
174       log.info("testCircularReference3(): tester2 " + tester2.printCacheDetails());
175       ((Link) cache2.getObject("/link/parent")).setLink(null);
176       assertNull("Child should be null", ((Link) cache2.getObject("/link/parent")).getLink());
177    }
178
179    public static Test suite() throws Exception JavaDoc
180    {
181       return new TestSuite(ReplicatedObjectGraphAopTest.class);
182    }
183
184    public static void main(String JavaDoc[] args) throws Exception JavaDoc
185    {
186       junit.textui.TestRunner.run(suite());
187    }
188
189 }
190
191
Popular Tags