Search in sources :

Example 1 with FutureResponse

use of org.apache.activemq.transport.FutureResponse in project activemq-artemis by apache.

the class NetworkRouteTest method addAndRemoveOppositeOrder.

@Test
public void addAndRemoveOppositeOrder() throws Exception {
    // from (1)
    localBroker.request(EasyMock.isA(ConsumerInfo.class));
    ArgHolder localConsumer = ArgHolder.holdArgsForLastObjectCall();
    // from (2a)
    remoteBroker.asyncRequest(EasyMock.isA(ActiveMQMessage.class), EasyMock.isA(ResponseCallback.class));
    ArgHolder firstMessageFuture = ArgHolder.holdArgsForLastFutureRequestCall();
    localBroker.oneway(EasyMock.isA(MessageAck.class));
    // from (2b)
    remoteBroker.asyncRequest(EasyMock.isA(ActiveMQMessage.class), EasyMock.isA(ResponseCallback.class));
    ArgHolder secondMessageFuture = ArgHolder.holdArgsForLastFutureRequestCall();
    localBroker.oneway(EasyMock.isA(MessageAck.class));
    // from (3)
    localBroker.oneway(EasyMock.isA(RemoveInfo.class));
    ExpectationWaiter waitForRemove = ExpectationWaiter.waiterForLastVoidCall();
    control.replay();
    // (1) send advisory of path 1
    remoteListener.onCommand(path1Msg);
    msgDispatch.setConsumerId(((ConsumerInfo) localConsumer.arguments[0]).getConsumerId());
    // send advisory of path 2, doesn't send a ConsumerInfo to localBroker
    remoteListener.onCommand(path2Msg);
    // (2a) send a message
    localListener.onCommand(msgDispatch);
    ResponseCallback callback = (ResponseCallback) firstMessageFuture.arguments[1];
    FutureResponse response = new FutureResponse(callback);
    response.set(new Response());
    // send advisory of path 2 remove, doesn't send a RemoveInfo to localBroker
    remoteListener.onCommand(removePath2Msg);
    // (2b) send a message
    localListener.onCommand(msgDispatch);
    callback = (ResponseCallback) secondMessageFuture.arguments[1];
    response = new FutureResponse(callback);
    response.set(new Response());
    // (3) send advisory of path 1 remove, sends a RemoveInfo to localBroker
    remoteListener.onCommand(removePath1Msg);
    waitForRemove.assertHappens(5, TimeUnit.SECONDS);
    // send a message, does not send message as in 2a and 2b
    localListener.onCommand(msgDispatch);
    control.verify();
}
Also used : Response(org.apache.activemq.command.Response) FutureResponse(org.apache.activemq.transport.FutureResponse) ConsumerInfo(org.apache.activemq.command.ConsumerInfo) RemoveInfo(org.apache.activemq.command.RemoveInfo) FutureResponse(org.apache.activemq.transport.FutureResponse) ResponseCallback(org.apache.activemq.transport.ResponseCallback) MessageAck(org.apache.activemq.command.MessageAck) ActiveMQMessage(org.apache.activemq.command.ActiveMQMessage) Test(org.junit.Test)

Example 2 with FutureResponse

use of org.apache.activemq.transport.FutureResponse in project activemq-artemis by apache.

the class NetworkRouteTest method addAndRemoveSameOrder.

@Test
public void addAndRemoveSameOrder() throws Exception {
    // from (1)
    localBroker.request(EasyMock.isA(ConsumerInfo.class));
    ArgHolder localConsumer = ArgHolder.holdArgsForLastObjectCall();
    // from (2a)
    remoteBroker.asyncRequest(EasyMock.isA(ActiveMQMessage.class), EasyMock.isA(ResponseCallback.class));
    ArgHolder firstMessageFuture = ArgHolder.holdArgsForLastFutureRequestCall();
    localBroker.oneway(EasyMock.isA(MessageAck.class));
    // from (2b)
    remoteBroker.asyncRequest(EasyMock.isA(ActiveMQMessage.class), EasyMock.isA(ResponseCallback.class));
    ArgHolder secondMessageFuture = ArgHolder.holdArgsForLastFutureRequestCall();
    localBroker.oneway(EasyMock.isA(MessageAck.class));
    // from (3)
    localBroker.oneway(EasyMock.isA(RemoveInfo.class));
    ExpectationWaiter waitForRemove = ExpectationWaiter.waiterForLastVoidCall();
    control.replay();
    // (1) send advisory of path 1
    remoteListener.onCommand(path1Msg);
    msgDispatch.setConsumerId(((ConsumerInfo) localConsumer.arguments[0]).getConsumerId());
    // send advisory of path 2, doesn't send a ConsumerInfo to localBroker
    remoteListener.onCommand(path2Msg);
    // (2a) send a message
    localListener.onCommand(msgDispatch);
    ResponseCallback callback = (ResponseCallback) firstMessageFuture.arguments[1];
    FutureResponse response = new FutureResponse(callback);
    response.set(new Response());
    // send advisory of path 1 remove, shouldn't send a RemoveInfo to localBroker
    remoteListener.onCommand(removePath1Msg);
    // (2b) send a message, should send the message as in 2a
    localListener.onCommand(msgDispatch);
    callback = (ResponseCallback) secondMessageFuture.arguments[1];
    response = new FutureResponse(callback);
    response.set(new Response());
    // (3) send advisory of path 1 remove, should send a RemoveInfo to localBroker
    remoteListener.onCommand(removePath2Msg);
    waitForRemove.assertHappens(5, TimeUnit.SECONDS);
    // send a message, does not send message as in 2a
    localListener.onCommand(msgDispatch);
    control.verify();
}
Also used : Response(org.apache.activemq.command.Response) FutureResponse(org.apache.activemq.transport.FutureResponse) ConsumerInfo(org.apache.activemq.command.ConsumerInfo) RemoveInfo(org.apache.activemq.command.RemoveInfo) FutureResponse(org.apache.activemq.transport.FutureResponse) ResponseCallback(org.apache.activemq.transport.ResponseCallback) MessageAck(org.apache.activemq.command.MessageAck) ActiveMQMessage(org.apache.activemq.command.ActiveMQMessage) Test(org.junit.Test)

Aggregations

ActiveMQMessage (org.apache.activemq.command.ActiveMQMessage)2 ConsumerInfo (org.apache.activemq.command.ConsumerInfo)2 MessageAck (org.apache.activemq.command.MessageAck)2 RemoveInfo (org.apache.activemq.command.RemoveInfo)2 Response (org.apache.activemq.command.Response)2 FutureResponse (org.apache.activemq.transport.FutureResponse)2 ResponseCallback (org.apache.activemq.transport.ResponseCallback)2 Test (org.junit.Test)2