Search in sources :

Example 1 with FrameBody

use of org.apache.qpid.server.protocol.v1_0.type.FrameBody in project qpid-broker-j by apache.

the class Session_1_0Test method testReceiveAttachRebindingQueueNoActiveLinks.

public void testReceiveAttachRebindingQueueNoActiveLinks() {
    final String linkName = "testLink";
    final String address = "amq.direct/" + TOPIC_NAME;
    Attach attach = createSharedTopicAttach(true, linkName, address, true);
    _session.receiveAttach(attach);
    assertAttachSent(_connection, _session, attach);
    assertQueues(TOPIC_NAME, LifetimePolicy.PERMANENT);
    sendDetach(_session, attach.getHandle(), false);
    ArgumentCaptor<FrameBody> frameCapture = ArgumentCaptor.forClass(FrameBody.class);
    verify(_connection, times(2)).sendFrame(eq(_session.getChannelId()), frameCapture.capture());
    assertTrue(frameCapture.getAllValues().get(1) instanceof Detach);
    assertQueues(TOPIC_NAME, LifetimePolicy.PERMANENT);
    String topicName2 = TOPIC_NAME + "2";
    final String address2 = "amq.direct/" + topicName2;
    Attach attach2 = createSharedTopicAttach(true, linkName + "|2", address2, true);
    _session.receiveAttach(attach2);
    assertAttachSent(_connection, _session, attach2, 2);
    assertQueues(topicName2, LifetimePolicy.PERMANENT);
}
Also used : Attach(org.apache.qpid.server.protocol.v1_0.type.transport.Attach) FrameBody(org.apache.qpid.server.protocol.v1_0.type.FrameBody) Detach(org.apache.qpid.server.protocol.v1_0.type.transport.Detach)

Example 2 with FrameBody

use of org.apache.qpid.server.protocol.v1_0.type.FrameBody in project qpid-broker-j by apache.

the class Session_1_0Test method assertAttachActions.

private void assertAttachActions(final Queue<?> queue, final Attach receivedAttach) {
    Collection<QueueConsumer<?, ?>> consumers = queue.getConsumers();
    assertEquals("Unexpected consumers size", 1, consumers.size());
    ArgumentCaptor<FrameBody> frameCapture = ArgumentCaptor.forClass(FrameBody.class);
    verify(_connection).sendFrame(eq(_session.getChannelId()), frameCapture.capture());
    Attach sentAttach = (Attach) frameCapture.getValue();
    assertEquals("Unexpected name", receivedAttach.getName(), sentAttach.getName());
    assertEquals("Unexpected role", Role.SENDER, sentAttach.getRole());
    Source receivedSource = (Source) receivedAttach.getSource();
    Source sentSource = (Source) sentAttach.getSource();
    assertEquals("Unexpected source address", receivedSource.getAddress(), sentSource.getAddress());
    assertArrayEquals("Unexpected source capabilities", receivedSource.getCapabilities(), sentSource.getCapabilities());
    assertEquals("Unexpected source durability", receivedSource.getDurable(), sentSource.getDurable());
    assertEquals("Unexpected source expiry policy", receivedSource.getExpiryPolicy(), sentSource.getExpiryPolicy());
    assertEquals("Unexpected source dynamic flag", receivedSource.getDynamic(), sentSource.getDynamic());
    Target receivedTarget = (Target) receivedAttach.getTarget();
    Target sentTarget = (Target) sentAttach.getTarget();
    assertEquals("Unexpected target address", receivedTarget.getAddress(), sentTarget.getAddress());
    assertArrayEquals("Unexpected target capabilities", receivedTarget.getCapabilities(), sentTarget.getCapabilities());
    assertEquals("Unexpected target durability", receivedTarget.getDurable(), sentTarget.getDurable());
    assertEquals("Unexpected target expiry policy", receivedTarget.getExpiryPolicy(), sentTarget.getExpiryPolicy());
    assertEquals("Unexpected target dynamic flag", receivedTarget.getDynamic(), sentTarget.getDynamic());
    final Collection<Queue> queues = _virtualHost.getChildren(Queue.class);
    assertEquals("Unexpected number of queues after attach", 1, queues.size());
}
Also used : Target(org.apache.qpid.server.protocol.v1_0.type.messaging.Target) QueueConsumer(org.apache.qpid.server.queue.QueueConsumer) Attach(org.apache.qpid.server.protocol.v1_0.type.transport.Attach) FrameBody(org.apache.qpid.server.protocol.v1_0.type.FrameBody) Queue(org.apache.qpid.server.model.Queue) Source(org.apache.qpid.server.protocol.v1_0.type.messaging.Source)

Example 3 with FrameBody

use of org.apache.qpid.server.protocol.v1_0.type.FrameBody in project qpid-broker-j by apache.

the class Session_1_0Test method testNullSourceLookup.

