From 4f86bbd9d842746392a73f8fd7291ab789bad17d Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 20 Apr 2017 09:01:34 -0700 Subject: [PATCH] Build: Move plugin cli and tests to distribution tool The plugin cli currently resides inside the elasticsearch jar. This commit moves it into a plugin-cli jar. This is change alone is a no-op; it does not change anything about what is loaded at runtime. But it will allow easier testing (with fixtures in the future to test ES or maven installation), as well as eventually not loading these classes when starting elasticsearch. --- .../elasticsearch/plugins/PluginSecurity.java | 1 - distribution/build.gradle | 1 + distribution/tools/plugin-cli/build.gradle | 32 +++++++++++++++++++ .../plugins/InstallPluginCommand.java | 2 +- .../plugins/ListPluginsCommand.java | 0 .../org/elasticsearch/plugins/PluginCli.java | 0 .../plugins/ProgressInputStream.java | 0 .../plugins/RemovePluginCommand.java | 0 .../plugins/InstallPluginCommandTests.java | 0 .../plugins/ListPluginsCommandTests.java | 0 .../plugins/ProgressInputStreamTests.java | 0 .../plugins/RemovePluginCommandTests.java | 0 settings.gradle | 1 + 13 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 distribution/tools/plugin-cli/build.gradle rename {core => distribution/tools/plugin-cli}/src/main/java/org/elasticsearch/plugins/InstallPluginCommand.java (100%) rename {core => distribution/tools/plugin-cli}/src/main/java/org/elasticsearch/plugins/ListPluginsCommand.java (100%) rename {core => distribution/tools/plugin-cli}/src/main/java/org/elasticsearch/plugins/PluginCli.java (100%) rename {core => distribution/tools/plugin-cli}/src/main/java/org/elasticsearch/plugins/ProgressInputStream.java (100%) rename {core => distribution/tools/plugin-cli}/src/main/java/org/elasticsearch/plugins/RemovePluginCommand.java (100%) rename {qa/evil-tests => distribution/tools/plugin-cli}/src/test/java/org/elasticsearch/plugins/InstallPluginCommandTests.java (100%) rename {qa/evil-tests => distribution/tools/plugin-cli}/src/test/java/org/elasticsearch/plugins/ListPluginsCommandTests.java (100%) rename {core => distribution/tools/plugin-cli}/src/test/java/org/elasticsearch/plugins/ProgressInputStreamTests.java (100%) rename {qa/evil-tests => distribution/tools/plugin-cli}/src/test/java/org/elasticsearch/plugins/RemovePluginCommandTests.java (100%) diff --git a/core/src/main/java/org/elasticsearch/plugins/PluginSecurity.java b/core/src/main/java/org/elasticsearch/plugins/PluginSecurity.java index 55a3c6069e7ef..d09acbe1f3c23 100644 --- a/core/src/main/java/org/elasticsearch/plugins/PluginSecurity.java +++ b/core/src/main/java/org/elasticsearch/plugins/PluginSecurity.java @@ -22,7 +22,6 @@ import org.apache.lucene.util.IOUtils; import org.elasticsearch.cli.Terminal; import org.elasticsearch.cli.Terminal.Verbosity; -import org.elasticsearch.env.Environment; import java.io.IOException; import java.nio.file.Files; diff --git a/distribution/build.gradle b/distribution/build.gradle index b02c4ed880266..75b40d57b1730 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -165,6 +165,7 @@ configure(distributions) { from project(':core').configurations.runtime // delay add tools using closures, since they have not yet been configured, so no jar task exists yet from { project(':distribution:tools:java-version-checker').jar } + from { project(':distribution:tools:plugin-cli').jar } } modulesFiles = copySpec { diff --git a/distribution/tools/plugin-cli/build.gradle b/distribution/tools/plugin-cli/build.gradle new file mode 100644 index 0000000000000..ae3dca9ef87af --- /dev/null +++ b/distribution/tools/plugin-cli/build.gradle @@ -0,0 +1,32 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch 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. + */ + +apply plugin: 'elasticsearch.build' + +dependencies { + provided "org.elasticsearch:elasticsearch:${version}" + testCompile "org.elasticsearch.test:framework:${version}" + testCompile 'com.google.jimfs:jimfs:1.1' + testCompile 'com.google.guava:guava:18.0' +} + +test { + // TODO: find a way to add permissions for the tests in this module + systemProperty 'tests.security.manager', 'false' +} diff --git a/core/src/main/java/org/elasticsearch/plugins/InstallPluginCommand.java b/distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/InstallPluginCommand.java similarity index 100% rename from core/src/main/java/org/elasticsearch/plugins/InstallPluginCommand.java rename to distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/InstallPluginCommand.java index a597fdcc5a2d3..afe4593e62779 100644 --- a/core/src/main/java/org/elasticsearch/plugins/InstallPluginCommand.java +++ b/distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/InstallPluginCommand.java @@ -26,8 +26,8 @@ import org.apache.lucene.util.IOUtils; import org.elasticsearch.Version; import org.elasticsearch.bootstrap.JarHell; -import org.elasticsearch.cli.ExitCodes; import org.elasticsearch.cli.EnvironmentAwareCommand; +import org.elasticsearch.cli.ExitCodes; import org.elasticsearch.cli.Terminal; import org.elasticsearch.cli.UserException; import org.elasticsearch.common.SuppressForbidden; diff --git a/core/src/main/java/org/elasticsearch/plugins/ListPluginsCommand.java b/distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/ListPluginsCommand.java similarity index 100% rename from core/src/main/java/org/elasticsearch/plugins/ListPluginsCommand.java rename to distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/ListPluginsCommand.java diff --git a/core/src/main/java/org/elasticsearch/plugins/PluginCli.java b/distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/PluginCli.java similarity index 100% rename from core/src/main/java/org/elasticsearch/plugins/PluginCli.java rename to distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/PluginCli.java diff --git a/core/src/main/java/org/elasticsearch/plugins/ProgressInputStream.java b/distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/ProgressInputStream.java similarity index 100% rename from core/src/main/java/org/elasticsearch/plugins/ProgressInputStream.java rename to distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/ProgressInputStream.java diff --git a/core/src/main/java/org/elasticsearch/plugins/RemovePluginCommand.java b/distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/RemovePluginCommand.java similarity index 100% rename from core/src/main/java/org/elasticsearch/plugins/RemovePluginCommand.java rename to distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/RemovePluginCommand.java diff --git a/qa/evil-tests/src/test/java/org/elasticsearch/plugins/InstallPluginCommandTests.java b/distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/InstallPluginCommandTests.java similarity index 100% rename from qa/evil-tests/src/test/java/org/elasticsearch/plugins/InstallPluginCommandTests.java rename to distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/InstallPluginCommandTests.java diff --git a/qa/evil-tests/src/test/java/org/elasticsearch/plugins/ListPluginsCommandTests.java b/distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/ListPluginsCommandTests.java similarity index 100% rename from qa/evil-tests/src/test/java/org/elasticsearch/plugins/ListPluginsCommandTests.java rename to distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/ListPluginsCommandTests.java diff --git a/core/src/test/java/org/elasticsearch/plugins/ProgressInputStreamTests.java b/distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/ProgressInputStreamTests.java similarity index 100% rename from core/src/test/java/org/elasticsearch/plugins/ProgressInputStreamTests.java rename to distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/ProgressInputStreamTests.java diff --git a/qa/evil-tests/src/test/java/org/elasticsearch/plugins/RemovePluginCommandTests.java b/distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/RemovePluginCommandTests.java similarity index 100% rename from qa/evil-tests/src/test/java/org/elasticsearch/plugins/RemovePluginCommandTests.java rename to distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/RemovePluginCommandTests.java diff --git a/settings.gradle b/settings.gradle index 36f9c23e7c5b7..519dca27f8045 100644 --- a/settings.gradle +++ b/settings.gradle @@ -21,6 +21,7 @@ List projects = [ 'distribution:deb', 'distribution:rpm', 'distribution:tools:java-version-checker', + 'distribution:tools:plugin-cli', 'test:framework', 'test:fixtures:example-fixture', 'test:fixtures:hdfs-fixture',