1 22 package org.jboss.test.cluster.test; 23 24 import java.rmi.RemoteException ; 25 import java.rmi.server.UnicastRemoteObject ; 26 import java.util.Collection ; 27 import java.util.Vector ; 28 import javax.management.MBeanServerInvocationHandler ; 29 import javax.management.ObjectName ; 30 import javax.management.Notification ; 31 32 import junit.framework.Test; 33 34 import org.jboss.test.JBossClusteredTestCase; 35 import org.jboss.test.cluster.ds.IDistributedState; 36 import org.jboss.jmx.adaptor.rmi.RMIAdaptor; 37 import org.jboss.jmx.adaptor.rmi.RMIAdaptorExt; 38 import org.jboss.jmx.adaptor.rmi.RMINotificationListener; 39 40 45 public class DistributedStateTestCase extends JBossClusteredTestCase 46 { 47 static class TestListener extends UnicastRemoteObject 48 implements RMINotificationListener 49 { 50 TestListener() throws RemoteException 51 { 52 } 53 public void handleNotification(Notification notification, Object handback) 54 throws RemoteException 55 { 56 System.out.println(notification); 57 } 58 } 59 60 public static Test suite() throws Exception 61 { 62 Test t1 = getDeploySetup(DistributedStateTestCase.class, "ds-tests.sar"); 63 return t1; 64 } 65 66 public DistributedStateTestCase(String name) 67 { 68 super(name); 69 } 70 71 public void testStateReplication() 72 throws Exception 73 { 74 log.debug("+++ testStateReplication"); 75 76 RMIAdaptor[] adaptors = getAdaptors(); 77 RMIAdaptorExt server0 = (RMIAdaptorExt) adaptors[0]; 78 log.info("server0: "+server0); 79 ObjectName clusterService = new ObjectName ("jboss:service=DefaultPartition"); 80 Vector view0 = (Vector ) server0.getAttribute(clusterService, "CurrentView"); 81 log.info("server0: CurrentView, "+view0); 82 ObjectName dsService = new ObjectName ("jboss.test:service=DistributedStateTestCase"); 83 IDistributedState ds0 = (IDistributedState) 84 MBeanServerInvocationHandler.newProxyInstance(server0, dsService, 85 IDistributedState.class, true); 86 TestListener listener = new TestListener(); 87 server0.addNotificationListener(dsService, listener, null, null); 88 ds0.put("key0", "value0"); 89 String value = (String ) ds0.get("key0"); 90 log.info("server0: get(key0): "+value); 91 assertTrue("server0: value == value0", value.equals("value0")); 92 93 RMIAdaptorExt server1 = (RMIAdaptorExt) adaptors[1]; 94 log.info("server1: "+server1); 95 Vector view1 = (Vector ) server1.getAttribute(clusterService, "CurrentView"); 96 log.info("server1: CurrentView, "+view1); 97 IDistributedState ds1 = (IDistributedState) 98 MBeanServerInvocationHandler.newProxyInstance(server1, dsService, 99 IDistributedState.class, true); 100 server1.addNotificationListener(dsService, listener, null, null); 101 value = (String ) ds1.get("key0"); 102 log.info("server1: get(key0): "+value); 103 assertTrue("server1: value == value0", value.equals("value0")); 104 ds1.put("key0", "value1"); 105 value = (String ) ds1.get("key0"); 106 assertTrue("server1: value == value1("+value+")", value.equals("value1")); 107 value = (String ) ds0.get("key0"); 108 assertTrue("server0: value == value1("+value+")", value.equals("value1")); 109 110 ds1.put("key1", "value11"); 111 Collection categories = ds0.listAllCategories(); 112 assertEquals("server0 categories size", 1, categories.size()); 113 categories = ds1.listAllCategories(); 114 assertEquals("server1 categories size", 1, categories.size()); 115 116 String category = (String )categories.iterator().next(); 117 Collection keys = ds0.listAllKeys(category); 118 assertEquals("server0 keys size", 2, keys.size()); 119 keys = ds1.listAllKeys(category); 120 assertEquals("server1 keys size", 2, keys.size()); 121 Collection vals = ds0.listAllValues(category); 122 assertEquals("server0 values size", 2, vals.size()); 123 vals = ds1.listAllValues(category); 124 assertEquals("server1 values size", 2, vals.size()); 125 126 ds0.remove("key0"); 127 value = (String ) ds1.get("key0"); 128 assertTrue("server1: value == null("+value+")", value == null); 129 value = (String ) ds0.get("key0"); 130 assertTrue("server0: value == null("+value+")", value == null); 131 } 132 133 } 134 | Popular Tags |