You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by js...@apache.org on 2017/03/13 17:42:35 UTC

[08/50] [abbrv] geode git commit: GEODE-2416: Collect together artifacts from individual servers into a single zip file

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart2DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart2DUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart2DUnitTest.java
deleted file mode 100644
index 2b2e524..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart2DUnitTest.java
+++ /dev/null
@@ -1,141 +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.geode.management.internal.cli.commands;
-
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.Region;
-import org.apache.geode.cache.RegionFactory;
-import org.apache.geode.cache.RegionShortcut;
-import org.apache.geode.internal.logging.LogWriterImpl;
-import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.result.CommandResult;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.SerializableRunnable;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * Dunit class for testing gemfire function commands : export logs
- */
-@Category(DistributedTest.class)
-public class MiscellaneousCommandsExportLogsPart2DUnitTest extends CliCommandTestBase {
-
-  private static final long serialVersionUID = 1L;
-
-  void setupForExportLogs() {
-    final VM vm1 = Host.getHost(0).getVM(1);
-    setUpJmxManagerOnVm0ThenConnect(null);
-
-    vm1.invoke(new SerializableRunnable() {
-      public void run() {
-        // no need to close cache as it will be closed as part of teardown2
-        Cache cache = getCache();
-
-        RegionFactory<Integer, Integer> dataRegionFactory =
-            cache.createRegionFactory(RegionShortcut.PARTITION);
-        Region region = dataRegionFactory.create("testRegion");
-        for (int i = 0; i < 5; i++) {
-          region.put("key" + (i + 200), "value" + (i + 200));
-        }
-      }
-    });
-  }
-
-  String getCurrentTimeString() {
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss_SSS_z");
-    Date startDate = new Date(System.currentTimeMillis());
-    String formattedStartDate = sf.format(startDate);
-    return ("_" + formattedStartDate);
-  }
-
-  @Test
-  public void testExportLogsForLogLevel() throws IOException {
-    setupForExportLogs();
-
-    Date startDate = new Date(System.currentTimeMillis() - 60 * 1000);
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd");
-    String start = sf.format(startDate);
-
-    Date enddate = new Date(System.currentTimeMillis() + 60 * 1000);
-    String end = sf.format(enddate);
-    String dir = getCurrentTimeString();
-
-    String logLevel = LogWriterImpl.levelToString(LogWriterImpl.CONFIG_LEVEL);
-
-    MiscellaneousCommands misc = new MiscellaneousCommands();
-    getCache();
-
-    Result cmdResult = misc.exportLogsPreprocessing("./testExportLogsForLogLevel" + dir, null, null,
-        logLevel, false, false, start, end, 1);
-
-    getLogWriter().info("testExportLogsForLogLevel command=" + cmdResult);
-
-    if (cmdResult != null) {
-      String cmdStringRsult = commandResultToString((CommandResult) cmdResult);
-      getLogWriter().info("testExportLogsForLogLevel cmdStringRsult=" + cmdStringRsult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testExportLogsForLogLevel failed as did not get CommandResult");
-    }
-    FileUtils.deleteDirectory(new File("testExportLogsForLogLevel" + dir));
-  }
-
-  @Test
-  public void testExportLogsForLogLevelWithUPTOLOGLEVEL() throws IOException {
-    setupForExportLogs();
-
-    Date startDate = new Date(System.currentTimeMillis() - 2 * 60 * 1000);
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd");
-    String start = sf.format(startDate);
-
-    Date enddate = new Date(System.currentTimeMillis() + 2 * 60 * 60 * 1000);
-    String end = sf.format(enddate);
-    String dir = getCurrentTimeString();
-
-    String logLevel = LogWriterImpl.levelToString(LogWriterImpl.SEVERE_LEVEL);
-
-    MiscellaneousCommands misc = new MiscellaneousCommands();
-    getCache();
-
-    Result cmdResult =
-        misc.exportLogsPreprocessing("./testExportLogsForLogLevelWithUPTOLOGLEVEL" + dir, null,
-            null, logLevel, true, false, start, end, 1);
-
-    getLogWriter().info("testExportLogsForLogLevelWithUPTOLOGLEVEL command=" + cmdResult);
-
-    if (cmdResult != null) {
-      String cmdStringRsult = commandResultToString((CommandResult) cmdResult);
-      getLogWriter()
-          .info("testExportLogsForLogLevelWithUPTOLOGLEVEL cmdStringRsult=" + cmdStringRsult);
-
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testExportLogsForLogLevelWithUPTOLOGLEVEL failed as did not get CommandResult");
-    }
-    FileUtils.deleteDirectory(new File("testExportLogsForLogLevelWithUPTOLOGLEVEL" + dir));
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java
deleted file mode 100644
index efef2c4..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java
+++ /dev/null
@@ -1,156 +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.geode.management.internal.cli.commands;
-
-import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.Region;
-import org.apache.geode.cache.RegionFactory;
-import org.apache.geode.cache.RegionShortcut;
-import org.apache.geode.internal.logging.LogWriterImpl;
-import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.result.CommandResult;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.SerializableRunnable;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Properties;
-
-/**
- * Dunit class for testing gemfire function commands : export logs
- */
-@Category(DistributedTest.class)
-public class MiscellaneousCommandsExportLogsPart3DUnitTest extends CliCommandTestBase {
-
-  private static final long serialVersionUID = 1L;
-
-  public String getMemberId() {
-    Cache cache = getCache();
-    return cache.getDistributedSystem().getDistributedMember().getId();
-  }
-
-  void setupForExportLogs() {
-    final VM vm1 = Host.getHost(0).getVM(1);
-    setUpJmxManagerOnVm0ThenConnect(null);
-
-    vm1.invoke(new SerializableRunnable() {
-      public void run() {
-        // no need to close cache as it will be closed as part of teardown2
-        Cache cache = getCache();
-
-        RegionFactory<Integer, Integer> dataRegionFactory =
-            cache.createRegionFactory(RegionShortcut.PARTITION);
-        Region region = dataRegionFactory.create("testRegion");
-        for (int i = 0; i < 5; i++) {
-          region.put("key" + (i + 200), "value" + (i + 200));
-        }
-      }
-    });
-  }
-
-  String getCurrentTimeString() {
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss_SSS_z");
-    Date startDate = new Date(System.currentTimeMillis());
-    String formattedStartDate = sf.format(startDate);
-    return ("_" + formattedStartDate);
-  }
-
-  @Category(FlakyTest.class) // GEODE-672: random ports, java.rmi.server.ExportException: Port
-                             // already in use, HeadlessGfsh, disk IO
-  @Test
-  public void testExportLogsForGroup() throws IOException {
-    Properties localProps = new Properties();
-    localProps.setProperty(NAME, "Manager");
-    localProps.setProperty(GROUPS, "Group1");
-    setUpJmxManagerOnVm0ThenConnect(localProps);
-    String dir = getCurrentTimeString();
-
-    Date startDate = new Date(System.currentTimeMillis() - 2 * 60 * 1000);
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd");
-    String start = sf.format(startDate);
-
-    Date enddate = new Date(System.currentTimeMillis() + 2 * 60 * 60 * 1000);
-    String end = sf.format(enddate);
-
-    String logLevel = LogWriterImpl.levelToString(LogWriterImpl.INFO_LEVEL);
-
-    MiscellaneousCommands misc = new MiscellaneousCommands();
-    getCache();
-    String[] groups = new String[1];
-    groups[0] = "Group1";
-
-    Result cmdResult = misc.exportLogsPreprocessing("./testExportLogsForGroup" + dir, groups, null,
-        logLevel, false, false, start, end, 1);
-
-    getLogWriter().info("testExportLogsForGroup command result =" + cmdResult);
-    if (cmdResult != null) {
-      String cmdStringRsult = commandResultToString((CommandResult) cmdResult);
-      getLogWriter().info("testExportLogsForGroup cmdStringRsult=" + cmdStringRsult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testExportLogsForGroup failed as did not get CommandResult");
-    }
-    FileUtils.deleteQuietly(new File("testExportLogsForGroup" + dir));
-  }
-
-  @Test
-  public void testExportLogsForMember() throws IOException {
-    setUpJmxManagerOnVm0ThenConnect(null);
-
-    Date startDate = new Date(System.currentTimeMillis() - 2 * 60 * 1000);
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd");
-    String start = sf.format(startDate);
-
-    Date enddate = new Date(System.currentTimeMillis() + 2 * 60 * 60 * 1000);
-    String end = sf.format(enddate);
-
-    final VM vm1 = Host.getHost(0).getVM(1);
-    final String vm1MemberId = (String) vm1.invoke(() -> getMemberId());
-    String dir = getCurrentTimeString();
-
-    String logLevel = LogWriterImpl.levelToString(LogWriterImpl.INFO_LEVEL);
-
-    MiscellaneousCommands misc = new MiscellaneousCommands();
-    getCache();
-
-    Result cmdResult = misc.exportLogsPreprocessing("./testExportLogsForMember" + dir, null,
-        vm1MemberId, logLevel, false, false, start, end, 1);
-
-    getLogWriter().info("testExportLogsForMember command result =" + cmdResult);
-
-    if (cmdResult != null) {
-      String cmdStringRsult = commandResultToString((CommandResult) cmdResult);
-      getLogWriter().info("testExportLogsForMember cmdStringRsult=" + cmdStringRsult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testExportLogsForMember failed as did not get CommandResult");
-    }
-    FileUtils.deleteQuietly(new File("testExportLogsForMember" + dir));
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart4DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart4DUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart4DUnitTest.java
deleted file mode 100644
index 9d64bd9..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart4DUnitTest.java
+++ /dev/null
@@ -1,138 +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.geode.management.internal.cli.commands;
-
-import static org.apache.geode.test.dunit.Assert.assertEquals;
-import static org.apache.geode.test.dunit.Assert.fail;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.Region;
-import org.apache.geode.cache.RegionFactory;
-import org.apache.geode.cache.RegionShortcut;
-import org.apache.geode.internal.logging.LogWriterImpl;
-import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.result.CommandResult;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.SerializableRunnable;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.junit.categories.DistributedTest;
-import org.apache.geode.test.junit.categories.FlakyTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * Dunit class for testing gemfire function commands : export logs
- */
-@Category(DistributedTest.class)
-public class MiscellaneousCommandsExportLogsPart4DUnitTest extends CliCommandTestBase {
-
-  private static final long serialVersionUID = 1L;
-
-  void setupForExportLogs() {
-    final VM vm1 = Host.getHost(0).getVM(1);
-    setUpJmxManagerOnVm0ThenConnect(null);
-
-    vm1.invoke(new SerializableRunnable() {
-      public void run() {
-        // no need to close cache as it will be closed as part of teardown2
-        Cache cache = getCache();
-
-        RegionFactory<Integer, Integer> dataRegionFactory =
-            cache.createRegionFactory(RegionShortcut.PARTITION);
-        Region region = dataRegionFactory.create("testRegion");
-        for (int i = 0; i < 5; i++) {
-          region.put("key" + (i + 200), "value" + (i + 200));
-        }
-      }
-    });
-  }
-
-  String getCurrentTimeString() {
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss_SSS_z");
-    Date startDate = new Date(System.currentTimeMillis());
-    String formattedStartDate = sf.format(startDate);
-    return ("_" + formattedStartDate);
-  }
-
-  @Test
-  public void testExportLogsForTimeRange1() throws IOException {
-    setupForExportLogs();
-    Date startDate = new Date(System.currentTimeMillis() - 1 * 60 * 1000);
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd");
-    String start = sf.format(startDate);
-
-    Date enddate = new Date(System.currentTimeMillis() + 1 * 60 * 60 * 1000);
-    String end = sf.format(enddate);
-    String dir = getCurrentTimeString();
-
-    String logLevel = LogWriterImpl.levelToString(LogWriterImpl.INFO_LEVEL);
-
-    MiscellaneousCommands misc = new MiscellaneousCommands();
-    getCache();
-
-    Result cmdResult = misc.exportLogsPreprocessing("./testExportLogsForTimeRange1" + dir, null,
-        null, logLevel, false, false, start, end, 1);
-
-    getLogWriter().info("testExportLogsForTimeRange1 command result =" + cmdResult);
-
-    if (cmdResult != null) {
-      String cmdStringRsult = commandResultToString((CommandResult) cmdResult);
-      getLogWriter().info("testExportLogsForTimeRange1 cmdStringRsult=" + cmdStringRsult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testExportLogsForTimeRange1 failed as did not get CommandResult");
-    }
-    FileUtils.deleteQuietly(new File("testExportLogsForTimeRange1" + dir));
-  }
-
-  @Category(FlakyTest.class) // GEODE-1500 (http)
-  @Test
-  public void testExportLogsForTimeRangeForOnlyStartTime() throws IOException {
-    setupForExportLogs();
-    Date date = new Date();
-    date.setTime(System.currentTimeMillis() - 30 * 1000);
-    SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd/HH:mm");
-    String s = sf.format(date);
-    String dir = getCurrentTimeString();
-
-    String logLevel = LogWriterImpl.levelToString(LogWriterImpl.INFO_LEVEL);
-
-    MiscellaneousCommands misc = new MiscellaneousCommands();
-    getCache();
-
-    Result cmdResult =
-        misc.exportLogsPreprocessing("./testExportLogsForTimeRangeForOnlyStartTime" + dir, null,
-            null, logLevel, false, false, s, null, 1);
-
-    getLogWriter().info("testExportLogsForTimeRangeForOnlyStartTime command result =" + cmdResult);
-
-    if (cmdResult != null) {
-      String cmdStringRsult = commandResultToString((CommandResult) cmdResult);
-      getLogWriter()
-          .info("testExportLogsForTimeRangeForOnlyStartTime cmdStringRsult=" + cmdStringRsult);
-      assertEquals(Result.Status.OK, cmdResult.getStatus());
-    } else {
-      fail("testExportLogsForTimeRangeForOnlyStartTime failed as did not get CommandResult");
-    }
-    FileUtils.deleteQuietly(new File("testExportLogsForTimeRangeForOnlyStartTime" + dir));
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunctionIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunctionIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunctionIntegrationTest.java
new file mode 100644
index 0000000..abae1de
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/functions/ExportLogsFunctionIntegrationTest.java
@@ -0,0 +1,143 @@
+/*
+ * 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.assertThat;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.execute.FunctionContext;
+import org.apache.geode.cache.execute.ResultSender;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.internal.cache.execute.FunctionContextImpl;
+import org.apache.geode.test.dunit.rules.ServerStarterRule;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.contrib.java.lang.system.RestoreSystemProperties;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.File;
+import java.io.IOException;
+
+@Category(IntegrationTest.class)
+public class ExportLogsFunctionIntegrationTest {
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Rule
+  public RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();
+
+  @Rule
+  public ServerStarterRule serverStarterRule = new ServerStarterRule();
+
+  private File serverWorkingDir;
+
+  @Before
+  public void setup() throws Exception {
+    serverWorkingDir = temporaryFolder.newFolder("serverWorkingDir");
+    System.setProperty("user.dir", serverWorkingDir.getCanonicalPath());
+
+    serverStarterRule.startServer();
+  }
+
+  @After
+  public void teardown() {
+    serverStarterRule.after();
+  }
+
+  @Test
+  public void exportLogsFunctionDoesNotBlowUp() throws Throwable {
+    File logFile1 = new File(serverWorkingDir, "server1.log");
+    FileUtils.writeStringToFile(logFile1, "some log for server1 \n some other log line");
+    File logFile2 = new File(serverWorkingDir, "server2.log");
+    FileUtils.writeStringToFile(logFile2, "some log for server2 \n some other log line");
+
+    File notALogFile = new File(serverWorkingDir, "foo.txt");
+    FileUtils.writeStringToFile(notALogFile, "some text");
+
+    ExportLogsFunction.Args args = new ExportLogsFunction.Args(null, null, "info", false);
+
+    CapturingResultSender resultSender = new CapturingResultSender();
+    FunctionContext context = new FunctionContextImpl("functionId", args, resultSender);
+
+    new ExportLogsFunction().execute(context);
+
+    if (resultSender.getThrowable() != null) {
+      throw resultSender.getThrowable();
+    }
+
+    Cache cache = GemFireCacheImpl.getInstance();
+    assertThat(cache.getRegion(ExportLogsFunction.EXPORT_LOGS_REGION)).isNull();
+  }
+
+  @Test
+  public void createOrGetExistingExportLogsRegionDoesNotBlowUp() throws Exception {
+    ExportLogsFunction.createOrGetExistingExportLogsRegion(false);
+
+    Cache cache = GemFireCacheImpl.getInstance();
+    assertThat(cache.getRegion(ExportLogsFunction.EXPORT_LOGS_REGION)).isNotNull();
+  }
+
+  @Test
+  public void destroyExportLogsRegionWorksAsExpectedForInitiatingMember() throws IOException, ClassNotFoundException {
+    ExportLogsFunction.createOrGetExistingExportLogsRegion(true);
+    Cache cache = GemFireCacheImpl.getInstance();
+    assertThat(cache.getRegion(ExportLogsFunction.EXPORT_LOGS_REGION)).isNotNull();
+
+    ExportLogsFunction.destroyExportLogsRegion();
+    assertThat(cache.getRegion(ExportLogsFunction.EXPORT_LOGS_REGION)).isNull();
+  }
+
+
+  @Test
+  public void argsCorrectlyBuildALogLevelFilter() {
+    ExportLogsFunction.Args args = new ExportLogsFunction.Args(null, null, "info", false);
+
+    assertThat(args.getPermittedLogLevels()).contains("info");
+    assertThat(args.getPermittedLogLevels()).contains("error");
+    assertThat(args.getPermittedLogLevels()).doesNotContain("fine");
+  }
+
+  private static class CapturingResultSender implements ResultSender {
+    private Throwable t;
+
+    public Throwable getThrowable() {
+      return t;
+    }
+
+    @Override
+    public void sendResult(Object oneResult) {
+
+    }
+
+    @Override
+    public void lastResult(Object lastResult) {
+
+    }
+
+    @Override
+    public void sendException(Throwable t) {
+      this.t = t;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogExporterTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogExporterTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogExporterTest.java
new file mode 100644
index 0000000..bd8a6ac
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogExporterTest.java
@@ -0,0 +1,104 @@
+/*
+ * 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.util.stream.Collectors.toList;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.geode.management.internal.configuration.utils.ZipUtils;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.text.ParseException;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Stream;
+
+@Category(IntegrationTest.class)
+public class LogExporterTest {
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  private LogExporter logExporter;
+
+  @Before
+  public void setup() throws ParseException {
+    LogFilter logFilter = mock(LogFilter.class);
+
+    when(logFilter.acceptsFile(any())).thenReturn(true);
+    when(logFilter.acceptsLine(any())).thenReturn(LogFilter.LineFilterResult.LINE_ACCEPTED);
+
+    logExporter = new LogExporter(logFilter);
+  }
+
+
+  @Test
+  public void exportBuildsZipCorrectlyWithTwoLogFiles() throws Exception {
+    File serverWorkingDir = temporaryFolder.newFolder("serverWorkingDir");
+    File logFile1 = new File(serverWorkingDir, "server1.log");
+    FileUtils.writeStringToFile(logFile1, "some log for server1 \n some other log line");
+    File logFile2 = new File(serverWorkingDir, "server2.log");
+    FileUtils.writeStringToFile(logFile2, "some log for server2 \n some other log line");
+
+    File notALogFile = new File(serverWorkingDir, "foo.txt");
+    FileUtils.writeStringToFile(notALogFile, "some text");
+
+
+    Path zippedExport = logExporter.export(serverWorkingDir.toPath());
+
+    File unzippedExportDir = temporaryFolder.newFolder("unzippedExport");
+    ZipUtils.unzip(zippedExport.toString(), unzippedExportDir.getCanonicalPath());
+
+    assertThat(unzippedExportDir.listFiles()).hasSize(2);
+    List<File> exportedFiles = Stream.of(unzippedExportDir.listFiles())
+        .sorted(Comparator.comparing(File::getName)).collect(toList());
+
+    assertThat(exportedFiles.get(0)).hasSameContentAs(logFile1);
+    assertThat(exportedFiles.get(1)).hasSameContentAs(logFile2);
+  }
+
+  @Test
+  public void findLogFilesExcludesFilesWithIncorrectExtension() throws Exception {
+    File workingDir = temporaryFolder.newFolder("workingDir");
+    File logFile = new File(workingDir, "server.log");
+
+    FileUtils.writeStringToFile(logFile, "some log line");
+
+    File notALogFile = new File(workingDir, "foo.txt");
+    FileUtils.writeStringToFile(notALogFile, "some text");
+
+    assertThat(logExporter.findLogFiles(workingDir.toPath())).contains(logFile.toPath());
+    assertThat(logExporter.findLogFiles(workingDir.toPath())).doesNotContain(notALogFile.toPath());
+  }
+
+  @Test
+  public void findStatFiles() throws Exception {
+
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogFilterTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogFilterTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogFilterTest.java
new file mode 100644
index 0000000..ca94fb6
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogFilterTest.java
@@ -0,0 +1,126 @@
+/*
+ * 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.util.stream.Collectors.toSet;
+import static org.apache.geode.management.internal.cli.util.LogFilter.LineFilterResult.LINE_ACCEPTED;
+import static org.apache.geode.management.internal.cli.util.LogFilter.LineFilterResult.LINE_REJECTED;
+import static org.apache.geode.management.internal.cli.util.LogFilter.LineFilterResult.REMAINDER_OF_FILE_REJECTED;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.geode.test.junit.categories.UnitTest;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.time.LocalDateTime;
+import java.util.Set;
+import java.util.stream.Stream;
+
+@Category(UnitTest.class)
+public class LogFilterTest {
+  @Test
+  public void permittedLogLevelsCanFilterLines() throws Exception {
+    Set<String> permittedLogLevels = Stream.of("info", "finest").collect(toSet());
+
+    LogFilter logFilter = new LogFilter(permittedLogLevels, null, null);
+
+    LocalDateTime now = LocalDateTime.now();
+    assertThat(logFilter.acceptsLogEntry("info", now)).isEqualTo(LINE_ACCEPTED);
+    assertThat(logFilter.acceptsLogEntry("finest", now)).isEqualTo(LINE_ACCEPTED);
+    assertThat(logFilter.acceptsLogEntry("fine", now)).isEqualTo(LINE_REJECTED);
+    assertThat(logFilter.acceptsLogEntry("error", now)).isEqualTo(LINE_REJECTED);
+  }
+
+
+  @Test
+  public void startDateCanFilterLines() {
+    LocalDateTime startDate = LocalDateTime.now().minusDays(2);
+
+    LogFilter logFilter = new LogFilter(null, startDate, null);
+
+    assertThat(logFilter.acceptsLogEntry("info", LocalDateTime.now())).isEqualTo(LINE_ACCEPTED);
+    assertThat(logFilter.acceptsLogEntry("info", startDate)).isEqualTo(LINE_ACCEPTED);
+    assertThat(logFilter.acceptsLogEntry("fine", startDate)).isEqualTo(LINE_ACCEPTED);
+
+    assertThat(logFilter.acceptsLogEntry("info", LocalDateTime.now().minusDays(3)))
+        .isEqualTo(LINE_REJECTED);
+  }
+
+  @Test
+  public void endDateCanFilterLines() {
+    LocalDateTime endDate = LocalDateTime.now().minusDays(2);
+
+    LogFilter logFilter = new LogFilter(null, null, endDate);
+
+    assertThat(logFilter.acceptsLogEntry("info", LocalDateTime.now().minusDays(3)))
+        .isEqualTo(LINE_ACCEPTED);
+
+    assertThat(logFilter.acceptsLogEntry("info", endDate)).isEqualTo(LINE_ACCEPTED);
+    assertThat(logFilter.acceptsLogEntry("fine", endDate)).isEqualTo(LINE_ACCEPTED);
+
+    assertThat(logFilter.acceptsLogEntry("info", LocalDateTime.now()))
+        .isEqualTo(REMAINDER_OF_FILE_REJECTED);
+  }
+
+  @Test
+  public void filterWorksWithLevelBasedAndTimeBasedFiltering() {
+    LocalDateTime startDate = LocalDateTime.now().minusDays(5);
+    LocalDateTime endDate = LocalDateTime.now().minusDays(2);
+
+    Set<String> permittedLogLevels = Stream.of("info", "finest").collect(toSet());
+
+    LogFilter logFilter = new LogFilter(permittedLogLevels, startDate, endDate);
+
+
+    assertThat(logFilter.acceptsLogEntry("error", LocalDateTime.now().minusDays(6)))
+        .isEqualTo(LINE_REJECTED);
+    assertThat(logFilter.acceptsLogEntry("info", LocalDateTime.now().minusDays(6)))
+        .isEqualTo(LINE_REJECTED);
+
+    assertThat(logFilter.acceptsLogEntry(null)).isEqualTo(LINE_REJECTED);
+
+
+    assertThat(logFilter.acceptsLogEntry("error", LocalDateTime.now().minusDays(4)))
+        .isEqualTo(LINE_REJECTED);
+    assertThat(logFilter.acceptsLogEntry(null)).isEqualTo(LINE_REJECTED);
+
+    assertThat(logFilter.acceptsLogEntry("info", LocalDateTime.now().minusDays(4)))
+        .isEqualTo(LINE_ACCEPTED);
+    assertThat(logFilter.acceptsLogEntry(null)).isEqualTo(LINE_ACCEPTED);
+
+
+
+    assertThat(logFilter.acceptsLogEntry("error", LocalDateTime.now().minusDays(1)))
+        .isEqualTo(REMAINDER_OF_FILE_REJECTED);
+    assertThat(logFilter.acceptsLogEntry(null)).isEqualTo(REMAINDER_OF_FILE_REJECTED);
+
+    assertThat(logFilter.acceptsLogEntry("info", LocalDateTime.now().minusDays(1)))
+        .isEqualTo(REMAINDER_OF_FILE_REJECTED);
+  }
+
+  @Test
+  public void firstLinesAreAcceptedIfParsableLineHasNotBeenSeenYet() {
+    LogFilter logFilter = new LogFilter(Stream.of("info").collect(toSet()), null, null);
+
+    assertThat(logFilter.acceptsLogEntry(null)).isEqualTo(LINE_ACCEPTED);
+    assertThat(logFilter.acceptsLogEntry(null)).isEqualTo(LINE_ACCEPTED);
+
+    assertThat(logFilter.acceptsLogEntry("error", LocalDateTime.now())).isEqualTo(LINE_REJECTED);
+    assertThat(logFilter.acceptsLogEntry(null)).isEqualTo(LINE_REJECTED);
+
+  }
+}

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogLevelExtractorTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogLevelExtractorTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogLevelExtractorTest.java
new file mode 100644
index 0000000..320a3bc
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/LogLevelExtractorTest.java
@@ -0,0 +1,61 @@
+/*
+ * 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 org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.geode.test.junit.categories.UnitTest;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.time.LocalDateTime;
+
+@Category(UnitTest.class)
+public class LogLevelExtractorTest {
+  @Test
+  public void extractWorksCorrectlyForLineFromLogFile() throws Exception {
+    String logLine =
+        "[info 2017/02/07 11:16:36.694 PST locator1 <locator request thread[1]> tid=0x27] Mapped \"{[/v1/async-event-queues],methods=[GET]}\" onto public java.lang.String";
+
+    LogLevelExtractor.Result result = LogLevelExtractor.extract(logLine);
+
+    assertThat(result).isNotNull();
+    assertThat(result.getLogLevel()).isEqualTo("info");
+
+    assertThat(result.getLogTimestamp().toString()).isEqualTo("2017-02-07T11:16:36.694");
+  }
+
+  @Test
+  public void extractReturnsNullIfNoTimestamp() throws Exception {
+    String logLine = "[info (this line is not a valid log statement since it has no timestamp)";
+
+    LogLevelExtractor.Result result = LogLevelExtractor.extract(logLine);
+
+    assertThat(result).isNull();
+  }
+
+  @Test
+  public void extractReturnsNullIfLineDoesNotMatchPattern() throws Exception {
+    String logLine = "some line containing a date like 2017/02/07 11:16:36.694 PST ";
+
+    LogLevelExtractor.Result result = LogLevelExtractor.extract(logLine);
+
+    assertThat(result).isNull();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/MergeLogsTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/MergeLogsTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/MergeLogsTest.java
new file mode 100644
index 0000000..7f4ffd4
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/MergeLogsTest.java
@@ -0,0 +1,114 @@
+/*
+ * 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.util.stream.Collectors.joining;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.management.cli.Result;
+import org.apache.geode.test.dunit.rules.Locator;
+import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
+import org.apache.geode.test.dunit.rules.Server;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.Arrays;
+import java.util.Properties;
+
+@Category(DistributedTest.class)
+public class MergeLogsTest {
+  @Rule
+  public LocatorServerStartupRule lsRule = new LocatorServerStartupRule();
+  private Locator locator;
+
+  private static final String MESSAGE_1 = "MergeLogsMessage1";
+  private static final String MESSAGE_2 = "MergeLogsMessage2";
+  private static final String MESSAGE_3 = "MergeLogsMessage3";
+  private static final String MESSAGE_4 = "MergeLogsMessage4";
+  private static final String MESSAGE_5 = "MergeLogsMessage5";
+  private static final String MESSAGE_6 = "MergeLogsMessage6";
+
+  @Before
+  public void setup() throws Exception {
+    Properties properties = new Properties();
+    properties.setProperty(DistributionConfig.LOG_LEVEL_NAME, "info");
+    locator = lsRule.startLocatorVM(0, properties);
+
+    properties
+        .setProperty(DistributionConfig.LOCATORS_NAME, "localhost[" + locator.getPort() + "]");
+
+    Server server = lsRule.startServerVM(1, properties);
+    Server server2 = lsRule.startServerVM(2, properties);
+
+    locator.invoke(() -> LogService.getLogger().info(MESSAGE_1));
+    server.invoke(() -> LogService.getLogger().info(MESSAGE_2));
+    server2.invoke(() -> LogService.getLogger().info(MESSAGE_3));
+
+    locator.invoke(() -> LogService.getLogger().info(MESSAGE_4));
+    server.invoke(() -> LogService.getLogger().info(MESSAGE_5));
+    server2.invoke(() -> LogService.getLogger().info(MESSAGE_6));
+  }
+
+  @Test
+  public void testExportInProcess() throws Exception {
+    assertThat(MergeLogs.findLogFilesToMerge(lsRule.getTempFolder().getRoot())).hasSize(3);
+
+    File result = MergeLogs.mergeLogFile(lsRule.getTempFolder().getRoot().getCanonicalPath());
+    assertOnLogContents(result);
+  }
+    @Test
+  public void testExportInNewProcess() throws Throwable {
+    assertThat(MergeLogs.findLogFilesToMerge(lsRule.getTempFolder().getRoot())).hasSize(3);
+
+    MergeLogs.mergeLogsInNewProcess(lsRule.getTempFolder().getRoot().toPath());
+      File result = Arrays.stream(lsRule.getTempFolder().getRoot().listFiles()).filter((File f) -> f.getName().startsWith("merge"))
+            .findFirst().orElseThrow(() -> {throw new AssertionError("No merged log file found");});
+    assertOnLogContents(result);
+
+  }
+
+  private void assertOnLogContents (File mergedLogFile) throws IOException {
+    String
+        mergedLines =
+        FileUtils.readLines(mergedLogFile, Charset.defaultCharset()).stream().collect(joining("\n"));
+
+    assertThat(mergedLines).contains(MESSAGE_1);
+    assertThat(mergedLines).contains(MESSAGE_2);
+    assertThat(mergedLines).contains(MESSAGE_3);
+    assertThat(mergedLines).contains(MESSAGE_4);
+    assertThat(mergedLines).contains(MESSAGE_5);
+    assertThat(mergedLines).contains(MESSAGE_6);
+
+    //Make sure that our merged log file contains the proper ordering
+    assertThat(mergedLines.indexOf(MESSAGE_1)).isLessThan(mergedLines.indexOf(MESSAGE_2));
+    assertThat(mergedLines.indexOf(MESSAGE_2)).isLessThan(mergedLines.indexOf(MESSAGE_3));
+    assertThat(mergedLines.indexOf(MESSAGE_3)).isLessThan(mergedLines.indexOf(MESSAGE_4));
+    assertThat(mergedLines.indexOf(MESSAGE_4)).isLessThan(mergedLines.indexOf(MESSAGE_5));
+    assertThat(mergedLines.indexOf(MESSAGE_5)).isLessThan(mergedLines.indexOf(MESSAGE_6));
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/configuration/EventTestCacheWriter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/EventTestCacheWriter.java b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/EventTestCacheWriter.java
new file mode 100644
index 0000000..27459c9
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/EventTestCacheWriter.java
@@ -0,0 +1,36 @@
+/*
+ * 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.configuration;
+
+import org.apache.geode.cache.CacheWriter;
+import org.apache.geode.cache.CacheWriterException;
+import org.apache.geode.cache.EntryEvent;
+import org.apache.geode.cache.RegionEvent;
+import org.apache.geode.cache.util.CacheWriterAdapter;
+
+import java.io.Serializable;
+
+public class EventTestCacheWriter extends CacheWriterAdapter implements Serializable {
+  public static boolean hasResult = false;
+
+  @Override
+  public void beforeCreate(EntryEvent event) throws CacheWriterException {
+    System.out.println("key: " + event.getKey());
+    System.out.println("value: " + event.getNewValue());
+    hasResult = true;
+  }
+}

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java
index 1791574..6f13f62 100755
--- a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/ZipUtilsJUnitTest.java
@@ -17,6 +17,7 @@ package org.apache.geode.management.internal.configuration;
 import static org.junit.Assert.*;
 
 import java.io.File;
+import java.io.IOException;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
@@ -107,4 +108,19 @@ public class ZipUtilsJUnitTest {
     assertTrue(clusterText.equals(FileUtils.readFileToString(destinationClusterTextFile)));
     assertTrue(groupText.equals(FileUtils.readFileToString(destinationGroupTextFile)));
   }
+
+  @Test
+  public void zipUtilsCanCreateParentDirsIfNecessary() throws IOException {
+    File newFolder = new File(zipFolder, "newFolder");
+    assertFalse(newFolder.exists());
+
+    File zipFile = new File(newFolder, "target.zip");
+    assertFalse(zipFile.exists());
+    assertFalse(zipFile.isFile());
+
+    ZipUtils.zipDirectory(sourceFolder.getCanonicalPath(), zipFile.getCanonicalPath());
+    assertTrue(newFolder.exists());
+    assertTrue(zipFile.exists());
+    assertTrue(zipFile.isFile());
+  }
 }

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
index 4729be3..93572fe 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java
@@ -164,6 +164,10 @@ public class GfshShellConnectionRule extends DescribedExternalResource {
 
   public CommandResult executeAndVerifyCommand(String command) throws Exception {
     CommandResult result = executeCommand(command);
+
+    if (result.getStatus() != Result.Status.OK) {
+      System.out.println("broken");
+    }
     assertThat(result.getStatus()).describedAs(result.getContent().toString())
         .isEqualTo(Result.Status.OK);
     return result;

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.java
index 84c660c..2ec2088 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorStarterRule.java
@@ -114,6 +114,7 @@ public class LocatorStarterRule extends ExternalResource implements Serializable
         }
       }
     }
+
     locator = (InternalLocator) Locator.startLocatorAndDS(0, null, properties);
     int locatorPort = locator.getPort();
     locator.resetInternalLocatorFileNamesWithCorrectPortNumber(locatorPort);

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-core/src/test/java/org/apache/geode/test/dunit/rules/Member.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/Member.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/Member.java
index 5f46da2..59215a3 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/Member.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/Member.java
@@ -26,7 +26,7 @@ import java.io.Serializable;
  * A server or locator inside a DUnit {@link VM}.
  */
 public abstract class Member implements Serializable {
-  private VM vm;
+  private transient VM vm;
   private int port;
   private File workingDir;
   private String name;

http://git-wip-us.apache.org/repos/asf/geode/blob/4c6f3695/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/CommandOverHttpDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/CommandOverHttpDUnitTest.java b/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/CommandOverHttpDUnitTest.java
index d4869c2..3f3358d 100644
--- a/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/CommandOverHttpDUnitTest.java
+++ b/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/CommandOverHttpDUnitTest.java
@@ -31,11 +31,7 @@ import org.apache.geode.test.junit.runner.SuiteRunner;
     GemfireDataCommandsDUnitTest.class,
     GetCommandOnRegionWithCacheLoaderDuringCacheMissDUnitTest.class, IndexCommandsDUnitTest.class,
     ListAndDescribeDiskStoreCommandsDUnitTest.class, ListIndexCommandDUnitTest.class,
-    MemberCommandsDUnitTest.class, MiscellaneousCommandsDUnitTest.class,
-    MiscellaneousCommandsExportLogsPart1DUnitTest.class,
-    MiscellaneousCommandsExportLogsPart2DUnitTest.class,
-    MiscellaneousCommandsExportLogsPart3DUnitTest.class,
-    MiscellaneousCommandsExportLogsPart4DUnitTest.class, QueueCommandsDUnitTest.class,
+    MemberCommandsDUnitTest.class, MiscellaneousCommandsDUnitTest.class,QueueCommandsDUnitTest.class,
     ShellCommandsDUnitTest.class, ShowDeadlockDUnitTest.class, ShowMetricsDUnitTest.class,
     ShowStackTraceDUnitTest.class, UserCommandsDUnitTest.class})
 public class CommandOverHttpDUnitTest {