use of com.rabbitmq.client.impl.SocketFrameHandler in project rabbitmq-java-client by rabbitmq.
the class ConnectionOpen method crazyProtocolHeader.
@Test
public void crazyProtocolHeader() throws IOException {
ConnectionFactory factory = TestUtils.connectionFactory();
// keep the frame handler's socket
Socket fhSocket = SocketFactory.getDefault().createSocket("localhost", AMQP.PROTOCOL.PORT);
SocketFrameHandler fh = new SocketFrameHandler(fhSocket);
// major, minor
fh.sendHeader(100, 3);
DataInputStream in = fh.getInputStream();
// we should get a valid protocol header back
byte[] header = new byte[4];
in.read(header);
// The protocol header is "AMQP" plus a version that the server
// supports. We can really only test for the first bit.
assertEquals("AMQP", new String(header));
in.read(header);
assertEquals(in.available(), 0);
// gives an error.
if (!fhSocket.isClosed()) {
fh.setTimeout(500);
// NB the frame handler will return null if the socket times out
try {
fh.readFrame();
fail("Expected socket read to fail due to socket being closed");
} catch (MalformedFrameException mfe) {
fail("Expected nothing, rather than a badly-formed something");
} catch (IOException ioe) {
}
}
}
use of com.rabbitmq.client.impl.SocketFrameHandler in project rabbitmq-java-client by rabbitmq.
the class ConnectionOpen method correctProtocolHeader.
@Test
public void correctProtocolHeader() throws IOException {
SocketFrameHandler fh = new SocketFrameHandler(SocketFactory.getDefault().createSocket("localhost", AMQP.PROTOCOL.PORT));
fh.sendHeader();
AMQCommand command = new AMQCommand();
while (!command.handleFrame(fh.readFrame())) {
}
Method m = command.getMethod();
assertTrue("First command must be Connection.start", m instanceof AMQP.Connection.Start);
AMQP.Connection.Start start = (AMQP.Connection.Start) m;
assertTrue("Version in Connection.start is <= what we sent", start.getVersionMajor() < AMQP.PROTOCOL.MAJOR || (start.getVersionMajor() == AMQP.PROTOCOL.MAJOR && start.getVersionMinor() <= AMQP.PROTOCOL.MINOR));
}
Aggregations