Search in sources :

Example 1 with BasicCapability

use of org.opendaylight.netconf.api.capability.BasicCapability in project netconf by opendaylight.

the class NetconfCapabilityMonitoringServiceTest method setUp.

@Before
public void setUp() throws Exception {
    doReturn(XMLNamespace.of(TEST_MODULE_NAMESPACE.getValue())).when(moduleMock).getNamespace();
    doReturn(TEST_MODULE_NAME).when(moduleMock).getName();
    doReturn(Optional.of(TEST_MODULE_DATE)).when(moduleMock).getRevision();
    moduleCapability1 = new YangModuleCapability(moduleMock, TEST_MODULE_CONTENT);
    capabilities.add(moduleCapability1);
    doReturn(XMLNamespace.of(TEST_MODULE_NAMESPACE.getValue())).when(moduleMock2).getNamespace();
    doReturn(TEST_MODULE_NAME).when(moduleMock2).getName();
    doReturn(Optional.of(TEST_MODULE_DATE2)).when(moduleMock2).getRevision();
    moduleCapability2 = new YangModuleCapability(moduleMock2, TEST_MODULE_CONTENT2);
    capabilities.add(new BasicCapability("urn:ietf:params:netconf:base:1.0"));
    capabilities.add(new BasicCapability("urn:ietf:params:netconf:base:1.1"));
    capabilities.add(new BasicCapability("urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&" + "revision=2010-09-24"));
    doReturn(capabilities).when(operationServiceFactoryMock).getCapabilities();
    doReturn(null).when(operationServiceFactoryMock).registerCapabilityListener(any(NetconfCapabilityMonitoringService.class));
    doNothing().when(listener).onCapabilitiesChanged(any());
    doNothing().when(listener).onSchemasChanged(any());
    doNothing().when(notificationPublisher).onCapabilityChanged(any());
    monitoringService = new NetconfCapabilityMonitoringService(operationServiceFactoryMock);
    monitoringService.onCapabilitiesChanged(capabilities, Set.of());
    monitoringService.setNotificationPublisher(notificationPublisher);
    monitoringService.registerListener(listener);
    capabilitiesSize = monitoringService.getCapabilities().getCapability().size();
}
Also used : BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) YangModuleCapability(org.opendaylight.netconf.api.capability.YangModuleCapability) Before(org.junit.Before)

Example 2 with BasicCapability

use of org.opendaylight.netconf.api.capability.BasicCapability in project netconf by opendaylight.

the class NetconfCapabilityMonitoringServiceTest method testOnCapabilitiesChanged.

@Test
public void testOnCapabilitiesChanged() throws Exception {
    final String capUri = "test";
    final Uri uri = new Uri(capUri);
    final HashSet<Capability> testCaps = new HashSet<>();
    testCaps.add(new BasicCapability(capUri));
    final ArgumentCaptor<NetconfCapabilityChange> capabilityChangeCaptor = ArgumentCaptor.forClass(NetconfCapabilityChange.class);
    final ArgumentCaptor<Capabilities> monitoringListenerCaptor = ArgumentCaptor.forClass(Capabilities.class);
    // add capability
    monitoringService.onCapabilitiesChanged(testCaps, Set.of());
    // remove capability
    monitoringService.onCapabilitiesChanged(Set.of(), testCaps);
    verify(listener, times(3)).onCapabilitiesChanged(monitoringListenerCaptor.capture());
    verify(notificationPublisher, times(2)).onCapabilityChanged(capabilityChangeCaptor.capture());
    // verify listener calls
    final List<Capabilities> listenerValues = monitoringListenerCaptor.getAllValues();
    final List<Uri> afterRegisterState = listenerValues.get(0).getCapability();
    final List<Uri> afterAddState = listenerValues.get(1).getCapability();
    final List<Uri> afterRemoveState = listenerValues.get(2).getCapability();
    assertEquals(capabilitiesSize, afterRegisterState.size());
    assertEquals(capabilitiesSize + 1, afterAddState.size());
    assertEquals(capabilitiesSize, afterRemoveState.size());
    assertFalse(afterRegisterState.contains(uri));
    assertTrue(afterAddState.contains(uri));
    assertFalse(afterRemoveState.contains(uri));
    // verify notification publication
    final List<NetconfCapabilityChange> publisherValues = capabilityChangeCaptor.getAllValues();
    final NetconfCapabilityChange afterAdd = publisherValues.get(0);
    final NetconfCapabilityChange afterRemove = publisherValues.get(1);
    assertEquals(Set.of(uri), Set.copyOf(afterAdd.getAddedCapability()));
    assertEquals(List.of(), afterAdd.getDeletedCapability());
    assertEquals(Set.of(uri), Set.copyOf(afterRemove.getDeletedCapability()));
    assertEquals(List.of(), afterRemove.getAddedCapability());
}
Also used : Capability(org.opendaylight.netconf.api.capability.Capability) BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) YangModuleCapability(org.opendaylight.netconf.api.capability.YangModuleCapability) BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) Uri(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri) Capabilities(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Capabilities) NetconfCapabilityChange(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChange) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 3 with BasicCapability

