package org.opendaylight.netconf.sal.connect.netconf.sal;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.google.common.util.concurrent.Futures;
import java.net.InetSocketAddress;
-import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener;
import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.core.api.Broker;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
public class NetconfDeviceSalProviderTest {
- @Mock
- private Broker.ProviderSession session;
@Mock
private DOMMountPointService mountpointService;
@Mock
- private BindingAwareBroker.ProviderContext context;
- @Mock
private WriteTransaction tx;
@Mock
private DataBroker dataBroker;
@Mock
private BindingTransactionChain chain;
+ @Mock
+ private DOMMountPointService mountPointService;
+ @Mock
+ private WriteTransaction writeTx;
private NetconfDeviceSalProvider provider;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- provider = new NetconfDeviceSalProvider(new RemoteDeviceId("device1", InetSocketAddress.createUnresolved("localhost", 17830)));
- when(session.getService(DOMMountPointService.class)).thenReturn(mountpointService);
- when(context.getSALService(DataBroker.class)).thenReturn(dataBroker);
- when(dataBroker.createTransactionChain(any())).thenReturn(chain);
+ doReturn(chain).when(dataBroker).createTransactionChain(any(TransactionChainListener.class));
+ doReturn(writeTx).when(chain).newWriteOnlyTransaction();
+ doNothing().when(writeTx).merge(eq(LogicalDatastoreType.OPERATIONAL), any(), any());
+ doReturn("Some object").when(writeTx).getIdentifier();
+ doReturn(Futures.immediateCheckedFuture(null)).when(writeTx).submit();
+ provider = new NetconfDeviceSalProvider(new RemoteDeviceId("device1",
+ InetSocketAddress.createUnresolved("localhost", 17830)), mountPointService, dataBroker);
when(chain.newWriteOnlyTransaction()).thenReturn(tx);
when(tx.submit()).thenReturn(Futures.immediateCheckedFuture(null));
when(tx.getIdentifier()).thenReturn(tx);
}
- @Test
- public void onSessionInitiated() throws Exception {
- provider.onSessionInitiated(session);
- provider.onSessionInitiated(context);
- Assert.assertNotNull(provider.getMountInstance());
- Assert.assertNotNull(provider.getTopologyDatastoreAdapter());
- }
-
- @Test
- public void getProviderFunctionality() throws Exception {
- Assert.assertTrue(provider.getProviderFunctionality().isEmpty());
- }
-
@Test
public void replaceChainIfFailed() throws Exception {
- provider.onSessionInitiated(session);
- provider.onSessionInitiated(context);
- Assert.assertNotNull(provider.getMountInstance());
final ArgumentCaptor<TransactionChainListener> captor = ArgumentCaptor.forClass(TransactionChainListener.class);
verify(dataBroker).createTransactionChain(captor.capture());
try {
@Test
public void close() throws Exception {
- provider.onSessionInitiated(session);
- provider.onSessionInitiated(context);
provider.close();
verify(chain).close();
}
-}
\ No newline at end of file
+ @Test
+ public void closeWithoutNPE() throws Exception {
+ provider.close();
+ provider.close();
+ verify(chain, times(2)).close();
+ }
+}