1 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 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 name) 28 { 29 super(name); 30 } 31 32 protected void setUp() throws Exception 33 { 34 super.setUp(); 35 log.info("setUp() ...."); 36 String configFile = "META-INF/replSync-service.xml"; 37 tester1 = new TreeCacheAopTester(configFile); 38 tester2 = new TreeCacheAopTester(configFile); 39 } 40 41 protected void tearDown() throws Exception 42 { 43 super.tearDown(); 44 tester1.stop(); 45 tester1 = null; 46 tester2.stop(); 47 tester2 = null; 48 } 49 50 52 public void testSetup() 53 { 54 log.info("testSetup() ...."); 55 try { 56 tester1.testSetup(); 57 tester2.testSetup(); 58 } catch (Exception 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 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 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 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 110 { 111 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 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 132 { 133 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 153 { 154 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 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 180 { 181 return new TestSuite(ReplicatedObjectGraphAopTest.class); 182 } 183 184 public static void main(String [] args) throws Exception 185 { 186 junit.textui.TestRunner.run(suite()); 187 } 188 189 } 190 191 | Popular Tags |