Search in sources :

Example 11 with Close

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

the class TransactionalTransferTest method assertUnknownTransactionIdError.

private void assertUnknownTransactionIdError(final Response<?> response) {
    assertThat(response, is(notNullValue()));
    final Object body = response.getBody();
    assertThat(body, is(notNullValue()));
    Error error = null;
    if (body instanceof Close) {
        error = ((Close) body).getError();
    } else if (body instanceof End) {
        error = ((End) body).getError();
    } else if (body instanceof Detach) {
        error = ((Detach) body).getError();
    } else {
        fail(String.format("Unexpected response %s", body.getClass().getSimpleName()));
    }
    assertThat(error, is(notNullValue()));
    assertThat(error.getCondition(), equalTo(TransactionError.UNKNOWN_ID));
}
Also used : Error(org.apache.qpid.server.protocol.v1_0.type.transport.Error) TransactionError(org.apache.qpid.server.protocol.v1_0.type.transaction.TransactionError) Close(org.apache.qpid.server.protocol.v1_0.type.transport.Close) End(org.apache.qpid.server.protocol.v1_0.type.transport.End) Detach(org.apache.qpid.server.protocol.v1_0.type.transport.Detach)

Example 12 with Close

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

the class IdleTimeoutTest method brokerClosesIdleConnection.

@Test
@SpecificationTest(section = "2.4.5", description = "If the [idle timeout threshold] threshold is exceeded, then a peer SHOULD try to" + "gracefully close the connection using a close frame with an error explaining why.")
public void brokerClosesIdleConnection() throws Exception {
    final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
    try (FrameTransport transport = new FrameTransport(addr).connect()) {
        Interaction interaction = transport.newInteraction();
        Open responseOpen = interaction.negotiateProtocol().consumeResponse().openContainerId("testContainerId").open().consumeResponse().getLatestResponse(Open.class);
        assertThat(responseOpen.getIdleTimeOut().intValue(), is(equalTo(IDLE_TIMEOUT_MS)));
        // TODO: defect - broker ought to be sending a close performative but it just closes the socket.
        interaction.consumeResponse().getLatestResponse(ChannelClosedResponse.class);
    }
}
Also used : FrameTransport(org.apache.qpid.tests.protocol.v1_0.FrameTransport) InetSocketAddress(java.net.InetSocketAddress) Interaction(org.apache.qpid.tests.protocol.v1_0.Interaction) Open(org.apache.qpid.server.protocol.v1_0.type.transport.Open) Test(org.junit.Test) SpecificationTest(org.apache.qpid.tests.protocol.SpecificationTest) SpecificationTest(org.apache.qpid.tests.protocol.SpecificationTest)

Example 13 with Close

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

the class OpenTest method failOpenOnNonExistingHostname.

@Test
@SpecificationTest(section = "2.7.1", description = "The name of the host (either fully qualified or relative) to which the sending peer is connecting")
public void failOpenOnNonExistingHostname() throws Exception {
    final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
    try (FrameTransport transport = new FrameTransport(addr).connect()) {
        final Interaction interaction = transport.newInteraction();
        Open responseOpen = interaction.negotiateProtocol().consumeResponse().openContainerId("testContainerId").openHostname("non-existing-virtual-host-" + System.currentTimeMillis()).open().consumeResponse().getLatestResponse(Open.class);
        assertThat(responseOpen.getContainerId(), is(notNullValue()));
        Close responseClose = interaction.consumeResponse().getLatestResponse(Close.class);
        assertThat(responseClose.getError(), is(notNullValue()));
        assertThat(responseClose.getError().getCondition(), equalTo(AmqpError.NOT_FOUND));
    }
}
Also used : FrameTransport(org.apache.qpid.tests.protocol.v1_0.FrameTransport) InetSocketAddress(java.net.InetSocketAddress) Interaction(org.apache.qpid.tests.protocol.v1_0.Interaction) Close(org.apache.qpid.server.protocol.v1_0.type.transport.Close) Open(org.apache.qpid.server.protocol.v1_0.type.transport.Open) Test(org.junit.Test) SpecificationTest(org.apache.qpid.tests.protocol.SpecificationTest) SpecificationTest(org.apache.qpid.tests.protocol.SpecificationTest)

