You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by bo...@apache.org on 2017/07/24 17:10:05 UTC

[12/19] storm git commit: STORM-1280 port backtype.storm.daemon.logviewer to java

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/main/java/org/apache/storm/daemon/utils/ListFunctionalSupport.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/utils/ListFunctionalSupport.java b/storm-webapp/src/main/java/org/apache/storm/daemon/utils/ListFunctionalSupport.java
index 83b3588..700fbb7 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/utils/ListFunctionalSupport.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/utils/ListFunctionalSupport.java
@@ -21,7 +21,17 @@ package org.apache.storm.daemon.utils;
 import java.util.List;
 import java.util.stream.Collectors;
 
+/**
+ * Implements missing sequence functions in Java compared to Clojure.
+ * To make thing simpler, it only supports List type.
+ */
 public class ListFunctionalSupport {
+    /**
+     * Get the first element in list.
+     *
+     * @param list list to get
+     * @return the first element. null if list is null or empty.
+     */
     public static <T> T first(List<T> list) {
         if (list == null || list.size() <= 0) {
             return null;
@@ -30,6 +40,28 @@ public class ListFunctionalSupport {
         return list.get(0);
     }
 
+    /**
+     * get the last element in list.
+     *
+     * @param list list to get
+     * @return the last element. null if list is null or empty.
+     */
+    public static <T> T last(List<T> list) {
+        if (list == null || list.size() <= 0) {
+            return null;
+        }
+
+        return list.get(list.size() - 1);
+    }
+
+    /**
+     * Get the last N elements as a new list.
+     *
+     * @param list list to get
+     * @param count element count to get
+     * @return the first element. null if list is null.
+     *         elements in a new list may be less than count if there're not enough elements in the list.
+     */
     public static <T> List<T> takeLast(List<T> list, int count) {
         if (list == null) {
             return null;
@@ -45,6 +77,13 @@ public class ListFunctionalSupport {
         }
     }
 
+    /**
+     * Drop the first N elements and create a new list.
+     *
+     * @param list the list
+     * @param count element count to drop
+     * @return newly created sublist that drops the first N elements from origin list. null if list is null.
+     */
     public static <T> List<T> drop(List<T> list, int count) {
         if (list == null) {
             return null;
@@ -55,15 +94,15 @@ public class ListFunctionalSupport {
                 .collect(Collectors.toList());
     }
 
+    /**
+     * Drop the only first element and create a new list. equivalent to drop(list, 1).
+     *
+     * @see {@link ListFunctionalSupport#drop(List, int)}
+     * @param list the list
+     * @return newly created sublist that drops the first element from origin list. null if list is null.
+     */
     public static <T> List<T> rest(List<T> list) {
         return drop(list, 1);
     }
 
-    public static <T> T last(List<T> list) {
-        if (list == null || list.size() <= 0) {
-            return null;
-        }
-
-        return list.get(list.size() - 1);
-    }
 }

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/main/java/org/apache/storm/daemon/utils/StreamUtil.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/utils/StreamUtil.java b/storm-webapp/src/main/java/org/apache/storm/daemon/utils/StreamUtil.java
index 24c630d..8e8b5d0 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/utils/StreamUtil.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/utils/StreamUtil.java
@@ -21,12 +21,21 @@ package org.apache.storm.daemon.utils;
 import java.io.IOException;
 import java.io.InputStream;
 
+/**
+ * Utility class for (Input/Output)Stream.
+ */
 public class StreamUtil {
     private StreamUtil() {
     }
 
     /**
+     * Skips over and discards N bytes of data from the input stream.
+     * <p/>
      * FileInputStream#skip may not work the first time, so ensure it successfully skips the given number of bytes.
+     *
+     * @see {@link java.io.FileInputStream#skip(long)}
+     * @param stream the stream to skip
+     * @param n bytes to skip
      */
     public static void skipBytes(InputStream stream, Integer n) throws IOException {
         long skipped = 0;

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/main/java/org/apache/storm/daemon/utils/URLBuilder.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/utils/URLBuilder.java b/storm-webapp/src/main/java/org/apache/storm/daemon/utils/URLBuilder.java
deleted file mode 100644
index d30ac65..0000000
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/utils/URLBuilder.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.storm.daemon.utils;
-
-import java.net.URLEncoder;
-import java.util.Map;
-
-import static java.util.stream.Collectors.joining;
-
-public class URLBuilder {
-    private URLBuilder() {
-    }
-
-    public static String build(String urlPath, Map<String, Object> parameters) {
-        StringBuilder sb = new StringBuilder();
-        sb.append(urlPath);
-        if (parameters.size() > 0) {
-            sb.append("?");
-
-            String queryParam = parameters.entrySet().stream()
-                    .map(entry -> URLEncoder.encode(entry.getKey()) + "=" + URLEncoder.encode(entry.getValue().toString()))
-                    .collect(joining("&"));
-            sb.append(queryParam);
-        }
-        return sb.toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/main/java/org/apache/storm/daemon/utils/UrlBuilder.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/utils/UrlBuilder.java b/storm-webapp/src/main/java/org/apache/storm/daemon/utils/UrlBuilder.java
new file mode 100644
index 0000000..cea6dcc
--- /dev/null
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/utils/UrlBuilder.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.storm.daemon.utils;
+
+import static java.util.stream.Collectors.joining;
+
+import java.net.URLEncoder;
+import java.util.Map;
+
+/**
+ * Convenient utility class to build the URL.
+ */
+public class UrlBuilder {
+    private UrlBuilder() {
+    }
+
+    /**
+     * Build the URL. the key and value of query parameters will be encoded.
+     *
+     * @param urlPath URL except query parameter
+     * @param parameters query parameter
+     * @return the url concatenating url path and query parameters
+     */
+    public static String build(String urlPath, Map<String, Object> parameters) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(urlPath);
+        if (parameters.size() > 0) {
+            sb.append("?");
+
+            String queryParam = parameters.entrySet().stream()
+                    .map(entry -> URLEncoder.encode(entry.getKey()) + "=" + URLEncoder.encode(entry.getValue().toString()))
+                    .collect(joining("&"));
+            sb.append(queryParam);
+        }
+        return sb.toString();
+    }
+}

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/drpc/DRPCServerTest.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/drpc/DRPCServerTest.java b/storm-webapp/src/test/java/org/apache/storm/daemon/drpc/DRPCServerTest.java
index 9ab623f..a8452a9 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/drpc/DRPCServerTest.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/drpc/DRPCServerTest.java
@@ -15,6 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.storm.daemon.drpc;
 
 import static org.junit.Assert.assertEquals;
@@ -90,8 +91,8 @@ public class DRPCServerTest {
         try (DRPCServer server = new DRPCServer(conf)) {
             server.start();
             try (DRPCClient client = new DRPCClient(conf, "localhost", server.getDrpcPort());
-                 DRPCInvocationsClient invoke = new DRPCInvocationsClient(conf, "localhost", server.getDrpcInvokePort())) {
-                Future<String> found = exec.submit(() -> client.getClient().execute("testing", "test"));
+                DRPCInvocationsClient invoke = new DRPCInvocationsClient(conf, "localhost", server.getDrpcInvokePort())) {
+                final Future<String> found = exec.submit(() -> client.getClient().execute("testing", "test"));
                 DRPCRequest request = getNextAvailableRequest(invoke, "testing");
                 assertNotNull(request);
                 assertEquals("test", request.get_func_args());
@@ -129,9 +130,9 @@ public class DRPCServerTest {
         }
     }
     
-    public static String GET(int port, String func, String args) {
+    private static String doGet(int port, String func, String args) {
         try {
-            URL url = new URL("http://localhost:"+port+"/drpc/"+func+"/"+args);
+            URL url = new URL("http://localhost:" + port + "/drpc/" + func + "/" + args);
             InputStream in = url.openStream();
             byte[] buffer = new byte[1024];
             int read = in.read(buffer);
@@ -150,7 +151,7 @@ public class DRPCServerTest {
             //TODO need a better way to do this
             Thread.sleep(2000);
             try (DRPCInvocationsClient invoke = new DRPCInvocationsClient(conf, "localhost", server.getDrpcInvokePort())) {
-                Future<String> found = exec.submit(() -> GET(server.getHttpServerPort(), "testing", "test"));
+                final Future<String> found = exec.submit(() -> doGet(server.getHttpServerPort(), "testing", "test"));
                 DRPCRequest request = getNextAvailableRequest(invoke, "testing");
                 assertNotNull(request);
                 assertEquals("test", request.get_func_args());
@@ -171,7 +172,7 @@ public class DRPCServerTest {
             //TODO need a better way to do this
             Thread.sleep(2000);
             try (DRPCInvocationsClient invoke = new DRPCInvocationsClient(conf, "localhost", server.getDrpcInvokePort())) {
-                Future<String> found = exec.submit(() -> GET(server.getHttpServerPort(), "testing", "test"));
+                Future<String> found = exec.submit(() -> doGet(server.getHttpServerPort(), "testing", "test"));
                 DRPCRequest request = getNextAvailableRequest(invoke, "testing");
                 assertNotNull(request);
                 assertEquals("test", request.get_func_args());

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/LogviewerTest.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/LogviewerTest.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/LogviewerTest.java
deleted file mode 100644
index 6abe153..0000000
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/LogviewerTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.storm.daemon.logviewer;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Path;
-import java.util.Iterator;
-import java.util.List;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class LogviewerTest {
-    private Path mkMockPath(File file) {
-        Path mockPath = mock(Path.class);
-        when(mockPath.toFile()).thenReturn(file);
-        return mockPath;
-    }
-
-    private DirectoryStream<Path> mkDirectoryStream(List<Path> listOfPaths) {
-        return new DirectoryStream<Path>() {
-            @Override
-            public Iterator<Path> iterator() {
-                return listOfPaths.iterator();
-            }
-
-            @Override
-            public void close() throws IOException {
-            }
-        };
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandlerTest.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandlerTest.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandlerTest.java
index 2c05972..58daa30 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandlerTest.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogPageHandlerTest.java
@@ -18,15 +18,11 @@
 
 package org.apache.storm.daemon.logviewer.handler;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.storm.daemon.logviewer.utils.LogviewerResponseBuilder;
-import org.apache.storm.daemon.logviewer.utils.ResourceAuthorizer;
-import org.apache.storm.daemon.logviewer.utils.WorkerLogs;
-import org.apache.storm.utils.Utils;
-import org.assertj.core.util.Lists;
-import org.junit.Test;
 
-import javax.ws.rs.core.Response;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -34,8 +30,14 @@ import java.nio.file.attribute.FileAttribute;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import javax.ws.rs.core.Response;
+
+import org.apache.storm.daemon.logviewer.utils.LogviewerResponseBuilder;
+import org.apache.storm.daemon.logviewer.utils.ResourceAuthorizer;
+import org.apache.storm.daemon.logviewer.utils.WorkerLogs;
+import org.apache.storm.utils.Utils;
+import org.assertj.core.util.Lists;
+import org.junit.Test;
 
 public class LogviewerLogPageHandlerTest {
 
@@ -62,27 +64,27 @@ public class LogviewerLogPageHandlerTest {
         LogviewerLogPageHandler handler = new LogviewerLogPageHandler(rootPath, null,
                 new WorkerLogs(stormConf, new File(rootPath)), new ResourceAuthorizer(stormConf));
 
-        Response expectedAll = LogviewerResponseBuilder.buildSuccessJsonResponse(
+        final Response expectedAll = LogviewerResponseBuilder.buildSuccessJsonResponse(
                 Lists.newArrayList("topoA/port1/worker.log", "topoA/port2/worker.log", "topoB/port1/worker.log"),
                 null,
                 origin
         );
 
-        Response expectedFilterPort = LogviewerResponseBuilder.buildSuccessJsonResponse(
+        final Response expectedFilterPort = LogviewerResponseBuilder.buildSuccessJsonResponse(
                 Lists.newArrayList("topoA/port1/worker.log", "topoB/port1/worker.log"),
                 null,
                 origin
         );
 
-        Response expectedFilterTopoId = LogviewerResponseBuilder.buildSuccessJsonResponse(
+        final Response expectedFilterTopoId = LogviewerResponseBuilder.buildSuccessJsonResponse(
                 Lists.newArrayList("topoB/port1/worker.log"),
                 null,
                 origin
         );
 
-        Response returnedAll = handler.listLogFiles("user", null, null, null, origin);
-        Response returnedFilterPort = handler.listLogFiles("user", 1111, null, null, origin);
-        Response returnedFilterTopoId = handler.listLogFiles("user", null, "topoB", null, origin);
+        final Response returnedAll = handler.listLogFiles("user", null, null, null, origin);
+        final Response returnedFilterPort = handler.listLogFiles("user", 1111, null, null, origin);
+        final Response returnedFilterTopoId = handler.listLogFiles("user", null, "topoB", null, origin);
 
         Utils.forceDelete(rootPath);
 

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandlerTest.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandlerTest.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandlerTest.java
index 9e36b5a..c7f927b 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandlerTest.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/handler/LogviewerLogSearchHandlerTest.java
@@ -18,6 +18,33 @@
 
 package org.apache.storm.daemon.logviewer.handler;
 
+import static java.util.stream.Collectors.joining;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyListOf;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.internal.verification.VerificationModeFactory.times;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.nio.file.Files;
+import java.nio.file.attribute.FileAttribute;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.storm.DaemonConfig;
 import org.apache.storm.daemon.logviewer.LogviewerConstant;
@@ -34,33 +61,6 @@ import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 
-import java.io.File;
-import java.io.IOException;
-import java.net.UnknownHostException;
-import java.nio.file.Files;
-import java.nio.file.attribute.FileAttribute;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-
-import static java.util.stream.Collectors.joining;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyListOf;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.mockito.internal.verification.VerificationModeFactory.times;
-
 @RunWith(Enclosed.class)
 public class LogviewerLogSearchHandlerTest {
 
@@ -98,8 +98,8 @@ public class LogviewerLogSearchHandlerTest {
 
                 String actualUrl = handler.urlToMatchCenteredInLogPage(new byte[42], expectedFname, 27526, 8888);
 
-                assertEquals("http://" + expectedHost + ":" + expectedPort + "/api/v1/log?file=" + expectedFname +
-                        "&start=1947&length=" + LogviewerConstant.DEFAULT_BYTES_PER_PAGE, actualUrl);
+                assertEquals("http://" + expectedHost + ":" + expectedPort + "/api/v1/log?file=" + expectedFname
+                        + "&start=1947&length=" + LogviewerConstant.DEFAULT_BYTES_PER_PAGE, actualUrl);
             } finally {
                 Utils.setInstance(prevUtils);
             }
@@ -119,13 +119,14 @@ public class LogviewerLogSearchHandlerTest {
 
                 String actualUrl = handler.urlToMatchCenteredInLogPageDaemonFile(new byte[42], expectedFname, 27526, 8888);
 
-                assertEquals("http://" + expectedHost + ":" + expectedPort + "/api/v1/daemonlog?file=" + expectedFname +
-                        "&start=1947&length=" + LogviewerConstant.DEFAULT_BYTES_PER_PAGE, actualUrl);
+                assertEquals("http://" + expectedHost + ":" + expectedPort + "/api/v1/daemonlog?file=" + expectedFname
+                        + "&start=1947&length=" + LogviewerConstant.DEFAULT_BYTES_PER_PAGE, actualUrl);
             } finally {
                 Utils.setInstance(prevUtils);
             }
         }
 
+        @SuppressWarnings("checkstyle:LineLength")
         @Test
         public void testReturnsCorrectBeforeAndAfterContext() throws InvalidRequestException, UnknownHostException {
             Utils prevUtils = null;
@@ -135,12 +136,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 when(mockedUtil.hostname()).thenReturn(expectedHost);
 
-                File file = new File(String.join(File.separator, "src", "test", "resources"),
+                final File file = new File(String.join(File.separator, "src", "test", "resources"),
                     "logviewer-search-context-tests.log.test");
 
-                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
-                Map<String, Object> searchResult = handler.substringSearch(file, pattern);
-
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "no");
                 expected.put("searchString", pattern);
@@ -176,6 +174,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", matches);
 
+                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
+                Map<String, Object> searchResult = handler.substringSearch(file, pattern);
+
                 assertEquals(expected, searchResult);
             } finally {
                 Utils.setInstance(prevUtils);
@@ -191,12 +192,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 when(mockedUtil.hostname()).thenReturn(expectedHost);
 
-                File file = new File(String.join(File.separator, "src", "test", "resources"),
+                final File file = new File(String.join(File.separator, "src", "test", "resources"),
                         "small-worker.log.test");
 
-                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
-                Map<String, Object> searchResult = handler.substringSearch(file, pattern);
-
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "no");
                 expected.put("searchString", pattern);
@@ -212,6 +210,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", matches);
 
+                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
+                Map<String, Object> searchResult = handler.substringSearch(file, pattern);
+
                 assertEquals(expected, searchResult);
             } finally {
                 Utils.setInstance(prevUtils);
@@ -227,12 +228,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 when(mockedUtil.hostname()).thenReturn(expectedHost);
 
-                File file = new File(String.join(File.separator, "src", "test", "resources"),
+                final File file = new File(String.join(File.separator, "src", "test", "resources"),
                         "small-worker.log.test");
 
-                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
-                Map<String, Object> searchResult = handler.substringSearchDaemonLog(file, pattern);
-
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "yes");
                 expected.put("searchString", pattern);
@@ -248,6 +246,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", matches);
 
+                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
+                Map<String, Object> searchResult = handler.substringSearchDaemonLog(file, pattern);
+
                 assertEquals(expected, searchResult);
             } finally {
                 Utils.setInstance(prevUtils);
@@ -263,13 +264,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 when(mockedUtil.hostname()).thenReturn(expectedHost);
 
-                File file = new File(String.join(File.separator, "src", "test", "resources"),
+                final File file = new File(String.join(File.separator, "src", "test", "resources"),
                         "test-3072.log.test");
 
-                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
-                Map<String, Object> searchResult = handler.substringSearch(file, pattern);
-                Map<String, Object> searchResult2 = handler.substringSearch(file, pattern, 1);
-
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "no");
                 expected.put("searchString", pattern);
@@ -286,6 +283,10 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", matches);
 
+                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
+                Map<String, Object> searchResult = handler.substringSearch(file, pattern);
+                Map<String, Object> searchResult2 = handler.substringSearch(file, pattern, 1);
+
                 assertEquals(expected, searchResult);
                 assertEquals(expected, searchResult2);
             } finally {
@@ -293,6 +294,7 @@ public class LogviewerLogSearchHandlerTest {
             }
         }
 
+        @SuppressWarnings("checkstyle:LineLength")
         @Test
         public void testNextByteOffsetsAreCorrectForEachMatch() throws UnknownHostException, InvalidRequestException {
             Utils prevUtils = null;
@@ -329,8 +331,6 @@ public class LogviewerLogSearchHandlerTest {
                     assertEquals(data.v2().intValue(), ((List) result.get("matches")).size());
                 }));
 
-                Map<String, Object> searchResult = handler.substringSearch(file, pattern, 7);
-
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "no");
                 expected.put("searchString", pattern);
@@ -390,12 +390,15 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", matches);
 
+                Map<String, Object> searchResult = handler.substringSearch(file, pattern, 7);
+
                 assertEquals(expected, searchResult);
             } finally {
                 Utils.setInstance(prevUtils);
             }
         }
 
+        @SuppressWarnings("checkstyle:LineLength")
         @Test
         public void testCorrectMatchOffsetIsReturnedWhenSkippingBytes() throws InvalidRequestException, UnknownHostException {
             Utils prevUtils = null;
@@ -405,13 +408,10 @@ public class LogviewerLogSearchHandlerTest {
 
                 when(mockedUtil.hostname()).thenReturn(expectedHost);
 
-                File file = new File(String.join(File.separator, "src", "test", "resources"),
+                final File file = new File(String.join(File.separator, "src", "test", "resources"),
                         "test-worker.log.test");
 
-                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
-
                 int startByteOffset = 3197;
-                Map<String, Object> searchResult = handler.substringSearch(file, pattern, 1, startByteOffset);
 
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "no");
@@ -430,12 +430,16 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", matches);
 
+                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
+                Map<String, Object> searchResult = handler.substringSearch(file, pattern, 1, startByteOffset);
+
                 assertEquals(expected, searchResult);
             } finally {
                 Utils.setInstance(prevUtils);
             }
         }
 
+        @SuppressWarnings("checkstyle:LineLength")
         @Test
         public void testAnotherPatterns1() throws UnknownHostException, InvalidRequestException {
             Utils prevUtils = null;
@@ -445,13 +449,10 @@ public class LogviewerLogSearchHandlerTest {
 
                 when(mockedUtil.hostname()).thenReturn(expectedHost);
 
-                File file = new File(String.join(File.separator, "src", "test", "resources"),
+                final File file = new File(String.join(File.separator, "src", "test", "resources"),
                         "test-worker.log.test");
 
-                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
-
                 String pattern = Seq.range(0, 1024).map(x -> "X").collect(joining());
-                Map<String, Object> searchResult = handler.substringSearch(file, pattern, 2);
 
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "no");
@@ -477,12 +478,16 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", matches);
 
+                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
+                Map<String, Object> searchResult = handler.substringSearch(file, pattern, 2);
+
                 assertEquals(expected, searchResult);
             } finally {
                 Utils.setInstance(prevUtils);
             }
         }
 
+        @SuppressWarnings("checkstyle:LineLength")
         @Test
         public void testAnotherPatterns2() throws UnknownHostException, InvalidRequestException {
             Utils prevUtils = null;
@@ -492,13 +497,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 when(mockedUtil.hostname()).thenReturn(expectedHost);
 
-                File file = new File(String.join(File.separator, "src", "test", "resources"),
+                final File file = new File(String.join(File.separator, "src", "test", "resources"),
                         "test-worker.log.test");
-
-                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
-
                 String pattern = "𐄀𐄁𐄂";
-                Map<String, Object> searchResult = handler.substringSearch(file, pattern, 1);
 
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "no");
@@ -517,6 +518,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", matches);
 
+                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
+                Map<String, Object> searchResult = handler.substringSearch(file, pattern, 1);
+
                 assertEquals(expected, searchResult);
             } finally {
                 Utils.setInstance(prevUtils);
@@ -534,13 +538,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 when(mockedUtil.hostname()).thenReturn(expectedHost);
 
-                File file = new File(String.join(File.separator, "src", "test", "resources"),
+                final File file = new File(String.join(File.separator, "src", "test", "resources"),
                         "test-worker.log.test");
 
-                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
-
-                Map<String, Object> searchResult = handler.substringSearch(file, pattern);
-
                 Map<String, Object> expected = new HashMap<>();
                 expected.put("isDaemon", "no");
                 expected.put("searchString", pattern);
@@ -548,6 +548,9 @@ public class LogviewerLogSearchHandlerTest {
 
                 expected.put("matches", Collections.emptyList());
 
+                LogviewerLogSearchHandler handler = getSearchHandlerWithPort(expectedPort);
+                Map<String, Object> searchResult = handler.substringSearch(file, pattern);
+
                 assertEquals(expected, searchResult);
             } finally {
                 Utils.setInstance(prevUtils);
@@ -578,11 +581,11 @@ public class LogviewerLogSearchHandlerTest {
             files.add(new File(String.join(File.separator, "src", "test", "resources"),
                     "logviewer-search-context-tests.log.gz"));
 
-            LogviewerLogSearchHandler handler = getSearchHandler();
+            final LogviewerLogSearchHandler handler = getSearchHandler();
 
-            List<Map<String, Object>> matches1 = handler.findNMatches(files, 20, 0, 0, "needle").getMatches();
-            List<Map<String, Object>> matches2 = handler.findNMatches(files, 20, 0, 126, "needle").getMatches();
-            List<Map<String, Object>> matches3 = handler.findNMatches(files, 20, 1, 0, "needle").getMatches();
+            final List<Map<String, Object>> matches1 = handler.findNMatches(files, 20, 0, 0, "needle").getMatches();
+            final List<Map<String, Object>> matches2 = handler.findNMatches(files, 20, 0, 126, "needle").getMatches();
+            final List<Map<String, Object>> matches3 = handler.findNMatches(files, 20, 1, 0, "needle").getMatches();
 
             assertEquals(2, matches1.size());
             assertEquals(4, ((List) matches1.get(0).get("matches")).size());
@@ -603,6 +606,9 @@ public class LogviewerLogSearchHandlerTest {
         private List<File> logFiles;
         private String topoPath;
 
+        /**
+         * Setup test environment for each test.
+         */
         @Before
         public void setUp() throws IOException {
             logFiles = new ArrayList<>();
@@ -619,6 +625,9 @@ public class LogviewerLogSearchHandlerTest {
             new File(topoPath, "6700").createNewFile();
         }
 
+        /**
+         * Clean up test environment.
+         */
         @After
         public void tearDown() {
             if (StringUtils.isNotEmpty(topoPath)) {

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/ArgumentsVerifier.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/ArgumentsVerifier.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/ArgumentsVerifier.java
index e52c9db..7fc0ab6 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/ArgumentsVerifier.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/ArgumentsVerifier.java
@@ -18,13 +18,22 @@
 
 package org.apache.storm.daemon.logviewer.testsupport;
 
-import org.mockito.ArgumentCaptor;
+import static org.junit.Assert.assertEquals;
 
 import java.util.function.Consumer;
+import org.mockito.ArgumentCaptor;
 
-import static org.junit.Assert.assertEquals;
-
+/**
+ * Help verifying captured argument in Mockito.
+ */
 public class ArgumentsVerifier {
+    /**
+     * Asserting that method is called with expected first argument.
+     *
+     * @param verifyConsumer Consumer implementation that takes ArgumentCaptor and call 'Mockito.verify'
+     * @param argClazz Class type for argument
+     * @param expectedArg expected argument
+     */
     public static <T> void verifyFirstCallArgsForSingleArgMethod(Consumer<ArgumentCaptor<T>> verifyConsumer,
                                                                  Class<T> argClazz, T expectedArg) {
         ArgumentCaptor<T> captor = ArgumentCaptor.forClass(argClazz);

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockDirectoryBuilder.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockDirectoryBuilder.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockDirectoryBuilder.java
index 7215456..b8be8ad 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockDirectoryBuilder.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockDirectoryBuilder.java
@@ -18,17 +18,20 @@
 
 package org.apache.storm.daemon.logviewer.testsupport;
 
-import java.io.File;
-import java.io.IOException;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.io.File;
+import java.io.IOException;
+
 public class MockDirectoryBuilder {
     private String dirName;
     private long mtime;
     private File[] files;
 
+    /**
+     * Constructor.
+     */
     public MockDirectoryBuilder() {
         this.dirName = "adir";
         this.mtime = 1;
@@ -50,6 +53,9 @@ public class MockDirectoryBuilder {
         return this;
     }
 
+    /**
+     * Build mocked File object with given (or default) attributes for a directory.
+     */
     public File build() {
         File mockFile = mock(File.class);
         when(mockFile.getName()).thenReturn(dirName);

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockFileBuilder.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockFileBuilder.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockFileBuilder.java
index 385eec4..e6a7c20 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockFileBuilder.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/testsupport/MockFileBuilder.java
@@ -18,17 +18,20 @@
 
 package org.apache.storm.daemon.logviewer.testsupport;
 
-import java.io.File;
-import java.io.IOException;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.io.File;
+import java.io.IOException;
+
 public class MockFileBuilder {
     private String fileName;
     private long mtime;
     private long length;
 
+    /**
+     * Constructor.
+     */
     public MockFileBuilder() {
         this.fileName = "afile";
         this.mtime = 1;
@@ -50,6 +53,9 @@ public class MockFileBuilder {
         return this;
     }
 
+    /**
+     * Build mocked File object with given (or default) attributes for a file.
+     */
     public File build() {
         File mockFile = mock(File.class);
         when(mockFile.getName()).thenReturn(fileName);

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/LogCleanerTest.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/LogCleanerTest.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/LogCleanerTest.java
index 21f4e9e..1031c04 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/LogCleanerTest.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/LogCleanerTest.java
@@ -18,15 +18,22 @@
 
 package org.apache.storm.daemon.logviewer.utils;
 
-import org.apache.storm.daemon.supervisor.SupervisorUtils;
-import org.apache.storm.daemon.logviewer.testsupport.MockDirectoryBuilder;
-import org.apache.storm.daemon.logviewer.testsupport.MockFileBuilder;
-import org.apache.storm.generated.LSWorkerHeartbeat;
-import org.apache.storm.utils.Time;
-import org.apache.storm.utils.Utils;
-import org.jooq.lambda.Seq;
-import org.junit.Test;
-import org.mockito.internal.util.collections.Sets;
+import static java.util.stream.Collectors.toList;
+import static org.apache.storm.Config.SUPERVISOR_WORKER_TIMEOUT_SECS;
+import static org.apache.storm.DaemonConfig.LOGVIEWER_CLEANUP_AGE_MINS;
+import static org.apache.storm.DaemonConfig.LOGVIEWER_CLEANUP_INTERVAL_SECS;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Matchers.anyListOf;
+import static org.mockito.Matchers.anyLong;
+import static org.mockito.Matchers.anyMapOf;
+import static org.mockito.Matchers.anySetOf;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.io.File;
 import java.io.FileFilter;
@@ -40,27 +47,19 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-import static java.util.stream.Collectors.toList;
-import static org.apache.storm.Config.SUPERVISOR_WORKER_TIMEOUT_SECS;
-import static org.apache.storm.DaemonConfig.LOGVIEWER_CLEANUP_AGE_MINS;
-import static org.apache.storm.DaemonConfig.LOGVIEWER_CLEANUP_INTERVAL_SECS;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
-import static org.mockito.Matchers.anyListOf;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.anyMapOf;
-import static org.mockito.Matchers.anySetOf;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.storm.daemon.logviewer.testsupport.MockDirectoryBuilder;
+import org.apache.storm.daemon.logviewer.testsupport.MockFileBuilder;
+import org.apache.storm.daemon.supervisor.SupervisorUtils;
+import org.apache.storm.generated.LSWorkerHeartbeat;
+import org.apache.storm.utils.Time;
+import org.apache.storm.utils.Utils;
+import org.jooq.lambda.Seq;
+import org.junit.Test;
+import org.mockito.internal.util.collections.Sets;
 
 public class LogCleanerTest {
     /**
@@ -84,10 +83,10 @@ public class LogCleanerTest {
 
         LogCleaner logCleaner = new LogCleaner(conf, workerLogs, mockDirectoryCleaner, null);
 
-        long nowMillis = Time.currentTimeMillis();
-        long cutoffMillis = logCleaner.cleanupCutoffAgeMillis(nowMillis);
-        long oldMtimeMillis = cutoffMillis - 500;
-        long newMtimeMillis = cutoffMillis + 500;
+        final long nowMillis = Time.currentTimeMillis();
+        final long cutoffMillis = logCleaner.cleanupCutoffAgeMillis(nowMillis);
+        final long oldMtimeMillis = cutoffMillis - 500;
+        final long newMtimeMillis = cutoffMillis + 500;
 
         List<File> matchingFiles = new ArrayList<>();
         matchingFiles.add(new MockDirectoryBuilder().setDirName("3031").setMtime(oldMtimeMillis).build());
@@ -278,7 +277,7 @@ public class LogCleanerTest {
     }
 
     /**
-     * cleanup function forceDeletes files of dead workers
+     * cleanup function forceDeletes files of dead workers.
      */
     @Test
     public void testCleanupFn() throws IOException {

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/ResourceAuthorizerTest.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/ResourceAuthorizerTest.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/ResourceAuthorizerTest.java
index 3d0e43e..63363fa 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/ResourceAuthorizerTest.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/ResourceAuthorizerTest.java
@@ -18,14 +18,6 @@
 
 package org.apache.storm.daemon.logviewer.utils;
 
-import org.apache.storm.daemon.logviewer.testsupport.ArgumentsVerifier;
-import org.apache.storm.utils.Utils;
-import org.junit.Test;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
 import static org.apache.storm.Config.NIMBUS_ADMINS;
 import static org.apache.storm.Config.TOPOLOGY_GROUPS;
 import static org.apache.storm.Config.TOPOLOGY_USERS;
@@ -38,6 +30,14 @@ import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.storm.daemon.logviewer.testsupport.ArgumentsVerifier;
+import org.apache.storm.utils.Utils;
+import org.junit.Test;
+
 public class ResourceAuthorizerTest {
 
     /**
@@ -172,11 +172,11 @@ public class ResourceAuthorizerTest {
 
     private void verifyStubMethodsAreCalledProperly(ResourceAuthorizer authorizer) {
         ArgumentsVerifier.verifyFirstCallArgsForSingleArgMethod(
-                captor -> verify(authorizer, times(2)).getLogUserGroupWhitelist(captor.capture()),
-                String.class, "non-blank-fname");
+            captor -> verify(authorizer, times(2)).getLogUserGroupWhitelist(captor.capture()),
+            String.class, "non-blank-fname");
 
         ArgumentsVerifier.verifyFirstCallArgsForSingleArgMethod(
-                captor -> verify(authorizer).getUserGroups(captor.capture()),
-                String.class, "alice");
+            captor -> verify(authorizer).getUserGroups(captor.capture()),
+            String.class, "alice");
     }
 }

http://git-wip-us.apache.org/repos/asf/storm/blob/6a041a98/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/WorkerLogsTest.java
----------------------------------------------------------------------
diff --git a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/WorkerLogsTest.java b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/WorkerLogsTest.java
index b8b5d8c..30b1678 100644
--- a/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/WorkerLogsTest.java
+++ b/storm-webapp/src/test/java/org/apache/storm/daemon/logviewer/utils/WorkerLogsTest.java
@@ -18,11 +18,10 @@
 
 package org.apache.storm.daemon.logviewer.utils;
 
-import org.apache.storm.daemon.logviewer.testsupport.MockDirectoryBuilder;
-import org.apache.storm.daemon.logviewer.testsupport.MockFileBuilder;
-import org.apache.storm.daemon.supervisor.SupervisorUtils;
-import org.apache.storm.utils.Utils;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.anyMapOf;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.io.File;
 import java.io.IOException;
@@ -30,10 +29,11 @@ import java.util.Collections;
 import java.util.Map;
 import java.util.Optional;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.anyMapOf;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.storm.daemon.logviewer.testsupport.MockDirectoryBuilder;
+import org.apache.storm.daemon.logviewer.testsupport.MockFileBuilder;
+import org.apache.storm.daemon.supervisor.SupervisorUtils;
+import org.apache.storm.utils.Utils;
+import org.junit.Test;
 
 public class WorkerLogsTest {