public void testNullSourceLookup() throws Exception {
    final String linkName = "testLink";
    final String address = "amq.direct/" + TOPIC_NAME;
    Attach attach = createTopicAttach(true, linkName, address, false);
    _session.receiveAttach(attach);
    assertAttachSent(_connection, _session, attach);
    assertQueues(TOPIC_NAME, LifetimePolicy.PERMANENT);
    sendDetach(_session, attach.getHandle(), false);
    Attach nullSourceAttach = createTopicAttach(true, linkName, address, false);
    nullSourceAttach.setSource(null);
    _session.receiveAttach(nullSourceAttach);
    ArgumentCaptor<FrameBody> frameCapture = ArgumentCaptor.forClass(FrameBody.class);
    verify(_connection, times(3)).sendFrame(eq(_session.getChannelId()), frameCapture.capture());
    Attach sentAttach = (Attach) frameCapture.getAllValues().get(2);
    assertEquals("Unexpected name", nullSourceAttach.getName(), sentAttach.getName());
    assertEquals("Unexpected role", Role.SENDER, sentAttach.getRole());
    assertNotNull("Unexpected source", sentAttach.getSource());
    Source source = (Source) sentAttach.getSource();
    assertEquals("Unexpected address", address, source.getAddress());
    assertTrue("Unexpected source capabilities", Arrays.asList(source.getCapabilities()).contains(Symbol.valueOf("topic")));
    Collection<Queue> queues = _virtualHost.getChildren(Queue.class);
    assertEquals("Unexpected number of queues after unsubscribe", 1, queues.size());
}
Also used : Attach(org.apache.qpid.server.protocol.v1_0.type.transport.Attach) FrameBody(org.apache.qpid.server.protocol.v1_0.type.FrameBody) Queue(org.apache.qpid.server.model.Queue) Source(org.apache.qpid.server.protocol.v1_0.type.messaging.Source)

Example 4 with FrameBody

use of org.apache.qpid.server.protocol.v1_0.type.FrameBody in project qpid-broker-j by apache.

the class Session_1_0Test method assertDetachSent.

private void assertDetachSent(final AMQPConnection_1_0 connection, final Session_1_0 session, final ErrorCondition expectedError, final int invocationOffset) {
    ArgumentCaptor<FrameBody> frameCapture = ArgumentCaptor.forClass(FrameBody.class);
    verify(connection, times(invocationOffset + 1)).sendFrame(eq(session.getChannelId()), frameCapture.capture());
    List<FrameBody> sentFrames = frameCapture.getAllValues();
    assertTrue("unexpected Frame sent", sentFrames.get(invocationOffset) instanceof Detach);
    Detach sentDetach = (Detach) sentFrames.get(invocationOffset);
    assertTrue("Unexpected closed state", sentDetach.getClosed());
    assertEquals("Closed with unexpected error condition", expectedError, sentDetach.getError().getCondition());
}
Also used : FrameBody(org.apache.qpid.server.protocol.v1_0.type.FrameBody) Detach(org.apache.qpid.server.protocol.v1_0.type.transport.Detach)

Example 5 with FrameBody

use of org.apache.qpid.server.protocol.v1_0.type.FrameBody in project qpid-broker-j by apache.

the class Session_1_0Test method assertAttachFailed.

private void assertAttachFailed(final AMQPConnection_1_0 connection, final Session_1_0 session, final Attach attach, int invocationOffset) {
    ArgumentCaptor<FrameBody> frameCapture = ArgumentCaptor.forClass(FrameBody.class);
    verify(connection, times(invocationOffset + 2)).sendFrame(eq(session.getChannelId()), frameCapture.capture());
    List<FrameBody> sentFrames = frameCapture.getAllValues();
    assertTrue("unexpected Frame sent", sentFrames.get(invocationOffset) instanceof Attach);
    Attach sentAttach = (Attach) sentFrames.get(invocationOffset);
    assertEquals("Unexpected name", attach.getName(), sentAttach.getName());
    assertEquals("Unexpected role", Role.SENDER, sentAttach.getRole());
    assertEquals("Unexpected source", null, sentAttach.getSource());
    assertTrue("unexpected Frame sent", sentFrames.get(invocationOffset + 1) instanceof Detach);
    Detach sentDetach = (Detach) sentFrames.get(invocationOffset + 1);
    assertTrue("Unexpected closed state", sentDetach.getClosed());
}
Also used : Attach(org.apache.qpid.server.protocol.v1_0.type.transport.Attach) FrameBody(org.apache.qpid.server.protocol.v1_0.type.FrameBody) Detach(org.apache.qpid.server.protocol.v1_0.type.transport.Detach)

Aggregations

FrameBody (org.apache.qpid.server.protocol.v1_0.type.FrameBody)8 Attach (org.apache.qpid.server.protocol.v1_0.type.transport.Attach)5 ChannelFrameBody (org.apache.qpid.server.protocol.v1_0.type.transport.ChannelFrameBody)4 Detach (org.apache.qpid.server.protocol.v1_0.type.transport.Detach)4 Transfer (org.apache.qpid.server.protocol.v1_0.type.transport.Transfer)4 QpidByteBuffer (org.apache.qpid.server.bytebuffer.QpidByteBuffer)3 Queue (org.apache.qpid.server.model.Queue)2 SaslFrameBody (org.apache.qpid.server.protocol.v1_0.type.SaslFrameBody)2 Source (org.apache.qpid.server.protocol.v1_0.type.messaging.Source)2 AmqpError (org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError)2 ConnectionError (org.apache.qpid.server.protocol.v1_0.type.transport.ConnectionError)2 Error (org.apache.qpid.server.protocol.v1_0.type.transport.Error)2 AccessControlContext (java.security.AccessControlContext)1 ArrayList (java.util.ArrayList)1 AMQFrame (org.apache.qpid.server.protocol.v1_0.framing.AMQFrame)1 SASLFrame (org.apache.qpid.server.protocol.v1_0.framing.SASLFrame)1 TransportFrame (org.apache.qpid.server.protocol.v1_0.framing.TransportFrame)1 AmqpErrorException (org.apache.qpid.server.protocol.v1_0.type.AmqpErrorException)1 Target (org.apache.qpid.server.protocol.v1_0.type.messaging.Target)1 QueueConsumer (org.apache.qpid.server.queue.QueueConsumer)1