diff options
Diffstat (limited to 'documentapi')
6 files changed, 46 insertions, 23 deletions
diff --git a/documentapi/pom.xml b/documentapi/pom.xml index 17fd0cc5505..41552fb33e1 100644 --- a/documentapi/pom.xml +++ b/documentapi/pom.xml @@ -43,6 +43,11 @@ <version>${project.version}</version> </dependency> <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-all</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>com.yahoo.vespa</groupId> <artifactId>config</artifactId> <version>${project.version}</version> diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java index 793e0ed73c0..9f20ca78d6e 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java @@ -198,15 +198,6 @@ public class MessageBusAsyncSession implements MessageBusSession, AsyncSession { return errors.toString(); } - static Set<Integer> - getErrorCodes(Reply reply) { - Set<Integer> errorCodes = new HashSet<>(); - for (int i = 0; i < reply.getNumErrors(); ++i) { - errorCodes.add(reply.getError(i).getCode()); - } - return errorCodes; - } - private static Result.ResultType messageBusErrorToResultType(int messageBusError) { switch (messageBusError) { case ErrorCode.SEND_QUEUE_FULL: return Result.ResultType.TRANSIENT_ERROR; diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java index 106791491f9..47eeb12b250 100755 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java @@ -167,8 +167,7 @@ public class MessageBusSyncSession implements MessageBusSession, SyncSession, Re msg.setPriority(pri); Reply reply = syncSend(msg); if (reply.hasErrors()) { - throw new DocumentAccessException(MessageBusAsyncSession.getErrorMessage(reply), - MessageBusAsyncSession.getErrorCodes(reply)); + throw new DocumentAccessException(MessageBusAsyncSession.getErrorMessage(reply), reply.getErrorCodes()); } if (reply.getType() != DocumentProtocol.REPLY_UPDATEDOCUMENT) { throw new DocumentAccessException("Received unknown response: " + reply); @@ -218,8 +217,7 @@ public class MessageBusSyncSession implements MessageBusSession, SyncSession, Re private void syncSendPutDocumentMessage(PutDocumentMessage putDocumentMessage) { Reply reply = syncSend(putDocumentMessage); if (reply.hasErrors()) { - throw new DocumentAccessException(MessageBusAsyncSession.getErrorMessage(reply), - MessageBusAsyncSession.getErrorCodes(reply)); + throw new DocumentAccessException(MessageBusAsyncSession.getErrorMessage(reply), reply.getErrorCodes()); } } } diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java index 26b0eec8cf4..1a3a23eb8e4 100755 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java @@ -55,22 +55,18 @@ class RoutingPolicyRepository { log.log(LogLevel.ERROR, "No routing policy factory found for name '" + name + "'."); return null; } - DocumentProtocolRoutingPolicy ret; - try { - ret = factory.createPolicy(param); - } catch (Exception e) { - ret = new ErrorPolicy(e.getMessage()); + final DocumentProtocolRoutingPolicy ret = factory.createPolicy(param); + + if (ret == null) { + log.log(LogLevel.ERROR, "Routing policy factory " + factory.getClass().getName() + " failed to create a " + + "routing policy for parameter '" + name + "'."); + return null; } if (ret.getMetrics() != null) { metrics.routingPolicyMetrics.addMetric(ret.getMetrics()); } - if (ret == null) { - log.log(LogLevel.ERROR, "Routing policy factory " + factory.getClass().getName() + " failed to create a " + - "routing policy for parameter '" + name + "'."); - return null; - } return ret; } } diff --git a/documentapi/src/main/java/com/yahoo/documentapiclient/.gitignore b/documentapi/src/main/java/com/yahoo/documentapiclient/.gitignore deleted file mode 100644 index e69de29bb2d..00000000000 --- a/documentapi/src/main/java/com/yahoo/documentapiclient/.gitignore +++ /dev/null diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java new file mode 100644 index 00000000000..609e83683b1 --- /dev/null +++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java @@ -0,0 +1,33 @@ +// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.documentapi.messagebus.protocol; + +import com.yahoo.documentapi.metrics.DocumentProtocolMetricSet; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class RoutingPolicyRepositoryTest { + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Test + public void policy_creation_does_not_swallow_exception() { + final DocumentProtocolMetricSet metrics = new DocumentProtocolMetricSet(); + final RoutingPolicyRepository repo = new RoutingPolicyRepository(metrics); + final RoutingPolicyFactory factory = mock(RoutingPolicyFactory.class); + + when(factory.createPolicy(anyString())).thenThrow(new IllegalArgumentException("oh no!")); + repo.putFactory("foo", factory); + + expectedException.expectMessage("oh no!"); + expectedException.expect(IllegalArgumentException.class); + + repo.createPolicy("foo", "bar"); + } + +} |