Description
The testcase below waits for five seconds after connecting and then tries to write a SEND frame. The test fails if a frame can be sent to the broker after missing heartbeat signals.
public void testSendAfterMissingHeartbeat() throws Exception {
String connectFrame = "STOMP\n" +
"login: system\n" +
"passcode: manager\n" +
"accept-version:1.1\n" +
"heart-beat:1000,0\n" +
"host:localhost\n" +
"\n" + Stomp.NULL;
stompConnection.sendFrame(connectFrame);
String f = stompConnection.receiveFrame();
assertTrue(f.startsWith("CONNECTED"));
assertTrue(f.indexOf("version:1.1") >= 0);
assertTrue(f.indexOf("heart-beat:") >= 0);
assertTrue(f.indexOf("session:") >= 0);
LOG.debug("Broker sent: " + f);
Thread.sleep(5000);
try
{ String message = "SEND\n" + "destination:/queue/" + getQueueName() + "\n\n" + "Hello World" + Stomp.NULL; stompConnection.sendFrame(message); fail("SEND frame has been accepted after missing heart beat"); }catch (Exception ex)
{ System.out.println(ex.getMessage()); }}