use of org.opendaylight.netconf.api.capability.BasicCapability in project netconf by opendaylight.

the class NetconfDeviceSimulator method createDispatcher.

private NetconfServerDispatcherImpl createDispatcher(final Set<Capability> capabilities, final SchemaSourceProvider<YangTextSchemaSource> sourceProvider) {
    final Set<Capability> transformedCapabilities = new HashSet<>(Collections2.transform(capabilities, input -> {
        if (sendFakeSchema) {
            sendFakeSchema = false;
            return new FakeCapability((YangModuleCapability) input);
        } else {
            return input;
        }
    }));
    transformedCapabilities.add(new BasicCapability("urn:ietf:params:netconf:capability:candidate:1.0"));
    final NetconfMonitoringService monitoringService1 = new DummyMonitoringService(transformedCapabilities);
    final SessionIdProvider idProvider = new SessionIdProvider();
    final NetconfOperationServiceFactory aggregatedNetconfOperationServiceFactory = createOperationServiceFactory(sourceProvider, transformedCapabilities, monitoringService1, idProvider);
    final Set<String> serverCapabilities = configuration.getCapabilities();
    final NetconfServerSessionNegotiatorFactory serverNegotiatorFactory = new TesttoolNegotiationFactory(hashedWheelTimer, aggregatedNetconfOperationServiceFactory, idProvider, configuration.getGenerateConfigsTimeout(), monitoringService1, serverCapabilities);
    final ServerChannelInitializer serverChannelInitializer = new ServerChannelInitializer(serverNegotiatorFactory);
    return new NetconfServerDispatcherImpl(serverChannelInitializer, nettyThreadgroup, nettyThreadgroup);
}
Also used : Configuration(org.opendaylight.netconf.test.tool.config.Configuration) SettableOperationProvider(org.opendaylight.netconf.test.tool.customrpc.SettableOperationProvider) KeyPairProvider(org.opendaylight.netconf.shaded.sshd.common.keyprovider.KeyPairProvider) NetconfMonitoringOperationService(org.opendaylight.netconf.test.tool.monitoring.NetconfMonitoringOperationService) LoggerFactory(org.slf4j.LoggerFactory) Collections2(com.google.common.collect.Collections2) ThreadUtils(org.opendaylight.netconf.shaded.sshd.common.util.threads.ThreadUtils) SshProxyServerConfiguration(org.opendaylight.netconf.ssh.SshProxyServerConfiguration) LocalAddress(io.netty.channel.local.LocalAddress) ServerChannelInitializer(org.opendaylight.netconf.impl.ServerChannelInitializer) NetconfMonitoringService(org.opendaylight.netconf.api.monitoring.NetconfMonitoringService) SchemaSourceCache(org.opendaylight.netconf.test.tool.schemacache.SchemaSourceCache) Capability(org.opendaylight.netconf.api.capability.Capability) Module(org.opendaylight.yangtools.yang.model.api.Module) Set(java.util.Set) NetconfServerDispatcherImpl(org.opendaylight.netconf.impl.NetconfServerDispatcherImpl) DefaultOperationsCreator(org.opendaylight.netconf.test.tool.operations.DefaultOperationsCreator) YangModuleCapability(org.opendaylight.netconf.api.capability.YangModuleCapability) InetSocketAddress(java.net.InetSocketAddress) ModuleLike(org.opendaylight.yangtools.yang.model.api.ModuleLike) NioEventLoopGroup(io.netty.channel.nio.NioEventLoopGroup) Executors(java.util.concurrent.Executors) SchemaSourceRepresentation(org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation) List(java.util.List) SshProxyServerConfigurationBuilder(org.opendaylight.netconf.ssh.SshProxyServerConfigurationBuilder) Revision(org.opendaylight.yangtools.yang.common.Revision) PotentialSchemaSource(org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource) HashedWheelTimer(io.netty.util.HashedWheelTimer) AsynchronousChannelGroup(java.nio.channels.AsynchronousChannelGroup) Optional(java.util.Optional) NetconfMonitoringOperationServiceFactory(org.opendaylight.netconf.test.tool.monitoring.NetconfMonitoringOperationServiceFactory) SshProxyServer(org.opendaylight.netconf.ssh.SshProxyServer) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings) ThreadFactoryBuilder(com.google.common.util.concurrent.ThreadFactoryBuilder) YangTextSchemaSource(org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource) OperationsProvider(org.opendaylight.netconf.test.tool.operations.OperationsProvider) SettableOperationRpcProvider(org.opendaylight.netconf.test.tool.rpchandler.SettableOperationRpcProvider) Submodule(org.opendaylight.yangtools.yang.model.api.Submodule) SharedSchemaRepository(org.opendaylight.yangtools.yang.parser.repo.SharedSchemaRepository) BindException(java.net.BindException) NetconfServerSessionNegotiatorFactory(org.opendaylight.netconf.impl.NetconfServerSessionNegotiatorFactory) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) SessionIdProvider(org.opendaylight.netconf.impl.SessionIdProvider) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ExecutorService(java.util.concurrent.ExecutorService) SchemaSourceProvider(org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider) AggregatedNetconfOperationServiceFactory(org.opendaylight.netconf.impl.osgi.AggregatedNetconfOperationServiceFactory) Logger(org.slf4j.Logger) SourceIdentifier(org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier) TextToIRTransformer(org.opendaylight.yangtools.yang.parser.rfc7950.repo.TextToIRTransformer) IOException(java.io.IOException) EffectiveModelContext(org.opendaylight.yangtools.yang.model.api.EffectiveModelContext) BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) Inet4Address(java.net.Inet4Address) UnknownHostException(java.net.UnknownHostException) ChannelFuture(io.netty.channel.ChannelFuture) Channel(io.netty.channel.Channel) ExecutionException(java.util.concurrent.ExecutionException) Futures(com.google.common.util.concurrent.Futures) RevisionSourceIdentifier(org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier) Closeable(java.io.Closeable) NetconfOperationServiceFactory(org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory) FilesystemSchemaSourceCache(org.opendaylight.yangtools.yang.model.repo.fs.FilesystemSchemaSourceCache) SchemaSourceListener(org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceListener) Capability(org.opendaylight.netconf.api.capability.Capability) YangModuleCapability(org.opendaylight.netconf.api.capability.YangModuleCapability) BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) SessionIdProvider(org.opendaylight.netconf.impl.SessionIdProvider) BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) YangModuleCapability(org.opendaylight.netconf.api.capability.YangModuleCapability) NetconfServerDispatcherImpl(org.opendaylight.netconf.impl.NetconfServerDispatcherImpl) AggregatedNetconfOperationServiceFactory(org.opendaylight.netconf.impl.osgi.AggregatedNetconfOperationServiceFactory) NetconfOperationServiceFactory(org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory) NetconfMonitoringService(org.opendaylight.netconf.api.monitoring.NetconfMonitoringService) NetconfServerSessionNegotiatorFactory(org.opendaylight.netconf.impl.NetconfServerSessionNegotiatorFactory) ServerChannelInitializer(org.opendaylight.netconf.impl.ServerChannelInitializer) HashSet(java.util.HashSet)

