Repository: geode
Updated Branches:
  refs/heads/feature/GEODE-2420 88eaa5b09 -> 587ee2efe


Refactoring and test enhancement.

- Change result sender to send an object containing estimated size of
  logs and estimate of available space on disk
- more tests for the LogSizer and new ExportedLogsSizeDetail


Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/587ee2ef
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/587ee2ef
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/587ee2ef

Branch: refs/heads/feature/GEODE-2420
Commit: 587ee2efe1f5b797a7dda26e036d4bf50142381a
Parents: 88eaa5b
Author: Ken Howe <kh...@pivotal.io>
Authored: Fri Mar 24 16:05:45 2017 -0700
Committer: Ken Howe <kh...@pivotal.io>
Committed: Fri Mar 24 16:05:45 2017 -0700

----------------------------------------------------------------------
 .../cli/functions/ExportedLogsSizeDetail.java   |  93 ++++++++++++
 .../cli/functions/SizeExportLogsFunction.java   |  10 +-
 .../management/internal/cli/util/LogSizer.java  |  23 ++-
 .../functions/ExportedLogsSizeDetailTest.java   | 145 +++++++++++++++++++
 .../SizeExportLogsFunctionCacheTest.java        |  20 +--
 .../SizeExportLogsFunctionFileTest.java         |  22 +--
 .../cli/functions/SizeExportLogsTestSuite.java  |  27 ++++
 .../internal/cli/util/LogSizerTest.java         |  94 ++++++++++++
 8 files changed, 392 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/587ee2ef/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportedLogsSizeDetail.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportedLogsSizeDetail.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportedLogsSizeDetail.java
new file mode 100644
index 0000000..1ce72c4
--- /dev/null
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/ExportedLogsSizeDetail.java
@@ -0,0 +1,93 @@
+/*
+ * 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.geode.management.internal.cli.functions;
+
+import org.apache.geode.DataSerializable;
+import org.apache.geode.DataSerializer;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+public class ExportedLogsSizeDetail implements DataSerializable {
+  private long logsSize;
+  private long availableDisk;
+
+  // Used for deserialization only
+  public ExportedLogsSizeDetail() {
+    logsSize = 0;
+    availableDisk = 0;
+  }
+
+  public ExportedLogsSizeDetail(long logsSize, long availableDisk) {
+    this.logsSize = logsSize;
+    this.availableDisk = availableDisk;
+  }
+
+  public long getAvailableDisk() {
+    return availableDisk;
+  }
+
+  public long getLogsSize() {
+
+    return logsSize;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+
+    ExportedLogsSizeDetail that = (ExportedLogsSizeDetail) o;
+
+    if (logsSize != that.logsSize) {
+      return false;
+    }
+    return availableDisk == that.availableDisk;
+  }
+
+  @Override
+  public int hashCode() {
+    int result = (int) (logsSize ^ (logsSize >>> 32));
+    result = 31 * result + (int) (availableDisk ^ (availableDisk >>> 32));
+    return result;
+  }
+
+  @Override
+  public void toData(DataOutput out) throws IOException {
+    DataSerializer.writeLong(logsSize, out);
+    DataSerializer.writeLong(availableDisk, out);
+  }
+
+  @Override
+  public void fromData(DataInput in) throws IOException, 
ClassNotFoundException {
+    logsSize = DataSerializer.readLong(in);
+    availableDisk = DataSerializer.readLong(in);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder result = new StringBuilder();
+    result.append("[");
+    result.append("logsSize: " + logsSize);
+    result.append(", availableDisk: " + availableDisk);
+    result.append("]");
+    return result.toString();
+  }
+}

http://git-wip-us.apache.org/repos/asf/geode/blob/587ee2ef/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
index 3a09219..b481035 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction.java
@@ -47,10 +47,12 @@ public class SizeExportLogsFunction extends 
ExportLogsFunction implements Functi
       GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
       DistributionConfig config = cache.getDistributedSystem().getConfig();
       Args args = (Args) context.getArguments();
-
+      // TODO: Find how much space is availbel on the disk where the temporary 
copies of the logs will be written
+      long availableDisk = config.getLogFile().getUsableSpace();
       long estimatedSize = estimateLogFileSize(cache.getMyId(), 
config.getLogFile(), config.getStatisticArchiveFile(), args);
 
-        context.getResultSender().lastResult(Arrays.asList(new 
long[]{estimatedSize}));
+//      context.getResultSender().lastResult(Arrays.asList(new 
long[]{estimatedSize}));
+      context.getResultSender().lastResult(Arrays.asList(new 
ExportedLogsSizeDetail(estimatedSize, availableDisk)));
 
     } catch (Exception e) {
       e.printStackTrace();
@@ -61,6 +63,8 @@ public class SizeExportLogsFunction extends 
ExportLogsFunction implements Functi
 
   long estimateLogFileSize(final DistributedMember member, final File logFile, 
final File statArchive, final Args args)
       throws ParseException, IOException {
+    LOGGER.info("SizeExportLogsFunction started for member {}", member);
+
     File baseLogFile = null;
     File baseStatsFile = null;
 
@@ -76,7 +80,7 @@ public class SizeExportLogsFunction extends 
ExportLogsFunction implements Functi
 
     long estimatedSize = new LogSizer(logFilter, baseLogFile, 
baseStatsFile).getFilteredSize();
 
-    LOGGER.info("Estimated exported log file size: " + estimatedSize);
+    LOGGER.info("Estimated log file size: " + estimatedSize);
 
     return estimatedSize;
   }

http://git-wip-us.apache.org/repos/asf/geode/blob/587ee2ef/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/LogSizer.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/LogSizer.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/LogSizer.java
index 4a6ea60..70bb0b5 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/LogSizer.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/LogSizer.java
@@ -14,6 +14,7 @@
  */
 package org.apache.geode.management.internal.cli.util;
 
