import com.google.common.util.concurrent.FluentFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import com.typesafe.config.ConfigFactory;
-import io.netty.util.concurrent.EventExecutor;
-import io.netty.util.concurrent.Future;
-import io.netty.util.concurrent.GlobalEventExecutor;
+import io.netty.util.Timer;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.apache.commons.io.FileUtils;
import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
import org.opendaylight.mdsal.singleton.dom.impl.DOMClusterSingletonServiceProviderImpl;
import org.opendaylight.netconf.api.CapabilityURN;
-import org.opendaylight.netconf.client.NetconfClientDispatcher;
+import org.opendaylight.netconf.client.NetconfClientFactory;
import org.opendaylight.netconf.client.mdsal.NetconfDeviceCapabilities;
import org.opendaylight.netconf.client.mdsal.NetconfDeviceSchema;
import org.opendaylight.netconf.client.mdsal.api.CredentialProvider;
import org.opendaylight.netconf.topology.singleton.impl.utils.ClusteringRpcException;
import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologySetup;
import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologyUtils;
-import org.opendaylight.netconf.topology.spi.DefaultNetconfClientConfigurationBuilderFactory;
import org.opendaylight.netconf.topology.spi.NetconfClientConfigurationBuilderFactory;
+import org.opendaylight.netconf.topology.spi.NetconfClientConfigurationBuilderFactoryImpl;
import org.opendaylight.netconf.topology.spi.NetconfNodeUtils;
+import org.opendaylight.netconf.topology.spi.NetconfTopologySchemaAssembler;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231025.ConnectionOper.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231025.credentials.credentials.LoginPwUnencryptedBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev231025.credentials.credentials.login.pw.unencrypted.LoginPasswordUnencryptedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.credentials.credentials.LoginPwUnencryptedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev240120.credentials.credentials.login.pw.unencrypted.LoginPasswordUnencryptedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017.Keystore;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev231121.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev231121.NetconfNodeBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.GetTopInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.GetTopOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.PutTopInputBuilder;
private static final String TEST_ROOT_DIRECTORY = "test-cache-root";
private static final String TEST_DEFAULT_SUBDIR = "test-schema";
- @Mock private RpcProviderService mockRpcProviderService;
- @Mock private Registration mockRpcReg;
- @Mock private NetconfClientDispatcher mockClientDispatcher;
- @Mock private AAAEncryptionService mockEncryptionService;
- @Mock private ScheduledExecutorService mockKeepaliveExecutor;
- @Mock private DeviceActionFactory deviceActionFactory;
- @Mock private CredentialProvider credentialProvider;
- @Mock private SslHandlerFactoryProvider sslHandlerFactoryProvider;
-
- @Mock private DOMMountPointListener masterMountPointListener;
+ @Mock
+ private RpcProviderService mockRpcProviderService;
+ @Mock
+ private Registration mockRpcReg;
+ @Mock
+ private NetconfClientFactory mockClientFactory;
+ @Mock
+ private AAAEncryptionService mockEncryptionService;
+ @Mock
+ private Timer mockTimer;
+ @Mock
+ private DeviceActionFactory deviceActionFactory;
+ @Mock
+ private CredentialProvider credentialProvider;
+ @Mock
+ private SslHandlerFactoryProvider sslHandlerFactoryProvider;
+ @Mock
+ private DOMMountPointListener masterMountPointListener;
private final DOMMountPointService masterMountPointService = new DOMMountPointServiceImpl();
private Rpcs.Normalized deviceRpcService;
private volatile SettableFuture<MasterSalFacade> masterSalFacadeFuture = SettableFuture.create();
- @Mock private ClusterSingletonServiceProvider mockSlaveClusterSingletonServiceProvider;
- @Mock private ClusterSingletonServiceRegistration mockSlaveClusterSingletonServiceReg;
- @Mock private DOMMountPointListener slaveMountPointListener;
+ @Mock
+ private ClusterSingletonServiceProvider mockSlaveClusterSingletonServiceProvider;
+ @Mock
+ private ClusterSingletonServiceRegistration mockSlaveClusterSingletonServiceReg;
+ @Mock
+ private DOMMountPointListener slaveMountPointListener;
private final DOMMountPointService slaveMountPointService = new DOMMountPointServiceImpl();
private DataBroker slaveDataBroker;
private ActorSystem slaveSystem;
private TransactionChain slaveTxChain;
private NetconfClientConfigurationBuilderFactory builderFactory;
- private final EventExecutor eventExecutor = GlobalEventExecutor.INSTANCE;
private EffectiveModelContext deviceSchemaContext;
private YangModuleInfo topModuleInfo;
private QName putTopRpcSchemaPath;
private final ContainerNode getTopInput = ImmutableNodes.containerNode(GetTopInput.QNAME);
private SchemaResourceManager resourceManager;
+ private NetconfTopologySchemaAssembler schemaAssembler;
@Before
public void setUp() throws Exception {
deleteCacheDir();
+ schemaAssembler = new NetconfTopologySchemaAssembler(1, 1, 0, TimeUnit.SECONDS);
+
resourceManager = new DefaultSchemaResourceManager(new DefaultYangParserFactory(), TEST_ROOT_DIRECTORY,
TEST_DEFAULT_SUBDIR);
}
};
- builderFactory = new DefaultNetconfClientConfigurationBuilderFactory(mockEncryptionService, credentialProvider,
+ builderFactory = new NetconfClientConfigurationBuilderFactoryImpl(mockEncryptionService, credentialProvider,
sslHandlerFactoryProvider);
doReturn(mockRpcReg).when(mockRpcProviderService).registerRpcImplementations(any());
setupSlave();
yangNodeInstanceId = bindingToNormalized.toYangInstanceIdentifier(NODE_INSTANCE_ID);
- doReturn(mock(Future.class)).when(mockClientDispatcher).createClient(any());
+ doReturn(mock(ListenableFuture.class)).when(mockClientFactory).createClient(any());
LOG.info("****** Setup complete");
}
deleteCacheDir();
TestKit.shutdownActorSystem(slaveSystem, true);
TestKit.shutdownActorSystem(masterSystem, true);
+ schemaAssembler.close();
}
private void setupMaster() throws Exception {
YangTextSchemaSource.class, 1));
masterNetconfTopologyManager = new NetconfTopologyManager(BASE_SCHEMAS, masterDataBroker,
- masterClusterSingletonServiceProvider, mockKeepaliveExecutor, MoreExecutors.directExecutor(),
- masterSystem, eventExecutor, mockClientDispatcher, masterMountPointService,
- mockEncryptionService, mockRpcProviderService, deviceActionFactory, resourceManager, builderFactory,
- TOPOLOGY_ID, Uint16.ZERO) {
+ masterClusterSingletonServiceProvider, mockTimer, schemaAssembler, masterSystem,
+ mockClientFactory, masterMountPointService, mockEncryptionService, mockRpcProviderService,
+ deviceActionFactory, resourceManager, builderFactory, TOPOLOGY_ID, Uint16.ZERO) {
@Override
protected NetconfTopologyContext newNetconfTopologyContext(final NetconfTopologySetup setup,
final ServiceGroupIdentifier serviceGroupIdent, final Timeout actorResponseWaitTime,
.registerClusterSingletonService(any());
slaveNetconfTopologyManager = new NetconfTopologyManager(BASE_SCHEMAS, slaveDataBroker,
- mockSlaveClusterSingletonServiceProvider, mockKeepaliveExecutor, MoreExecutors.directExecutor(),
- slaveSystem, eventExecutor, mockClientDispatcher, slaveMountPointService,
- mockEncryptionService, mockRpcProviderService, deviceActionFactory, resourceManager, builderFactory,
- TOPOLOGY_ID, Uint16.ZERO) {
+ mockSlaveClusterSingletonServiceProvider, mockTimer, schemaAssembler, slaveSystem,
+ mockClientFactory, slaveMountPointService, mockEncryptionService, mockRpcProviderService,
+ deviceActionFactory, resourceManager, builderFactory, TOPOLOGY_ID, Uint16.ZERO) {
@Override
protected NetconfTopologyContext newNetconfTopologyContext(final NetconfTopologySetup setup,
final ServiceGroupIdentifier serviceGroupIdent, final Timeout actorResponseWaitTime,
slaveTxChain = slaveDataBroker.createTransactionChain(new TransactionChainListener() {
@Override
public void onTransactionChainSuccessful(final TransactionChain chain) {
+ // No-op
}
@Override