Clover coverage report -
Coverage timestamp: Wed Jan 31 2007 15:38:53 EST
file stats: LOC: 374   Methods: 11
NCLOC: 237   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
NetworkManagementTest.java - 99.5% 90.9% 99%
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 NetworkManagementTest extends TestCase
 33    {
 34    Log log = LogFactory.getLog(NetworkManagementTest.class);
 35    PojoCache cache1;
 36   
 37  10 public NetworkManagementTest(String name)
 38    {
 39  10 super(name);
 40    }
 41   
 42  10 protected void setUp() throws Exception
 43    {
 44  10 super.setUp();
 45  10 log.info("setUp() ....");
 46  10 cache1 = createCache("CacheGroup");
 47    }
 48   
 49  10 protected void tearDown() throws Exception
 50    {
 51  10 super.tearDown();
 52  10 cache1.getCache().removeNode(Fqn.fromString("/"));
 53  10 cache1.stop();
 54    }
 55   
 56  10 private PojoCache createCache(String name) throws Exception
 57    {
 58  10 boolean toStart = false;
 59  10 PojoCache cache = PojoCacheFactory.createCache(UnitTestCacheFactory.createConfiguration(CacheMode.REPL_SYNC), toStart);
 60  10 cache.start();
 61  10 return cache;
 62    }
 63   
 64    /**
 65    * Domain shares Admin object.
 66    */
 67  2 public void testDomainAndAdmin() throws Exception
 68    {
 69  2 NetworkAdmin admin = new NetworkAdmin();
 70  2 admin.setId("Benny");
 71   
 72  2 NetworkDomain tempSensorDomain = new NetworkDomain();
 73  2 tempSensorDomain.setName("Temperature sensors");
 74  2 tempSensorDomain.setAdmin(admin);
 75   
 76   
 77  2 NetworkDomain vibSensorDomain = new NetworkDomain();
 78  2 vibSensorDomain.setName("Vibration sensors");
 79  2 vibSensorDomain.setAdmin(admin);
 80   
 81  2 cache1.attach("/temp", tempSensorDomain);
 82  2 cache1.attach("/vib", vibSensorDomain);
 83   
 84  2 NetworkDomain d1 = (NetworkDomain) cache1.find("/temp");
 85  2 NetworkDomain d2 = (NetworkDomain) cache1.find("/vib");
 86   
 87  2 assertEquals("Admin should be the same", d1.getAdmin(), d2.getAdmin());
 88   
 89  2 d2.getAdmin().setId("Wen");
 90  2 assertEquals("New admin id is ", "Wen", d1.getAdmin().getId());
 91   
 92  2 assertEquals("New admin id is ", "Wen", admin.getId());
 93   
 94  2 NetworkDomain temp1 = (NetworkDomain) cache1.detach("/temp");
 95  2 NetworkDomain vib1 = (NetworkDomain) cache1.detach("/vib");
 96   
 97  2 assertEquals("Vibration sensor ", vibSensorDomain, vib1);
 98  2 assertEquals("Temperature sensor ", tempSensorDomain, temp1);
 99    }
 100   
 101    /**
 102    * Domain shares Admin object, domain also contains a list of Nodes, and each DataNode has sensor elements
 103    */
 104  2 public void testNodeAndElement() throws Exception
 105    {
 106    // Construct nodes
 107  2 NetworkNode taipei = new NetworkNode();
 108  2 taipei.setName("Taipei machine");
 109  2 taipei.setIpAddress("192.168.1.100");
 110   
 111  2 NetworkNode tainan = new NetworkNode();
 112  2 tainan.setName("Tainan machine");
 113  2 tainan.setIpAddress("192.168.1.200");
 114   
 115    // Contruct sensor elements
 116  2 NetworkElement vibSensor1 = new NetworkElement();
 117  2 vibSensor1.setName("Vibration sensor V10");
 118   
 119  2 NetworkElement vibSensor2 = new NetworkElement();
 120  2 vibSensor2.setName("Vibration sensor V20");
 121   
 122  2 NetworkElement tempSensor1 = new NetworkElement();
 123  2 tempSensor1.setName("Temperature sensor T10");
 124   
 125  2 NetworkElement tempSensor2 = new NetworkElement();
 126  2 tempSensor2.setName("Temperature sensor T20");
 127   
 128    // Add sensor element to DataNode
 129  2 taipei.addElement(vibSensor1);
 130  2 taipei.addElement(tempSensor1);
 131  2 tainan.addElement(vibSensor2);
 132  2 tainan.addElement(tempSensor2);
 133   
 134  2 assertEquals("Element size ", 2, taipei.getElements().size());
 135   
 136    // ask cache to manage the domains
 137  2 cache1.attach("/taipei", taipei);
 138  2 cache1.attach("/tainan", tainan);
 139   
 140  2 NetworkNode taipei1 = (NetworkNode) cache1.find("/taipei");
 141  2 NetworkNode tainan1 = (NetworkNode) cache1.find("/tainan");
 142   
 143  2 taipei1.setIpAddress("192.168.10.100");
 144  2 assertEquals("New admin id is ", "192.168.10.100", taipei.getIpAddress());
 145   
 146  2 List l2 = taipei1.getElements();
 147  2 assertEquals("Size is ", 2, l2.size());
 148  2 NetworkElement vibSens1 = (NetworkElement) l2.get(0);
 149  2 NetworkElement tempSens1 = (NetworkElement) l2.get(1);
 150   
 151  2 int SUSPENDED = 2;
 152  2 vibSens1.setStatus(SUSPENDED);
 153  2 tempSens1.setStatus(SUSPENDED);
 154   
 155  2 assertEquals("Status ", vibSensor1.getStatus(), vibSens1.getStatus());
 156  2 assertEquals("Status ", tempSensor1.getStatus(), tempSens1.getStatus());
 157    }
 158   
 159    /**
 160    * Domain shares Admin object, domain also contains a list of Nodes, and each DataNode has sensor elements
 161    */
 162  2 public void testSharedNodeAndElement() throws Exception
 163    {
 164    // Construct nodes
 165  2 NetworkNode taipei = new NetworkNode();
 166  2 taipei.setName("Taipei machine");
 167  2 taipei.setIpAddress("192.168.1.100");
 168   
 169  2 NetworkNode tainan = new NetworkNode();
 170  2 tainan.setName("Tainan machine");
 171  2 tainan.setIpAddress("192.168.1.200");
 172   
 173    // Contruct sensor elements
 174  2 NetworkElement vibSensor1 = new NetworkElement();
 175  2 vibSensor1.setName("Vibration sensor V10");
 176   
 177  2 NetworkElement vibSensor2 = new NetworkElement();
 178  2 vibSensor2.setName("Vibration sensor V20");
 179   
 180  2 NetworkElement tempSensor1 = new NetworkElement();
 181  2 tempSensor1.setName("Temperature sensor T10");
 182   
 183  2 NetworkElement tempSensor2 = new NetworkElement();
 184  2 tempSensor2.setName("Temperature sensor T20");
 185   
 186    // Add sensor element to DataNode
 187  2 taipei.addElement(vibSensor1);
 188  2 taipei.addElement(tempSensor1);
 189  2 tainan.addElement(vibSensor2);
 190  2 tainan.addElement(tempSensor2);
 191   
 192  2 assertEquals("Element size ", 2, taipei.getElements().size());
 193   
 194    // ask cache to manage the domains
 195  2 cache1.attach("/taipei", taipei);
 196  2 cache1.attach("/alias", taipei);
 197   
 198  2 NetworkNode taipei1 = (NetworkNode) cache1.find("/taipei");
 199  2 NetworkNode taipei2 = (NetworkNode) cache1.find("/alias");
 200   
 201  2 taipei1.setIpAddress("192.168.10.100");
 202  2 assertEquals("New admin id is ", "192.168.10.100", taipei.getIpAddress());
 203   
 204  2 List l2 = taipei2.getElements();
 205  2 assertEquals("Size is ", 2, l2.size());
 206  2 NetworkElement vibSens1 = (NetworkElement) l2.get(0);
 207  2 NetworkElement tempSens1 = (NetworkElement) l2.get(1);
 208   
 209  2 int SUSPENDED = 2;
 210  2 vibSens1.setStatus(SUSPENDED);
 211  2 tempSens1.setStatus(SUSPENDED);
 212   
 213  2 assertEquals("Status ", vibSensor1.getStatus(), vibSens1.getStatus());
 214  2 assertEquals("Status ", tempSensor1.getStatus(), tempSens1.getStatus());
 215    }
 216   
 217   
 218    /**
 219    * Domain shares Admin object, domain also contains a list of Nodes, and each DataNode has sensor elements
 220    */
 221  2 public void testRecursive() throws Exception
 222    {
 223  2 NetworkAdmin admin = new NetworkAdmin();
 224  2 admin.setId("Benny");
 225   
 226    // Construct domains
 227  2 NetworkDomain tempSensorDomain = new NetworkDomain();
 228  2 tempSensorDomain.setName("Temperature sensors");
 229  2 tempSensorDomain.setAdmin(admin);
 230   
 231  2 NetworkDomain vibSensorDomain = new NetworkDomain();
 232  2 vibSensorDomain.setName("Vibration sensors");
 233  2 vibSensorDomain.setAdmin(admin);
 234   
 235    // Construct nodes
 236  2 NetworkNode taipei = new NetworkNode();
 237  2 taipei.setName("Taipei machine");
 238  2 taipei.setIpAddress("192.168.1.100");
 239   
 240  2 NetworkNode tainan = new NetworkNode();
 241  2 tainan.setName("Tainan machine");
 242  2 tainan.setIpAddress("192.168.1.200");
 243   
 244    // Contruct sensor elements
 245  2 NetworkElement vibSensor1 = new NetworkElement();
 246  2 vibSensor1.setName("Vibration sensor V10");
 247   
 248  2 NetworkElement vibSensor2 = new NetworkElement();
 249  2 vibSensor2.setName("Vibration sensor V20");
 250   
 251  2 NetworkElement tempSensor1 = new NetworkElement();
 252  2 tempSensor1.setName("Temperature sensor T10");
 253   
 254  2 NetworkElement tempSensor2 = new NetworkElement();
 255  2 tempSensor2.setName("Temperature sensor T20");
 256   
 257    // Add sensor element to DataNode
 258  2 taipei.addElement(vibSensor1);
 259  2 taipei.addElement(tempSensor1);
 260  2 tainan.addElement(vibSensor2);
 261  2 tainan.addElement(tempSensor2);
 262   
 263  2 assertEquals("Element size ", 2, taipei.getElements().size());
 264   
 265    // Add elements to domains
 266  2 vibSensorDomain.addElement(vibSensor1);
 267  2 vibSensorDomain.addElement(vibSensor2);
 268   
 269  2 tempSensorDomain.addElement(tempSensor1);
 270  2 tempSensorDomain.addElement(tempSensor2);
 271   
 272    // ask cache to manage the domains
 273  2 cache1.attach("/vib", vibSensorDomain);
 274   
 275    // System.out.println(cache1.printDetails());
 276    }
 277   
 278    /**
 279    * Domain shares Admin object, domain also contains a list of Nodes, and each DataNode has sensor elements
 280    */
 281  2 public void testAll() throws Exception
 282    {
 283    // Construct domains
 284  2 NetworkDomain tempSensorDomain = new NetworkDomain();
 285  2 tempSensorDomain.setName("Temperature sensors");
 286   
 287  2 NetworkDomain vibSensorDomain = new NetworkDomain();
 288  2 vibSensorDomain.setName("Vibration sensors");
 289   
 290    // Construct nodes
 291  2 NetworkNode taipei = new NetworkNode();
 292  2 taipei.setName("Taipei machine");
 293  2 taipei.setIpAddress("192.168.1.100");
 294   
 295  2 NetworkNode tainan = new NetworkNode();
 296  2 tainan.setName("Tainan machine");
 297  2 tainan.setIpAddress("192.168.1.200");
 298   
 299    // Contruct sensor elements
 300  2 NetworkElement vibSensor1 = new NetworkElement();
 301  2 vibSensor1.setName("Vibration sensor V10");
 302   
 303  2 NetworkElement vibSensor2 = new NetworkElement();
 304  2 vibSensor2.setName("Vibration sensor V20");
 305   
 306  2 NetworkElement tempSensor1 = new NetworkElement();
 307  2 tempSensor1.setName("Temperature sensor T10");
 308   
 309  2 NetworkElement tempSensor2 = new NetworkElement();
 310  2 tempSensor2.setName("Temperature sensor T20");
 311   
 312    // Add sensor element to DataNode
 313  2 taipei.addElement(vibSensor1);
 314  2 taipei.addElement(tempSensor1);
 315  2 tainan.addElement(vibSensor2);
 316  2 tainan.addElement(tempSensor2);
 317   
 318  2 assertEquals("Element size ", 2, taipei.getElements().size());
 319   
 320    // Add elements to domains
 321  2 vibSensorDomain.addElement(vibSensor1);
 322  2 vibSensorDomain.addElement(vibSensor2);
 323   
 324  2 tempSensorDomain.addElement(tempSensor1);
 325  2 tempSensorDomain.addElement(tempSensor2);
 326   
 327    // ask cache to manage the domains
 328  2 cache1.attach("/vib", vibSensorDomain);
 329  2 cache1.attach("/temp", tempSensorDomain);
 330   
 331  2 NetworkDomain temp1 = (NetworkDomain) cache1.find("/temp");
 332  2 NetworkDomain vib1 = (NetworkDomain) cache1.find("/vib");
 333   
 334  2 NetworkNode taipei1 = (NetworkNode) temp1.getNodes().get(0);
 335    // NetworkNode taipei1 = (NetworkNode)temp1.getNodes().get(1); this would fail on equality
 336  2 NetworkNode taipei2 = (NetworkNode) vib1.getNodes().get(0);
 337   
 338  2 List l1 = temp1.getNodes();
 339  2 assertEquals("Size is ", 2, l1.size());
 340   
 341  2 l1 = taipei.getElements();
 342  2 assertEquals("Size is ", 2, l1.size());
 343   
 344  2 assertEquals("IPAddress ", taipei.getIpAddress(), taipei1.getIpAddress());
 345  2 assertTrue("DataNode should be the same", (taipei1 == taipei2));
 346   
 347  2 taipei2.setIpAddress("192.168.10.100");
 348  2 assertEquals("New admin id is ", "192.168.10.100", taipei.getIpAddress());
 349   
 350  2 List l2 = taipei1.getElements();
 351  2 assertEquals("Size is ", 2, l2.size());
 352  2 NetworkElement vibSens1 = (NetworkElement) l2.get(0);
 353  2 NetworkElement tempSens1 = (NetworkElement) l2.get(1);
 354   
 355  2 int SUSPENDED = 2;
 356  2 vibSens1.setStatus(SUSPENDED);
 357  2 tempSens1.setStatus(SUSPENDED);
 358   
 359  2 assertEquals("Status ", vibSensor1.getStatus(), vibSens1.getStatus());
 360  2 assertEquals("Status ", tempSensor1.getStatus(), tempSens1.getStatus());
 361    }
 362   
 363  2 public static Test suite() throws Exception
 364    {
 365  2 return new TestSuite(NetworkManagementTest.class);
 366    }
 367   
 368  0 public static void main(String[] args) throws Exception
 369    {
 370  0 junit.textui.TestRunner.run(suite());
 371    }
 372   
 373    }
 374