Use Object.requireNonNull
[netconf.git] / netconf / netconf-impl / src / test / java / org / opendaylight / netconf / impl / ConcurrentClientsTest.java
index c9088104e26e44b410ea20018c0591193e8fe98c..1a4e4c319eb047fbaf4b79bfb9fa9bf89d323de6 100644 (file)
@@ -5,19 +5,16 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.netconf.impl;
 
-import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
+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 com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import com.google.common.io.ByteStreams;
 import io.netty.channel.ChannelFuture;
@@ -30,6 +27,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.InetSocketAddress;
 import java.net.Socket;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -48,16 +46,16 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
-import org.opendaylight.controller.config.util.capability.Capability;
-import org.opendaylight.controller.config.util.xml.DocumentedException;
-import org.opendaylight.controller.config.util.xml.XmlUtil;
-import org.opendaylight.netconf.api.monitoring.SessionEvent;
-import org.opendaylight.netconf.api.monitoring.SessionListener;
+import org.opendaylight.netconf.api.DocumentedException;
 import org.opendaylight.netconf.api.NetconfMessage;
+import org.opendaylight.netconf.api.capability.Capability;
 import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader;
 import org.opendaylight.netconf.api.monitoring.CapabilityListener;
 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
+import org.opendaylight.netconf.api.monitoring.SessionEvent;
+import org.opendaylight.netconf.api.monitoring.SessionListener;
 import org.opendaylight.netconf.api.xml.XmlNetconfConstants;
+import org.opendaylight.netconf.api.xml.XmlUtil;
 import org.opendaylight.netconf.client.NetconfClientDispatcher;
 import org.opendaylight.netconf.client.NetconfClientDispatcherImpl;
 import org.opendaylight.netconf.client.SimpleNetconfClientSessionListener;
@@ -70,11 +68,10 @@ import org.opendaylight.netconf.mapping.api.NetconfOperation;
 import org.opendaylight.netconf.mapping.api.NetconfOperationChainedExecution;
 import org.opendaylight.netconf.mapping.api.NetconfOperationService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
+import org.opendaylight.netconf.nettyutil.NeverReconnectStrategy;
 import org.opendaylight.netconf.nettyutil.handler.exi.NetconfStartExiMessage;
 import org.opendaylight.netconf.util.messages.NetconfMessageUtil;
 import org.opendaylight.netconf.util.test.XmlFileLoader;
