Add RemoteDeviceServices
[netconf.git] / netconf / sal-netconf-connector / src / test / java / org / opendaylight / netconf / sal / connect / netconf / sal / KeepaliveSalFacadeResponseWaitingTest.java
index 598bfa6c6497f511ca48c8e7de46dbbf02e5c8e3..173ba4498c50d13d073592301c73f502c1d2242a 100644 (file)
@@ -7,36 +7,37 @@
  */
 package org.opendaylight.netconf.sal.connect.netconf.sal;
 
+import static java.util.Objects.requireNonNull;
 import static org.mockito.Mockito.after;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.verify;
 import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps.getSourceNode;
 import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_GET_CONFIG_NODEID;
 import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_GET_CONFIG_QNAME;
-import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_RUNNING_QNAME;
+import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_RUNNING_NODEID;
 
 import com.google.common.util.concurrent.SettableFuture;
 import java.net.InetSocketAddress;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
+import org.eclipse.jdt.annotation.NonNull;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
-import org.opendaylight.mdsal.dom.api.DOMActionService;
 import org.opendaylight.mdsal.dom.api.DOMNotification;
 import org.opendaylight.mdsal.dom.api.DOMRpcResult;
 import org.opendaylight.mdsal.dom.api.DOMRpcService;
 import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
 import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler;
+import org.opendaylight.netconf.sal.connect.api.RemoteDeviceServices;
+import org.opendaylight.netconf.sal.connect.netconf.NetconfDeviceSchema;
 import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator;
 import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointContext;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 
@@ -45,8 +46,9 @@ public class KeepaliveSalFacadeResponseWaitingTest {
 
     private static final RemoteDeviceId REMOTE_DEVICE_ID =
             new RemoteDeviceId("test", new InetSocketAddress("localhost", 22));
-    private static final ContainerNode KEEPALIVE_PAYLOAD = NetconfMessageTransformUtil.wrap(NETCONF_GET_CONFIG_NODEID,
-            getSourceNode(NETCONF_RUNNING_QNAME), NetconfMessageTransformUtil.EMPTY_FILTER);
+    private static final @NonNull ContainerNode KEEPALIVE_PAYLOAD =
+        NetconfMessageTransformUtil.wrap(NETCONF_GET_CONFIG_NODEID,
+            getSourceNode(NETCONF_RUNNING_NODEID), NetconfMessageTransformUtil.EMPTY_FILTER);
 
     private KeepaliveSalFacade keepaliveSalFacade;
     private ScheduledExecutorService executorService;
@@ -85,11 +87,11 @@ public class KeepaliveSalFacadeResponseWaitingTest {
 
         //This settable future will be used to check the invokation of keepalive RPC. Should be never invoked.
         final SettableFuture<DOMRpcResult> keepaliveSettableFuture = SettableFuture.create();
-        final DOMRpcResult keepaliveResult = new DefaultDOMRpcResult(Builders.containerBuilder().withNodeIdentifier(
-                new YangInstanceIdentifier.NodeIdentifier(NetconfMessageTransformUtil.NETCONF_RUNNING_QNAME)).build());
-        keepaliveSettableFuture.set(keepaliveResult);
+        keepaliveSettableFuture.set(new DefaultDOMRpcResult(Builders.containerBuilder()
+            .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_RUNNING_NODEID)
+            .build()));
 
-        keepaliveSalFacade.onDeviceConnected(null, null, deviceRpc);
+        keepaliveSalFacade.onDeviceConnected(null, null, new RemoteDeviceServices(deviceRpc, null));
 
         //Invoke general RPC on simulated local facade without args (or with null args). Will be returned
         //settableFuture variable without any set value. WaitingShaduler in keepalive sal facade should wait for any
@@ -103,19 +105,18 @@ public class KeepaliveSalFacadeResponseWaitingTest {
         verify(deviceRpc, after(2000).never()).invokeRpc(NETCONF_GET_CONFIG_QNAME, KEEPALIVE_PAYLOAD);
     }
 
-    private final class LocalNetconfSalFacade implements RemoteDeviceHandler<NetconfSessionPreferences> {
-
-        private DOMRpcService localDeviceRpc;
+    private static final class LocalNetconfSalFacade implements RemoteDeviceHandler {
+        private volatile RemoteDeviceServices currentServices;
 
         @Override
-        public void onDeviceConnected(final MountPointContext remoteSchemaContext,
-                final NetconfSessionPreferences netconfSessionPreferences, final DOMRpcService currentDeviceRpc,
-                final DOMActionService deviceAction) {
-            localDeviceRpc = currentDeviceRpc;
+        public void onDeviceConnected(final NetconfDeviceSchema deviceSchema,
+                final NetconfSessionPreferences sessionPreferences, final RemoteDeviceServices services) {
+            currentServices = requireNonNull(services);
         }
 
         @Override
         public void onDeviceDisconnected() {
+            currentServices = null;
         }
 
         @Override
@@ -131,8 +132,9 @@ public class KeepaliveSalFacadeResponseWaitingTest {
         }
 
         public void invokeNullRpc() {
-            if (localDeviceRpc != null) {
-                localDeviceRpc.invokeRpc(null, null);
+            final var local = currentServices;
+            if (local != null) {
+                local.rpcs().invokeRpc(null, null);
             }
         }
     }