-
- /**
- * Method to test a local Tx actor. The Tx paths are matched to decide if the
- * Tx actor is local or not. This is done by mocking the Tx actor path
- * and the caller paths and ensuring that the paths have the remote-address format
- *
- * Note: Since the default akka provider for test is not a RemoteActorRefProvider,
- * the paths returned for the actors for all the tests are not qualified remote paths.
- * Hence are treated as non-local/remote actors. In short, all tests except
- * few below run for remote actors
- *
- * @throws Exception
- */
- @Test
- public void testLocalTxActorRead() throws Exception {
- setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY);
- doReturn(true).when(mockActorContext).isPathLocal(anyString());
-
- TransactionProxy transactionProxy = new TransactionProxy(mockComponentFactory, READ_ONLY);
-
- // negative test case with null as the reply
- doReturn(readDataReply(null)).when(mockActorContext).executeOperationAsync(
- any(ActorSelection.class), eqReadData());
-
- Optional<NormalizedNode<?, ?>> readOptional = transactionProxy.read(
- TestModel.TEST_PATH).get(5, TimeUnit.SECONDS);
-
- assertEquals("NormalizedNode isPresent", false, readOptional.isPresent());
-
- // test case with node as read data reply
- NormalizedNode<?, ?> expectedNode = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
-
- doReturn(readDataReply(expectedNode)).when(mockActorContext).executeOperationAsync(
- any(ActorSelection.class), eqReadData());
-
- readOptional = transactionProxy.read(TestModel.TEST_PATH).get(5, TimeUnit.SECONDS);
-
- assertEquals("NormalizedNode isPresent", true, readOptional.isPresent());
-
- assertEquals("Response NormalizedNode", expectedNode, readOptional.get());
-
- // test for local data exists
- doReturn(dataExistsReply(true)).when(mockActorContext).executeOperationAsync(
- any(ActorSelection.class), eqDataExists());
-
- boolean exists = transactionProxy.exists(TestModel.TEST_PATH).checkedGet();
-
- assertEquals("Exists response", true, exists);