log.info("SUCCESS: Got no message after erase");
System.err.println("***PublishTest: Publish a message to a cluster slave - frodo is offline ...");
System.err.println("->Subscribe from heron, the message is currently erased ...");
SubscribeKey sk = new SubscribeKey(glob, oid);
sk.setDomain(domain);
SubscribeQos sq = new SubscribeQos(glob);
SubscribeReturnQos srq = heronCon.subscribe(sk.toXml(), sq.toXml(), new I_Callback() {
public String update(String cbSessionId, UpdateKey updateKey, byte[] content, UpdateQos updateQos) {
assertInUpdate = serverHelper.getHeronGlob().getId() + ": Receiving unexpected asynchronous update message";
assertEquals(assertInUpdate, oid, updateKey.getOid());
assertInUpdate = serverHelper.getHeronGlob().getId() + ": Receiving corrupted asynchronous update message";
assertEquals(assertInUpdate, contentStr, new String(content));
log.info("heronCon - Receiving asynchronous message '" + updateKey.getOid() + "' in " + oid + " handler, state=" + updateQos.getState());
updateCounterHeron++;
assertInUpdate = null;
return "";
}
}); // subscribe with our specific update handler
try { Thread.sleep(1000); } catch( InterruptedException i) {} // Wait some time
assertTrue(assertInUpdate, assertInUpdate == null);
assertInUpdate = null;
serverHelper.stopFrodo();
System.err.println("->Check: heron hasn't got the message ...");
gk = new GetKey(glob, oid);
msgs = heronCon.get(gk.toXml(), null);
assertTrue("Invalid msgs returned", msgs != null);
assertEquals("Invalid number of messages returned", 0, msgs.length);
log.info("SUCCESS: Got no message after erase");
// publish again ...
pk = new PublishKey(glob, oid, "text/plain", "1.0");
pk.setDomain(domain);
pq = new PublishQos(glob);
msgUnit = new MsgUnit(pk.toXml(), contentStr.getBytes(), pq.toXml());
prq = bilboCon.publish(msgUnit);
log.info("Published message of domain='" + pk.getDomain() + "' and content='" + contentStr +
"' to xmlBlaster node bilbo with IP=" + serverHelper.getBilboGlob().getProperty().get("bootstrapPort",0) +
", the returned QoS is: " + prq.getKeyOid());
assertEquals("heron is not reachable, publish should not have come through", 0, updateCounterHeron);
serverHelper.startFrodo();
try { Thread.sleep(1000); } catch( InterruptedException i) {} // Wait some time
assertEquals("heron has not received message", 1, updateCounterHeron);
updateCounterHeron = 0;
System.err.println("->Connect to frodo ...");
frodoCon = serverHelper.connect(serverHelper.getFrodoGlob(), new I_Callback() {
public String update(String cbSessionId, UpdateKey updateKey, byte[] content, UpdateQos updateQos) {
assertInUpdate = serverHelper.getFrodoGlob().getId() + ": Receive unexpected message '" + updateKey.getOid() + "'";
return "";
}
});
try { Thread.sleep(1000); } catch( InterruptedException i) {} // Wait some time
assertTrue(assertInUpdate, assertInUpdate == null);
assertInUpdate = null;
System.err.println("->Subscribe from frodo, is he able to organize it?");
sk = new SubscribeKey(glob, oid);
sk.setDomain(domain);
sq = new SubscribeQos(glob);
srq = frodoCon.subscribe(sk.toXml(), sq.toXml(), new I_Callback() {
public String update(String cbSessionId, UpdateKey updateKey, byte[] content, UpdateQos updateQos) {
log.info("frodoCon - Receiving asynchronous message '" + updateKey.getOid() + "' in " + oid + " handler, state=" + updateQos.getState());
updateCounterFrodo++;
assertInUpdate = null;
return "";