{
log.debug("+++ testStateReplication");
log.info("java.rmi.server.hostname="+System.getProperty("java.rmi.server.hostname"));
MBeanServerConnection[] adaptors = getAdaptors();
String[] servers = super.getServers();
RMIAdaptorExt server0 = (RMIAdaptorExt) adaptors[0];
log.info("server0: "+server0);
ObjectName clusterService = new ObjectName("jboss:service=HAPartition,partition=" + PARTITION_NAME);
Vector view0 = (Vector) server0.getAttribute(clusterService, "CurrentView");
log.info("server0: CurrentView, "+view0);
log.debug("+++ testStateReplication 1");
ObjectName drmService = new ObjectName("jboss.test:service=DRMTestCase");
IReplicants drm0 = (IReplicants)
MBeanServerInvocationHandler.newProxyInstance(server0, drmService,
IReplicants.class, true);
log.debug("+++ testStateReplication 2");
log.info(MBeanServerInvocationHandler.class.getProtectionDomain());
TestListener listener = new TestListener(log);
server0.addNotificationListener(drmService, listener, null, null);
log.info("server0 addNotificationListener");
log.debug("+++ testStateReplication 3");
String address = (String) drm0.lookupLocalReplicant();
log.debug("+++ testStateReplication 4");
log.info("server0: lookupLocalReplicant: "+address);
assertTrue("server0: address("+address+") == server0("+servers[0]+")",
address.equals(servers[0]));
RMIAdaptorExt server1 = (RMIAdaptorExt) adaptors[1];
log.info("server1: "+server1);
Vector view1 = (Vector) server1.getAttribute(clusterService, "CurrentView");
log.info("server1: CurrentView, "+view1);
IReplicants drm1 = (IReplicants)
MBeanServerInvocationHandler.newProxyInstance(server1, drmService,
IReplicants.class, true);
server1.addNotificationListener(drmService, listener, null, null);
log.info("server1 addNotificationListener");
address = (String) drm1.lookupLocalReplicant();
log.info("server1: lookupLocalReplicant: "+address);
assertTrue("server1: address("+address+") == server1("+servers[1]+")",
address.equals(servers[1]));
List replicants0 = drm0.lookupReplicants();
List replicants1 = drm1.lookupReplicants();
assertTrue("size of replicants0 == replicants1)",
replicants0.size() == replicants1.size());
HashSet testSet = new HashSet(replicants0);
for(int n = 0; n < replicants0.size(); n ++)
{
Object entry = replicants1.get(n);
assertTrue("replicants0 contains:"+entry, testSet.contains(entry));
}
//
for(int n = 0; n < 10; n ++)
{
drm0.add("key"+n, "data"+n+".0");
drm1.add("key"+n, "data"+n+".1");
}
for(int n = 0; n < 10; n ++)
{
String key = "key"+n;
log.info("key: "+key);
replicants0 = drm0.lookupReplicants(key);
replicants1 = drm1.lookupReplicants(key);
log.info("replicants0: "+replicants0);
log.info("replicants1: "+replicants1);
HashSet testSet0 = new HashSet(replicants0);
HashSet testSet1 = new HashSet(replicants1);
assertTrue("size of replicants0 == replicants1)",
replicants0.size() == replicants1.size());
Object entry = drm0.lookupLocalReplicant(key);
log.info("drm0.lookupLocalReplicant, key="+key+", entry="+entry);
assertTrue("replicants0 contains:"+entry, testSet0.contains(entry));
assertTrue("replicants1 contains:"+entry, testSet1.contains(entry));
entry = drm1.lookupLocalReplicant(key);
log.info("drm1.lookupLocalReplicant, key="+key+", entry="+entry);
assertTrue("replicants0 contains:"+entry, testSet0.contains(entry));
assertTrue("replicants1 contains:"+entry, testSet1.contains(entry));
}
for(int n = 0; n < 10; n ++)
drm0.remove("key"+n);
server0.removeNotificationListener(drmService, listener);
server1.removeNotificationListener(drmService, listener);
}