+ public void testExists() throws Exception {
+ final Props props = Props.create(DoNothingActor.class);
+ final ActorRef actorRef = getSystem().actorOf(props);
+
+ final MockActorContext actorContext = new MockActorContext(this.getSystem());
+ actorContext.setExecuteLocalOperationResponse(createPrimaryFound(actorRef));
+ actorContext.setExecuteShardOperationResponse(createTransactionReply(actorRef));
+ actorContext.setExecuteRemoteOperationResponse("message");
+
+
+ TransactionProxy transactionProxy =
+ new TransactionProxy(actorContext,
+ TransactionProxy.TransactionType.READ_ONLY, transactionExecutor, TestModel.createTestContext());
+
+
+ actorContext.setExecuteRemoteOperationResponse(new DataExistsReply(false).toSerializable());
+
+ CheckedFuture<Boolean, ReadFailedException> exists =
+ transactionProxy.exists(TestModel.TEST_PATH);
+
+ Assert.assertFalse(exists.checkedGet());
+
+ actorContext.setExecuteRemoteOperationResponse(new DataExistsReply(true).toSerializable());
+
+ exists = transactionProxy.exists(TestModel.TEST_PATH);
+
+ Assert.assertTrue(exists.checkedGet());
+
+ actorContext.setExecuteRemoteOperationResponse("bad message");
+
+ exists = transactionProxy.exists(TestModel.TEST_PATH);
+
+ try {
+ exists.checkedGet();
+ fail();
+ } catch(ReadFailedException e){
+ }
+
+ }
+
+ @Test(expected = ReadFailedException.class)
+ public void testReadWhenAnInvalidMessageIsSentInReply() throws Exception {