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