Example 14 with Close

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

the class AttachTest method emptyAttach.

@Test
@SpecificationTest(section = "1.3.4", description = "Attach without mandatory fields should result in a decoding error.")
public void emptyAttach() throws Exception {
    final InetSocketAddress addr = getBrokerAdmin().getBrokerAddress(BrokerAdmin.PortType.ANONYMOUS_AMQP);
    try (FrameTransport transport = new FrameTransport(addr).connect()) {
        Close responseClose = transport.newInteraction().negotiateProtocol().consumeResponse().open().consumeResponse(Open.class).begin().consumeResponse(Begin.class).attachRole(null).attachHandle(null).attachName(null).attach().consumeResponse().getLatestResponse(Close.class);
        assertThat(responseClose.getError(), is(notNullValue()));
        assertThat(responseClose.getError().getCondition(), equalTo(AmqpError.DECODE_ERROR));
    }
}
Also used : FrameTransport(org.apache.qpid.tests.protocol.v1_0.FrameTransport) InetSocketAddress(java.net.InetSocketAddress) Close(org.apache.qpid.server.protocol.v1_0.type.transport.Close) Test(org.junit.Test) SpecificationTest(org.apache.qpid.tests.protocol.SpecificationTest) SpecificationTest(org.apache.qpid.tests.protocol.SpecificationTest)

Example 15 with Close

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

the class AbstractLinkEndpoint method detach.

protected void detach(Error error, boolean close) {
    if (error != null && !getSession().isSyntheticError(error)) {
        _errored = true;
    }
    // TODO: QPID-7954: improve detach
    switch(_state) {
        case ATTACHED:
            _state = State.DETACH_SENT;
            break;
        case DETACH_RECVD:
            _state = State.DETACHED;
            break;
        default:
            // disassociate the link from the session so that the new connection can use it.
            if (close) {
                getSession().dissociateEndpoint(this);
                destroy();
                _link.linkClosed();
            }
            return;
    }
    if (getSession().getSessionState() != SessionState.END_RECVD && !getSession().isEnded()) {
        Detach detach = new Detach();
        detach.setHandle(getLocalHandle());
        if (close) {
            detach.setClosed(close);
        }
        detach.setError(error);
        getSession().sendDetach(detach);
    }
    if (close) {
        destroy();
        _link.linkClosed();
    }
    setLocalHandle(null);
}
Also used : Detach(org.apache.qpid.server.protocol.v1_0.type.transport.Detach)

Aggregations

Close (org.apache.qpid.server.protocol.v1_0.type.transport.Close)26 Test (org.junit.Test)23 FrameTransport (org.apache.qpid.tests.protocol.v1_0.FrameTransport)21 Open (org.apache.qpid.server.protocol.v1_0.type.transport.Open)18 Interaction (org.apache.qpid.tests.protocol.v1_0.Interaction)15 SpecificationTest (org.apache.qpid.tests.protocol.SpecificationTest)14 Error (org.apache.qpid.server.protocol.v1_0.type.transport.Error)13 InetSocketAddress (java.net.InetSocketAddress)10 UnsignedInteger (org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger)8 AmqpError (org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError)8 QpidByteBuffer (org.apache.qpid.server.bytebuffer.QpidByteBuffer)7 End (org.apache.qpid.server.protocol.v1_0.type.transport.End)7 TransactionError (org.apache.qpid.server.protocol.v1_0.type.transaction.TransactionError)6 Begin (org.apache.qpid.server.protocol.v1_0.type.transport.Begin)6 Symbol (org.apache.qpid.server.protocol.v1_0.type.Symbol)5 Detach (org.apache.qpid.server.protocol.v1_0.type.transport.Detach)5 ConnectionScopedRuntimeException (org.apache.qpid.server.util.ConnectionScopedRuntimeException)5 ArrayList (java.util.ArrayList)4 Attach (org.apache.qpid.server.protocol.v1_0.type.transport.Attach)4 Flow (org.apache.qpid.server.protocol.v1_0.type.transport.Flow)4