Example 4 with BasicCapability

use of org.opendaylight.netconf.api.capability.BasicCapability in project netconf by opendaylight.

the class AggregatedNetconfOperationServiceFactoryTest method setUp.

@Before
public void setUp() throws Exception {
    factory1Caps.add(new BasicCapability("AAA"));
    factory1Caps.add(new BasicCapability("BBB"));
    factory2Caps.add(new BasicCapability("CCC"));
    factory2Caps.add(new BasicCapability("DDD"));
    aggregatedFactory = new AggregatedNetconfOperationServiceFactory();
    aggregatedFactory.registerCapabilityListener(listener1);
    aggregatedFactory.registerCapabilityListener(listener2);
    doReturn(autoCloseable1).when(factory1).registerCapabilityListener(listener1);
    doReturn(autoCloseable2).when(factory1).registerCapabilityListener(listener2);
    doReturn(factory1Caps).when(factory1).getCapabilities();
    doReturn(autoCloseable1).when(factory2).registerCapabilityListener(listener1);
    doReturn(autoCloseable2).when(factory2).registerCapabilityListener(listener2);
    doReturn(factory2Caps).when(factory2).getCapabilities();
    doNothing().when(autoCloseable1).close();
    doNothing().when(autoCloseable2).close();
    doReturn(autoCloseable3).when(factory1).registerCapabilityListener(listener3);
    doReturn(autoCloseable3).when(factory2).registerCapabilityListener(listener3);
}
Also used : BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) Before(org.junit.Before)

