* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.controller.sal.restconf.impl.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
+import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateBooleanFluentFuture;
+import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFailedFluentFuture;
+import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFluentFuture;
+import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateTrueFluentFuture;
-import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
-import java.util.concurrent.Future;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.ArrayList;
+import java.util.Optional;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
-import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain;
+import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
+import org.opendaylight.mdsal.common.api.CommitInfo;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.mdsal.common.api.ReadFailedException;
+import org.opendaylight.mdsal.dom.api.DOMDataBroker;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMMountPoint;
+import org.opendaylight.mdsal.dom.api.DOMNotificationService;
+import org.opendaylight.mdsal.dom.api.DOMRpcResult;
+import org.opendaylight.mdsal.dom.api.DOMRpcService;
+import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
import org.opendaylight.netconf.sal.restconf.impl.BrokerFacade;
import org.opendaylight.netconf.sal.restconf.impl.ControllerContext;
-import org.opendaylight.netconf.sal.restconf.impl.PatchContext;
-import org.opendaylight.netconf.sal.restconf.impl.PatchStatusContext;
import org.opendaylight.netconf.sal.restconf.impl.PutResult;
-import org.opendaylight.netconf.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.netconf.sal.restconf.impl.RestconfError;
-import org.opendaylight.netconf.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.netconf.sal.restconf.impl.RestconfError.ErrorType;
import org.opendaylight.netconf.sal.streams.listeners.ListenerAdapter;
import org.opendaylight.netconf.sal.streams.listeners.NotificationListenerAdapter;
import org.opendaylight.netconf.sal.streams.listeners.Notificator;
import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
-import org.opendaylight.restconf.handlers.SchemaContextHandler;
-import org.opendaylight.restconf.handlers.TransactionChainHandler;
+import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
+import org.opendaylight.restconf.common.errors.RestconfError;
+import org.opendaylight.restconf.common.errors.RestconfError.ErrorTag;
+import org.opendaylight.restconf.common.errors.RestconfError.ErrorType;
+import org.opendaylight.restconf.common.patch.PatchContext;
+import org.opendaylight.restconf.common.patch.PatchStatusContext;
+import org.opendaylight.restconf.common.util.DataChangeScope;
import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.NotificationOutputTypeGrouping.NotificationOutputType;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.common.QName;
@Mock
private DOMMountPoint mockMountInstance;
@Mock
- private DOMDataReadOnlyTransaction readTransaction;
+ private DOMDataTreeReadTransaction readTransaction;
@Mock
- private DOMDataWriteTransaction writeTransaction;
+ private DOMDataTreeWriteTransaction writeTransaction;
@Mock
- private DOMDataReadWriteTransaction rwTransaction;
+ private DOMDataTreeReadWriteTransaction rwTransaction;
- private final BrokerFacade brokerFacade = BrokerFacade.getInstance();
+ private BrokerFacade brokerFacade;
private final NormalizedNode<?, ?> dummyNode = createDummyNode("test:module", "2014-01-09", "interfaces");
- private final CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> dummyNodeInFuture =
- wrapDummyNode(this.dummyNode);
+ private final FluentFuture<Optional<NormalizedNode<?, ?>>> dummyNodeInFuture = wrapDummyNode(this.dummyNode);
private final QName qname = TestUtils.buildQName("interfaces","test:module", "2014-01-09");
private final SchemaPath type = SchemaPath.create(true, this.qname);
private final YangInstanceIdentifier instanceID = YangInstanceIdentifier.builder().node(this.qname).build();
+ private ControllerContext controllerContext;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- this.brokerFacade.setDomDataBroker(this.domDataBroker);
- this.brokerFacade.setDomNotificationService(this.domNotification);
- this.brokerFacade.setRpcService(this.mockRpcService);
+
+ controllerContext = TestRestconfUtils.newControllerContext(
+ TestUtils.loadSchemaContext("/full-versions/test-module", "/modules"));
+
+ brokerFacade = BrokerFacade.newInstance(mockRpcService, domDataBroker, domNotification, controllerContext);
+
when(this.domDataBroker.newReadOnlyTransaction()).thenReturn(this.readTransaction);
when(this.domDataBroker.newWriteOnlyTransaction()).thenReturn(this.writeTransaction);
when(this.domDataBroker.newReadWriteTransaction()).thenReturn(this.rwTransaction);
-
- ControllerContext.getInstance().setSchemas(TestUtils.loadSchemaContext("/full-versions/test-module"));
+ when(this.domDataBroker.getExtensions()).thenReturn(ImmutableClassToInstanceMap.of(
+ DOMDataTreeChangeService.class, Mockito.mock(DOMDataTreeChangeService.class)));
}
- private static CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> wrapDummyNode(
- final NormalizedNode<?, ?> dummyNode) {
- return Futures.immediateCheckedFuture(Optional.<NormalizedNode<?, ?>>of(dummyNode));
+ private static FluentFuture<Optional<NormalizedNode<?, ?>>> wrapDummyNode(final NormalizedNode<?, ?> dummyNode) {
+ return immediateFluentFuture(Optional.of(dummyNode));
}
- private static CheckedFuture<Boolean, ReadFailedException> wrapExistence(final Boolean exists) {
- return Futures.immediateCheckedFuture(exists);
+ private static FluentFuture<Boolean> wrapExistence(final boolean exists) {
+ return immediateBooleanFluentFuture(exists);
}
/**
assertSame("readOperationalData", this.dummyNode, actualNode);
}
- @Test(expected = RestconfDocumentedException.class)
- public void testReadOperationalDataWithNoDataBroker() {
- this.brokerFacade.setDomDataBroker(null);
-
- this.brokerFacade.readOperationalData(this.instanceID);
- }
-
@Test
public void test503() throws Exception {
final RpcError error = RpcResultBuilder.newError(
RpcError.ErrorType.TRANSPORT,
ErrorTag.RESOURCE_DENIED.getTagValue(),
"Master is down. Please try again.");
- final ReadFailedException exception503 = new ReadFailedException("Read from transaction failed", error);
- doReturn(Futures.immediateFailedCheckedFuture(exception503))
+ doReturn(immediateFailedFluentFuture(new ReadFailedException("Read from transaction failed", error)))
.when(readTransaction).read(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class));
try {
brokerFacade.readConfigurationData(this.instanceID, "explicit");
@Test
public void testInvokeRpc() throws Exception {
final DOMRpcResult expResult = mock(DOMRpcResult.class);
- final CheckedFuture<DOMRpcResult, DOMRpcException> future = Futures.immediateCheckedFuture(expResult);
- when(this.mockRpcService.invokeRpc(this.type, this.dummyNode)).thenReturn(future);
+ doReturn(immediateFluentFuture(expResult)).when(this.mockRpcService).invokeRpc(this.type, this.dummyNode);
- final CheckedFuture<DOMRpcResult, DOMRpcException> actualFuture = this.brokerFacade
- .invokeRpc(this.type, this.dummyNode);
+ final FluentFuture<DOMRpcResult> actualFuture = this.brokerFacade.invokeRpc(this.type, this.dummyNode);
assertNotNull("Future is null", actualFuture);
final DOMRpcResult actualResult = actualFuture.get();
assertSame("invokeRpc", expResult, actualResult);
}
- @Test(expected = RestconfDocumentedException.class)
- public void testInvokeRpcWithNoConsumerSession() {
- brokerFacade.setDomDataBroker(null);
- this.brokerFacade.invokeRpc(this.type, this.dummyNode);
- }
-
@Test
public void testCommitConfigurationDataPut() throws Exception {
- @SuppressWarnings("unchecked")
- final CheckedFuture<Void, TransactionCommitFailedException> expFuture = mock(CheckedFuture.class);
- when(this.rwTransaction.submit()).thenReturn(expFuture);
-
- final Optional<NormalizedNode<?, ?>> optionalMock = mock(Optional.class);
- when(optionalMock.get()).thenReturn(null);
+ doReturn(CommitInfo.emptyFluentFuture()).when(this.rwTransaction).commit();
- final CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> readFuture = Futures
- .immediateCheckedFuture(optionalMock);
- when(this.rwTransaction.read(LogicalDatastoreType.CONFIGURATION, this.instanceID)).thenReturn(readFuture);
+ doReturn(immediateFluentFuture(Optional.of(mock(NormalizedNode.class)))).when(this.rwTransaction)
+ .read(LogicalDatastoreType.CONFIGURATION, this.instanceID);
final PutResult result = this.brokerFacade.commitConfigurationDataPut(mock(SchemaContext.class),
this.instanceID, this.dummyNode, null, null);
- final Future<Void> actualFuture = result.getFutureOfPutData();
-
- assertSame("commitConfigurationDataPut", expFuture, actualFuture);
+ assertSame("commitConfigurationDataPut", CommitInfo.emptyFluentFuture(), result.getFutureOfPutData());
final InOrder inOrder = inOrder(this.domDataBroker, this.rwTransaction);
inOrder.verify(this.domDataBroker).newReadWriteTransaction();
inOrder.verify(this.rwTransaction).put(LogicalDatastoreType.CONFIGURATION, this.instanceID, this.dummyNode);
- inOrder.verify(this.rwTransaction).submit();
+ inOrder.verify(this.rwTransaction).commit();
}
@Test
public void testCommitConfigurationDataPost() {
- @SuppressWarnings("unchecked")
- final CheckedFuture<Void, TransactionCommitFailedException> expFuture = mock(CheckedFuture.class);
-
when(this.rwTransaction.exists(LogicalDatastoreType.CONFIGURATION, this.instanceID))
.thenReturn(wrapExistence(false));
- when(this.rwTransaction.submit()).thenReturn(expFuture);
+ doReturn(CommitInfo.emptyFluentFuture()).when(this.rwTransaction).commit();
- final CheckedFuture<Void, TransactionCommitFailedException> actualFuture = this.brokerFacade
+ final FluentFuture<? extends CommitInfo> actualFuture = this.brokerFacade
.commitConfigurationDataPost(mock(SchemaContext.class), this.instanceID, this.dummyNode, null, null);
- assertSame("commitConfigurationDataPost", expFuture, actualFuture);
+ assertSame("commitConfigurationDataPost", CommitInfo.emptyFluentFuture(), actualFuture);
final InOrder inOrder = inOrder(this.domDataBroker, this.rwTransaction);
inOrder.verify(this.domDataBroker).newReadWriteTransaction();
inOrder.verify(this.rwTransaction).exists(LogicalDatastoreType.CONFIGURATION, this.instanceID);
inOrder.verify(this.rwTransaction).put(LogicalDatastoreType.CONFIGURATION, this.instanceID, this.dummyNode);
- inOrder.verify(this.rwTransaction).submit();
+ inOrder.verify(this.rwTransaction).commit();
}
@Test(expected = RestconfDocumentedException.class)
public void testCommitConfigurationDataPostAlreadyExists() {
- final CheckedFuture<Boolean, ReadFailedException> successFuture = Futures.immediateCheckedFuture(Boolean.TRUE);
when(this.rwTransaction.exists(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class)))
- .thenReturn(successFuture);
+ .thenReturn(immediateTrueFluentFuture());
try {
// Schema context is only necessary for ensuring parent structure
this.brokerFacade.commitConfigurationDataPost((SchemaContext) null, this.instanceID, this.dummyNode, null,
prepareDataForDelete(true);
// expected result
- @SuppressWarnings("unchecked")
- final CheckedFuture<Void, TransactionCommitFailedException> expFuture = mock(CheckedFuture.class);
- when(this.rwTransaction.submit()).thenReturn(expFuture);
+ doReturn(CommitInfo.emptyFluentFuture()).when(this.rwTransaction).commit();
// test
- final CheckedFuture<Void, TransactionCommitFailedException> actualFuture = this.brokerFacade
+ final FluentFuture<? extends CommitInfo> actualFuture = this.brokerFacade
.commitConfigurationDataDelete(this.instanceID);
// verify result and interactions
- assertSame("commitConfigurationDataDelete", expFuture, actualFuture);
+ assertSame("commitConfigurationDataDelete", CommitInfo.emptyFluentFuture(), actualFuture);
// check exists, delete, submit
final InOrder inOrder = inOrder(this.domDataBroker, this.rwTransaction);
inOrder.verify(this.rwTransaction).exists(LogicalDatastoreType.CONFIGURATION, this.instanceID);
inOrder.verify(this.rwTransaction).delete(LogicalDatastoreType.CONFIGURATION, this.instanceID);
- inOrder.verify(this.rwTransaction).submit();
+ inOrder.verify(this.rwTransaction).commit();
}
/**
*/
private void prepareDataForDelete(final boolean assumeDataExists) {
when(this.rwTransaction.exists(LogicalDatastoreType.CONFIGURATION, this.instanceID))
- .thenReturn(Futures.immediateCheckedFuture(new Boolean(assumeDataExists)));
+ .thenReturn(immediateBooleanFluentFuture(assumeDataExists));
}
@Test
public void testRegisterToListenDataChanges() {
final ListenerAdapter listener = Notificator.createListener(this.instanceID, "stream",
- NotificationOutputType.XML);
+ NotificationOutputType.XML, controllerContext);
@SuppressWarnings("unchecked")
- final ListenerRegistration<DOMDataChangeListener> mockRegistration = mock(ListenerRegistration.class);
+ final ListenerRegistration<ListenerAdapter> mockRegistration = mock(ListenerRegistration.class);
- when(this.domDataBroker.registerDataChangeListener(any(LogicalDatastoreType.class), eq(this.instanceID),
- eq(listener), eq(DataChangeScope.BASE))).thenReturn(mockRegistration);
+ DOMDataTreeChangeService changeService = this.domDataBroker.getExtensions()
+ .getInstance(DOMDataTreeChangeService.class);
+ DOMDataTreeIdentifier loc = new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, this.instanceID);
+ when(changeService.registerDataTreeChangeListener(eq(loc), eq(listener))).thenReturn(mockRegistration);
this.brokerFacade.registerToListenDataChanges(
LogicalDatastoreType.CONFIGURATION, DataChangeScope.BASE, listener);
- verify(this.domDataBroker).registerDataChangeListener(
- LogicalDatastoreType.CONFIGURATION, this.instanceID, listener, DataChangeScope.BASE);
+ verify(changeService).registerDataTreeChangeListener(loc, listener);
assertEquals("isListening", true, listener.isListening());
this.brokerFacade.registerToListenDataChanges(
LogicalDatastoreType.CONFIGURATION, DataChangeScope.BASE, listener);
- verifyNoMoreInteractions(this.domDataBroker);
+ verifyNoMoreInteractions(changeService);
}
/**
final String identifier = "create-notification-stream/toaster:toastDone";
final SchemaPath path = SchemaPath.create(true,
QName.create("http://netconfcentral.org/ns/toaster", "2009-11-20", "toastDone"));
- Notificator.createNotificationListener(Lists.newArrayList(path), identifier, "XML");
+ Notificator.createNotificationListener(Lists.newArrayList(path), identifier, "XML", controllerContext);
final NotificationListenerAdapter listener = Notificator.getNotificationListenerFor(identifier).get(0);
// mock registration
verify(this.domNotification, times(1)).registerNotificationListener(listener, listener.getSchemaPath());
final DOMTransactionChain transactionChain = mock(DOMTransactionChain.class);
- final DOMDataWriteTransaction wTx = mock(DOMDataWriteTransaction.class);
- final CheckedFuture<Void, TransactionCommitFailedException> checked = Futures.immediateCheckedFuture(null);
- when(wTx.submit()).thenReturn(checked);
+ final DOMDataTreeWriteTransaction wTx = mock(DOMDataTreeWriteTransaction.class);
+ doReturn(CommitInfo.emptyFluentFuture()).when(wTx).commit();
when(transactionChain.newWriteOnlyTransaction()).thenReturn(wTx);
- final TransactionChainHandler transactionChainHandler = new TransactionChainHandler(transactionChain);
- final SchemaContextHandler schemaHandler = Mockito.mock(SchemaContextHandler.class);
- final SchemaContext schCtx = TestUtils.loadSchemaContext("/modules");
- when(schemaHandler.get()).thenReturn(schCtx);
- listener.setCloseVars(transactionChainHandler, schemaHandler);
// close and remove test notification listener
listener.close();
Notificator.removeListenerIfNoSubscriberExists(listener);
* Test Patch method on the server with no data.
*/
@Test
- @SuppressWarnings("unchecked")
public void testPatchConfigurationDataWithinTransactionServer() throws Exception {
final PatchContext patchContext = mock(PatchContext.class);
- final InstanceIdentifierContext identifierContext = mock(InstanceIdentifierContext.class);
- final CheckedFuture<Void, TransactionCommitFailedException> expFuture = Futures.immediateCheckedFuture(null);
+ final InstanceIdentifierContext<?> identifierContext = mock(InstanceIdentifierContext.class);
- when(patchContext.getData()).thenReturn(Lists.newArrayList());
- when(patchContext.getInstanceIdentifierContext()).thenReturn(identifierContext);
+ when(patchContext.getData()).thenReturn(new ArrayList<>());
+ doReturn(identifierContext).when(patchContext).getInstanceIdentifierContext();
// no mount point
when(identifierContext.getMountPoint()).thenReturn(null);
- when(this.rwTransaction.submit()).thenReturn(expFuture);
+ doReturn(CommitInfo.emptyFluentFuture()).when(this.rwTransaction).commit();
final PatchStatusContext status = this.brokerFacade.patchConfigurationDataWithinTransaction(patchContext);
* Test Patch method on mounted device with no data.
*/
@Test
- @SuppressWarnings("unchecked")
public void testPatchConfigurationDataWithinTransactionMount() throws Exception {
final PatchContext patchContext = mock(PatchContext.class);
- final InstanceIdentifierContext identifierContext = mock(InstanceIdentifierContext.class);
+ final InstanceIdentifierContext<?> identifierContext = mock(InstanceIdentifierContext.class);
final DOMMountPoint mountPoint = mock(DOMMountPoint.class);
final DOMDataBroker mountDataBroker = mock(DOMDataBroker.class);
- final DOMDataReadWriteTransaction transaction = mock(DOMDataReadWriteTransaction.class);
- final CheckedFuture<Void, TransactionCommitFailedException> expFuture = Futures.immediateCheckedFuture(null);
+ final DOMDataTreeReadWriteTransaction transaction = mock(DOMDataTreeReadWriteTransaction.class);
- when(patchContext.getData()).thenReturn(Lists.newArrayList());
- when(patchContext.getInstanceIdentifierContext()).thenReturn(identifierContext);
+ when(patchContext.getData()).thenReturn(new ArrayList<>());
+ doReturn(identifierContext).when(patchContext).getInstanceIdentifierContext();
// return mount point with broker
when(identifierContext.getMountPoint()).thenReturn(mountPoint);
when(mountPoint.getService(DOMDataBroker.class)).thenReturn(Optional.of(mountDataBroker));
when(mountDataBroker.newReadWriteTransaction()).thenReturn(transaction);
- when(transaction.submit()).thenReturn(expFuture);
+ doReturn(CommitInfo.emptyFluentFuture()).when(transaction).commit();
final PatchStatusContext status = this.brokerFacade.patchConfigurationDataWithinTransaction(patchContext);
* Patch operation should fail with global error.
*/
@Test
- @SuppressWarnings("unchecked")
public void testPatchConfigurationDataWithinTransactionMountFail() throws Exception {
final PatchContext patchContext = mock(PatchContext.class);
- final InstanceIdentifierContext identifierContext = mock(InstanceIdentifierContext.class);
+ final InstanceIdentifierContext<?> identifierContext = mock(InstanceIdentifierContext.class);
final DOMMountPoint mountPoint = mock(DOMMountPoint.class);
final DOMDataBroker mountDataBroker = mock(DOMDataBroker.class);
- final DOMDataReadWriteTransaction transaction = mock(DOMDataReadWriteTransaction.class);
- final CheckedFuture<Void, TransactionCommitFailedException> expFuture = Futures.immediateCheckedFuture(null);
+ final DOMDataTreeReadWriteTransaction transaction = mock(DOMDataTreeReadWriteTransaction.class);
- when(patchContext.getData()).thenReturn(Lists.newArrayList());
- when(patchContext.getInstanceIdentifierContext()).thenReturn(identifierContext);
+ when(patchContext.getData()).thenReturn(new ArrayList<>());
+ doReturn(identifierContext).when(patchContext).getInstanceIdentifierContext();
when(identifierContext.getMountPoint()).thenReturn(mountPoint);
// missing broker on mounted device
- when(mountPoint.getService(DOMDataBroker.class)).thenReturn(Optional.absent());
+ when(mountPoint.getService(DOMDataBroker.class)).thenReturn(Optional.empty());
when(mountDataBroker.newReadWriteTransaction()).thenReturn(transaction);
- when(transaction.submit()).thenReturn(expFuture);
+ doReturn(CommitInfo.emptyFluentFuture()).when(transaction).commit();
final PatchStatusContext status = this.brokerFacade.patchConfigurationDataWithinTransaction(patchContext);