You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2018/08/22 23:26:10 UTC
[geode] branch develop updated: GEODE-3530: Deleting
CliCommandTestBase
This is an automated email from the ASF dual-hosted git repository.
upthewaterspout pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 14a6a05 GEODE-3530: Deleting CliCommandTestBase
14a6a05 is described below
commit 14a6a0551b42a139495114584d9538b762c1dcaf
Author: Dan Smith <up...@apache.org>
AuthorDate: Wed Aug 22 15:48:16 2018 -0700
GEODE-3530: Deleting CliCommandTestBase
It looks like we forgot to delete this file
---
.../internal/cli/commands/CliCommandTestBase.java | 554 ---------------------
1 file changed, 554 deletions(-)
diff --git a/geode-dunit/src/main/java/org/apache/geode/management/internal/cli/commands/CliCommandTestBase.java b/geode-dunit/src/main/java/org/apache/geode/management/internal/cli/commands/CliCommandTestBase.java
deleted file mode 100644
index ffbd908..0000000
--- a/geode-dunit/src/main/java/org/apache/geode/management/internal/cli/commands/CliCommandTestBase.java
+++ /dev/null
@@ -1,554 +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.HTTP_SERVICE_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_BIND_ADDRESS;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.test.dunit.LogWriterUtils.getLogWriter;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.io.IOException;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.junit.Rule;
-import org.springframework.shell.core.CommandMarker;
-
-import org.apache.geode.cache.Cache;
-import org.apache.geode.internal.AvailablePortHelper;
-import org.apache.geode.management.ManagementService;
-import org.apache.geode.management.internal.cli.CommandManager;
-import org.apache.geode.management.internal.cli.HeadlessGfsh;
-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.security.TestSecurityManager;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.rules.DistributedRestoreSystemProperties;
-import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolder;
-
-/**
- * Base class for all the CLI/gfsh command dunit tests.
- *
- * @deprecated use LocatorServerStartupRule and GfshShellConnectorRule instead.
- */
-@Deprecated
-public abstract class CliCommandTestBase extends JUnit4CacheTestCase {
-
- public static final String USE_HTTP_SYSTEM_PROPERTY = "useHTTP";
-
- @Rule
- public DistributedRestoreSystemProperties restoreSystemProperties =
- new DistributedRestoreSystemProperties();
-
- @Rule
- public SerializableTemporaryFolder temporaryFolder = new SerializableTemporaryFolder();
-
- protected int httpPort;
- protected int jmxPort;
- protected String jmxHost;
- protected String gfshDir;
-
- private final boolean useHttpOnConnect = Boolean.getBoolean(USE_HTTP_SYSTEM_PROPERTY);
-
- private transient ManagementService managementService;
- private transient HeadlessGfsh shell;
-
- public static boolean checkIfCommandsAreLoadedOrNot() {
- CommandManager manager = new CommandManager();
- List<CommandMarker> commands = manager.getCommandMarkers();
- return commands.size() >= 1;
-
- }
-
- protected static String commandResultToString(final CommandResult commandResult) {
- assertThat(commandResult).isNotNull();
-
- commandResult.resetToFirstLine();
-
- StringBuilder buffer = new StringBuilder(commandResult.getHeader());
-
- while (commandResult.hasNextLine()) {
- buffer.append(commandResult.nextLine());
- }
-
- buffer.append(commandResult.getFooter());
-
- return buffer.toString();
- }
-
- @Override
- public final void postSetUp() throws Exception {
- setUpCliCommandTestBase();
- postSetUpCliCommandTestBase();
- }
-
- private void setUpCliCommandTestBase() throws Exception {
- this.gfshDir = this.temporaryFolder.newFolder("gfsh_files").getCanonicalPath();
- }
-
- protected void postSetUpCliCommandTestBase() throws Exception {
- // nothing
- }
-
- @Override
- public final void preTearDownCacheTestCase() throws Exception {
- preTearDownCliCommandTestBase();
- destroyDefaultSetup();
- }
-
- protected void preTearDownCliCommandTestBase() throws Exception {
- // nothing
- }
-
- /**
- * Create all of the components necessary for the default setup. The provided properties will be
- * used when creating the default cache. This will create GFSH in the controller VM (VM[4]) (no
- * cache) and the manager in VM[0] (with cache). When adding regions, functions, keys, whatever to
- * your cache for tests, you'll need to use Host.getHost(0).getVM(0).invoke(new
- * SerializableRunnable() { public void run() { ... } } in order to have this setup run in the
- * same VM as the manager.
- *
- * @param props the Properties used when creating the cache for this default setup.
- * @return the default testable GemFire shell.
- */
- protected HeadlessGfsh setUpJmxManagerOnVm0ThenConnect(final Properties props) {
- Object[] result = setUpJMXManagerOnVM(0, props);
- this.jmxHost = (String) result[0];
- this.jmxPort = (Integer) result[1];
- this.httpPort = (Integer) result[2];
- connect(this.jmxHost, this.jmxPort, this.httpPort, getDefaultShell());
- return this.shell;
- }
-
- protected Object[] setUpJMXManagerOnVM(int vm, final Properties props) {
- return setUpJMXManagerOnVM(vm, props, null);
- }
-
- /**
- * @return an object array, result[0] is jmxHost(String), result[1] is jmxPort, result[2] is
- * httpPort
- */
- protected Object[] setUpJMXManagerOnVM(int vm, final Properties props, String jsonFile) {
- Object[] result = Host.getHost(0).getVM(vm).invoke("setUpJmxManagerOnVm" + vm, () -> {
- final Object[] results = new Object[3];
- final Properties localProps = (props != null ? props : getDistributedSystemProperties());
-
- try {
- this.jmxHost = InetAddress.getLocalHost().getHostName();
- } catch (UnknownHostException ignore) {
- this.jmxHost = "localhost";
- }
-
- if (!localProps.containsKey(NAME)) {
- localProps.setProperty(NAME, "Manager");
- }
-
- if (jsonFile != null) {
- localProps.setProperty(TestSecurityManager.SECURITY_JSON, jsonFile);
- }
-
- final int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(2);
-
- this.jmxPort = ports[0];
- this.httpPort = ports[1];
-
- localProps.setProperty(JMX_MANAGER, "true");
- localProps.setProperty(JMX_MANAGER_START, "true");
- localProps.setProperty(JMX_MANAGER_BIND_ADDRESS, String.valueOf(this.jmxHost));
- localProps.setProperty(JMX_MANAGER_PORT, String.valueOf(this.jmxPort));
- localProps.setProperty(HTTP_SERVICE_PORT, String.valueOf(this.httpPort));
-
- getSystem(localProps);
- verifyManagementServiceStarted(getCache());
-
- IgnoredException.addIgnoredException("org.eclipse.jetty.io.EofException");
- IgnoredException.addIgnoredException("java.nio.channels.ClosedChannelException");
-
- results[0] = this.jmxHost;
- results[1] = this.jmxPort;
- results[2] = this.httpPort;
- return results;
- });
-
- return result;
- }
-
- /**
- * Destroy all of the components created for the default setup.
- */
- protected void destroyDefaultSetup() {
- if (this.shell != null) {
- executeCommand(this.shell, "exit");
- this.shell.terminate();
- this.shell = null;
- }
-
- disconnectAllFromDS();
-
- Host.getHost(0).getVM(0).invoke("verify service stopped",
- () -> verifyManagementServiceStopped());
- }
-
- /**
- * Start the default management service using the provided Cache.
- *
- * @param cache Cache to use when creating the management service
- */
- private void verifyManagementServiceStarted(Cache cache) {
- assertThat(cache).isNotNull();
-
- this.managementService = ManagementService.getExistingManagementService(cache);
- assertThat(this.managementService).isNotNull();
- assertThat(this.managementService.isManager()).isTrue();
- assertThat(checkIfCommandsAreLoadedOrNot()).isTrue();
- }
-
- /**
- * Stop the default management service.
- */
- private void verifyManagementServiceStopped() {
- if (this.managementService != null) {
- assertThat(this.managementService.isManager()).isFalse();
- this.managementService = null;
- }
- }
-
- protected void connect(final String host, final int jmxPort, final int httpPort,
- HeadlessGfsh shell) {
- connect(host, jmxPort, httpPort, shell, null, null);
- }
-
- protected void connect(final String host, final int jmxPort, final int httpPort,
- HeadlessGfsh shell, String username, String password) {
- final CommandStringBuilder command = new CommandStringBuilder(CliStrings.CONNECT);
-
- String endpoint;
- if (this.useHttpOnConnect) {
- endpoint = "http://" + host + ":" + httpPort + "/gemfire/v1";
- command.addOption(CliStrings.CONNECT__USE_HTTP, Boolean.TRUE.toString());
- command.addOption(CliStrings.CONNECT__URL, endpoint);
- } else {
- endpoint = host + "[" + jmxPort + "]";
- command.addOption(CliStrings.CONNECT__JMX_MANAGER, endpoint);
- }
- if (username != null) {
- command.addOption(CliStrings.CONNECT__USERNAME, username);
- }
- if (password != null) {
- command.addOption(CliStrings.CONNECT__PASSWORD, password);
- }
- System.out.println(getClass().getSimpleName() + " using endpoint: " + endpoint);
-
- CommandResult result = executeCommand(shell, command.toString());
-
- if (!shell.isConnectedAndReady()) {
- throw new AssertionError("Execution of " + command + " failed to connect to manager "
- + endpoint + " result=" + commandResultToString(result));
- }
-
- info("Successfully connected to managing node using "
- + (this.useHttpOnConnect ? "HTTP" : "JMX"));
- assertThat(shell.isConnectedAndReady()).isTrue();
- }
-
- /**
- * Get the default shell (will create one if it doesn't already exist).
- *
- * @return The default shell
- */
- protected synchronized HeadlessGfsh getDefaultShell() {
- if (this.shell == null) {
- this.shell = createShell();
- }
-
- return this.shell;
- }
-
- /**
- * Create a HeadlessGfsh object.
- *
- * @return The created shell.
- */
- private HeadlessGfsh createShell() {
- try {
- String shellId = getClass().getSimpleName() + "_" + getName();
- HeadlessGfsh shell = new HeadlessGfsh(shellId, 30, this.gfshDir);
- // Added to avoid trimming of the columns
- info("Started testable shell: " + shell);
- return shell;
- } catch (ClassNotFoundException | IOException e) {
- throw new AssertionError(e);
- }
- }
-
- /**
- * Execute a command using the default shell and clear the shell events before returning.
- *
- * @param command Command to execute
- * @return The result of the command execution
- */
- protected CommandResult executeCommand(String command) {
- assertThat(command).isNotNull();
-
- return executeCommand(getDefaultShell(), command);
- }
-
- /**
- * Execute a command in the provided shell and clear the shell events before returning.
- *
- * @param shell Shell in which to execute the command.
- * @param command Command to execute
- * @return The result of the command execution
- */
- protected CommandResult executeCommand(HeadlessGfsh shell, String command) {
- assertThat(shell).isNotNull();
- assertThat(command).isNotNull();
-
- CommandResult commandResult = executeCommandWithoutClear(shell, command);
- shell.clearEvents();
- return commandResult;
- }
-
- /**
- * Execute a command using the default shell. Useful for getting additional information from the
- * shell after the command has been executed (using getDefaultShell().???). Caller is responsible
- * for calling getDefaultShell().clearEvents() when done.
- *
- * @param command Command to execute
- * @return The result of the command execution
- */
- protected CommandResult executeCommandWithoutClear(String command) {
- assertThat(command).isNotNull();
-
- return executeCommandWithoutClear(getDefaultShell(), command);
- }
-
- /**
- * Execute a command in the provided shell. Useful for getting additional information from the
- * shell after the command has been executed (using getDefaultShell().???). Caller is responsible
- * for calling getDefaultShell().clearEvents() when done.
- *
- * @param shell Shell in which to execute the command.
- * @param command Command to execute
- * @return The result of the command execution
- */
- protected CommandResult executeCommandWithoutClear(HeadlessGfsh shell, String command) {
- assertThat(shell).isNotNull();
- assertThat(command).isNotNull();
-
- shell.executeCommand(command);
- if (shell.hasError()) {
- throw new AssertionError(shell.getError());
- }
-
- CommandResult result = null;
- try {
- // TODO: this can result in ClassCastException if command resulted in error
- result = (CommandResult) shell.getResult();
- } catch (InterruptedException ex) {
- throw new AssertionError(ex);
- }
-
- if (result != null) {
- result.resetToFirstLine();
- }
-
- return result;
- }
-
- /**
- * Utility method for viewing the results of a command.
- *
- * @param commandResult Results to dump
- * @param printStream Stream to dump the results to
- */
- protected void printResult(final CommandResult commandResult, PrintStream printStream) {
- assertThat(commandResult).isNotNull();
- assertThat(printStream).isNotNull();
-
- commandResult.resetToFirstLine();
- printStream.print(commandResultToString(commandResult));
- }
-
- /**
- * Utility method for finding the CommandResult object in the Map of CommandOutput objects.
- *
- * @param commandOutput CommandOutput Map to search
- * @return The CommandResult object or null if not found.
- */
- protected CommandResult extractCommandResult(Map<String, Object> commandOutput) {
- assertThat(commandOutput).isNotNull();
-
- for (Object resultObject : commandOutput.values()) {
- if (resultObject instanceof CommandResult) {
- CommandResult result = (CommandResult) resultObject;
- result.resetToFirstLine();
- return result;
- }
- }
- return null;
- }
-
- /**
- * Utility method to determine how many times a string occurs in another string. Note that when
- * looking for matches substrings of other matches will be counted as a match. For example,
- * looking for "AA" in the string "AAAA" will result in a return value of 3.
- *
- * @param stringToSearch String to search
- * @param stringToCount String to look for and count
- * @return The number of matches.
- */
- protected int countMatchesInString(final String stringToSearch, final String stringToCount) {
- assertThat(stringToSearch).isNotNull();
- assertThat(stringToCount).isNotNull();
-
- int length = stringToSearch.length();
- int count = 0;
- for (int i = 0; i < length; i++) {
- if (stringToSearch.substring(i).startsWith(stringToCount)) {
- count++;
- }
- }
- return count;
- }
-
- /**
- * Determines if a string contains a trimmed line that matches the pattern. So, any single line
- * whose leading and trailing spaces have been removed which contains a string that exactly
- * matches the given pattern will be considered a match.
- *
- * @param stringToSearch String to search
- * @param stringPattern Pattern to search for
- * @return True if a match is found, false otherwise
- */
- protected boolean stringContainsLine(final String stringToSearch, final String stringPattern) {
- assertThat(stringToSearch).isNotNull();
- assertThat(stringPattern).isNotNull();
-
- Pattern pattern = Pattern.compile("^\\s*" + stringPattern + "\\s*$", Pattern.MULTILINE);
- Matcher matcher = pattern.matcher(stringToSearch);
- return matcher.find();
- }
-
- /**
- * Counts the number of distinct lines in a String.
- *
- * @param stringToSearch String to search for lines.
- * @param countBlankLines Whether to count blank lines (true to count)
- * @return The number of lines found.
- */
- protected int countLinesInString(final String stringToSearch, final boolean countBlankLines) {
- assertThat(stringToSearch).isNotNull();
-
- int length = stringToSearch.length();
- int count = 0;
- char character = 0;
- boolean foundNonSpaceChar = false;
-
- for (int i = 0; i < length; i++) {
- character = stringToSearch.charAt(i);
- if (character == '\r' && (i + 1) < length && stringToSearch.charAt(i + 1) == '\n') {
- i++;
- }
- if (character == '\n' || character == '\r') {
- if (countBlankLines) {
- count++;
- } else {
- if (foundNonSpaceChar) {
- count++;
- }
- }
- foundNonSpaceChar = false;
- } else if (character != ' ' && character != '\t') {
- foundNonSpaceChar = true;
- }
- }
-
- // Even if the last line isn't terminated, it still counts as a line
- if (character != '\n' && character != '\r') {
- count++;
- }
-
- return count;
- }
-
- /**
- * Get a specific line from the string (using \n or \r as a line separator).
- *
- * @param stringToSearch String to get the line from
- * @param lineNumber Line number to get
- * @return The line
- */
- protected String getLineFromString(final String stringToSearch, final int lineNumber) {
- assertThat(stringToSearch != null).isNotNull();
- assertThat(lineNumber).isGreaterThan(0);
-
- int length = stringToSearch.length();
- int count = 0;
- int startIndex = 0;
- char character;
- int endIndex = length;
-
- for (int i = 0; i < length; i++) {
- character = stringToSearch.charAt(i);
- if (character == '\r' && (i + 1) < length && stringToSearch.charAt(i + 1) == '\n') {
- i++;
- }
- if (character == '\n' || character == '\r') {
- if (lineNumber == 1) {
- endIndex = i;
- break;
- }
- if (++count == lineNumber - 1) {
- startIndex = i + 1;
- } else if (count >= lineNumber) {
- endIndex = i;
- break;
- }
- }
- }
-
- return stringToSearch.substring(startIndex, endIndex);
- }
-
- protected void info(String string) {
- getLogWriter().info(string);
- }
-
- protected void debug(String string) {
- getLogWriter().fine(string);
- }
-
- protected void error(String string) {
- getLogWriter().error(string);
- }
-
- protected void error(String string, Throwable e) {
- getLogWriter().error(string, e);
- }
-}