Example 5 with BasicCapability

use of org.opendaylight.netconf.api.capability.BasicCapability in project netconf by opendaylight.

the class NetconfCapabilityMonitoringServiceTest method testListeners.

@Test
public void testListeners() throws Exception {
    HashSet<Capability> added = new HashSet<>();
    added.add(new BasicCapability("toAdd"));
    monitoringService.onCapabilitiesChanged(added, Set.of());
    // onCapabilitiesChanged and onSchemasChanged are invoked also after listener registration
    verify(listener, times(2)).onCapabilitiesChanged(any());
    verify(listener, times(2)).onSchemasChanged(any());
}
Also used : Capability(org.opendaylight.netconf.api.capability.Capability) BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) YangModuleCapability(org.opendaylight.netconf.api.capability.YangModuleCapability) BasicCapability(org.opendaylight.netconf.api.capability.BasicCapability) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

BasicCapability (org.opendaylight.netconf.api.capability.BasicCapability)6 HashSet (java.util.HashSet)4 Capability (org.opendaylight.netconf.api.capability.Capability)4 YangModuleCapability (org.opendaylight.netconf.api.capability.YangModuleCapability)4 Test (org.junit.Test)3 Before (org.junit.Before)2 Collections2 (com.google.common.collect.Collections2)1 Futures (com.google.common.util.concurrent.Futures)1 ThreadFactoryBuilder (com.google.common.util.concurrent.ThreadFactoryBuilder)1 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)1 Channel (io.netty.channel.Channel)1 ChannelFuture (io.netty.channel.ChannelFuture)1 LocalAddress (io.netty.channel.local.LocalAddress)1 NioEventLoopGroup (io.netty.channel.nio.NioEventLoopGroup)1 HashedWheelTimer (io.netty.util.HashedWheelTimer)1 Closeable (java.io.Closeable)1 IOException (java.io.IOException)1 BindException (java.net.BindException)1 Inet4Address (java.net.Inet4Address)1 InetSocketAddress (java.net.InetSocketAddress)1