use of com.yahoo.messagebus.test.SimpleProtocol in project vespa by vespa-engine.
the class RoutingTestCase method requireThatPolicySelectWorks.
@Test
public void requireThatPolicySelectWorks() {
SimpleProtocol protocol = new SimpleProtocol();
protocol.addPolicyFactory("Custom", new CustomPolicyFactory());
srcServer.mb.putProtocol(protocol);
assertTrue(srcSession.send(createMessage("msg"), Route.parse("[Custom:dst/session]")).isAccepted());
Message msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60);
assertNotNull(msg);
dstSession.acknowledge(msg);
Reply reply = ((Receptor) srcSession.getReplyHandler()).getReply(60);
assertNotNull(reply);
System.out.println(reply.getTrace());
assertFalse(reply.hasErrors());
}
use of com.yahoo.messagebus.test.SimpleProtocol in project vespa by vespa-engine.
the class RoutingTestCase method requireThatReplyCanBeReusedOnRetry.
@Test
public void requireThatReplyCanBeReusedOnRetry() {
SimpleProtocol protocol = new SimpleProtocol();
protocol.addPolicyFactory("ReuseReply", new SimpleProtocol.PolicyFactory() {
@Override
public RoutingPolicy create(String param) {
return new ReuseReplyPolicy(false, Arrays.asList(ErrorCode.APP_FATAL_ERROR), CustomPolicyFactory.parseRoutes(param));
}
});
protocol.addPolicyFactory("SetReply", new SimpleProtocol.PolicyFactory() {
@Override
public RoutingPolicy create(String param) {
return new SetReplyPolicy(false, Arrays.asList(ErrorCode.APP_FATAL_ERROR), param);
}
});
srcServer.mb.putProtocol(protocol);
assertTrue(srcSession.send(createMessage("msg"), Route.parse("[ReuseReply:[SetReply:foo],dst/session]")).isAccepted());
Message msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60);
assertNotNull(msg);
Reply reply = new EmptyReply();
reply.swapState(msg);
reply.addError(new Error(ErrorCode.APP_TRANSIENT_ERROR, "dst"));
dstSession.reply(reply);
assertNotNull(msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60));
dstSession.acknowledge(msg);
assertNotNull(reply = ((Receptor) srcSession.getReplyHandler()).getReply(60));
System.out.println(reply.getTrace());
assertFalse(reply.hasErrors());
}
use of com.yahoo.messagebus.test.SimpleProtocol in project vespa by vespa-engine.
the class RoutingTestCase method requireThatReplyCanBeRemovedAndRetried.
@Test
public void requireThatReplyCanBeRemovedAndRetried() {
SimpleProtocol protocol = new SimpleProtocol();
protocol.addPolicyFactory("RemoveReply", new SimpleProtocol.PolicyFactory() {
@Override
public RoutingPolicy create(String param) {
return new RemoveReplyPolicy(false, Arrays.asList(ErrorCode.APP_TRANSIENT_ERROR), CustomPolicyFactory.parseRoutes(param), 0);
}
});
protocol.addPolicyFactory("SetReply", new SimpleProtocol.PolicyFactory() {
@Override
public RoutingPolicy create(String param) {
return new SetReplyPolicy(false, Arrays.asList(ErrorCode.APP_TRANSIENT_ERROR, ErrorCode.APP_FATAL_ERROR), param);
}
});
srcServer.mb.putProtocol(protocol);
assertTrue(srcSession.send(createMessage("msg"), Route.parse("[RemoveReply:[SetReply:foo],dst/session]")).isAccepted());
Message msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60);
assertNotNull(msg);
dstSession.acknowledge(msg);
Reply reply = ((Receptor) srcSession.getReplyHandler()).getReply(60);
assertNotNull(reply);
System.out.println(reply.getTrace());
assertEquals(1, reply.getNumErrors());
assertEquals(ErrorCode.APP_FATAL_ERROR, reply.getError(0).getCode());
assertEquals("foo", reply.getError(0).getMessage());
assertTrace(Arrays.asList("Resolving '[SetReply:foo]'.", "Resolving 'dst/session'.", "Resender resending message.", "Resolving 'dst/session'.", "Resolving '[SetReply:foo]'."), reply.getTrace());
}
use of com.yahoo.messagebus.test.SimpleProtocol in project vespa by vespa-engine.
the class RoutingTestCase method requireThatPolicyCanExpandToPolicy.
@Test
public void requireThatPolicyCanExpandToPolicy() {
SimpleProtocol protocol = new SimpleProtocol();
protocol.addPolicyFactory("Custom", new CustomPolicyFactory(true, ErrorCode.NO_ADDRESS_FOR_SERVICE));
srcServer.mb.putProtocol(protocol);
retryPolicy.setEnabled(false);
assertTrue(srcSession.send(createMessage("msg"), Route.parse("[Custom:[Custom:dst/session],[Custom:dst/unknown]]")).isAccepted());
Message msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60);
assertNotNull(msg);
dstSession.acknowledge(msg);
Reply reply = ((Receptor) srcSession.getReplyHandler()).getReply(60);
assertNotNull(reply);
System.out.println(reply.getTrace());
assertEquals(1, reply.getNumErrors());
assertEquals(ErrorCode.NO_ADDRESS_FOR_SERVICE, reply.getError(0).getCode());
}
use of com.yahoo.messagebus.test.SimpleProtocol in project vespa by vespa-engine.
the class RoutingTestCase method requireThatPolicyCanDisableReselectOnRetry.
@Test
public void requireThatPolicyCanDisableReselectOnRetry() {
SimpleProtocol protocol = new SimpleProtocol();
protocol.addPolicyFactory("Custom", new CustomPolicyFactory(false));
srcServer.mb.putProtocol(protocol);
assertTrue(srcSession.send(createMessage("msg"), Route.parse("[Custom:dst/session]")).isAccepted());
Message msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60);
assertNotNull(msg);
Reply reply = new EmptyReply();
reply.swapState(msg);
reply.addError(new Error(ErrorCode.APP_TRANSIENT_ERROR, "err"));
dstSession.reply(reply);
assertNotNull(msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60));
dstSession.acknowledge(msg);
assertNotNull(reply = ((Receptor) srcSession.getReplyHandler()).getReply(60));
System.out.println(reply.getTrace());
assertFalse(reply.hasErrors());
assertTrace(Arrays.asList("Selecting [dst/session].", "[APP_TRANSIENT_ERROR @ localhost]", "-[APP_TRANSIENT_ERROR @ localhost]", "Merged [dst/session].", "-Selecting [dst/session].", "Sending reply", "Merged [dst/session]."), reply.getTrace());
}
Aggregations