+import static java.util.List.*;
 import static java.util.stream.Collectors.toList;
 
 import org.apache.commons.io.FileUtils;
@@ -27,6 +28,7 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.text.ParseException;
+import java.util.Collections;
 import java.util.List;
 import java.util.Scanner;
 import java.util.function.Predicate;
@@ -60,7 +62,6 @@ public class LogSizer {
    *         export.
    */
   public long getFilteredSize() throws IOException {
-    Path tempDirectory = Files.createTempDirectory("exportLogs");
 
     if (baseLogFile != null) {
       for (Path logFile : findLogFiles(baseLogFile.toPath().getParent())) {
@@ -70,12 +71,11 @@ public class LogSizer {
 
     if (baseStatsFile != null) {
       for (Path statFile : findStatFiles(baseStatsFile.toPath().getParent())) {
-        filteredSize += FileUtils.sizeOf(statFile.toFile());
+        filteredSize += statFile.toFile().length();
+//        filteredSize += FileUtils.sizeOf(statFile.toFile());
       }
     }
 
-    FileUtils.deleteDirectory(tempDirectory.toFile());
-
     return filteredSize;
   }
 
@@ -98,16 +98,6 @@ public class LogSizer {
     return size;
   }
 
-
-  private void writeLine(String line, BufferedWriter writer) {
-    try {
-      writer.write(line);
-      writer.newLine();
-    } catch (IOException e) {
-      throw new RuntimeException("Unable to write to log file", e);
-    }
-  }
-
   protected List<Path> findLogFiles(Path workingDir) throws IOException {
     Predicate<Path> logFileSelector = (Path file) -> 
file.toString().toLowerCase().endsWith(".log");
     return findFiles(workingDir, logFileSelector);
@@ -122,6 +112,11 @@ public class LogSizer {
 
   private List<Path> findFiles(Path workingDir, Predicate<Path> fileSelector) 
throws IOException {
     Stream<Path> selectedFiles =
+        null;
+    if (!workingDir.toFile().isDirectory()) {
+      return Collections.emptyList();
+    }
+    selectedFiles =
         
Files.list(workingDir).filter(fileSelector).filter(this.logFilter::acceptsFile);
 
     return selectedFiles.collect(toList());

http://git-wip-us.apache.org/repos/asf/geode/blob/587ee2ef/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExportedLogsSizeDetailTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExportedLogsSizeDetailTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExportedLogsSizeDetailTest.java
new file mode 100644
index 0000000..eab1e0b
--- /dev/null
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExportedLogsSizeDetailTest.java
@@ -0,0 +1,145 @@
+/*
+ * 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.geode.management.internal.cli.functions;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutput;
+import java.io.DataOutputStream;
+
+public class ExportedLogsSizeDetailTest {
+  @Before
+  public void setUp() throws Exception {
+
+  }
+
+  @After
+  public void tearDown() throws Exception {
+
+  }
+
+  @Test
+  public final void testExportedLogsSizeDetailConstructor() {
+    ExportedLogsSizeDetail sizeDetail =
+        new ExportedLogsSizeDetail(1L, 2L);
+    assertThat(sizeDetail).isNotNull();
+    assertThat(sizeDetail.getLogsSize()).isEqualTo(1L);
+    assertThat(sizeDetail.getAvailableDisk()).isEqualTo(2L);
+  }
+
+  @Test
+  public final void testExportedLogsSizeDetail0ArgConstructor() {
+    ExportedLogsSizeDetail sizeDetail = new ExportedLogsSizeDetail();
+    assertThat(sizeDetail).isNotNull();
+    assertThat(sizeDetail.getLogsSize()).isEqualTo(0L);
+    assertThat(sizeDetail.getAvailableDisk()).isEqualTo(0L);
+  }
+
+  @Test
+  public void equals_returnsTrueForTwoInstancesWithTheSameFieldValues() throws 
Exception {
+    ExportedLogsSizeDetail sizeDetail1 =
+        new ExportedLogsSizeDetail(3L, 4L);
+    ExportedLogsSizeDetail sizeDetail2 =
+        new ExportedLogsSizeDetail(3L, 4L);
+    assertThat(sizeDetail1.equals(sizeDetail1)).isTrue();
+    assertThat(sizeDetail1.equals(sizeDetail2)).isTrue();
+    assertThat(sizeDetail2.equals(sizeDetail1)).isTrue();
+  }
+
+  @Test
+  public void equals_returnsFalseWhenLogsSizeDiffers() throws Exception {
+    ExportedLogsSizeDetail sizeDetail1 =
+        new ExportedLogsSizeDetail(3L, 4L);
+    ExportedLogsSizeDetail sizeDetail2 =
+        new ExportedLogsSizeDetail(4L, 4L);
+    assertThat(sizeDetail1.equals(sizeDetail2)).isFalse();
+    assertThat(sizeDetail2.equals(sizeDetail1)).isFalse();
+  }
+
+  @Test
+  public void equals_returnsFalseWhenAvailableDiskDiffers() throws Exception {
+    ExportedLogsSizeDetail sizeDetail1 =
+        new ExportedLogsSizeDetail(3L, 4L);
+    ExportedLogsSizeDetail sizeDetail2 =
+        new ExportedLogsSizeDetail(3L, 3L);
+    assertThat(sizeDetail1.equals(sizeDetail2)).isFalse();
+    assertThat(sizeDetail2.equals(sizeDetail1)).isFalse();
+  }
+
+  @Test
+  public void equals_returnsFalseForComparisonWithNullObject() throws 
Exception {
+    ExportedLogsSizeDetail sizeDetail1 =
+        new ExportedLogsSizeDetail(3L, 4L);
+    ExportedLogsSizeDetail sizeDetail2 = null;
+//        new ExportedLogsSizeDetail(3L, 4L);
+    assertThat(sizeDetail1.equals(sizeDetail2)).isFalse();
+  }
+
+  @Test
+  public final void testClassInequality() {
+    ExportedLogsSizeDetail sizeDeatai1 =
+        new ExportedLogsSizeDetail(5L, 6L);
+    String sizeDetail2 = sizeDeatai1.toString();
+    assertThat(sizeDeatai1.equals(sizeDetail2)).isFalse();
+    assertThat(sizeDetail2.equals(sizeDeatai1)).isFalse();
+  }
+
+  @Test
+  public void testHashCode() throws Exception {
+    ExportedLogsSizeDetail sizeDetail1 = new ExportedLogsSizeDetail();
+    ExportedLogsSizeDetail sizeDetail2 =
+        new ExportedLogsSizeDetail(11L, 12L);
+    ExportedLogsSizeDetail sizeDetail3 =
+        new ExportedLogsSizeDetail(12L, 11L);
+
+    assertThat(sizeDetail1.hashCode()).isNotEqualTo(sizeDetail2.hashCode());
+    assertThat(sizeDetail1.hashCode()).isNotEqualTo(sizeDetail3.hashCode());
+    assertThat(sizeDetail2.hashCode()).isNotEqualTo(sizeDetail3.hashCode());
+
+    assertThat(sizeDetail1.hashCode()).isEqualTo(0);
+    assertThat(sizeDetail2.hashCode()).isEqualTo(353);
+    assertThat(sizeDetail3.hashCode()).isEqualTo(383);
+
+  }
+
+  @Test
+  public void deserialization_setsFieldsToOriginalUnserializedValues() throws 
Exception {
+    ExportedLogsSizeDetail sizeDetail =
+        new ExportedLogsSizeDetail(3L, 4L);
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    DataOutput out = new DataOutputStream(baos);
+    sizeDetail.toData(out);
+    ExportedLogsSizeDetail sizeDetailIn = new ExportedLogsSizeDetail();
+    sizeDetailIn.fromData(new DataInputStream(new 
ByteArrayInputStream(baos.toByteArray())));
+
+    assertThat(sizeDetailIn).isEqualTo(sizeDetail);
+  }
+
+  @Test
+  public void testToString() throws Exception {
+    ExportedLogsSizeDetail sizeDetail =
+        new ExportedLogsSizeDetail(7L, 8L);
+    assertThat(sizeDetail.toString()).isEqualTo("[logsSize: 7, availableDisk: 
8]");
+
+  }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/geode/blob/587ee2ef/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionCacheTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionCacheTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionCacheTest.java
index bcd6da7..4596a9a 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionCacheTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionCacheTest.java
@@ -26,6 +26,7 @@ import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.ResultSender;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.internal.cache.execute.FunctionContextImpl;
+import 
org.apache.geode.management.internal.cli.functions.ExportedLogsSizeDetail;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -90,9 +91,11 @@ public class SizeExportLogsFunctionCacheTest {
     TestResultSender resultSender = new TestResultSender();
     FunctionContext context = new FunctionContextImpl("functionId", 
nonFilteringArgs, resultSender);
 
-    long expectedSize = FileUtils.sizeOf(logFile) + FileUtils.sizeOf(statFile);
+    // log and stat files sizes are not constant with a real cache running, so 
check for the sizer estimate within a range
+    long initalFileSizes = FileUtils.sizeOf(logFile) + 
FileUtils.sizeOf(statFile);
     new SizeExportLogsFunction().execute(context);
-    getAndVerifySizeEstimate(resultSender, expectedSize);
+    long finalFileSizes = FileUtils.sizeOf(logFile) + 
FileUtils.sizeOf(statFile);
+    getAndVerifySizeEstimate(resultSender, initalFileSizes, finalFileSizes);
   }
 
   @Test
@@ -111,14 +114,18 @@ public class SizeExportLogsFunctionCacheTest {
 
   private void getAndVerifySizeEstimate(TestResultSender resultSender, long 
expectedSize)
       throws Throwable {
+    getAndVerifySizeEstimate(resultSender, expectedSize, expectedSize);
+  }
+
+    private void getAndVerifySizeEstimate(TestResultSender resultSender, long 
minExpected, long maxExpected)
+      throws Throwable {
     List<?> results = resultSender.getResults();
 
     assertThat(results).isNotNull();
     assertThat(results.size()).isEqualTo(1);
     List<?> result = (List<?>)results.get(0);
     assertThat(result).isNotNull();
-    assertThat(((long[])result.get(0))[0]).isEqualTo(expectedSize);
-
+    assertThat(((ExportedLogsSizeDetail) 
result.get(0)).getLogsSize()).isGreaterThanOrEqualTo(minExpected).isLessThanOrEqualTo(maxExpected);
   }
 
   @Test
@@ -130,11 +137,6 @@ public class SizeExportLogsFunctionCacheTest {
 
     new SizeExportLogsFunction().execute(context);
     assertThatThrownBy(() -> 
resultSender.getResults()).isInstanceOf(NullPointerException.class);
-
-//    List<?> results = resultSender.getResults();
-//    List<?> result = (List<?>)results.get(0);
-//    assertThat(result).isInstanceOf(Exception.class);
-
   }
 
   private static class TestResultSender implements ResultSender {

http://git-wip-us.apache.org/repos/asf/geode/blob/587ee2ef/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionFileTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionFileTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionFileTest.java
index 72ba7f8..3c1379d 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionFileTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsFunctionFileTest.java
@@ -15,18 +15,16 @@
 package org.apache.geode.management.internal.cli.functions;
 
 import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
 import org.apache.geode.cache.execute.FunctionContext;
-import org.apache.geode.cache.execute.ResultSender;
-import org.apache.geode.internal.cache.execute.FunctionContextImpl;
 import 
org.apache.geode.management.internal.cli.functions.ExportLogsFunction.Args;
 import org.apache.commons.io.FileUtils;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -38,8 +36,6 @@ import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedList;
 import java.util.List;
 
 @Category(IntegrationTest.class)
@@ -63,6 +59,11 @@ public class SizeExportLogsFunctionFileTest {
     this.nonFilteringArgs = new Args(null, null, null, false,false, false);
   }
 
+  @After
+  public void after() throws Exception {
+    FileUtils.deleteDirectory(dir);
+  }
+
   @Test
   public void bothFiles_returnsCombinedSize() throws Exception {
     List<File> logFiles = createLogFiles(new File(dir.getName(), 
testName.getMethodName()), 1, 1,
@@ -84,11 +85,9 @@ public class SizeExportLogsFunctionFileTest {
     expectedSize = 0;
     List<File> logFiles = createLogFiles(new File(dir.getName(), 
testName.getMethodName()), 1, 3, FileUtils.ONE_KB);
     logFiles.forEach((file) -> {expectedSize += FileUtils.sizeOf(file);});
-//    long logFileSize = FileUtils.sizeOf(logFile);
 
     List<File> statFiles = createStatFiles(new File(dir.getName(), 
testName.getMethodName()), 1, 2, FileUtils.ONE_KB * 2);
     statFiles.forEach((file) -> {expectedSize += FileUtils.sizeOf(file);});
-//    long statFileSize = FileUtils.sizeOf(statArchive);
 
     SizeExportLogsFunction function = new SizeExportLogsFunction();
     assertThat(function.estimateLogFileSize(this.member, logFiles.get(0), 
statFiles.get(0), nonFilteringArgs)).isEqualTo(expectedSize);
@@ -97,12 +96,8 @@ public class SizeExportLogsFunctionFileTest {
   @Test
   public void emptyFiles_returnsZeroSize() throws Exception {
     List<File> logFiles = createLogFiles(new File(dir.getName(), 
testName.getMethodName()), 1, 3, 0);
-//    logFiles.forEach((file) -> {expectedSize += FileUtils.sizeOf(file);});
-//    long logFileSize = FileUtils.sizeOf(logFile);
 
     List<File> statFiles = createStatFiles(new File(dir.getName(), 
testName.getMethodName()), 1, 2, 0);
-//    statFiles.forEach((file) -> {expectedSize += FileUtils.sizeOf(file);});
-//    long statFileSize = FileUtils.sizeOf(statArchive);
     SizeExportLogsFunction function = new SizeExportLogsFunction();
     assertThat(function.estimateLogFileSize(this.member, logFiles.get(0), 
statFiles.get(0), nonFilteringArgs)).isEqualTo(0);
   }
@@ -137,11 +132,6 @@ public class SizeExportLogsFunctionFileTest {
     return files;
   }
 
-  @Test
-  public void negativeEstimatedSize() throws Exception {
-
-  }
-
   private String baseName(String logFileName) {
     // base log file: myfile.log
     // mainId childId for rolling

http://git-wip-us.apache.org/repos/asf/geode/blob/587ee2ef/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsTestSuite.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsTestSuite.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsTestSuite.java
new file mode 100644
index 0000000..176e4cd
--- /dev/null
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/SizeExportLogsTestSuite.java
@@ -0,0 +1,27 @@
+/*
+ * 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.geode.management.internal.cli.functions;
+import org.apache.geode.management.internal.cli.util.LogSizerTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * JUnit, DUnit and Integration tests for SizeExportLogsFunction.
+ */
+@Suite.SuiteClasses({SizeExportLogsFunctionCacheTest.class, 
SizeExportLogsFunctionFileTest.class, LogSizerTest.class})
+@RunWith(Suite.class)
+public class SizeExportLogsTestSuite {
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/geode/blob/587ee2ef/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogSizerTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogSizerTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogSizerTest.java
new file mode 100644
index 0000000..988fa03
--- /dev/null
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogSizerTest.java
@@ -0,0 +1,94 @@
+/*
+ * 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.geode.management.internal.cli.util;
+
+import static java.io.File.separator;
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.geode.management.internal.cli.functions.ExportLogsFunction;
+import 
org.apache.geode.management.internal.cli.functions.SizeExportLogsFunction;
+import org.apache.geode.test.junit.categories.UnitTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+import org.junit.rules.TestName;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.text.ParseException;
+
+@Category(UnitTest.class)
+public class LogSizerTest {
+  private LogFilter logFilter;
+  private SizeExportLogsFunction.Args nonFilteringArgs;
+
+  private File dir;
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+  @Rule
+  public TestName testName = new TestName();
+
+  @Before
+  public void setUp() throws Exception {
+    logFilter = mock(LogFilter.class);
+    dir = temporaryFolder.getRoot();
+    nonFilteringArgs = new ExportLogsFunction.Args(null, null, null, 
false,false, false);
+
+  }
+
+  @After
+  public void tearDown() throws Exception {
+
+  }
+
+  @Test
+  public void nullFileArgs_returnsZeroSize() throws ParseException, 
IOException {
+    LogSizer sizer = new LogSizer(logFilter, null, null);
+    assertThat(sizer.getFilteredSize()).isEqualTo(0L);
+  }
+
+  @Test
+  public void noFiles_returnsZeroSize() throws ParseException, IOException {
+
+    File mockStatFile = mock(File.class);
+    File mockLogFile = mock(File.class);
+    when(mockLogFile.toPath()).thenReturn(new File("root" + separator + 
"parent" + separator + testName + ".log").toPath());
+    when(mockStatFile.toPath()).thenReturn(new File("root" + separator + 
"parent" + separator + testName + ".gfs").toPath());
+    LogSizer sizer = new LogSizer(logFilter, mockLogFile, mockStatFile);
+    assertThat(sizer.getFilteredSize()).isEqualTo(0L);
+  }
+
+  @Test
+  public void emptyFiles_returnsZeroSize() throws ParseException, IOException {
+
+    File mockStatFile = mock(File.class);
+    File mockLogFile = mock(File.class);
+    when(mockLogFile.toPath()).thenReturn(new File("root" + separator + 
"parent" + separator + testName + ".log").toPath());
+    when(mockStatFile.toPath()).thenReturn(new File("root" + separator + 
"parent" + separator + testName + ".gfs").toPath());
+    LogFilter logFilter = new LogFilter(nonFilteringArgs.getLogLevel(), 
nonFilteringArgs.isThisLogLevelOnly(),
+        nonFilteringArgs.getStartTime(), nonFilteringArgs.getEndTime());
+
+    LogSizer sizer = new LogSizer(logFilter, mockLogFile, mockStatFile);
+    assertThat(sizer.getFilteredSize()).isEqualTo(0L);
+  }
+
+}
\ No newline at end of file

Reply via email to