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);
ObjectName dsService = new ObjectName("jboss.test:service=DistributedStateTestCase");
IDistributedState ds0 = (IDistributedState)
MBeanServerInvocationHandler.newProxyInstance(server0, dsService,
IDistributedState.class, true);
TestListener listener0 = new TestListener();
server0.addNotificationListener(dsService, listener0, null, null);
ds0.put("key0", "value0");
String value = (String) ds0.get("key0");
log.info("server0: get(key0): "+value);
assertEquals("server0: value == value0", "value0", value);
MBeanServerConnection server1 = adaptors[1];
log.info("server1: "+server1);
Vector<?> view1 = (Vector<?>) server1.getAttribute(clusterService, "CurrentView");
log.info("server1: CurrentView, "+view1);
IDistributedState ds1 = (IDistributedState)
MBeanServerInvocationHandler.newProxyInstance(server1, dsService,
IDistributedState.class, true);
TestListener listener1 = new TestListener();
server1.addNotificationListener(dsService, listener1, null, null);
value = (String) ds1.get("key0");
log.info("server1: get(key0): "+value);
assertEquals("server1: value == value0", "value0", value);
ds1.put("key0", "value1");
value = (String) ds1.get("key0");
assertEquals("server1: value == value1("+value+")", "value1", value);
log.info("server1: get(key0): "+value);
value = (String) ds0.get("key0");
assertEquals("server0: value == value1("+value+")", "value1", value);
log.info("server0: get(key0): "+value);
ds1.put("key1", "value11");
Collection<?> categories = ds0.listAllCategories();
log.info("server0: categories: " + categories);
assertTrue("server0 has category " + NOTIFY_CATEGORY, categories.contains(NOTIFY_CATEGORY));
categories = ds1.listAllCategories();
log.info("server1: categories: " + categories);
assertTrue("server1 has category " + NOTIFY_CATEGORY, categories.contains(NOTIFY_CATEGORY));
Collection<?> keys = ds0.listAllKeys(NOTIFY_CATEGORY);
log.info("server0: keys: " + keys);
assertEquals("server0 keys size", 2, keys.size());
keys = ds1.listAllKeys(NOTIFY_CATEGORY);
log.info("server1: keys: " + keys);
assertEquals("server1 keys size", 2, keys.size());
Collection<?> vals = ds0.listAllValues(NOTIFY_CATEGORY);
log.info("server0: values: " + vals);
assertEquals("server0 values size", 2, vals.size());
vals = ds1.listAllValues(NOTIFY_CATEGORY);
log.info("server1: values: " + vals);
assertEquals("server1 values size", 2, vals.size());
ds0.remove("key0");
value = (String) ds1.get("key0");
assertNull("server1: value == null("+value+")", value);
value = (String) ds0.get("key0");
assertNull("server0: value == null("+value+")", value);
// set a key/value on server0 and test its notifications on both servers
ds0.put(NOTIFY_KEY, NOTIFY_VALUE);
Thread.sleep(5000);
// check the change notification on server0
String type = listener0.getNotificationType();
NotifyData data = (NotifyData)listener0.getNotificationData();
assertTrue("server0: change notification type = " + type, type.equals(DistributedStateUser.NOTIFY_CHANGE));
assertNotNull("server0: change notification data is null", data);
String cat = data.category;
String key = (String)data.key;
String val = (String)data.value;
boolean isLocal = data.locallyModified;
assertEquals("server0: change notification category = " + cat, NOTIFY_CATEGORY, cat);
assertEquals("server0: change notification key = " + key, NOTIFY_KEY, key);
assertEquals("server0: change notification value = " + val, NOTIFY_VALUE, val);
assertTrue("server0: change notification isLocal = " + isLocal, isLocal);
// check the change notification on server1
type = listener1.getNotificationType();
data = (NotifyData)listener1.getNotificationData();
assertTrue("server1: change notification type = " + type, type.equals(DistributedStateUser.NOTIFY_CHANGE));
assertNotNull("server1: change notification data is null", data);
cat = data.category;
key = (String)data.key;
val = (String)data.value;
isLocal = data.locallyModified;
assertEquals("server1: change notification category = " + cat, NOTIFY_CATEGORY, cat);
assertEquals("server1: change notification key = " + key, NOTIFY_KEY, key);
assertEquals("server1: change notification value = " + val, NOTIFY_VALUE, val);
assertFalse("server1: change notification isLocal = " + isLocal, isLocal);
// remove the key from server1 and check its notifications
ds1.remove(NOTIFY_KEY);
Thread.sleep(5000);
// check the remove notification on server0
type = listener0.getNotificationType();
data = (NotifyData)listener0.getNotificationData();