From 3a24fe9d3792651883de3c3c1a0ab46bae7eef70 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Mon, 30 Mar 2020 11:20:07 -0700 Subject: [PATCH] Move keystore-cli to its own tools project (#40787) (#54294) This commit moves the keystore cli into its own project, so that the test dependencies can be isolated from the rest of server. --- distribution/build.gradle | 3 ++ distribution/src/bin/elasticsearch-keystore | 1 + .../src/bin/elasticsearch-keystore.bat | Bin 239 -> 302 bytes distribution/tools/keystore-cli/build.gradle | 28 ++++++++++++ .../settings/AddFileKeyStoreCommand.java | 6 ++- .../settings/AddStringKeyStoreCommand.java | 6 ++- .../settings/CreateKeyStoreCommand.java | 3 +- .../common/settings/KeyStoreCli.java | 0 .../common/settings/ListKeyStoreCommand.java | 1 - .../RemoveSettingKeyStoreCommand.java | 0 .../bootstrap/BootstrapTests.java | 14 ++++-- .../settings/AddFileKeyStoreCommandTests.java | 0 .../AddStringKeyStoreCommandTests.java | 4 +- .../ChangeKeyStorePasswordCommandTests.java | 0 .../settings/CreateKeyStoreCommandTests.java | 0 .../HasPasswordKeyStoreCommandTests.java | 0 .../settings/KeyStoreCommandTestCase.java | 8 +++- .../common/settings/KeyStoreWrapperTests.java | 22 ++++++--- .../settings/ListKeyStoreCommandTests.java | 0 .../RemoveSettingKeyStoreCommandTests.java | 0 .../settings/UpgradeKeyStoreCommandTests.java | 6 ++- .../format-v3-elasticsearch.keystore | Bin server/build.gradle | 1 - .../MetaDataIndexStateServiceTests.java | 4 +- .../index/mapper/ObjectMapperMergeTests.java | 42 +++++++++--------- .../composite/InternalCompositeTests.java | 42 +++++++++--------- settings.gradle | 1 + 27 files changed, 121 insertions(+), 71 deletions(-) create mode 100644 distribution/tools/keystore-cli/build.gradle rename {server => distribution/tools/keystore-cli}/src/main/java/org/elasticsearch/common/settings/AddFileKeyStoreCommand.java (96%) rename {server => distribution/tools/keystore-cli}/src/main/java/org/elasticsearch/common/settings/AddStringKeyStoreCommand.java (97%) rename {server => distribution/tools/keystore-cli}/src/main/java/org/elasticsearch/common/settings/CreateKeyStoreCommand.java (97%) rename {server => distribution/tools/keystore-cli}/src/main/java/org/elasticsearch/common/settings/KeyStoreCli.java (100%) rename {server => distribution/tools/keystore-cli}/src/main/java/org/elasticsearch/common/settings/ListKeyStoreCommand.java (99%) rename {server => distribution/tools/keystore-cli}/src/main/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommand.java (100%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/bootstrap/BootstrapTests.java (93%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/AddFileKeyStoreCommandTests.java (100%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/AddStringKeyStoreCommandTests.java (99%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/ChangeKeyStorePasswordCommandTests.java (100%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/CreateKeyStoreCommandTests.java (100%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/HasPasswordKeyStoreCommandTests.java (100%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/KeyStoreCommandTestCase.java (94%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/KeyStoreWrapperTests.java (97%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/ListKeyStoreCommandTests.java (100%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommandTests.java (100%) rename {server => distribution/tools/keystore-cli}/src/test/java/org/elasticsearch/common/settings/UpgradeKeyStoreCommandTests.java (93%) rename {server => distribution/tools/keystore-cli}/src/test/resources/format-v3-elasticsearch.keystore (100%) diff --git a/distribution/build.gradle b/distribution/build.gradle index 846eb5f825d..b42858e1e71 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -267,6 +267,9 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) { from { project(':distribution:tools:plugin-cli').jar } from { project(':distribution:tools:plugin-cli').configurations.runtime } } + into('tools/keystore-cli') { + from { project(':distribution:tools:keystore-cli').jar } + } if (oss == false) { into('tools/security-cli') { from { project(':x-pack:plugin:security:cli').jar } diff --git a/distribution/src/bin/elasticsearch-keystore b/distribution/src/bin/elasticsearch-keystore index 49e1aa7437a..334eda30d1a 100755 --- a/distribution/src/bin/elasticsearch-keystore +++ b/distribution/src/bin/elasticsearch-keystore @@ -1,5 +1,6 @@ #!/bin/bash ES_MAIN_CLASS=org.elasticsearch.common.settings.KeyStoreCli \ + ES_ADDITIONAL_CLASSPATH_DIRECTORIES=lib/tools/keystore-cli \ "`dirname "$0"`"/elasticsearch-cli \ "$@" diff --git a/distribution/src/bin/elasticsearch-keystore.bat b/distribution/src/bin/elasticsearch-keystore.bat index 83372248fb61a18be8eb4d6af6cbde5fd9dfb746..9c0fb37ce6efa2bbb8ff144879966c60059683c7 100644 GIT binary patch delta 70 zcmaFQxQ=N;n@w?QiGpizyrYYYXNaf2pQBH_vyWqNaDZcoN4$$?kgIcue~_nZux(Ce Zl72~keonD|c4}pDNq$kPZt}$D8~{es7*+rP delta 9 QcmZ3-^qz4-+r*=p02NdOb^rhX diff --git a/distribution/tools/keystore-cli/build.gradle b/distribution/tools/keystore-cli/build.gradle new file mode 100644 index 00000000000..de09e78e374 --- /dev/null +++ b/distribution/tools/keystore-cli/build.gradle @@ -0,0 +1,28 @@ +/* + * 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 { + compileOnly project(":server") + compileOnly project(":libs:elasticsearch-cli") + testCompile project(":test:framework") + testCompile 'com.google.jimfs:jimfs:1.1' + testCompile 'com.google.guava:guava:18.0' +} diff --git a/server/src/main/java/org/elasticsearch/common/settings/AddFileKeyStoreCommand.java b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/AddFileKeyStoreCommand.java similarity index 96% rename from server/src/main/java/org/elasticsearch/common/settings/AddFileKeyStoreCommand.java rename to distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/AddFileKeyStoreCommand.java index 828e3aac8c9..2217eda8cde 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/AddFileKeyStoreCommand.java +++ b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/AddFileKeyStoreCommand.java @@ -42,8 +42,10 @@ class AddFileKeyStoreCommand extends BaseKeyStoreCommand { AddFileKeyStoreCommand() { super("Add a file setting to the keystore", false); - this.forceOption = parser.acceptsAll(Arrays.asList("f", "force"), - "Overwrite existing setting without prompting, creating keystore if necessary"); + this.forceOption = parser.acceptsAll( + Arrays.asList("f", "force"), + "Overwrite existing setting without prompting, creating keystore if necessary" + ); // jopt simple has issue with multiple non options, so we just get one set of them here // and convert to File when necessary // see https://github.com/jopt-simple/jopt-simple/issues/103 diff --git a/server/src/main/java/org/elasticsearch/common/settings/AddStringKeyStoreCommand.java b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/AddStringKeyStoreCommand.java similarity index 97% rename from server/src/main/java/org/elasticsearch/common/settings/AddStringKeyStoreCommand.java rename to distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/AddStringKeyStoreCommand.java index 931ee8f2a79..c5e760ecd1c 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/AddStringKeyStoreCommand.java +++ b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/AddStringKeyStoreCommand.java @@ -48,8 +48,10 @@ class AddStringKeyStoreCommand extends BaseKeyStoreCommand { AddStringKeyStoreCommand() { super("Add a string settings to the keystore", false); this.stdinOption = parser.acceptsAll(Arrays.asList("x", "stdin"), "Read setting values from stdin"); - this.forceOption = parser.acceptsAll(Arrays.asList("f", "force"), - "Overwrite existing setting without prompting, creating keystore if necessary"); + this.forceOption = parser.acceptsAll( + Arrays.asList("f", "force"), + "Overwrite existing setting without prompting, creating keystore if necessary" + ); this.arguments = parser.nonOptions("setting names"); } diff --git a/server/src/main/java/org/elasticsearch/common/settings/CreateKeyStoreCommand.java b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/CreateKeyStoreCommand.java similarity index 97% rename from server/src/main/java/org/elasticsearch/common/settings/CreateKeyStoreCommand.java rename to distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/CreateKeyStoreCommand.java index c8833650581..8cc3bfcf9ba 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/CreateKeyStoreCommand.java +++ b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/CreateKeyStoreCommand.java @@ -45,8 +45,7 @@ class CreateKeyStoreCommand extends KeyStoreAwareCommand { @Override protected void execute(Terminal terminal, OptionSet options, Environment env) throws Exception { - try (SecureString password = options.has(passwordOption) ? - readPassword(terminal, true) : new SecureString(new char[0])) { + try (SecureString password = options.has(passwordOption) ? readPassword(terminal, true) : new SecureString(new char[0])) { Path keystoreFile = KeyStoreWrapper.keystorePath(env.configFile()); if (Files.exists(keystoreFile)) { if (terminal.promptYesNo("An elasticsearch keystore already exists. Overwrite?", false) == false) { diff --git a/server/src/main/java/org/elasticsearch/common/settings/KeyStoreCli.java b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/KeyStoreCli.java similarity index 100% rename from server/src/main/java/org/elasticsearch/common/settings/KeyStoreCli.java rename to distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/KeyStoreCli.java diff --git a/server/src/main/java/org/elasticsearch/common/settings/ListKeyStoreCommand.java b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/ListKeyStoreCommand.java similarity index 99% rename from server/src/main/java/org/elasticsearch/common/settings/ListKeyStoreCommand.java rename to distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/ListKeyStoreCommand.java index edd8a68cc6f..e1ae480ef33 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/ListKeyStoreCommand.java +++ b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/ListKeyStoreCommand.java @@ -19,7 +19,6 @@ package org.elasticsearch.common.settings; - import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/server/src/main/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommand.java b/distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommand.java similarity index 100% rename from server/src/main/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommand.java rename to distribution/tools/keystore-cli/src/main/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommand.java diff --git a/server/src/test/java/org/elasticsearch/bootstrap/BootstrapTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/bootstrap/BootstrapTests.java similarity index 93% rename from server/src/test/java/org/elasticsearch/bootstrap/BootstrapTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/bootstrap/BootstrapTests.java index df2056e8c6b..e4634ad8735 100644 --- a/server/src/test/java/org/elasticsearch/bootstrap/BootstrapTests.java +++ b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/bootstrap/BootstrapTests.java @@ -90,16 +90,22 @@ public class BootstrapTests extends ESTestCase { public void testPassphraseTooLong() throws Exception { byte[] source = "hellohello!\n".getBytes(StandardCharsets.UTF_8); try (InputStream stream = new ByteArrayInputStream(source)) { - expectThrows(RuntimeException.class, "Password exceeded maximum length of 10", - () -> Bootstrap.readPassphrase(stream, MAX_PASSPHRASE_LENGTH)); + expectThrows( + RuntimeException.class, + "Password exceeded maximum length of 10", + () -> Bootstrap.readPassphrase(stream, MAX_PASSPHRASE_LENGTH) + ); } } public void testNoPassPhraseProvided() throws Exception { byte[] source = "\r\n".getBytes(StandardCharsets.UTF_8); try (InputStream stream = new ByteArrayInputStream(source)) { - expectThrows(RuntimeException.class, "Keystore passphrase required but none provided.", - () -> Bootstrap.readPassphrase(stream, MAX_PASSPHRASE_LENGTH)); + expectThrows( + RuntimeException.class, + "Keystore passphrase required but none provided.", + () -> Bootstrap.readPassphrase(stream, MAX_PASSPHRASE_LENGTH) + ); } } diff --git a/server/src/test/java/org/elasticsearch/common/settings/AddFileKeyStoreCommandTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/AddFileKeyStoreCommandTests.java similarity index 100% rename from server/src/test/java/org/elasticsearch/common/settings/AddFileKeyStoreCommandTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/AddFileKeyStoreCommandTests.java diff --git a/server/src/test/java/org/elasticsearch/common/settings/AddStringKeyStoreCommandTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/AddStringKeyStoreCommandTests.java similarity index 99% rename from server/src/test/java/org/elasticsearch/common/settings/AddStringKeyStoreCommandTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/AddStringKeyStoreCommandTests.java index c0b0d8a2bd6..15a8aa20b85 100644 --- a/server/src/test/java/org/elasticsearch/common/settings/AddStringKeyStoreCommandTests.java +++ b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/AddStringKeyStoreCommandTests.java @@ -256,9 +256,7 @@ public class AddStringKeyStoreCommandTests extends KeyStoreCommandTestCase { final String key = randomAlphaOfLength(4) + '@' + randomAlphaOfLength(4); final UserException e = expectThrows(UserException.class, () -> execute(key)); final String exceptionString = "Setting name [" + key + "] does not match the allowed setting name pattern [[A-Za-z0-9_\\-.]+]"; - assertThat( - e, - hasToString(containsString(exceptionString))); + assertThat(e, hasToString(containsString(exceptionString))); } public void testAddToUnprotectedKeystore() throws Exception { diff --git a/server/src/test/java/org/elasticsearch/common/settings/ChangeKeyStorePasswordCommandTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/ChangeKeyStorePasswordCommandTests.java similarity index 100% rename from server/src/test/java/org/elasticsearch/common/settings/ChangeKeyStorePasswordCommandTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/ChangeKeyStorePasswordCommandTests.java diff --git a/server/src/test/java/org/elasticsearch/common/settings/CreateKeyStoreCommandTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/CreateKeyStoreCommandTests.java similarity index 100% rename from server/src/test/java/org/elasticsearch/common/settings/CreateKeyStoreCommandTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/CreateKeyStoreCommandTests.java diff --git a/server/src/test/java/org/elasticsearch/common/settings/HasPasswordKeyStoreCommandTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/HasPasswordKeyStoreCommandTests.java similarity index 100% rename from server/src/test/java/org/elasticsearch/common/settings/HasPasswordKeyStoreCommandTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/HasPasswordKeyStoreCommandTests.java diff --git a/server/src/test/java/org/elasticsearch/common/settings/KeyStoreCommandTestCase.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/KeyStoreCommandTestCase.java similarity index 94% rename from server/src/test/java/org/elasticsearch/common/settings/KeyStoreCommandTestCase.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/KeyStoreCommandTestCase.java index 1e5527a1e24..0ac39e466dd 100644 --- a/server/src/test/java/org/elasticsearch/common/settings/KeyStoreCommandTestCase.java +++ b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/KeyStoreCommandTestCase.java @@ -114,8 +114,12 @@ public abstract class KeyStoreCommandTestCase extends CommandTestCase { } int eof = input.read(); if (eof != -1) { - fail("Found extra bytes in file stream from keystore, expected " + expectedBytes.length + - " bytes but found 0x" + Integer.toHexString(eof)); + fail( + "Found extra bytes in file stream from keystore, expected " + + expectedBytes.length + + " bytes but found 0x" + + Integer.toHexString(eof) + ); } } diff --git a/server/src/test/java/org/elasticsearch/common/settings/KeyStoreWrapperTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/KeyStoreWrapperTests.java similarity index 97% rename from server/src/test/java/org/elasticsearch/common/settings/KeyStoreWrapperTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/KeyStoreWrapperTests.java index 43d97a1d61d..4e3067e7805 100644 --- a/server/src/test/java/org/elasticsearch/common/settings/KeyStoreWrapperTests.java +++ b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/KeyStoreWrapperTests.java @@ -137,8 +137,10 @@ public class KeyStoreWrapperTests extends ESTestCase { keystore.close(); assertThat(keystore.getSettingNames(), Matchers.hasItem(KeyStoreWrapper.SEED_SETTING.getKey())); - final IllegalStateException exception = expectThrows(IllegalStateException.class, - () -> keystore.getString(KeyStoreWrapper.SEED_SETTING.getKey())); + final IllegalStateException exception = expectThrows( + IllegalStateException.class, + () -> keystore.getString(KeyStoreWrapper.SEED_SETTING.getKey()) + ); assertThat(exception.getMessage(), containsString("closed")); } @@ -306,9 +308,13 @@ public class KeyStoreWrapperTests extends ESTestCase { output.write(secret_value); } - private void possiblyAlterEncryptedBytes(IndexOutput indexOutput, byte[] salt, byte[] iv, byte[] encryptedBytes, int - truncEncryptedDataLength) - throws Exception { + private void possiblyAlterEncryptedBytes( + IndexOutput indexOutput, + byte[] salt, + byte[] iv, + byte[] encryptedBytes, + int truncEncryptedDataLength + ) throws Exception { indexOutput.writeInt(4 + salt.length + 4 + iv.length + 4 + encryptedBytes.length); indexOutput.writeInt(salt.length); indexOutput.writeBytes(salt, salt.length); @@ -451,8 +457,10 @@ public class KeyStoreWrapperTests extends ESTestCase { public void testLegacyV3() throws GeneralSecurityException, IOException { final Path configDir = createTempDir(); final Path keystore = configDir.resolve("elasticsearch.keystore"); - try (InputStream is = KeyStoreWrapperTests.class.getResourceAsStream("/format-v3-elasticsearch.keystore"); - OutputStream os = Files.newOutputStream(keystore)) { + try ( + InputStream is = KeyStoreWrapperTests.class.getResourceAsStream("/format-v3-elasticsearch.keystore"); + OutputStream os = Files.newOutputStream(keystore) + ) { final byte[] buffer = new byte[4096]; int readBytes; while ((readBytes = is.read(buffer)) > 0) { diff --git a/server/src/test/java/org/elasticsearch/common/settings/ListKeyStoreCommandTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/ListKeyStoreCommandTests.java similarity index 100% rename from server/src/test/java/org/elasticsearch/common/settings/ListKeyStoreCommandTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/ListKeyStoreCommandTests.java diff --git a/server/src/test/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommandTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommandTests.java similarity index 100% rename from server/src/test/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommandTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/RemoveSettingKeyStoreCommandTests.java diff --git a/server/src/test/java/org/elasticsearch/common/settings/UpgradeKeyStoreCommandTests.java b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/UpgradeKeyStoreCommandTests.java similarity index 93% rename from server/src/test/java/org/elasticsearch/common/settings/UpgradeKeyStoreCommandTests.java rename to distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/UpgradeKeyStoreCommandTests.java index 075aeaae5a0..9fa6a737165 100644 --- a/server/src/test/java/org/elasticsearch/common/settings/UpgradeKeyStoreCommandTests.java +++ b/distribution/tools/keystore-cli/src/test/java/org/elasticsearch/common/settings/UpgradeKeyStoreCommandTests.java @@ -50,8 +50,10 @@ public class UpgradeKeyStoreCommandTests extends KeyStoreCommandTestCase { public void testKeystoreUpgrade() throws Exception { final Path keystore = KeyStoreWrapper.keystorePath(env.configFile()); - try (InputStream is = KeyStoreWrapperTests.class.getResourceAsStream("/format-v3-elasticsearch.keystore"); - OutputStream os = Files.newOutputStream(keystore)) { + try ( + InputStream is = KeyStoreWrapperTests.class.getResourceAsStream("/format-v3-elasticsearch.keystore"); + OutputStream os = Files.newOutputStream(keystore) + ) { final byte[] buffer = new byte[4096]; int read; while ((read = is.read(buffer, 0, buffer.length)) >= 0) { diff --git a/server/src/test/resources/format-v3-elasticsearch.keystore b/distribution/tools/keystore-cli/src/test/resources/format-v3-elasticsearch.keystore similarity index 100% rename from server/src/test/resources/format-v3-elasticsearch.keystore rename to distribution/tools/keystore-cli/src/test/resources/format-v3-elasticsearch.keystore diff --git a/server/build.gradle b/server/build.gradle index 6805fa77141..6191005ec58 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -132,7 +132,6 @@ dependencies { exclude group: 'org.elasticsearch', module: 'server' } - testCompile 'com.google.jimfs:jimfs:1.1' testCompile 'com.google.guava:guava:18.0' } diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetaDataIndexStateServiceTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetaDataIndexStateServiceTests.java index a6a265c660a..802e8b2f6f8 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetaDataIndexStateServiceTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetaDataIndexStateServiceTests.java @@ -19,7 +19,6 @@ package org.elasticsearch.cluster.metadata; -import com.google.common.collect.ImmutableList; import org.elasticsearch.Version; import org.elasticsearch.action.admin.indices.close.CloseIndexResponse; import org.elasticsearch.action.admin.indices.close.CloseIndexResponse.IndexResult; @@ -455,7 +454,8 @@ public class MetaDataIndexStateServiceTests extends ESTestCase { final Snapshot snapshot = new Snapshot(randomAlphaOfLength(10), new SnapshotId(randomAlphaOfLength(5), randomAlphaOfLength(5))); final RestoreInProgress.Entry entry = - new RestoreInProgress.Entry("_uuid", snapshot, RestoreInProgress.State.INIT, ImmutableList.of(index), shardsBuilder.build()); + new RestoreInProgress.Entry("_uuid", snapshot, RestoreInProgress.State.INIT, + Collections.singletonList(index), shardsBuilder.build()); return ClusterState.builder(newState) .putCustom(RestoreInProgress.TYPE, new RestoreInProgress.Builder().add(entry).build()) .build(); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java index adba78546c1..76547098d28 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java @@ -18,7 +18,6 @@ */ package org.elasticsearch.index.mapper; -import com.google.common.collect.ImmutableMap; import org.elasticsearch.Version; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.mapper.FieldMapper.CopyTo; @@ -27,6 +26,8 @@ import org.elasticsearch.index.mapper.TextFieldMapper.TextFieldType; import org.elasticsearch.test.ESTestCase; import org.junit.AfterClass; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; import static java.util.Collections.emptyMap; @@ -38,11 +39,7 @@ public class ObjectMapperMergeTests extends ESTestCase { private static FieldMapper barFieldMapper = createTextFieldMapper("bar"); private static FieldMapper bazFieldMapper = createTextFieldMapper("baz"); - private static RootObjectMapper rootObjectMapper = createRootObjectMapper( - "type1", true, ImmutableMap.of( - "disabled", createObjectMapper("disabled", false, emptyMap()), - "foo", createObjectMapper("foo", true, ImmutableMap.of( - "bar", barFieldMapper)))); + private static RootObjectMapper rootObjectMapper = createMapping(false, true, true, false); @AfterClass public static void cleanupReferences() { @@ -51,14 +48,24 @@ public class ObjectMapperMergeTests extends ESTestCase { rootObjectMapper = null; } + private static RootObjectMapper createMapping(boolean disabledFieldEnabled, boolean fooFieldEnabled, + boolean includeBarField, boolean includeBazField) { + Map mappers = new HashMap<>(); + mappers.put("disabled", createObjectMapper("disabled", disabledFieldEnabled, emptyMap())); + Map fooMappers = new HashMap<>(); + if (includeBarField) { + fooMappers.put("bar", barFieldMapper); + } + if (includeBazField) { + fooMappers.put("baz", bazFieldMapper); + } + mappers.put("foo", createObjectMapper("foo", fooFieldEnabled, Collections.unmodifiableMap(fooMappers))); + return createRootObjectMapper("type1", true, Collections.unmodifiableMap(mappers)); + } + public void testMerge() { // GIVEN an enriched mapping with "baz" new field - ObjectMapper mergeWith = createRootObjectMapper( - "type1", true, ImmutableMap.of( - "disabled", createObjectMapper("disabled", false, emptyMap()), - "foo", createObjectMapper("foo", true, ImmutableMap.of( - "bar", barFieldMapper, - "baz", bazFieldMapper)))); + ObjectMapper mergeWith = createMapping(false, true, true, true); // WHEN merging mappings final ObjectMapper merged = rootObjectMapper.merge(mergeWith); @@ -71,10 +78,7 @@ public class ObjectMapperMergeTests extends ESTestCase { public void testMergeWhenDisablingField() { // GIVEN a mapping with "foo" field disabled - ObjectMapper mergeWith = createRootObjectMapper( - "type1", true, ImmutableMap.of( - "disabled", createObjectMapper("disabled", false, emptyMap()), - "foo", createObjectMapper("foo", false, emptyMap()))); + ObjectMapper mergeWith = createMapping(false, false, false, false); // WHEN merging mappings // THEN a MapperException is thrown with an excepted message @@ -84,11 +88,7 @@ public class ObjectMapperMergeTests extends ESTestCase { public void testMergeWhenEnablingField() { // GIVEN a mapping with "disabled" field enabled - ObjectMapper mergeWith = createRootObjectMapper( - "type1", true, ImmutableMap.of( - "disabled", createObjectMapper("disabled", true, emptyMap()), - "foo", createObjectMapper("foo", true, ImmutableMap.of( - "bar", barFieldMapper)))); + ObjectMapper mergeWith = createMapping(true, true, true, false); // WHEN merging mappings // THEN a MapperException is thrown with an excepted message diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/composite/InternalCompositeTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/composite/InternalCompositeTests.java index 3ed24466122..a8d1803310e 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/composite/InternalCompositeTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/composite/InternalCompositeTests.java @@ -19,8 +19,6 @@ package org.elasticsearch.search.aggregations.bucket.composite; -import com.google.common.collect.Lists; - import org.apache.lucene.util.BytesRef; import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.time.DateFormatter; @@ -278,11 +276,11 @@ public class InternalCompositeTests extends InternalMultiBucketAggregationTestCa public void testCompareCompositeKeyBiggerFieldName() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{1, 2} ); InternalComposite.ArrayMap key2 = createMap( - Lists.newArrayList("field3", "field2"), + Arrays.asList("field3", "field2"), new Comparable[]{1, 2} ); assertThat(key1.compareTo(key2), lessThan(0)); @@ -290,11 +288,11 @@ public class InternalCompositeTests extends InternalMultiBucketAggregationTestCa public void testCompareCompositeKeySmallerFieldName() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field3", "field2"), + Arrays.asList("field3", "field2"), new Comparable[]{1, 2} ); InternalComposite.ArrayMap key2 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{1, 2} ); assertThat(key1.compareTo(key2), greaterThan(0)); @@ -302,11 +300,11 @@ public class InternalCompositeTests extends InternalMultiBucketAggregationTestCa public void testCompareCompositeKeyBiggerValue() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{1, 2} ); InternalComposite.ArrayMap key2 = createMap( - Lists.newArrayList("field3", "field2"), + Arrays.asList("field3", "field2"), new Comparable[]{2, 3} ); assertThat(key1.compareTo(key2), lessThan(0)); @@ -314,11 +312,11 @@ public class InternalCompositeTests extends InternalMultiBucketAggregationTestCa public void testCompareCompositeKeySmallerValue() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field3", "field2"), + Arrays.asList("field3", "field2"), new Comparable[]{1, 2} ); InternalComposite.ArrayMap key2 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{2, 3} ); assertThat(key1.compareTo(key2), greaterThan(0)); @@ -326,11 +324,11 @@ public class InternalCompositeTests extends InternalMultiBucketAggregationTestCa public void testCompareCompositeKeyNullValueIsSmaller1() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{null, 20} ); InternalComposite.ArrayMap key2 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{1, 2} ); assertThat(key1.compareTo(key2), lessThan(0)); @@ -338,11 +336,11 @@ public class InternalCompositeTests extends InternalMultiBucketAggregationTestCa public void testCompareCompositeKeyNullValueIsSmaller2() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{1, 2} ); InternalComposite.ArrayMap key2 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{null, 20} ); assertThat(key1.compareTo(key2), greaterThan(0)); @@ -350,29 +348,29 @@ public class InternalCompositeTests extends InternalMultiBucketAggregationTestCa public void testCompareCompositeKeyMoreFieldsIsGreater() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{1, 2} ); - InternalComposite.ArrayMap key2 = createMap(Lists.newArrayList("field1", "field2", "field3"),new Comparable[]{1, 2, null}); + InternalComposite.ArrayMap key2 = createMap(Arrays.asList("field1", "field2", "field3"),new Comparable[]{1, 2, null}); assertThat(key1.compareTo(key2), lessThan(0)); } public void testCompareCompositeKeyLessFieldsIsLesser() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field1", "field2", "field3"), + Arrays.asList("field1", "field2", "field3"), new Comparable[]{1, 2, null} ); - InternalComposite.ArrayMap key2 = createMap(Lists.newArrayList("field1", "field2"),new Comparable[]{1, 2}); + InternalComposite.ArrayMap key2 = createMap(Arrays.asList("field1", "field2"),new Comparable[]{1, 2}); assertThat(key1.compareTo(key2), greaterThan(0)); } public void testCompareCompositeKeyEqual() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field1", "field2", "field3"), + Arrays.asList("field1", "field2", "field3"), new Comparable[]{null, 1, 2} ); InternalComposite.ArrayMap key2 = createMap( - Lists.newArrayList("field1", "field2", "field3"), + Arrays.asList("field1", "field2", "field3"), new Comparable[]{null, 1, 2} ); assertThat(key1.compareTo(key1), equalTo(0)); @@ -385,12 +383,12 @@ public class InternalCompositeTests extends InternalMultiBucketAggregationTestCa public void testCompareCompositeKeyValuesHaveDifferentTypes() { InternalComposite.ArrayMap key1 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{1, 2} ); InternalComposite.ArrayMap key2 = createMap( - Lists.newArrayList("field1", "field2"), + Arrays.asList("field1", "field2"), new Comparable[]{"1", 2} ); diff --git a/settings.gradle b/settings.gradle index 5938a5eb1d6..ba172835f3e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -57,6 +57,7 @@ List projects = [ 'distribution:tools:java-version-checker', 'distribution:tools:launchers', 'distribution:tools:plugin-cli', + 'distribution:tools:keystore-cli', 'server', 'server:cli', 'test:framework',