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:40 UTC
[13/50] [abbrv] geode git commit: GEODE-2267: enable gfsh to download
file from http connection (GEODE-2418)
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/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 93572fe..dd0939e 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
@@ -16,6 +16,7 @@ package org.apache.geode.test.dunit.rules;
import static org.assertj.core.api.Assertions.assertThat;
+import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.HeadlessGfsh;
@@ -23,6 +24,8 @@ import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.CommandResult;
import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
import org.apache.geode.test.junit.rules.DescribedExternalResource;
+import org.json.JSONArray;
+import org.junit.rules.TemporaryFolder;
import org.junit.runner.Description;
/**
@@ -53,6 +56,7 @@ public class GfshShellConnectionRule extends DescribedExternalResource {
private PortType portType = PortType.jmxManger;
private HeadlessGfsh gfsh = null;
private boolean connected = false;
+ private TemporaryFolder temporaryFolder = new TemporaryFolder();
public GfshShellConnectionRule() {}
@@ -63,7 +67,9 @@ public class GfshShellConnectionRule extends DescribedExternalResource {
@Override
protected void before(Description description) throws Throwable {
- this.gfsh = new HeadlessGfsh(getClass().getName(), 30, "gfsh_files");
+ temporaryFolder.create();
+ this.gfsh = new HeadlessGfsh(getClass().getName(), 30,
+ temporaryFolder.newFolder("gfsh_files").getAbsolutePath());
// do not auto connect if no port initialized
if (port < 0) {
return;
@@ -89,6 +95,11 @@ public class GfshShellConnectionRule extends DescribedExternalResource {
assertThat(this.connected).isTrue();
}
+ public void connectAndVerify(int port, PortType type, String... options) throws Exception {
+ connect(port, type, options);
+ assertThat(this.connected).isTrue();
+ }
+
public void connect(int port, PortType type, String... options) throws Exception {
CliUtil.isGfshVM = true;
final CommandStringBuilder connectCommand = new CommandStringBuilder(CliStrings.CONNECT);
@@ -131,6 +142,7 @@ public class GfshShellConnectionRule extends DescribedExternalResource {
@Override
protected void after(Description description) throws Throwable {
+ temporaryFolder.delete();
if (connected) {
disconnect();
}
@@ -157,19 +169,27 @@ public class GfshShellConnectionRule extends DescribedExternalResource {
public CommandResult executeCommand(String command) throws Exception {
gfsh.executeCommand(command);
CommandResult result = (CommandResult) gfsh.getResult();
- System.out.println("Command Result: \n" + gfsh.outputString);
+ if (StringUtils.isBlank(gfsh.outputString)) {
+ // print out the message body as the command result
+ JSONArray messages = ((JSONArray) result.getContent().get("message"));
+ if (messages != null) {
+ for (int i = 0; i < messages.length(); i++) {
+ gfsh.outputString += messages.getString(i) + "\n";
+ }
+ }
+ }
+ System.out.println("Command result for <" + command + ">: \n" + gfsh.outputString);
return result;
}
+ public String getGfshOutput() {
+ return gfsh.outputString;
+ }
+
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);
+ assertThat(result.getStatus()).isEqualTo(Result.Status.OK);
return result;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerConfigurationRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerConfigurationRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerConfigurationRule.java
deleted file mode 100644
index 0a63962..0000000
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerConfigurationRule.java
+++ /dev/null
@@ -1,151 +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.test.dunit.rules;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.apache.geode.test.dunit.Host.*;
-import static org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase.*;
-import static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
-import org.awaitility.Awaitility;
-import org.junit.rules.ExternalResource;
-
-import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.distributed.internal.InternalLocator;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-
-
-public class LocatorServerConfigurationRule extends ExternalResource implements Serializable {
-
- private int locatorPort = 0;
-
- private boolean locatorInitialized = false;
-
- private JUnit4DistributedTestCase testCase;
-
- public LocatorServerConfigurationRule(JUnit4DistributedTestCase testCase) {
- this.testCase = testCase;
- }
-
- Host host = getHost(0);
- VM locator = host.getVM(0);
-
- @Override
- protected void before() {
- // Add initialization requirement if any.
- disconnectAllFromDS();
- }
-
- @Override
- protected void after() {
- disconnectAllFromDS();
- }
-
- /**
- * Returns getHost(0).getVM(0) as a locator instance with the given configuration properties.
- *
- * @param locatorProperties
- *
- * @return VM locator vm
- *
- * @throws IOException
- */
- public VM getLocatorVM(Properties locatorProperties) throws IOException {
- if (!locatorProperties.containsKey(MCAST_PORT)) {
- locatorProperties.setProperty(MCAST_PORT, "0");
- }
-
- locatorPort = locator.invoke(() -> {
- InternalLocator locator =
- (InternalLocator) Locator.startLocatorAndDS(0, null, locatorProperties);
- locator.resetInternalLocatorFileNamesWithCorrectPortNumber(locatorPort);
-
- if (locator.getConfig().getEnableClusterConfiguration()) {
- Awaitility.await().atMost(65, TimeUnit.SECONDS)
- .until(() -> assertTrue(locator.isSharedConfigurationRunning()));
- }
- return locator.getPort();
- });
-
- this.locatorInitialized = true;
- return locator;
- }
-
- /**
- * Returns a node VM with given configuration properties.
- *
- * @param index valid 1 to 3 (returns getHist(0).getVM(index)
- * @param properties
- *
- * @return VM node vm
- */
- public VM getServerVM(int index, Properties properties) {
- assertTrue("Locator not initialized. Initialize locator by calling getLocatorVM()",
- this.locatorInitialized);
- assertTrue("VM with index 0 is used for locator service.", (index != 0));
- VM nodeVM = getNodeVM(index);
- nodeVM.invoke(() -> {
- getSystem(properties);
- });
- return nodeVM;
- }
-
- /**
- * this will simply returns the node
- *
- * @param index
- * @return
- */
- public VM getNodeVM(int index) {
- return host.getVM(index);
- }
-
- public InternalDistributedSystem getSystem(Properties properties) {
- if (!properties.containsKey(MCAST_PORT)) {
- properties.setProperty(MCAST_PORT, "0");
- }
- properties.setProperty(LOCATORS, getHostName() + "[" + locatorPort + "]");
- InternalDistributedSystem ds = testCase.getSystem(properties);
- if (testCase instanceof JUnit4CacheTestCase) {
- ((JUnit4CacheTestCase) testCase).getCache();
- }
- return ds;
- }
-
- public int getLocatorPort() {
- return locatorPort;
- }
-
- private String getHostName() {
- try {
- return InetAddress.getLocalHost().getHostName();
- } catch (UnknownHostException ignore) {
- return "localhost";
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
index 39c13d0..ad8c033 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/LocatorServerStartupRule.java
@@ -16,6 +16,7 @@
package org.apache.geode.test.dunit.rules;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
import static org.apache.geode.distributed.ConfigurationProperties.NAME;
import static org.apache.geode.test.dunit.Host.getHost;
@@ -106,7 +107,8 @@ public class LocatorServerStartupRule extends ExternalResource implements Serial
}
/**
- * starts a cache server that does not connect to a locator
+ * starts a cache server that does not connect to a locator, unless the properties it passes in
+ * has "locators" property.
*
* @return VM node vm
*/
@@ -114,16 +116,39 @@ public class LocatorServerStartupRule extends ExternalResource implements Serial
return startServerVM(index, properties, -1);
}
+ /**
+ * start a server that connects to this locatorPort
+ *
+ * @param index
+ * @param locatorPort
+ * @return
+ * @throws IOException
+ */
public Server startServerVM(int index, int locatorPort) throws IOException {
return startServerVM(index, new Properties(), locatorPort);
}
+ public Server startServerAsJmxManager(int index, int jmxManagerPort) throws IOException {
+ Properties properties = new Properties();
+ properties.setProperty(JMX_MANAGER_PORT, jmxManagerPort + "");
+ return startServerVM(index, properties);
+ }
+
+ public Server startServerAsEmbededLocator(int index, int locatorPort, int jmxManagerPort)
+ throws IOException {
+ Properties properties = new Properties();
+ properties.setProperty("start-locator", "localhost[" + locatorPort + "]");
+ if (jmxManagerPort > 0) {
+ properties.setProperty(JMX_MANAGER_PORT, jmxManagerPort + "");
+ }
+ return startServerVM(index, properties);
+ }
+
/**
* Starts a cache server that connect to the locator running at the given port.
*/
public Server startServerVM(int index, Properties properties, int locatorPort)
throws IOException {
-
String name = "server-" + index;
properties.setProperty(NAME, name);
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
index 8c0fb45..b1d6887 100755
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
+++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedSerializables.txt
@@ -563,6 +563,8 @@ org/apache/geode/management/internal/cli/functions/DestroyDiskStoreFunction,true
org/apache/geode/management/internal/cli/functions/DestroyIndexFunction,true,1
org/apache/geode/management/internal/cli/functions/ExportConfigFunction,true,1
org/apache/geode/management/internal/cli/functions/ExportDataFunction,true,1
+org/apache/geode/management/internal/cli/functions/ExportLogsFunction,true,1
+org/apache/geode/management/internal/cli/functions/ExportLogsFunction$Args,false,endTime:java/lang/String,logLevel:java/lang/String,logLevelOnly:boolean,startTime:java/lang/String
org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction,true,4366812590788342070
org/apache/geode/management/internal/cli/functions/FetchRegionAttributesFunction$FetchRegionAttributesFunctionResult,true,-3970828263897978845,cacheListenerClasses:java/lang/String[],cacheLoaderClass:java/lang/String,cacheWriterClass:java/lang/String,regionAttributes:org/apache/geode/cache/RegionAttributes
org/apache/geode/management/internal/cli/functions/FetchSharedConfigurationStatusFunction,true,1
@@ -618,8 +620,10 @@ org/apache/geode/management/internal/cli/shell/JMXInvocationException,true,-4265
org/apache/geode/management/internal/cli/shell/jline/ANSIHandler$ANSIStyle,false
org/apache/geode/management/internal/cli/util/DiskStoreNotFoundException,true,-5184836041554948093
org/apache/geode/management/internal/cli/util/EvictionAttributesInfo,true,1,evictionAction:java/lang/String,evictionAlgorithm:java/lang/String,evictionMaxValue:int
+org/apache/geode/management/internal/cli/util/ExportLogsCacheWriter,false,currentFile:java/nio/file/Path,currentOutputStream:java/io/BufferedOutputStream
org/apache/geode/management/internal/cli/util/FixedPartitionAttributesInfo,false,isPrimary:boolean,numBuckets:int,partitionName:java/lang/String
org/apache/geode/management/internal/cli/util/JConsoleNotFoundException,true,-1485615321440327206
+org/apache/geode/management/internal/cli/util/LogFilter$LineFilterResult,false
org/apache/geode/management/internal/cli/util/MemberInformation,true,1,cacheXmlFilePath:java/lang/String,cpuUsage:java/lang/String,groups:java/lang/String,heapUsage:java/lang/String,host:java/lang/String,id:java/lang/String,initHeapSize:java/lang/String,locatorBindAddress:java/lang/String,locatorPort:int,locators:java/lang/String,logFilePath:java/lang/String,maxHeapSize:java/lang/String,name:java/lang/String,processId:java/lang/String,serverBindAddress:java/lang/String,statArchiveFilePath:java/lang/String,workingDirPath:java/lang/String
org/apache/geode/management/internal/cli/util/MemberNotFoundException,true,5686788909239181174
org/apache/geode/management/internal/cli/util/VisualVmNotFoundException,true,-8491645604829510102
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties b/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
index 694d4ff..2c27654 100644
--- a/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
+++ b/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
@@ -1468,12 +1468,14 @@ IS AVAILABLE\n\
SYNOPSIS\n\
\ \ \ \ Export the log files for a member or members.\n\
SYNTAX\n\
-\ \ \ \ export logs --dir=value [--group=value(nullvalue)*] [--member=value] [--log-level=value]\n\
-\ \ \ \ [--only-log-level=value] [--merge-log=value] [--start-time=value] [--end-time=value]\n\
+\ \ \ \ export logs [--dir=value] [--group=value(nullvalue)*] [--member=value(nullvalue)*]\n\
+\ \ \ \ [--log-level=value] [--only-log-level=value] [--merge-log=value] [--start-time=value]\n\
+\ \ \ \ [--end-time=value]\n\
PARAMETERS\n\
\ \ \ \ dir\n\
-\ \ \ \ \ \ \ \ Directory to which log files will be written.\n\
-\ \ \ \ \ \ \ \ Required: true\n\
+\ \ \ \ \ \ \ \ Local directory to which log files will be written. This is only used when you are\n\
+\ \ \ \ \ \ \ \ exporting logs using http connection. If not specified, user.dir will be used.\n\
+\ \ \ \ \ \ \ \ Required: false\n\
\ \ \ \ group\n\
\ \ \ \ \ \ \ \ Group of members whose log files will be exported.\n\
\ \ \ \ \ \ \ \ Required: false\n\
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/geode-web/build.gradle
----------------------------------------------------------------------
diff --git a/geode-web/build.gradle b/geode-web/build.gradle
index ffab391..d6de656 100755
--- a/geode-web/build.gradle
+++ b/geode-web/build.gradle
@@ -54,6 +54,10 @@ dependencies {
testRuntime project(':geode-core')
testCompile files(project(':geode-core').sourceSets.test.output)
+ testCompile 'com.pholser:junit-quickcheck-core:' + project.'junit-quickcheck.version'
+ testCompile 'com.pholser:junit-quickcheck-generators:' + project.'junit-quickcheck.version'
+ testCompile 'com.pholser:junit-quickcheck-guava:' + project.'junit-quickcheck.version'
+
testRuntime files(war.destinationDir)
}
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/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 3f3358d..5f4cd74 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,9 +31,9 @@ import org.apache.geode.test.junit.runner.SuiteRunner;
GemfireDataCommandsDUnitTest.class,
GetCommandOnRegionWithCacheLoaderDuringCacheMissDUnitTest.class, IndexCommandsDUnitTest.class,
ListAndDescribeDiskStoreCommandsDUnitTest.class, ListIndexCommandDUnitTest.class,
- MemberCommandsDUnitTest.class, MiscellaneousCommandsDUnitTest.class,QueueCommandsDUnitTest.class,
- ShellCommandsDUnitTest.class, ShowDeadlockDUnitTest.class, ShowMetricsDUnitTest.class,
- ShowStackTraceDUnitTest.class, UserCommandsDUnitTest.class})
+ MemberCommandsDUnitTest.class, MiscellaneousCommandsDUnitTest.class,
+ QueueCommandsDUnitTest.class, ShellCommandsDUnitTest.class, ShowDeadlockDUnitTest.class,
+ ShowMetricsDUnitTest.class, ShowStackTraceDUnitTest.class, UserCommandsDUnitTest.class})
public class CommandOverHttpDUnitTest {
@ClassRule
public static ProvideSystemProperty provideSystemProperty =
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsOverHttpDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsOverHttpDUnitTest.java b/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsOverHttpDUnitTest.java
new file mode 100644
index 0000000..8f8342f
--- /dev/null
+++ b/geode-web/src/test/java/org/apache/geode/management/internal/cli/commands/ExportLogsOverHttpDUnitTest.java
@@ -0,0 +1,116 @@
+/*
+ * 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.HTTP_SERVICE_BIND_ADDRESS;
+import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.common.collect.Sets;
+
+import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.test.dunit.rules.GfshShellConnectionRule;
+import org.apache.geode.test.dunit.rules.Locator;
+import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+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.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+@Category(DistributedTest.class)
+public class ExportLogsOverHttpDUnitTest {
+
+ @Rule
+ public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+ @ClassRule
+ public static LocatorServerStartupRule lsRule = new LocatorServerStartupRule();
+
+ @ClassRule
+ public static GfshShellConnectionRule gfshConnector = new GfshShellConnectionRule();
+
+ private static int jmxPort, httpPort;
+ private static Properties locatorProperties;
+ private static Set<String> expectedZipEntries = new HashSet<>();
+
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(2);
+ httpPort = ports[0];
+ jmxPort = ports[1];
+ locatorProperties = new Properties();
+ locatorProperties.setProperty(HTTP_SERVICE_BIND_ADDRESS, "localhost");
+ locatorProperties.setProperty(HTTP_SERVICE_PORT, httpPort + "");
+ locatorProperties.setProperty(JMX_MANAGER_PORT, jmxPort + "");
+
+ // start the locator in vm0 and then connect to it over http
+ Locator locator = lsRule.startLocatorVM(0, locatorProperties);
+ lsRule.startServerVM(1, locator.getPort());
+ gfshConnector.connectAndVerify(httpPort, GfshShellConnectionRule.PortType.http);
+
+ expectedZipEntries = Sets.newHashSet("locator-0/locator-0.log", "server-1/server-1.log");
+ }
+
+ @Test
+ public void testExportWithNoDir() throws Exception {
+ // export the logs
+ gfshConnector.executeCommand("export logs");
+ // verify that the message contains a path to the user.dir
+ String message = gfshConnector.getGfshOutput();
+ assertThat(message).contains("Logs exported to: ");
+ assertThat(message).contains(System.getProperty("user.dir"));
+
+ String zipPath = getZipPathFromCommandResult(message);
+ verifyZipContent(zipPath);
+ }
+
+ @Test
+ public void testExportWithDir() throws Exception {
+ File dir = temporaryFolder.newFolder();
+ // export the logs
+ gfshConnector.executeCommand("export logs --dir=" + dir.getAbsolutePath());
+ // verify that the message contains a path to the user.dir
+ String message = gfshConnector.getGfshOutput();
+ assertThat(message).contains("Logs exported to: ");
+ assertThat(message).contains(dir.getAbsolutePath());
+
+ String zipPath = getZipPathFromCommandResult(message);
+ verifyZipContent(zipPath);
+ }
+
+ private void verifyZipContent(String zipPath) throws Exception {
+ Set<String> actualZipEnries =
+ new ZipFile(zipPath).stream().map(ZipEntry::getName).collect(Collectors.toSet());
+
+ assertThat(actualZipEnries).isEqualTo(expectedZipEntries);
+ }
+
+ private String getZipPathFromCommandResult(String message) {
+ return message.replaceAll("Logs exported to: ", "").trim();
+ }
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/RestHttpOperationInvokerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/RestHttpOperationInvokerJUnitTest.java b/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/RestHttpOperationInvokerJUnitTest.java
index 808c78f..1ebe89a 100644
--- a/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/RestHttpOperationInvokerJUnitTest.java
+++ b/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/RestHttpOperationInvokerJUnitTest.java
@@ -14,22 +14,12 @@
*/
package org.apache.geode.management.internal.web.shell;
-import static org.junit.Assert.*;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.springframework.core.io.Resource;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.ResourceAccessException;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.internal.cli.CommandRequest;
@@ -39,6 +29,18 @@ import org.apache.geode.management.internal.web.domain.LinkIndex;
import org.apache.geode.management.internal.web.http.ClientHttpRequest;
import org.apache.geode.management.internal.web.http.HttpMethod;
import org.apache.geode.test.junit.categories.UnitTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.springframework.core.io.Resource;
+import org.springframework.web.client.ResourceAccessException;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
/**
* The RestHttpOperationInvokerJUnitTest class is a test suite of test cases testing the contract
@@ -315,13 +317,13 @@ public class RestHttpOperationInvokerJUnitTest extends AbstractWebTestCase {
@Override
@SuppressWarnings("unchecked")
- protected <T> ResponseEntity<T> send(final ClientHttpRequest request,
- final Class<T> responseType, final Map<String, ?> uriVariables) {
- return new ResponseEntity(expectedResult, HttpStatus.OK);
+ protected <T> T send(final ClientHttpRequest request, final Class<T> responseType,
+ final Map<String, ?> uriVariables) {
+ return (T) expectedResult;
}
};
- final String actualResult = operationInvoker.processCommand(
+ final Object actualResult = operationInvoker.processCommand(
createCommandRequest("list-libraries", Collections.<String, String>emptyMap()));
assertEquals(expectedResult, actualResult);
@@ -351,7 +353,7 @@ public class RestHttpOperationInvokerJUnitTest extends AbstractWebTestCase {
protected void printWarning(final String message, final Object... args) {}
};
- final String actualResult = operationInvoker.processCommand(
+ final Object actualResult = operationInvoker.processCommand(
createCommandRequest("get resource", Collections.<String, String>emptyMap()));
assertEquals(expectedResult, actualResult);
@@ -371,8 +373,8 @@ public class RestHttpOperationInvokerJUnitTest extends AbstractWebTestCase {
protected void printWarning(final String message, final Object... args) {}
@Override
- protected <T> ResponseEntity<T> send(final ClientHttpRequest request,
- final Class<T> responseType, final Map<String, ?> uriVariables) {
+ protected <T> T send(final ClientHttpRequest request, final Class<T> responseType,
+ final Map<String, ?> uriVariables) {
throw new ResourceAccessException("test");
}
@@ -389,7 +391,7 @@ public class RestHttpOperationInvokerJUnitTest extends AbstractWebTestCase {
+ "Please try reconnecting or see the GemFire Manager's log file for further details.",
operationInvoker.getBaseUrl(), "test");
- final String actualResult = operationInvoker.processCommand(
+ final Object actualResult = operationInvoker.processCommand(
createCommandRequest("list-libraries", Collections.<String, String>emptyMap()));
assertFalse(operationInvoker.isConnected());
http://git-wip-us.apache.org/repos/asf/geode/blob/92582fbd/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/SimpleHttpOperationInvokerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/SimpleHttpOperationInvokerJUnitTest.java b/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/SimpleHttpOperationInvokerJUnitTest.java
index 8afbcf6..a704654 100644
--- a/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/SimpleHttpOperationInvokerJUnitTest.java
+++ b/geode-web/src/test/java/org/apache/geode/management/internal/web/shell/SimpleHttpOperationInvokerJUnitTest.java
@@ -14,9 +14,10 @@
*/
package org.apache.geode.management.internal.web.shell;
-import static org.junit.Assert.*;
-
-import java.util.Collections;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import org.apache.geode.management.internal.cli.CommandRequest;
import org.apache.geode.management.internal.web.AbstractWebTestCase;
@@ -25,15 +26,14 @@ import org.apache.geode.management.internal.web.http.ClientHttpRequest;
import org.apache.geode.management.internal.web.http.HttpHeader;
import org.apache.geode.management.internal.web.http.HttpMethod;
import org.apache.geode.test.junit.categories.UnitTest;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
import org.springframework.web.client.ResourceAccessException;
+import java.util.Collections;
+
/**
* The SimpleHttpOperationInvokerJUnitTest class is a test suite of test cases testing the contract
* and functionality of the SimpleHttpOperationInvoker class.
@@ -128,9 +128,8 @@ public class SimpleHttpOperationInvokerJUnitTest extends AbstractWebTestCase {
@Override
@SuppressWarnings("unchecked")
- protected <T> ResponseEntity<T> send(final ClientHttpRequest request,
- final Class<T> responseType) {
- return new ResponseEntity(expectedResult, HttpStatus.OK);
+ protected <T> T send(final ClientHttpRequest request, final Class<T> responseType) {
+ return (T) expectedResult;
}
};
@@ -151,8 +150,7 @@ public class SimpleHttpOperationInvokerJUnitTest extends AbstractWebTestCase {
}
@Override
- protected <T> ResponseEntity<T> send(final ClientHttpRequest request,
- final Class<T> responseType) {
+ protected <T> T send(final ClientHttpRequest request, final Class<T> responseType) {
throw new ResourceAccessException("test");
}