import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.DataObjectModification;
import org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType;
-import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
-import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.netconf.server.api.notifications.BaseNotificationPublisherRegistration;
import org.opendaylight.netconf.server.api.notifications.NetconfNotificationCollector;
private NetconfNotificationCollector netconfNotificationCollector;
@Mock
private DataBroker dataBroker;
+ @Mock
+ private DataTreeModification<Session> treeChange;
+ @Mock
+ private DataObjectModification<Session> changeObject;
private SessionNotificationProducer publisher;
@Before
public void setUp() {
- doReturn(listenerRegistration).when(dataBroker).registerDataTreeChangeListener(any(DataTreeIdentifier.class),
- any(DataTreeChangeListener.class));
+ doReturn(listenerRegistration).when(dataBroker).registerTreeChangeListener(any(), any());
doNothing().when(registration).onSessionStarted(any());
doNothing().when(registration).onSessionEnded(any());
@Test
public void testOnDataChangedSessionCreated() throws Exception {
- final Session session = createSession(Uint32.ONE);
- final DataTreeModification<Session> treeChange = getTreeModification(session, ModificationType.WRITE);
- publisher.onDataTreeChanged(List.of(treeChange));
- ArgumentCaptor<NetconfSessionStart> captor = ArgumentCaptor.forClass(NetconfSessionStart.class);
+ final var session = createSession(Uint32.ONE);
+ final var treeMod = getTreeModification(session, ModificationType.WRITE);
+ publisher.onDataTreeChanged(List.of(treeMod));
+ final var captor = ArgumentCaptor.forClass(NetconfSessionStart.class);
verify(registration).onSessionStarted(captor.capture());
- final NetconfSessionStart value = captor.getValue();
+ final var value = captor.getValue();
assertEquals(session.getSessionId(), value.getSessionId().getValue());
assertEquals(session.getSourceHost().getIpAddress(), value.getSourceHost());
assertEquals(session.getUsername(), value.getUsername());
@Test
public void testOnDataChangedSessionUpdated() throws Exception {
- final DataTreeModification<Session> treeChange = mock(DataTreeModification.class);
- final DataObjectModification<Session> changeObject = mock(DataObjectModification.class);
- final Session sessionBefore = createSessionWithInRpcCount(Uint32.ONE, Uint32.ZERO);
- final Session sessionAfter = createSessionWithInRpcCount(Uint32.ONE, Uint32.ONE);
+ final var sessionBefore = createSessionWithInRpcCount(Uint32.ONE, Uint32.ZERO);
+ final var sessionAfter = createSessionWithInRpcCount(Uint32.ONE, Uint32.ONE);
doReturn(sessionBefore).when(changeObject).dataBefore();
doReturn(sessionAfter).when(changeObject).dataAfter();
doReturn(ModificationType.WRITE).when(changeObject).modificationType();
@Test
public void testOnDataChangedSessionDeleted() throws Exception {
- final Session session = createSession(Uint32.ONE);
- final DataTreeModification<Session> data = getTreeModification(session, ModificationType.DELETE);
- publisher.onDataTreeChanged(List.of(data));
- ArgumentCaptor<NetconfSessionEnd> captor = ArgumentCaptor.forClass(NetconfSessionEnd.class);
+ final var session = createSession(Uint32.ONE);
+ final var treeMod = getTreeModification(session, ModificationType.DELETE);
+ publisher.onDataTreeChanged(List.of(treeMod));
+ final var captor = ArgumentCaptor.forClass(NetconfSessionEnd.class);
verify(registration).onSessionEnded(captor.capture());
final NetconfSessionEnd value = captor.getValue();
assertEquals(session.getSessionId(), value.getSessionId().getValue());
private static Session createSessionWithInRpcCount(final Uint32 id, final Uint32 inRpc) {
return new SessionBuilder()
- .setSessionId(id)
- .setSourceHost(new Host(new IpAddress(new Ipv4Address("0.0.0.0"))))
- .setUsername("user")
- .setInRpcs(new ZeroBasedCounter32(inRpc))
- .build();
+ .setSessionId(id)
+ .setSourceHost(new Host(new IpAddress(new Ipv4Address("0.0.0.0"))))
+ .setUsername("user")
+ .setInRpcs(new ZeroBasedCounter32(inRpc))
+ .build();
}
- @SuppressWarnings("unchecked")
- private static DataTreeModification<Session> getTreeModification(final Session session,
- final ModificationType type) {
- final DataTreeModification<Session> treeChange = mock(DataTreeModification.class);
- final DataObjectModification<Session> changeObject = mock(DataObjectModification.class);
- switch (type) {
- case WRITE:
+ private DataTreeModification<Session> getTreeModification(final Session session, final ModificationType type) {
+ doReturn(type).when(changeObject).modificationType();
+ doReturn(changeObject).when(treeChange).getRootNode();
+ return switch (type) {
+ case WRITE -> {
doReturn(null).when(changeObject).dataBefore();
doReturn(session).when(changeObject).dataAfter();
- break;
- case DELETE:
+ yield treeChange;
+ }
+ case DELETE -> {
doReturn(session).when(changeObject).dataBefore();
- break;
- default:
+ yield treeChange;
+ }
+ default -> {
LOG.debug("Received intentionally unhandled type: {}.", type);
- }
- doReturn(type).when(changeObject).modificationType();
- doReturn(changeObject).when(treeChange).getRootNode();
- return treeChange;
+ yield treeChange;
+ }
+ };
}
-
}