Merge "Implement TransactionProxy#read"
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / TransactionProxyTest.java
1 package org.opendaylight.controller.cluster.datastore;
2
3 import akka.actor.ActorRef;
4 import akka.actor.Props;
5 import akka.testkit.JavaTestKit;
6 import com.google.common.base.Optional;
7 import com.google.common.util.concurrent.ListenableFuture;
8 import junit.framework.Assert;
9 import org.junit.Test;
10 import org.opendaylight.controller.cluster.datastore.messages.CreateTransactionReply;
11 import org.opendaylight.controller.cluster.datastore.messages.ReadDataReply;
12 import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor;
13 import org.opendaylight.controller.cluster.datastore.utils.MockActorContext;
14 import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
15 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
16 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
17
18 public class TransactionProxyTest extends AbstractActorTest {
19
20
21
22     @Test
23     public void testRead() throws Exception {
24
25         new JavaTestKit(getSystem()) {{
26             final Props props = Props.create(DoNothingActor.class);
27             final ActorRef actorRef = getSystem().actorOf(props);
28
29             final MockActorContext actorContext = new MockActorContext(this.getSystem());
30             actorContext.setExecuteShardOperationResponse(new CreateTransactionReply(actorRef.path()));
31             actorContext.setExecuteRemoteOperationResponse("message");
32
33             TransactionProxy transactionProxy =
34                 new TransactionProxy(actorContext,
35                     TransactionProxy.TransactionType.READ_ONLY);
36
37
38             ListenableFuture<Optional<NormalizedNode<?, ?>>> read =
39                 transactionProxy.read(TestModel.TEST_PATH);
40
41             Optional<NormalizedNode<?, ?>> normalizedNodeOptional = read.get();
42
43             Assert.assertFalse(normalizedNodeOptional.isPresent());
44
45             actorContext.setExecuteRemoteOperationResponse(new ReadDataReply(
46                 ImmutableNodes.containerNode(TestModel.TEST_QNAME)));
47
48             read = transactionProxy.read(TestModel.TEST_PATH);
49
50             normalizedNodeOptional = read.get();
51
52             Assert.assertTrue(normalizedNodeOptional.isPresent());
53
54         }};
55     }
56 }