Clover coverage report -
Coverage timestamp: Wed Jan 31 2007 15:38:53 EST
file stats: LOC: 274   Methods: 9
NCLOC: 180   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ReplicatedNetworkManagementTest.java - 99.2% 88.9% 98.6%
coverage coverage
 1    package org.jboss.cache.pojo.integrated;
 2   
 3    import junit.framework.Test;
 4    import junit.framework.TestCase;
 5    import junit.framework.TestSuite;
 6    import org.apache.commons.logging.Log;
 7    import org.apache.commons.logging.LogFactory;
 8    import org.jboss.cache.config.Configuration.CacheMode;
 9    import org.jboss.cache.factories.UnitTestCacheFactory;
 10    import org.jboss.cache.pojo.PojoCache;
 11    import org.jboss.cache.pojo.PojoCacheFactory;
 12    import org.jboss.cache.pojo.test.NetworkAdmin;
 13    import org.jboss.cache.pojo.test.NetworkDomain;
 14    import org.jboss.cache.pojo.test.NetworkElement;
 15    import org.jboss.cache.pojo.test.NetworkNode;
 16    import org.jboss.cache.Fqn;
 17   
 18    import java.util.List;
 19   
 20    /**
 21    * Sample example for network management that consists of fine-grained replication and object graph (including
 22    * Collection)
 23    * <p>Specifically, it illustrates the following object relationship:
 24    * <ul>
 25    * <li>Multiple referece, e.g., shared sub-objects (Domain may share DataNode)</li>
 26    * <li>Recursive, e.g., parent-child relationship (DataNode and Element)</li>
 27    * </ul>
 28    *
 29    * @author Ben Wang
 30    */
 31   
 32    public class ReplicatedNetworkManagementTest extends TestCase
 33    {
 34    Log log = LogFactory.getLog(ReplicatedNetworkManagementTest.class);
 35    PojoCache cache1;
 36    PojoCache cache2;
 37   
 38  6 public ReplicatedNetworkManagementTest(String name)
 39    {
 40  6 super(name);
 41    }
 42   
 43  6 protected void setUp() throws Exception
 44    {
 45  6 super.setUp();
 46  6 log.info("setUp() ....");
 47  6 cache1 = createCache("CacheGroup");
 48  6 cache2 = createCache("CacheGroup");
 49    }
 50   
 51  6 protected void tearDown() throws Exception
 52    {
 53  6 super.tearDown();
 54  6 cache1.getCache().removeNode(Fqn.fromString("/"));
 55  6 cache1.stop();
 56  6 cache2.stop();
 57    }
 58   
 59  12 private PojoCache createCache(String name) throws Exception
 60    {
 61  12 boolean toStart = false;
 62  12 PojoCache cache = PojoCacheFactory.createCache(UnitTestCacheFactory.createConfiguration(CacheMode.REPL_SYNC), toStart);
 63  12 cache.start();
 64  12 return cache;
 65    }
 66   
 67    /**
 68    * Domain shares Admin object.
 69    */
 70  2 public void testDomainAndAdmin() throws Exception
 71    {
 72  2 NetworkAdmin admin = new NetworkAdmin();
 73  2 admin.setId("Benny");
 74   
 75  2 NetworkDomain tempSensorDomain = new NetworkDomain();
 76  2 tempSensorDomain.setName("Temperature sensors");
 77  2 tempSensorDomain.setAdmin(admin);
 78   
 79   
 80  2 NetworkDomain vibSensorDomain = new NetworkDomain();
 81  2 vibSensorDomain.setName("Vibration sensors");
 82  2 vibSensorDomain.setAdmin(admin);
 83   
 84  2 cache1.attach("/temp", tempSensorDomain);
 85  2 cache1.attach("/vib", vibSensorDomain);
 86   
 87  2 NetworkDomain d1 = (NetworkDomain) cache2.find("/temp");
 88  2 NetworkDomain d2 = (NetworkDomain) cache2.find("/vib");
 89   
 90  2 assertEquals("Admin should be the same", d1.getAdmin(), d2.getAdmin());
 91   
 92  2 d2.getAdmin().setId("Wen");
 93  2 assertEquals("New admin id is ", "Wen", d1.getAdmin().getId());
 94  2 assertEquals("New admin id is ", "Wen", admin.getId());
 95   
 96  2 d1 = (NetworkDomain) cache2.find("/vib");
 97  2 d2 = (NetworkDomain) cache2.find("/temp");
 98  2 assertEquals("Admin should be the same", d1.getAdmin(), d2.getAdmin());
 99   
 100  2 d2.getAdmin().setId("Wen");
 101  2 assertEquals("New admin id is ", "Wen", d1.getAdmin().getId());
 102  2 assertEquals("New admin id is ", "Wen", admin.getId());
 103   
 104  2 NetworkDomain temp1 = (NetworkDomain) cache1.detach("/temp");
 105  2 NetworkDomain vib1 = (NetworkDomain) cache1.detach("/vib");
 106   
 107  2 assertEquals("Vibration sensor ", vibSensorDomain, vib1);
 108  2 assertEquals("Temperature sensor ", tempSensorDomain, temp1);
 109   
 110    }
 111   
 112    /**
 113    * Domain shares Admin object, domain also contains a list of Nodes, and each DataNode has sensor elements
 114    */
 115  2 public void testNodeAndElement() throws Exception
 116    {
 117    // Construct nodes
 118  2 NetworkNode taipei = new NetworkNode();
 119  2 taipei.setName("Taipei machine");
 120  2 taipei.setIpAddress("192.168.1.100");
 121   
 122  2 NetworkNode tainan = new NetworkNode();
 123  2 tainan.setName("Tainan machine");
 124  2 tainan.setIpAddress("192.168.1.200");
 125   
 126    // Contruct sensor elements
 127  2 NetworkElement vibSensor1 = new NetworkElement();
 128  2 vibSensor1.setName("Vibration sensor V10");
 129   
 130  2 NetworkElement vibSensor2 = new NetworkElement();
 131  2 vibSensor2.setName("Vibration sensor V20");
 132   
 133  2 NetworkElement tempSensor1 = new NetworkElement();
 134  2 tempSensor1.setName("Temperature sensor T10");
 135   
 136  2 NetworkElement tempSensor2 = new NetworkElement();
 137  2 tempSensor2.setName("Temperature sensor T20");
 138   
 139    // Add sensor element to DataNode
 140  2 taipei.addElement(vibSensor1);
 141  2 taipei.addElement(tempSensor1);
 142  2 tainan.addElement(vibSensor2);
 143  2 tainan.addElement(tempSensor2);
 144   
 145  2 assertEquals("Element size ", 2, taipei.getElements().size());
 146   
 147    // ask cache to manage the domains
 148  2 cache1.attach("/taipei", taipei);
 149  2 cache1.attach("/tainan", tainan);
 150   
 151  2 NetworkNode taipei1 = (NetworkNode) cache2.find("/taipei");
 152  2 NetworkNode tainan1 = (NetworkNode) cache2.find("/tainan");
 153   
 154  2 taipei1.setIpAddress("192.168.10.100");
 155  2 assertEquals("New admin id is ", "192.168.10.100", taipei.getIpAddress());
 156   
 157  2 tainan1.setIpAddress("192.168.10.200");
 158  2 assertEquals("New admin id is ", "192.168.10.200", tainan.getIpAddress());
 159   
 160  2 List l2 = taipei1.getElements();
 161  2 assertEquals("Size is ", 2, l2.size());
 162  2 NetworkElement vibSens1 = (NetworkElement) l2.get(0);
 163  2 NetworkElement tempSens1 = (NetworkElement) l2.get(1);
 164   
 165  2 int SUSPENDED = 2;
 166  2 vibSens1.setStatus(SUSPENDED);
 167  2 tempSens1.setStatus(SUSPENDED);
 168   
 169  2 assertEquals("Status ", vibSensor1.getStatus(), vibSens1.getStatus());
 170  2 assertEquals("Status ", tempSensor1.getStatus(), tempSens1.getStatus());
 171    }
 172   
 173    /**
 174    * Domain shares Admin object, domain also contains a list of Nodes, and each DataNode has sensor elements
 175    */
 176  2 public void testAll() throws Exception
 177    {
 178  2 NetworkAdmin admin = new NetworkAdmin();
 179  2 admin.setId("Benny");
 180   
 181    // Construct domains
 182  2 NetworkDomain tempSensorDomain = new NetworkDomain();
 183  2 tempSensorDomain.setName("Temperature sensors");
 184  2 tempSensorDomain.setAdmin(admin);
 185   
 186  2 NetworkDomain vibSensorDomain = new NetworkDomain();
 187  2 vibSensorDomain.setName("Vibration sensors");
 188  2 vibSensorDomain.setAdmin(admin);
 189   
 190    // Construct nodes
 191  2 NetworkNode taipei = new NetworkNode();
 192  2 taipei.setName("Taipei machine");
 193  2 taipei.setIpAddress("192.168.1.100");
 194   
 195  2 NetworkNode tainan = new NetworkNode();
 196  2 tainan.setName("Tainan machine");
 197  2 tainan.setIpAddress("192.168.1.200");
 198   
 199    // Contruct sensor elements
 200  2 NetworkElement vibSensor1 = new NetworkElement();
 201  2 vibSensor1.setName("Vibration sensor V10");
 202   
 203  2 NetworkElement vibSensor2 = new NetworkElement();
 204  2 vibSensor2.setName("Vibration sensor V20");
 205   
 206  2 NetworkElement tempSensor1 = new NetworkElement();
 207  2 tempSensor1.setName("Temperature sensor T10");
 208   
 209  2 NetworkElement tempSensor2 = new NetworkElement();
 210  2 tempSensor2.setName("Temperature sensor T20");
 211   
 212    // Add sensor element to DataNode
 213  2 taipei.addElement(vibSensor1);
 214  2 taipei.addElement(tempSensor1);
 215  2 tainan.addElement(vibSensor2);
 216  2 tainan.addElement(tempSensor2);
 217   
 218  2 assertEquals("Element size ", 2, taipei.getElements().size());
 219   
 220    // Add elements to domains
 221  2 vibSensorDomain.addElement(vibSensor1);
 222  2 vibSensorDomain.addElement(vibSensor2);
 223   
 224  2 tempSensorDomain.addElement(tempSensor1);
 225  2 tempSensorDomain.addElement(tempSensor2);
 226   
 227    // ask cache to manage the domains
 228  2 cache1.attach("/temp", tempSensorDomain);
 229  2 cache1.attach("/vib", vibSensorDomain);
 230   
 231  2 NetworkDomain temp1 = (NetworkDomain) cache2.find("/temp");
 232  2 NetworkDomain vib1 = (NetworkDomain) cache2.find("/vib");
 233   
 234  2 NetworkNode taipei1 = (NetworkNode) temp1.getNodes().get(0);
 235    // NetworkNode taipei1 = (NetworkNode)temp1.getNodes().get(1); this would fail on equality
 236  2 NetworkNode taipei2 = (NetworkNode) vib1.getNodes().get(0);
 237   
 238  2 List l1 = temp1.getNodes();
 239  2 assertEquals("Size is ", 2, l1.size());
 240   
 241  2 l1 = taipei.getElements();
 242  2 assertEquals("Size is ", 2, l1.size());
 243   
 244  2 assertEquals("IPAddress ", taipei.getIpAddress(), taipei1.getIpAddress());
 245  2 assertTrue("DataNode should be the same", (taipei1 == taipei2));
 246   
 247  2 taipei2.setIpAddress("192.168.10.100");
 248  2 assertEquals("New admin id is ", "192.168.10.100", taipei.getIpAddress());
 249   
 250  2 List l2 = taipei1.getElements();
 251  2 assertEquals("Size is ", 2, l2.size());
 252  2 NetworkElement vibSens1 = (NetworkElement) l2.get(0);
 253  2 NetworkElement tempSens1 = (NetworkElement) l2.get(1);
 254   
 255  2 int SUSPENDED = 2;
 256  2 vibSens1.setStatus(SUSPENDED);
 257  2 tempSens1.setStatus(SUSPENDED);
 258   
 259  2 assertEquals("Status ", vibSensor1.getStatus(), vibSens1.getStatus());
 260  2 assertEquals("Status ", tempSensor1.getStatus(), tempSens1.getStatus());
 261    }
 262   
 263  2 public static Test suite() throws Exception
 264    {
 265  2 return new TestSuite(ReplicatedNetworkManagementTest.class);
 266    }
 267   
 268  0 public static void main(String[] args) throws Exception
 269    {
 270  0 junit.textui.TestRunner.run(suite());
 271    }
 272   
 273    }
 274