import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.DataObjectModification;
+import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
+import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.api.DataTreeModification;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.l2switch.loopremover.rev140714.StpStatus;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkBuilder;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class TopologyLinkDataChangeHandlerTest {
-
@Mock
private DataBroker dataBroker;
@Mock
DataObjectModification<Link> mockModification = Mockito.mock(DataObjectModification.class);
when(mockModification.getDataAfter()).thenReturn(hostLink);
when(mockModification.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
- when(mockChange.getRootPath()).thenReturn(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+ when(mockChange.getRootPath()).thenReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
instanceId));
when(mockChange.getRootNode()).thenReturn(mockModification);
topologyLinkDataChangeHandler.onDataTreeChanged(Collections.singletonList(mockChange));
DataObjectModification<Link> mockModification = Mockito.mock(DataObjectModification.class);
when(mockModification.getDataAfter()).thenReturn(hostLink);
when(mockModification.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
- when(mockChange.getRootPath()).thenReturn(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+ when(mockChange.getRootPath()).thenReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
instanceId));
when(mockChange.getRootNode()).thenReturn(mockModification);
topologyLinkDataChangeHandler.onDataTreeChanged(Collections.singletonList(mockChange));
DataObjectModification<Link> mockModification = Mockito.mock(DataObjectModification.class);
when(mockModification.getDataBefore()).thenReturn(hostLink);
when(mockModification.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE);
- when(mockChange.getRootPath()).thenReturn(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+ when(mockChange.getRootPath()).thenReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
instanceId));
when(mockChange.getRootNode()).thenReturn(mockModification);
topologyLinkDataChangeHandler.onDataTreeChanged(Collections.singletonList(mockChange));
DataObjectModification<Link> mockModification = Mockito.mock(DataObjectModification.class);
when(mockModification.getDataBefore()).thenReturn(hostLink);
when(mockModification.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE);
- when(mockChange.getRootPath()).thenReturn(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+ when(mockChange.getRootPath()).thenReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
instanceId));
when(mockChange.getRootNode()).thenReturn(mockModification);
topologyLinkDataChangeHandler.onDataTreeChanged(Collections.singletonList(mockChange));
DataObjectModification<Link> mockModification = Mockito.mock(DataObjectModification.class);
when(mockModification.getDataAfter()).thenReturn(nodeLink);
when(mockModification.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
- when(mockChange.getRootPath()).thenReturn(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+ when(mockChange.getRootPath()).thenReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
instanceId));
when(mockChange.getRootNode()).thenReturn(mockModification);
// End setup code
-
- Topology topology = new TopologyBuilder().setLink(null).build();
+ Topology topology = new TopologyBuilder().setLink(Map.of()).build();
Optional<Topology> topologyOptional = Optional.of(topology);
- CheckedFuture checkedFuture = Mockito.mock(CheckedFuture.class);
- when(checkedFuture.get()).thenReturn(topologyOptional);
- ReadOnlyTransaction readOnlyTransaction = Mockito.mock(ReadOnlyTransaction.class);
+ FluentFuture<Optional<Topology>> checkedFuture = FluentFutures.immediateFluentFuture(topologyOptional);
+ ReadTransaction readOnlyTransaction = Mockito.mock(ReadTransaction.class);
when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)))
- .thenReturn(checkedFuture);
+ .thenReturn(checkedFuture);
when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
topologyLinkDataChangeHandler.onDataTreeChanged(Collections.singletonList(mockChange));
DataObjectModification<Link> mockModification = Mockito.mock(DataObjectModification.class);
when(mockModification.getDataAfter()).thenReturn(nodeLink);
when(mockModification.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
- when(mockChange.getRootPath()).thenReturn(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+ when(mockChange.getRootPath()).thenReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
instanceId));
when(mockChange.getRootNode()).thenReturn(mockModification);
links.add(new LinkBuilder().setLinkId(new LinkId("openflow:1")).build());
Topology topology = new TopologyBuilder().setLink(links).build();
Optional<Topology> topologyOptional = Optional.of(topology);
- CheckedFuture checkedFuture = Mockito.mock(CheckedFuture.class);
- when(checkedFuture.get()).thenReturn(topologyOptional);
- ReadOnlyTransaction readOnlyTransaction = Mockito.mock(ReadOnlyTransaction.class);
+ FluentFuture<Optional<Topology>> checkedFuture = FluentFutures.immediateFluentFuture(topologyOptional);
+ ReadTransaction readOnlyTransaction = Mockito.mock(ReadTransaction.class);
when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)))
.thenReturn(checkedFuture);
when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
// checkIfExistAndUpdateNodeConnector
NodeConnector nodeConnector = new NodeConnectorBuilder().build();
Optional<NodeConnector> optionalNodeConnector = Optional.of(nodeConnector);
- CheckedFuture checkedFutureNc = Mockito.mock(CheckedFuture.class);
- when(checkedFutureNc.get()).thenReturn(optionalNodeConnector);
+ FluentFuture<Optional<NodeConnector>> checkedFutureNc =
+ FluentFutures.immediateFluentFuture(optionalNodeConnector);
when(readWriteTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)))
.thenReturn(checkedFutureNc);
verify(networkGraphService, times(1)).getAllLinks();
verify(networkGraphService, times(1)).getLinksInMst();
verify(readWriteTransaction, times(4)).merge(any(LogicalDatastoreType.class), any(InstanceIdentifier.class),
- any(StpStatusAwareNodeConnector.class));
- verify(readWriteTransaction, times(1)).submit();
+ any(StpStatusAwareNodeConnector.class));
+ verify(readWriteTransaction, times(1)).commit();
}
@Test
DataObjectModification<Link> mockModification = Mockito.mock(DataObjectModification.class);
when(mockModification.getDataAfter()).thenReturn(nodeLink);
when(mockModification.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
- when(mockChange.getRootPath()).thenReturn(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+ when(mockChange.getRootPath()).thenReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
instanceId));
when(mockChange.getRootNode()).thenReturn(mockModification);
links.add(new LinkBuilder().setLinkId(new LinkId("openflow:1")).build());
Topology topology = new TopologyBuilder().setLink(links).build();
Optional<Topology> topologyOptional = Optional.of(topology);
- CheckedFuture checkedFuture = Mockito.mock(CheckedFuture.class);
- when(checkedFuture.get()).thenReturn(topologyOptional);
- ReadOnlyTransaction readOnlyTransaction = Mockito.mock(ReadOnlyTransaction.class);
+ FluentFuture<Optional<Topology>> checkedFuture = FluentFutures.immediateFluentFuture(topologyOptional);
+ ReadTransaction readOnlyTransaction = Mockito.mock(ReadTransaction.class);
when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)))
.thenReturn(checkedFuture);
when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
when(networkGraphService.getLinksInMst()).thenReturn(mstLinks);
// checkIfExistAndUpdateNodeConnector
- StpStatusAwareNodeConnector stpStatusAwareNodeConnector = new StpStatusAwareNodeConnectorBuilder()
- .setStatus(StpStatus.Forwarding).build();
NodeConnector nodeConnector = new NodeConnectorBuilder()
- .addAugmentation(StpStatusAwareNodeConnector.class, stpStatusAwareNodeConnector).build();
+ .addAugmentation(new StpStatusAwareNodeConnectorBuilder().setStatus(StpStatus.Forwarding).build())
+ .build();
Optional<NodeConnector> optionalNodeConnector = Optional.of(nodeConnector);
- CheckedFuture checkedFutureNc = Mockito.mock(CheckedFuture.class);
- when(checkedFutureNc.get()).thenReturn(optionalNodeConnector);
+ FluentFuture<Optional<NodeConnector>> checkedFutureNc =
+ FluentFutures.immediateFluentFuture(optionalNodeConnector);
when(readWriteTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)))
- .thenReturn(checkedFutureNc);
+ .thenReturn(checkedFutureNc);
topologyLinkDataChangeHandler.onDataTreeChanged(Collections.singletonList(mockChange));
Thread.sleep(500);
verify(networkGraphService, times(1)).getAllLinks();
verify(networkGraphService, times(1)).getLinksInMst();
verify(readWriteTransaction, times(2)).merge(any(LogicalDatastoreType.class), any(InstanceIdentifier.class),
- any(StpStatusAwareNodeConnector.class));
- verify(readWriteTransaction, times(1)).submit();
+ any(StpStatusAwareNodeConnector.class));
+ verify(readWriteTransaction, times(1)).commit();
}
-
}