summaryrefslogtreecommitdiffstats
path: root/documentapi/src/test/java/com/yahoo/documentapi/messagebus/Destination.java
diff options
context:
space:
mode:
Diffstat (limited to 'documentapi/src/test/java/com/yahoo/documentapi/messagebus/Destination.java')
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/Destination.java43
1 files changed, 25 insertions, 18 deletions
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/Destination.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/Destination.java
index a3c63772af2..81eb237713f 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/Destination.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/Destination.java
@@ -4,9 +4,11 @@ package com.yahoo.documentapi.messagebus;
import com.yahoo.document.DocumentRemove;
import com.yahoo.documentapi.DocumentAccess;
import com.yahoo.documentapi.DocumentAccessParams;
+import com.yahoo.documentapi.ProgressToken;
import com.yahoo.documentapi.SyncParameters;
import com.yahoo.documentapi.SyncSession;
import com.yahoo.documentapi.local.LocalDocumentAccess;
+import com.yahoo.documentapi.messagebus.protocol.CreateVisitorReply;
import com.yahoo.documentapi.messagebus.protocol.DocumentMessage;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import com.yahoo.documentapi.messagebus.protocol.GetDocumentMessage;
@@ -28,6 +30,7 @@ import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.Phaser;
/**
* Mock-up destination used for testing.
@@ -36,6 +39,8 @@ import java.util.List;
*/
public class Destination implements MessageHandler {
+ final Phaser phaser = new Phaser(1);
+
private final DestinationSession session;
private final DocumentAccess access;
private final SyncSession local;
@@ -55,33 +60,35 @@ public class Destination implements MessageHandler {
session = bus.getMessageBus().createDestinationSession("session", true, this);
}
- protected void sendReply(Reply reply) {
- session.reply(reply);
- }
-
public void handleMessage(Message msg) {
+
+ phaser.arriveAndAwaitAdvance();
Reply reply = ((DocumentMessage)msg).createReply();
try {
switch (msg.getType()) {
- case DocumentProtocol.MESSAGE_GETDOCUMENT:
- reply = new GetDocumentReply(local.get(((GetDocumentMessage)msg).getDocumentId()));
- break;
+ case DocumentProtocol.MESSAGE_GETDOCUMENT:
+ reply = new GetDocumentReply(local.get(((GetDocumentMessage)msg).getDocumentId()));
+ break;
+
+ case DocumentProtocol.MESSAGE_PUTDOCUMENT:
+ local.put(((PutDocumentMessage)msg).getDocumentPut());
+ break;
- case DocumentProtocol.MESSAGE_PUTDOCUMENT:
- local.put(((PutDocumentMessage)msg).getDocumentPut());
- break;
+ case DocumentProtocol.MESSAGE_REMOVEDOCUMENT:
+ local.remove(new DocumentRemove(((RemoveDocumentMessage)msg).getDocumentId()));
+ break;
- case DocumentProtocol.MESSAGE_REMOVEDOCUMENT:
- local.remove(new DocumentRemove(((RemoveDocumentMessage)msg).getDocumentId()));
- break;
+ case DocumentProtocol.MESSAGE_UPDATEDOCUMENT:
+ local.update(((UpdateDocumentMessage)msg).getDocumentUpdate());
+ break;
- case DocumentProtocol.MESSAGE_UPDATEDOCUMENT:
- local.update(((UpdateDocumentMessage)msg).getDocumentUpdate());
- break;
+ case DocumentProtocol.MESSAGE_CREATEVISITOR:
+ ((CreateVisitorReply) reply).setLastBucket(ProgressToken.FINISHED_BUCKET);
+ break;
- default:
- throw new UnsupportedOperationException("Unsupported message type '" + msg.getType() + "'.");
+ default:
+ throw new UnsupportedOperationException("Unsupported message type '" + msg.getType() + "'.");
}
} catch (Exception e) {
reply = new EmptyReply();