-import org.opendaylight.protocol.framework.NeverReconnectStrategy;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.CapabilitiesBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,13 +84,14 @@ public class ConcurrentClientsTest {
     private static ExecutorService clientExecutor;
 
     private static final int CONCURRENCY = 32;
-    private static final InetSocketAddress netconfAddress = new InetSocketAddress("127.0.0.1", 8303);
+    private static final InetSocketAddress NETCONF_ADDRESS = new InetSocketAddress("127.0.0.1", 8303);
 
-    private int nettyThreads;
-    private Class<? extends Runnable> clientRunnable;
-    private Set<String> serverCaps;
+    private final int nettyThreads;
+    private final Class<? extends Runnable> clientRunnable;
+    private final Set<String> serverCaps;
 
-    public ConcurrentClientsTest(int nettyThreads, Class<? extends Runnable> clientRunnable, Set<String> serverCaps) {
+    public ConcurrentClientsTest(final int nettyThreads, final Class<? extends Runnable> clientRunnable,
+            final Set<String> serverCaps) {
         this.nettyThreads = nettyThreads;
         this.clientRunnable = clientRunnable;
         this.serverCaps = serverCaps;
@@ -101,14 +99,15 @@ public class ConcurrentClientsTest {
 
     @Parameterized.Parameters()
     public static Collection<Object[]> data() {
-        return Arrays.asList(new Object[][]{{4, TestingNetconfClientRunnable.class, NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES},
-                                            {1, TestingNetconfClientRunnable.class, NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES},
-                                            // empty set of capabilities = only base 1.0 netconf capability
-                                            {4, TestingNetconfClientRunnable.class, Collections.emptySet()},
-                                            {4, TestingNetconfClientRunnable.class, getOnlyExiServerCaps()},
-                                            {4, TestingNetconfClientRunnable.class, getOnlyChunkServerCaps()},
-                                            {4, BlockingClientRunnable.class, getOnlyExiServerCaps()},
-                                            {1, BlockingClientRunnable.class, getOnlyExiServerCaps()},
+        return Arrays.asList(new Object[][]{{4, TestingNetconfClientRunnable.class,
+                NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES},
+            {1, TestingNetconfClientRunnable.class, NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES},
+            // empty set of capabilities = only base 1.0 netconf capability
+            {4, TestingNetconfClientRunnable.class, Collections.emptySet()},
+            {4, TestingNetconfClientRunnable.class, getOnlyExiServerCaps()},
+            {4, TestingNetconfClientRunnable.class, getOnlyChunkServerCaps()},
+            {4, BlockingClientRunnable.class, getOnlyExiServerCaps()},
+            {1, BlockingClientRunnable.class, getOnlyExiServerCaps()},
         });
     }
 
@@ -124,26 +123,24 @@ public class ConcurrentClientsTest {
         doNothing().when(sessionListener).onSessionUp(any(NetconfServerSession.class));
         doNothing().when(sessionListener).onSessionDown(any(NetconfServerSession.class));
         doNothing().when(sessionListener).onSessionEvent(any(SessionEvent.class));
-        doReturn(new AutoCloseable() {
-            @Override
-            public void close() throws Exception {
+        doReturn((AutoCloseable) () -> {
 
-            }
         }).when(monitoring).registerCapabilitiesListener(any(NetconfMonitoringService.CapabilitiesListener.class));
         doReturn(sessionListener).when(monitoring).getSessionListener();
-        doReturn(new CapabilitiesBuilder().setCapability(Collections.<Uri>emptyList()).build()).when(monitoring).getCapabilities();
+        doReturn(new CapabilitiesBuilder().setCapability(Collections.emptyList()).build()).when(monitoring)
+                .getCapabilities();
         return monitoring;
     }
 
     @BeforeClass
     public static void setUpClientExecutor() {
         clientExecutor = Executors.newFixedThreadPool(CONCURRENCY, new ThreadFactory() {
-            int i = 1;
+            int index = 1;
 
             @Override
-            public Thread newThread(final Runnable r) {
-                Thread thread = new Thread(r);
-                thread.setName("client-" + i++);
+            public Thread newThread(final Runnable runnable) {
+                Thread thread = new Thread(runnable);
+                thread.setName("client-" + index++);
                 thread.setDaemon(true);
                 return thread;
             }
@@ -159,11 +156,13 @@ public class ConcurrentClientsTest {
         AggregatedNetconfOperationServiceFactory factoriesListener = new AggregatedNetconfOperationServiceFactory();
 
         testingNetconfOperation = new TestingNetconfOperation();
-        factoriesListener.onAddNetconfOperationServiceFactory(new TestingOperationServiceFactory(testingNetconfOperation));
+        factoriesListener.onAddNetconfOperationServiceFactory(
+                new TestingOperationServiceFactory(testingNetconfOperation));
 
         SessionIdProvider idProvider = new SessionIdProvider();
 
-        NetconfServerSessionNegotiatorFactory serverNegotiatorFactory = new NetconfServerSessionNegotiatorFactoryBuilder()
+        NetconfServerSessionNegotiatorFactory serverNegotiatorFactory = new
+                NetconfServerSessionNegotiatorFactoryBuilder()
                 .setTimer(hashedWheelTimer)
                 .setAggregatedOpService(factoriesListener)
                 .setIdProvider(idProvider)
@@ -172,15 +171,17 @@ public class ConcurrentClientsTest {
                 .setBaseCapabilities(serverCaps)
                 .build();
 
-        NetconfServerDispatcherImpl.ServerChannelInitializer serverChannelInitializer = new NetconfServerDispatcherImpl.ServerChannelInitializer(serverNegotiatorFactory);
-        final NetconfServerDispatcherImpl dispatch = new NetconfServerDispatcherImpl(serverChannelInitializer, nettyGroup, nettyGroup);
+        ServerChannelInitializer serverChannelInitializer =
+                new ServerChannelInitializer(serverNegotiatorFactory);
+        final NetconfServerDispatcherImpl dispatch =
+                new NetconfServerDispatcherImpl(serverChannelInitializer, nettyGroup, nettyGroup);
 
-        ChannelFuture s = dispatch.createServer(netconfAddress);
-        s.await();
+        ChannelFuture server = dispatch.createServer(NETCONF_ADDRESS);
+        server.await();
     }
 
     @After
-    public void tearDown(){
+    public void tearDown() {
         hashedWheelTimer.stop();
         try {
             nettyGroup.shutdownGracefully().get();
@@ -197,7 +198,7 @@ public class ConcurrentClientsTest {
     @Test(timeout = CONCURRENCY * 1000)
     public void testConcurrentClients() throws Exception {
 
-        List<Future<?>> futures = Lists.newArrayListWithCapacity(CONCURRENCY);
+        List<Future<?>> futures = new ArrayList<>(CONCURRENCY);
 
         for (int i = 0; i < CONCURRENCY; i++) {
             futures.add(clientExecutor.submit(getInstanceOfClientRunnable()));
@@ -236,21 +237,23 @@ public class ConcurrentClientsTest {
     }
 
     /**
-     * Responds to all operations except start-exi and counts all requests
+     * Responds to all operations except start-exi and counts all requests.
      */
     private static class TestingNetconfOperation implements NetconfOperation {
 
         private final AtomicLong counter = new AtomicLong();
 
         @Override
-        public HandlingPriority canHandle(Document message) {
-            return XmlUtil.toString(message).contains(NetconfStartExiMessage.START_EXI) ?
-                    HandlingPriority.CANNOT_HANDLE :
+        public HandlingPriority canHandle(final Document message) {
+            return XmlUtil.toString(message).contains(NetconfStartExiMessage.START_EXI)
+                    HandlingPriority.CANNOT_HANDLE :
                     HandlingPriority.HANDLE_WITH_MAX_PRIORITY;
         }
 
+        @SuppressWarnings("checkstyle:IllegalCatch")
         @Override
-        public Document handle(Document requestMessage, NetconfOperationChainedExecution subsequentOperation) throws DocumentedException {
+        public Document handle(final Document requestMessage,
+                final NetconfOperationChainedExecution subsequentOperation) throws DocumentedException {
             try {
                 LOG.info("Handling netconf message from test {}", XmlUtil.toString(requestMessage));
                 counter.getAndIncrement();
@@ -266,12 +269,12 @@ public class ConcurrentClientsTest {
     }
 
     /**
-     * Hardcoded operation service factory
+     * Hardcoded operation service factory.
      */
     private static class TestingOperationServiceFactory implements NetconfOperationServiceFactory {
         private final NetconfOperation[] operations;
 
-        public TestingOperationServiceFactory(final NetconfOperation... operations) {
+        TestingOperationServiceFactory(final NetconfOperation... operations) {
             this.operations = operations;
         }
 
@@ -282,14 +285,12 @@ public class ConcurrentClientsTest {
 
         @Override
         public AutoCloseable registerCapabilityListener(final CapabilityListener listener) {
-            return new AutoCloseable(){
-                @Override
-                public void close() throws Exception {}
+            return () -> {
             };
         }
 
         @Override
-        public NetconfOperationService createService(String netconfSessionIdForReporting) {
+        public NetconfOperationService createService(final String netconfSessionIdForReporting) {
             return new NetconfOperationService() {
 
                 @Override
@@ -298,14 +299,16 @@ public class ConcurrentClientsTest {
                 }
 
                 @Override
-                public void close() {}
+                public void close() {
+                }
             };
         }
     }
 
     /**
-     * Pure socket based blocking client
+     * Pure socket based blocking client.
      */
+    @SuppressWarnings("checkstyle:IllegalCatch")
     public final class BlockingClientRunnable implements Runnable {
 
         @Override
@@ -318,16 +321,17 @@ public class ConcurrentClientsTest {
         }
 
         private void run2() throws Exception {
-            InputStream clientHello = checkNotNull(XmlFileLoader
-                    .getResourceAsStream("netconfMessages/client_hello.xml"));
-            InputStream getConfig = checkNotNull(XmlFileLoader.getResourceAsStream("netconfMessages/getConfig.xml"));
+            InputStream clientHello = requireNonNull(XmlFileLoader.getResourceAsStream(
+                "netconfMessages/client_hello.xml"));
+            final InputStream getConfig = requireNonNull(XmlFileLoader.getResourceAsStream(
+                "netconfMessages/getConfig.xml"));
 
-            Socket clientSocket = new Socket(netconfAddress.getHostString(), netconfAddress.getPort());
+            Socket clientSocket = new Socket(NETCONF_ADDRESS.getHostString(), NETCONF_ADDRESS.getPort());
             DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
             InputStreamReader inFromServer = new InputStreamReader(clientSocket.getInputStream());
 
-            StringBuffer sb = new StringBuffer();
-            while (sb.toString().endsWith("]]>]]>") == false) {
+            StringBuilder sb = new StringBuilder();
+            while (!sb.toString().endsWith("]]>]]>")) {
                 sb.append((char) inFromServer.read());
             }
             LOG.info(sb.toString());
@@ -340,8 +344,8 @@ public class ConcurrentClientsTest {
             outToServer.write("]]>]]>".getBytes());
             outToServer.flush();
             Thread.sleep(100);
-            sb = new StringBuffer();
-            while (sb.toString().endsWith("]]>]]>") == false) {
+            sb = new StringBuilder();
+            while (!sb.toString().endsWith("]]>]]>")) {
                 sb.append((char) inFromServer.read());
             }
             LOG.info(sb.toString());
@@ -350,15 +354,17 @@ public class ConcurrentClientsTest {
     }
 
     /**
-     * TestingNetconfClient based runnable
+     * TestingNetconfClient based runnable.
      */
     public final class TestingNetconfClientRunnable implements Runnable {
 
+        @SuppressWarnings("checkstyle:IllegalCatch")
         @Override
         public void run() {
             try {
                 final TestingNetconfClient netconfClient =
-                        new TestingNetconfClient(Thread.currentThread().getName(), netconfClientDispatcher, getClientConfig());
+                        new TestingNetconfClient(Thread.currentThread().getName(), netconfClientDispatcher,
+                                getClientConfig());
                 long sessionId = netconfClient.getSessionId();
                 LOG.info("Client with session id {}: hello exchanged", sessionId);
 
@@ -367,7 +373,7 @@ public class ConcurrentClientsTest {
                 NetconfMessage result = netconfClient.sendRequest(getMessage).get();
                 LOG.info("Client with session id {}: got result {}", sessionId, result);
 
-                Preconditions.checkState(NetconfMessageUtil.isErrorMessage(result) == false,
+                checkState(NetconfMessageUtil.isErrorMessage(result) == false,
                         "Received error response: " + XmlUtil.toString(result.getDocument()) + " to request: "
                                 + XmlUtil.toString(getMessage.getDocument()));
 
@@ -380,7 +386,7 @@ public class ConcurrentClientsTest {
 
         private NetconfClientConfiguration getClientConfig() {
             final NetconfClientConfigurationBuilder b = NetconfClientConfigurationBuilder.create();
-            b.withAddress(netconfAddress);
+            b.withAddress(NETCONF_ADDRESS);
             b.withAdditionalHeader(new NetconfHelloMessageAdditionalHeader("uname", "10.10.10.1", "830", "tcp",
                     "client"));
             b.withSessionListener(new SimpleNetconfClientSessionListener());