From 386eb6add83840ba7af5143453a18e886cb81dac Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Tue, 17 Apr 2018 19:45:53 -0700 Subject: [PATCH 1/9] wip --- .../ReindexFromRemoteWithAuthTests.java | 6 +- .../index/reindex/RetryTests.java | 6 +- .../netty4/Netty4HttpRequestSizeLimitIT.java | 6 +- .../netty4/Netty4PipeliningDisabledIT.java | 6 +- .../netty4/Netty4PipeliningEnabledIT.java | 6 +- .../http/ContextAndHeaderTransportIT.java | 1 - .../org/elasticsearch/http/CorsRegexIT.java | 1 - .../http/DetailedErrorsDisabledIT.java | 2 +- .../elasticsearch/http/HttpSmokeTestCase.java | 8 ++- .../common/network/NetworkModule.java | 4 -- .../java/org/elasticsearch/node/Node.java | 21 ++---- .../client/transport/TransportClientIT.java | 5 +- .../common/network/NetworkModuleTests.java | 12 +--- .../org/elasticsearch/node/NodeTests.java | 23 +++++-- .../node/service/NodeServiceTests.java | 43 ------------ .../java/org/elasticsearch/node/MockNode.java | 12 ++++ .../elasticsearch/test/ESIntegTestCase.java | 10 ++- .../test/ESSingleNodeTestCase.java | 9 ++- .../elasticsearch/test/MockHttpTransport.java | 67 +++++++++++++++++++ 19 files changed, 156 insertions(+), 92 deletions(-) delete mode 100644 server/src/test/java/org/elasticsearch/node/service/NodeServiceTests.java create mode 100644 test/framework/src/main/java/org/elasticsearch/test/MockHttpTransport.java diff --git a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexFromRemoteWithAuthTests.java b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexFromRemoteWithAuthTests.java index 31077c405d8e1..f829c8f22d73c 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexFromRemoteWithAuthTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexFromRemoteWithAuthTests.java @@ -75,10 +75,14 @@ protected Collection> getPlugins() { ReindexPlugin.class); } + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings() { Settings.Builder settings = Settings.builder().put(super.nodeSettings()); - settings.put(NetworkModule.HTTP_ENABLED.getKey(), true); // Whitelist reindexing from the http host we're going to use settings.put(TransportReindexAction.REMOTE_CLUSTER_WHITELIST.getKey(), "127.0.0.1:*"); settings.put(NetworkModule.HTTP_TYPE_KEY, Netty4Plugin.NETTY_HTTP_TRANSPORT_NAME); diff --git a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/RetryTests.java b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/RetryTests.java index da0dbf2aae345..5a498a6953629 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/RetryTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/RetryTests.java @@ -91,9 +91,13 @@ protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder().put(super.nodeSettings(nodeOrdinal)).put(nodeSettings()).build(); } + @Override + protected boolean addMockHttpTransport() { + return false; // enable HTTP so we can test retries on reindex from remote; in this case the "remote" cluster is just this cluster + } + final Settings nodeSettings() { return Settings.builder() - // enable HTTP so we can test retries on reindex from remote; in this case the "remote" cluster is just this cluster .put(NetworkModule.HTTP_ENABLED.getKey(), true) // whitelist reindexing from the HTTP host we're going to use .put(TransportReindexAction.REMOTE_CLUSTER_WHITELIST.getKey(), "127.0.0.1:*") diff --git a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpRequestSizeLimitIT.java b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpRequestSizeLimitIT.java index d99820bb86465..e8d6d30b02bfa 100644 --- a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpRequestSizeLimitIT.java +++ b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4HttpRequestSizeLimitIT.java @@ -50,11 +50,15 @@ public class Netty4HttpRequestSizeLimitIT extends ESNetty4IntegTestCase { private static final ByteSizeValue LIMIT = new ByteSizeValue(2, ByteSizeUnit.KB); + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put(HierarchyCircuitBreakerService.IN_FLIGHT_REQUESTS_CIRCUIT_BREAKER_LIMIT_SETTING.getKey(), LIMIT) .build(); } diff --git a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4PipeliningDisabledIT.java b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4PipeliningDisabledIT.java index 9f117d4ee21fc..af0e7c85a8f63 100644 --- a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4PipeliningDisabledIT.java +++ b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4PipeliningDisabledIT.java @@ -38,11 +38,15 @@ @ClusterScope(scope = Scope.TEST, supportsDedicatedMasters = false, numDataNodes = 1) public class Netty4PipeliningDisabledIT extends ESNetty4IntegTestCase { + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("http.pipelining", false) .build(); } diff --git a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4PipeliningEnabledIT.java b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4PipeliningEnabledIT.java index cc3f22be453fb..9723ee93faf59 100644 --- a/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4PipeliningEnabledIT.java +++ b/modules/transport-netty4/src/test/java/org/elasticsearch/http/netty4/Netty4PipeliningEnabledIT.java @@ -37,11 +37,15 @@ @ClusterScope(scope = Scope.TEST, supportsDedicatedMasters = false, numDataNodes = 1) public class Netty4PipeliningEnabledIT extends ESNetty4IntegTestCase { + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("http.pipelining", true) .build(); } diff --git a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/ContextAndHeaderTransportIT.java b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/ContextAndHeaderTransportIT.java index 9d05ef3f05db2..965f94607aebb 100644 --- a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/ContextAndHeaderTransportIT.java +++ b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/ContextAndHeaderTransportIT.java @@ -90,7 +90,6 @@ public class ContextAndHeaderTransportIT extends HttpSmokeTestCase { protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .build(); } diff --git a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/CorsRegexIT.java b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/CorsRegexIT.java index 441f56a8631dd..47215ae669b31 100644 --- a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/CorsRegexIT.java +++ b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/CorsRegexIT.java @@ -49,7 +49,6 @@ protected Settings nodeSettings(int nodeOrdinal) { .put(SETTING_CORS_ALLOW_CREDENTIALS.getKey(), true) .put(SETTING_CORS_ALLOW_METHODS.getKey(), "get, options, post") .put(SETTING_CORS_ENABLED.getKey(), true) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .build(); } diff --git a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java index 380937ed010e1..fa71822e79e57 100644 --- a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java +++ b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java @@ -38,12 +38,12 @@ */ @ClusterScope(scope = Scope.TEST, supportsDedicatedMasters = false, numDataNodes = 1) public class DetailedErrorsDisabledIT extends HttpSmokeTestCase { + // Build our cluster settings @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put(HttpTransportSettings.SETTING_HTTP_DETAILED_ERRORS_ENABLED.getKey(), false) .build(); } diff --git a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/HttpSmokeTestCase.java b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/HttpSmokeTestCase.java index 52004277c71bc..316acb02a7511 100644 --- a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/HttpSmokeTestCase.java +++ b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/HttpSmokeTestCase.java @@ -55,13 +55,17 @@ private static String getTypeKey(Class clazz) { } } + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) .put(NetworkModule.TRANSPORT_TYPE_KEY, nodeTransportTypeKey) - .put(NetworkModule.HTTP_TYPE_KEY, nodeHttpTypeKey) - .put(NetworkModule.HTTP_ENABLED.getKey(), true).build(); + .put(NetworkModule.HTTP_TYPE_KEY, nodeHttpTypeKey).build(); } @Override diff --git a/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java b/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java index 2b9cde65d64cc..bb21ba8c7fc14 100644 --- a/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java +++ b/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java @@ -196,10 +196,6 @@ public Supplier getHttpServerTransportSupplier() { return factory; } - public boolean isHttpEnabled() { - return transportClient == false && HTTP_ENABLED.get(settings); - } - public Supplier getTransportSupplier() { final String name; if (TRANSPORT_TYPE_SETTING.exists(settings)) { diff --git a/server/src/main/java/org/elasticsearch/node/Node.java b/server/src/main/java/org/elasticsearch/node/Node.java index b02e1614bbdea..2b0c0e59428ef 100644 --- a/server/src/main/java/org/elasticsearch/node/Node.java +++ b/server/src/main/java/org/elasticsearch/node/Node.java @@ -439,19 +439,7 @@ protected Node(final Environment environment, Collection final ResponseCollectorService responseCollectorService = new ResponseCollectorService(this.settings, clusterService); final SearchTransportService searchTransportService = new SearchTransportService(settings, transportService, SearchExecutionStatsCollector.makeWrapper(responseCollectorService)); - final Consumer httpBind; - final HttpServerTransport httpServerTransport; - if (networkModule.isHttpEnabled()) { - httpServerTransport = networkModule.getHttpServerTransportSupplier().get(); - httpBind = b -> { - b.bind(HttpServerTransport.class).toInstance(httpServerTransport); - }; - } else { - httpBind = b -> { - b.bind(HttpServerTransport.class).toProvider(Providers.of(null)); - }; - httpServerTransport = null; - } + final HttpServerTransport httpServerTransport = newHttpTransport(networkModule); final DiscoveryModule discoveryModule = new DiscoveryModule(this.settings, threadPool, transportService, namedWriteableRegistry, networkService, clusterService.getMasterService(), clusterService.getClusterApplierService(), @@ -518,7 +506,7 @@ protected Node(final Environment environment, Collection b.bind(PeerRecoveryTargetService.class).toInstance(new PeerRecoveryTargetService(settings, threadPool, transportService, recoverySettings, clusterService)); } - httpBind.accept(b); + b.bind(HttpServerTransport.class).toInstance(httpServerTransport); pluginComponents.stream().forEach(p -> b.bind((Class) p.getClass()).toInstance(p)); b.bind(PersistentTasksService.class).toInstance(persistentTasksService); b.bind(PersistentTasksClusterService.class).toInstance(persistentTasksClusterService); @@ -963,6 +951,11 @@ protected ClusterInfoService newClusterInfoService(Settings settings, ClusterSer return new InternalClusterInfoService(settings, clusterService, threadPool, client, listeners); } + /** Constructs a {@link org.elasticsearch.http.HttpServerTransport} which may be mocked for tests. */ + protected HttpServerTransport newHttpTransport(NetworkModule networkModule) { + return networkModule.getHttpServerTransportSupplier().get(); + } + private static class LocalNodeFactory implements Function { private final SetOnce localNode = new SetOnce<>(); private final String persistentNodeId; diff --git a/server/src/test/java/org/elasticsearch/client/transport/TransportClientIT.java b/server/src/test/java/org/elasticsearch/client/transport/TransportClientIT.java index f37634eed5418..ac667d09163b7 100644 --- a/server/src/test/java/org/elasticsearch/client/transport/TransportClientIT.java +++ b/server/src/test/java/org/elasticsearch/client/transport/TransportClientIT.java @@ -32,6 +32,7 @@ import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.ESIntegTestCase.ClusterScope; import org.elasticsearch.test.ESIntegTestCase.Scope; +import org.elasticsearch.test.MockHttpTransport; import org.elasticsearch.test.discovery.TestZenDiscovery; import org.elasticsearch.transport.MockTransportClient; import org.elasticsearch.transport.TransportService; @@ -62,10 +63,10 @@ public void testNodeVersionIsUpdated() throws IOException, NodeValidationExcepti .put(Environment.PATH_HOME_SETTING.getKey(), createTempDir()) .put("node.name", "testNodeVersionIsUpdated") .put("transport.type", getTestTransportType()) - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put(Node.NODE_DATA_SETTING.getKey(), false) .put("cluster.name", "foobar") - .build(), Arrays.asList(getTestTransportPlugin(), TestZenDiscovery.TestPlugin.class)).start()) { + .build(), Arrays.asList(getTestTransportPlugin(), TestZenDiscovery.TestPlugin.class, + MockHttpTransport.TestPlugin.class)).start()) { TransportAddress transportAddress = node.injector().getInstance(TransportService.class).boundAddress().publishAddress(); client.addTransportAddress(transportAddress); // since we force transport clients there has to be one node started that we connect to. diff --git a/server/src/test/java/org/elasticsearch/common/network/NetworkModuleTests.java b/server/src/test/java/org/elasticsearch/common/network/NetworkModuleTests.java index 70deb8a4ba88e..28e87926ad8d5 100644 --- a/server/src/test/java/org/elasticsearch/common/network/NetworkModuleTests.java +++ b/server/src/test/java/org/elasticsearch/common/network/NetworkModuleTests.java @@ -127,9 +127,7 @@ public String getName() { } public void testRegisterTransport() { - Settings settings = Settings.builder().put(NetworkModule.TRANSPORT_TYPE_KEY, "custom") - .put(NetworkModule.HTTP_ENABLED.getKey(), false) - .build(); + Settings settings = Settings.builder().put(NetworkModule.TRANSPORT_TYPE_KEY, "custom").build(); Supplier custom = () -> null; // content doesn't matter we check reference equality NetworkPlugin plugin = new NetworkPlugin() { @Override @@ -143,14 +141,12 @@ public Map> getTransports(Settings settings, ThreadP }; NetworkModule module = newNetworkModule(settings, false, plugin); assertFalse(module.isTransportClient()); - assertFalse(module.isHttpEnabled()); assertSame(custom, module.getTransportSupplier()); // check it works with transport only as well module = newNetworkModule(settings, true, plugin); assertSame(custom, module.getTransportSupplier()); assertTrue(module.isTransportClient()); - assertFalse(module.isHttpEnabled()); } public void testRegisterHttpTransport() { @@ -173,13 +169,10 @@ public Map> getHttpTransports(Settings set }); assertSame(custom, module.getHttpServerTransportSupplier()); assertFalse(module.isTransportClient()); - assertTrue(module.isHttpEnabled()); - settings = Settings.builder().put(NetworkModule.HTTP_ENABLED.getKey(), false) - .put(NetworkModule.TRANSPORT_TYPE_KEY, "local").build(); + settings = Settings.builder().put(NetworkModule.TRANSPORT_TYPE_KEY, "local").build(); NetworkModule newModule = newNetworkModule(settings, false); assertFalse(newModule.isTransportClient()); - assertFalse(newModule.isHttpEnabled()); expectThrows(IllegalStateException.class, () -> newModule.getHttpServerTransportSupplier()); } @@ -258,7 +251,6 @@ public Map> getHttpTransports(Settings set public void testRegisterInterceptor() { Settings settings = Settings.builder() - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put(NetworkModule.TRANSPORT_TYPE_KEY, "local").build(); AtomicInteger called = new AtomicInteger(0); diff --git a/server/src/test/java/org/elasticsearch/node/NodeTests.java b/server/src/test/java/org/elasticsearch/node/NodeTests.java index f1c8177b5a61c..f14b120701e5b 100644 --- a/server/src/test/java/org/elasticsearch/node/NodeTests.java +++ b/server/src/test/java/org/elasticsearch/node/NodeTests.java @@ -31,10 +31,13 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.InternalTestCluster; +import org.elasticsearch.test.MockHttpTransport; import java.io.IOException; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -54,7 +57,7 @@ public void testNodeName() throws IOException { if (name != null) { settings.put(Node.NODE_NAME_SETTING.getKey(), name); } - try (Node node = new MockNode(settings.build(), Collections.singleton(getTestTransportPlugin()))) { + try (Node node = new MockNode(settings.build(), basePlugins())) { final Settings nodeSettings = randomBoolean() ? node.settings() : node.getEnvironment().settings(); if (name == null) { assertThat(Node.NODE_NAME_SETTING.get(nodeSettings), equalTo(node.getNodeEnvironment().nodeId().substring(0, 7))); @@ -73,6 +76,13 @@ public List getBootstrapChecks() { } } + private List> basePlugins() { + List> plugins = new ArrayList<>(); + plugins.add(getTestTransportPlugin()); + plugins.add(MockHttpTransport.TestPlugin.class); + return plugins; + } + public void testLoadPluginBootstrapChecks() throws IOException { final String name = randomBoolean() ? randomAlphaOfLength(10) : null; Settings.Builder settings = baseSettings(); @@ -80,7 +90,9 @@ public void testLoadPluginBootstrapChecks() throws IOException { settings.put(Node.NODE_NAME_SETTING.getKey(), name); } AtomicBoolean executed = new AtomicBoolean(false); - try (Node node = new MockNode(settings.build(), Arrays.asList(getTestTransportPlugin(), CheckPlugin.class)) { + List> plugins = basePlugins(); + plugins.add(CheckPlugin.class); + try (Node node = new MockNode(settings.build(), plugins) { @Override protected void validateNodeBeforeAcceptingRequests(BootstrapContext context, BoundTransportAddress boundTransportAddress, List bootstrapChecks) throws NodeValidationException { @@ -122,7 +134,7 @@ public void testWarnIfPreRelease() { public void testNodeAttributes() throws IOException { String attr = randomAlphaOfLength(5); Settings.Builder settings = baseSettings().put(Node.NODE_ATTRIBUTES.getKey() + "test_attr", attr); - try (Node node = new MockNode(settings.build(), Collections.singleton(getTestTransportPlugin()))) { + try (Node node = new MockNode(settings.build(), basePlugins())) { final Settings nodeSettings = randomBoolean() ? node.settings() : node.getEnvironment().settings(); assertEquals(attr, Node.NODE_ATTRIBUTES.getAsMap(nodeSettings).get("test_attr")); } @@ -130,7 +142,7 @@ public void testNodeAttributes() throws IOException { // leading whitespace not allowed attr = " leading"; settings = baseSettings().put(Node.NODE_ATTRIBUTES.getKey() + "test_attr", attr); - try (Node node = new MockNode(settings.build(), Collections.singleton(getTestTransportPlugin()))) { + try (Node node = new MockNode(settings.build(), basePlugins())) { fail("should not allow a node attribute with leading whitespace"); } catch (IllegalArgumentException e) { assertEquals("node.attr.test_attr cannot have leading or trailing whitespace [ leading]", e.getMessage()); @@ -139,7 +151,7 @@ public void testNodeAttributes() throws IOException { // trailing whitespace not allowed attr = "trailing "; settings = baseSettings().put(Node.NODE_ATTRIBUTES.getKey() + "test_attr", attr); - try (Node node = new MockNode(settings.build(), Collections.singleton(getTestTransportPlugin()))) { + try (Node node = new MockNode(settings.build(), basePlugins())) { fail("should not allow a node attribute with trailing whitespace"); } catch (IllegalArgumentException e) { assertEquals("node.attr.test_attr cannot have leading or trailing whitespace [trailing ]", e.getMessage()); @@ -151,7 +163,6 @@ private static Settings.Builder baseSettings() { return Settings.builder() .put(ClusterName.CLUSTER_NAME_SETTING.getKey(), InternalTestCluster.clusterName("single-node-cluster", randomLong())) .put(Environment.PATH_HOME_SETTING.getKey(), tempDir) - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put(NetworkModule.TRANSPORT_TYPE_KEY, getTestTransportType()) .put(Node.NODE_DATA_SETTING.getKey(), true); } diff --git a/server/src/test/java/org/elasticsearch/node/service/NodeServiceTests.java b/server/src/test/java/org/elasticsearch/node/service/NodeServiceTests.java deleted file mode 100644 index e9097b81426d4..0000000000000 --- a/server/src/test/java/org/elasticsearch/node/service/NodeServiceTests.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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. - */ - -package org.elasticsearch.node.service; - -import org.elasticsearch.action.admin.cluster.node.stats.NodesStatsRequest; -import org.elasticsearch.action.admin.cluster.node.stats.NodesStatsResponse; -import org.elasticsearch.common.network.NetworkModule; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.test.ESSingleNodeTestCase; - -import static org.hamcrest.Matchers.hasSize; - -public class NodeServiceTests extends ESSingleNodeTestCase { - - @Override - protected Settings nodeSettings() { - return Settings.builder().put(NetworkModule.HTTP_ENABLED.getKey(), false).build(); - } - - public void testHttpServerDisabled() { - // test for a bug where if HTTP stats were requested but HTTP was disabled, NodeService would hit a NullPointerException - NodesStatsResponse response = client().admin().cluster().nodesStats(new NodesStatsRequest().http(true)).actionGet(); - assertThat(response.getNodes(), hasSize(1)); - } - -} diff --git a/test/framework/src/main/java/org/elasticsearch/node/MockNode.java b/test/framework/src/main/java/org/elasticsearch/node/MockNode.java index 8d2f6e895504c..79694f8050a13 100644 --- a/test/framework/src/main/java/org/elasticsearch/node/MockNode.java +++ b/test/framework/src/main/java/org/elasticsearch/node/MockNode.java @@ -25,6 +25,7 @@ import org.elasticsearch.cluster.MockInternalClusterInfoService; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.service.ClusterService; +import org.elasticsearch.common.network.NetworkModule; import org.elasticsearch.common.settings.ClusterSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.BoundTransportAddress; @@ -33,6 +34,7 @@ import org.elasticsearch.common.util.MockPageCacheRecycler; import org.elasticsearch.common.util.PageCacheRecycler; import org.elasticsearch.env.Environment; +import org.elasticsearch.http.HttpServerTransport; import org.elasticsearch.indices.IndicesService; import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.indices.recovery.RecoverySettings; @@ -41,6 +43,7 @@ import org.elasticsearch.search.MockSearchService; import org.elasticsearch.search.SearchService; import org.elasticsearch.search.fetch.FetchPhase; +import org.elasticsearch.test.MockHttpTransport; import org.elasticsearch.test.transport.MockTransportService; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.Transport; @@ -144,5 +147,14 @@ protected ClusterInfoService newClusterInfoService(Settings settings, ClusterSer return new MockInternalClusterInfoService(settings, clusterService, threadPool, client, listener); } } + + @Override + protected HttpServerTransport newHttpTransport(NetworkModule networkModule) { + if (getPluginsService().filterPlugins(MockHttpTransport.TestPlugin.class).isEmpty()) { + return super.newHttpTransport(networkModule); + } else { + return new MockHttpTransport(); + } + } } diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESIntegTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESIntegTestCase.java index 2d027e8bfece5..16e7439c0474f 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESIntegTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESIntegTestCase.java @@ -1842,7 +1842,6 @@ protected NodeConfigurationSource getNodeConfigSource() { @Override public Settings nodeSettings(int nodeOrdinal) { return Settings.builder() - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put(networkSettings.build()) .put(ESIntegTestCase.this.nodeSettings(nodeOrdinal)).build(); } @@ -1892,6 +1891,11 @@ protected boolean addTestZenDiscovery() { return true; } + /** Returns {@code true} iff this test cluster should use a dummy http transport */ + protected boolean addMockHttpTransport() { + return true; + } + /** * Returns a function that allows to wrap / filter all clients that are exposed by the test cluster. This is useful * for debugging or request / response pre and post processing. It also allows to intercept all calls done by the test @@ -1928,10 +1932,12 @@ protected Collection> getMockPlugins() { if (addMockTransportService()) { mocks.add(getTestTransportPlugin()); } - if (addTestZenDiscovery()) { mocks.add(TestZenDiscovery.TestPlugin.class); } + if (addMockHttpTransport()) { + mocks.add(MockHttpTransport.TestPlugin.class); + } mocks.add(TestSeedPlugin.class); return Collections.unmodifiableList(mocks); } diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESSingleNodeTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESSingleNodeTestCase.java index d127f1a6b3631..b7d59aa12a96a 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESSingleNodeTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESSingleNodeTestCase.java @@ -161,6 +161,11 @@ protected Settings nodeSettings() { return Settings.EMPTY; } + /** True if a dummy http transport should be used, or false if the real http transport should be used. */ + protected boolean addMockHttpTransport() { + return false; + } + private Node newNode() { final Path tempDir = createTempDir(); Settings settings = Settings.builder() @@ -173,7 +178,6 @@ private Node newNode() { .put("node.name", "node_s_0") .put(ScriptService.SCRIPT_MAX_COMPILATIONS_RATE.getKey(), "1000/1m") .put(EsExecutors.PROCESSORS_SETTING.getKey(), 1) // limit the number of threads created - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put("transport.type", getTestTransportType()) .put(Node.NODE_DATA_SETTING.getKey(), true) .put(NodeEnvironment.NODE_ID_SEED_SETTING.getKey(), random().nextLong()) @@ -192,6 +196,9 @@ private Node newNode() { plugins = new ArrayList<>(plugins); plugins.add(TestZenDiscovery.TestPlugin.class); } + if (addMockHttpTransport()) { + plugins.add(MockHttpTransport.TestPlugin.class); + } Node build = new MockNode(settings, plugins); try { build.start(); diff --git a/test/framework/src/main/java/org/elasticsearch/test/MockHttpTransport.java b/test/framework/src/main/java/org/elasticsearch/test/MockHttpTransport.java new file mode 100644 index 0000000000000..4d8584553e9b2 --- /dev/null +++ b/test/framework/src/main/java/org/elasticsearch/test/MockHttpTransport.java @@ -0,0 +1,67 @@ +/* + * 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. + */ + +package org.elasticsearch.test; + +import org.elasticsearch.common.component.AbstractLifecycleComponent; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.transport.BoundTransportAddress; +import org.elasticsearch.http.HttpInfo; +import org.elasticsearch.http.HttpServerTransport; +import org.elasticsearch.http.HttpStats; +import org.elasticsearch.plugins.Plugin; + +/** + * A dummy http transport used by tests when not wanting to actually bind to a real address. + */ +public class MockHttpTransport extends AbstractLifecycleComponent implements HttpServerTransport { + + /** + * Marker plugin used by {@link org.elasticsearch.node.MockNode} to enable {@link MockHttpTransport}. + */ + public static class TestPlugin extends Plugin {} + + public MockHttpTransport() { + super(Settings.EMPTY); + } + + @Override + protected void doStart() {} + + @Override + protected void doStop() {} + + @Override + protected void doClose() {} + + @Override + public BoundTransportAddress boundAddress() { + return null; + } + + @Override + public HttpInfo info() { + return null; + } + + @Override + public HttpStats stats() { + return null; + } +} From 3cc7d3008d5ad7a994f1773189acc95a2509b0ba Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Wed, 18 Apr 2018 09:12:25 -0700 Subject: [PATCH 2/9] done --- docs/reference/modules/http.asciidoc | 13 ---------- .../index/reindex/RetryTests.java | 1 - .../elasticsearch/http/DeprecationHttpIT.java | 6 ++++- .../http/ResponseHeaderPluginIT.java | 8 +++--- .../org/elasticsearch/bootstrap/Security.java | 11 -------- .../common/network/NetworkModule.java | 7 +++--- .../common/settings/ClusterSettings.java | 1 - .../java/org/elasticsearch/node/Node.java | 25 ++++++------------- .../transport/RemoteClusterConnection.java | 1 + .../single/SingleNodeDiscoveryIT.java | 5 ++-- .../test/ESSingleNodeTestCase.java | 2 +- .../ClusterDiscoveryConfiguration.java | 1 - .../org/elasticsearch/node/MockNodeTests.java | 3 ++- .../test/test/InternalTestClusterTests.java | 24 ++++++++++-------- 14 files changed, 38 insertions(+), 70 deletions(-) diff --git a/docs/reference/modules/http.asciidoc b/docs/reference/modules/http.asciidoc index c69d4991583be..7f29a9db7f605 100644 --- a/docs/reference/modules/http.asciidoc +++ b/docs/reference/modules/http.asciidoc @@ -110,16 +110,3 @@ client HTTP responses, defaults to unbounded. It also uses the common <>. - -[float] -=== Disable HTTP - -The http module can be completely disabled and not started by setting -`http.enabled` to `false`. Elasticsearch nodes (and Java clients) communicate -internally using the <>, not HTTP. It -might make sense to disable the `http` layer entirely on nodes which are not -meant to serve REST requests directly. For instance, you could disable HTTP on -<> if you also have -<> which are intended to serve all REST requests. -Be aware, however, that you will not be able to send any REST requests (eg to -retrieve node stats) directly to nodes which have HTTP disabled. diff --git a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/RetryTests.java b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/RetryTests.java index 5a498a6953629..a582cee92336b 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/RetryTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/RetryTests.java @@ -98,7 +98,6 @@ protected boolean addMockHttpTransport() { final Settings nodeSettings() { return Settings.builder() - .put(NetworkModule.HTTP_ENABLED.getKey(), true) // whitelist reindexing from the HTTP host we're going to use .put(TransportReindexAction.REMOTE_CLUSTER_WHITELIST.getKey(), "127.0.0.1:*") .build(); diff --git a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/DeprecationHttpIT.java b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/DeprecationHttpIT.java index a795c295d2b1c..260041fdbda91 100644 --- a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/DeprecationHttpIT.java +++ b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/DeprecationHttpIT.java @@ -57,11 +57,15 @@ */ public class DeprecationHttpIT extends HttpSmokeTestCase { + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put("force.http.enabled", true) // change values of deprecated settings so that accessing them is logged .put(TEST_DEPRECATED_SETTING_TRUE1.getKey(), ! TEST_DEPRECATED_SETTING_TRUE1.getDefault(Settings.EMPTY)) .put(TEST_DEPRECATED_SETTING_TRUE2.getKey(), ! TEST_DEPRECATED_SETTING_TRUE2.getDefault(Settings.EMPTY)) diff --git a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/ResponseHeaderPluginIT.java b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/ResponseHeaderPluginIT.java index ffb23f31f4087..7d413cca97703 100644 --- a/qa/smoke-test-http/src/test/java/org/elasticsearch/http/ResponseHeaderPluginIT.java +++ b/qa/smoke-test-http/src/test/java/org/elasticsearch/http/ResponseHeaderPluginIT.java @@ -37,12 +37,10 @@ */ @ClusterScope(scope = Scope.SUITE, supportsDedicatedMasters = false, numDataNodes = 1) public class ResponseHeaderPluginIT extends HttpSmokeTestCase { + @Override - protected Settings nodeSettings(int nodeOrdinal) { - return Settings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put("force.http.enabled", true) - .build(); + protected boolean addMockHttpTransport() { + return false; // enable http } @Override diff --git a/server/src/main/java/org/elasticsearch/bootstrap/Security.java b/server/src/main/java/org/elasticsearch/bootstrap/Security.java index 9f2790c94cce6..5b4f352ded945 100644 --- a/server/src/main/java/org/elasticsearch/bootstrap/Security.java +++ b/server/src/main/java/org/elasticsearch/bootstrap/Security.java @@ -328,7 +328,6 @@ static void addFilePermissions(Permissions policy, Environment environment) thro private static void addBindPermissions(Permissions policy, Settings settings) { addSocketPermissionForHttp(policy, settings); addSocketPermissionForTransportProfiles(policy, settings); - addSocketPermissionForTribeNodes(policy, settings); } /** @@ -374,16 +373,6 @@ private static void addSocketPermissionForTransport(final Permissions policy, fi addSocketPermissionForPortRange(policy, transportRange); } - private static void addSocketPermissionForTribeNodes(final Permissions policy, final Settings settings) { - for (final Settings tribeNodeSettings : settings.getGroups("tribe", true).values()) { - // tribe nodes have HTTP disabled by default, so we check if HTTP is enabled before granting - if (NetworkModule.HTTP_ENABLED.exists(tribeNodeSettings) && NetworkModule.HTTP_ENABLED.get(tribeNodeSettings)) { - addSocketPermissionForHttp(policy, tribeNodeSettings); - } - addSocketPermissionForTransport(policy, tribeNodeSettings); - } - } - /** * Add dynamic {@link SocketPermission} for the specified port range. * diff --git a/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java b/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java index bb21ba8c7fc14..70d26770a7bdc 100644 --- a/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java +++ b/server/src/main/java/org/elasticsearch/common/network/NetworkModule.java @@ -71,7 +71,6 @@ public final class NetworkModule { Property.NodeScope); public static final Setting HTTP_DEFAULT_TYPE_SETTING = Setting.simpleString(HTTP_TYPE_DEFAULT_KEY, Property.NodeScope); public static final Setting HTTP_TYPE_SETTING = Setting.simpleString(HTTP_TYPE_KEY, Property.NodeScope); - public static final Setting HTTP_ENABLED = Setting.boolSetting("http.enabled", true, Property.NodeScope); public static final Setting TRANSPORT_TYPE_SETTING = Setting.simpleString(TRANSPORT_TYPE_KEY, Property.NodeScope); private final Settings settings; @@ -116,9 +115,9 @@ public NetworkModule(Settings settings, boolean transportClient, List> httpTransportFactory = plugin.getHttpTransports(settings, threadPool, bigArrays, - circuitBreakerService, namedWriteableRegistry, xContentRegistry, networkService, dispatcher); + Map> httpTransportFactory = plugin.getHttpTransports(settings, threadPool, bigArrays, + circuitBreakerService, namedWriteableRegistry, xContentRegistry, networkService, dispatcher); + if (transportClient == false) { for (Map.Entry> entry : httpTransportFactory.entrySet()) { registerHttpTransport(entry.getKey(), entry.getValue()); } diff --git a/server/src/main/java/org/elasticsearch/common/settings/ClusterSettings.java b/server/src/main/java/org/elasticsearch/common/settings/ClusterSettings.java index 45eb3cf45efa2..c19cbe4687ce6 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/ClusterSettings.java +++ b/server/src/main/java/org/elasticsearch/common/settings/ClusterSettings.java @@ -219,7 +219,6 @@ public void apply(Settings value, Settings current, Settings previous) { GatewayService.RECOVER_AFTER_MASTER_NODES_SETTING, GatewayService.RECOVER_AFTER_NODES_SETTING, GatewayService.RECOVER_AFTER_TIME_SETTING, - NetworkModule.HTTP_ENABLED, NetworkModule.HTTP_DEFAULT_TYPE_SETTING, NetworkModule.TRANSPORT_DEFAULT_TYPE_SETTING, NetworkModule.HTTP_TYPE_SETTING, diff --git a/server/src/main/java/org/elasticsearch/node/Node.java b/server/src/main/java/org/elasticsearch/node/Node.java index 2b0c0e59428ef..e3b7e5a2527f4 100644 --- a/server/src/main/java/org/elasticsearch/node/Node.java +++ b/server/src/main/java/org/elasticsearch/node/Node.java @@ -528,10 +528,8 @@ protected Node(final Environment environment, Collection client.initialize(injector.getInstance(new Key>() {}), () -> clusterService.localNode().getId(), transportService.getRemoteClusterService()); - if (NetworkModule.HTTP_ENABLED.get(settings)) { - logger.debug("initializing HTTP handlers ..."); - actionModule.initRestHandlers(() -> clusterService.state().nodes()); - } + logger.debug("initializing HTTP handlers ..."); + actionModule.initRestHandlers(() -> clusterService.state().nodes()); logger.info("initialized"); success = true; @@ -691,18 +689,13 @@ public void onTimeout(TimeValue timeout) { } } - - if (NetworkModule.HTTP_ENABLED.get(settings)) { - injector.getInstance(HttpServerTransport.class).start(); - } + injector.getInstance(HttpServerTransport.class).start(); if (WRITE_PORTS_FILE_SETTING.get(settings)) { - if (NetworkModule.HTTP_ENABLED.get(settings)) { - HttpServerTransport http = injector.getInstance(HttpServerTransport.class); - writePortsFile("http", http.boundAddress()); - } TransportService transport = injector.getInstance(TransportService.class); writePortsFile("transport", transport.boundAddress()); + HttpServerTransport http = injector.getInstance(HttpServerTransport.class); + writePortsFile("http", http.boundAddress()); } logger.info("started"); @@ -720,9 +713,7 @@ private Node stop() { logger.info("stopping ..."); injector.getInstance(ResourceWatcherService.class).stop(); - if (NetworkModule.HTTP_ENABLED.get(settings)) { - injector.getInstance(HttpServerTransport.class).stop(); - } + injector.getInstance(HttpServerTransport.class).stop(); injector.getInstance(SnapshotsService.class).stop(); injector.getInstance(SnapshotShardsService.class).stop(); @@ -769,9 +760,7 @@ public synchronized void close() throws IOException { toClose.add(() -> stopWatch.stop().start("node_service")); toClose.add(nodeService); toClose.add(() -> stopWatch.stop().start("http")); - if (NetworkModule.HTTP_ENABLED.get(settings)) { - toClose.add(injector.getInstance(HttpServerTransport.class)); - } + toClose.add(injector.getInstance(HttpServerTransport.class)); toClose.add(() -> stopWatch.stop().start("snapshot_service")); toClose.add(injector.getInstance(SnapshotsService.class)); toClose.add(injector.getInstance(SnapshotShardsService.class)); diff --git a/server/src/main/java/org/elasticsearch/transport/RemoteClusterConnection.java b/server/src/main/java/org/elasticsearch/transport/RemoteClusterConnection.java index fb4586d201bd7..c2746353242c0 100644 --- a/server/src/main/java/org/elasticsearch/transport/RemoteClusterConnection.java +++ b/server/src/main/java/org/elasticsearch/transport/RemoteClusterConnection.java @@ -633,6 +633,7 @@ public void handleResponse(NodesInfoResponse response) { } if (httpAddresses.size() < maxNumRemoteConnections) { + // nocommit: is this needed anymore? // just in case non of the connected nodes have http enabled we get other http enabled nodes instead. for (NodeInfo info : response.getNodes()) { if (nodePredicate.test(info.getNode()) && info.getHttp() != null) { diff --git a/server/src/test/java/org/elasticsearch/discovery/single/SingleNodeDiscoveryIT.java b/server/src/test/java/org/elasticsearch/discovery/single/SingleNodeDiscoveryIT.java index 9527afed5fe03..fc284b9f5e80c 100644 --- a/server/src/test/java/org/elasticsearch/discovery/single/SingleNodeDiscoveryIT.java +++ b/server/src/test/java/org/elasticsearch/discovery/single/SingleNodeDiscoveryIT.java @@ -32,6 +32,7 @@ import org.elasticsearch.discovery.zen.ZenPing; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.InternalTestCluster; +import org.elasticsearch.test.MockHttpTransport; import org.elasticsearch.test.NodeConfigurationSource; import org.elasticsearch.test.transport.MockTransportService; import org.elasticsearch.threadpool.TestThreadPool; @@ -40,6 +41,7 @@ import java.io.Closeable; import java.io.IOException; import java.nio.file.Path; +import java.util.Arrays; import java.util.Collections; import java.util.Stack; import java.util.concurrent.CompletableFuture; @@ -123,7 +125,6 @@ public Settings nodeSettings(int nodeOrdinal) { return Settings .builder() .put("discovery.type", "single-node") - .put("http.enabled", false) .put("transport.type", getTestTransportType()) /* * We align the port ranges of the two as then with zen discovery these two @@ -151,7 +152,7 @@ public Path nodeConfigPath(int nodeOrdinal) { 0, false, "other", - Collections.singletonList(getTestTransportPlugin()), + Arrays.asList(getTestTransportPlugin(), MockHttpTransport.TestPlugin.class), Function.identity())) { other.beforeTest(random(), 0); final ClusterState first = internalCluster().getInstance(ClusterService.class).state(); diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESSingleNodeTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESSingleNodeTestCase.java index b7d59aa12a96a..46e440e35bce1 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESSingleNodeTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESSingleNodeTestCase.java @@ -163,7 +163,7 @@ protected Settings nodeSettings() { /** True if a dummy http transport should be used, or false if the real http transport should be used. */ protected boolean addMockHttpTransport() { - return false; + return true; } private Node newNode() { diff --git a/test/framework/src/main/java/org/elasticsearch/test/discovery/ClusterDiscoveryConfiguration.java b/test/framework/src/main/java/org/elasticsearch/test/discovery/ClusterDiscoveryConfiguration.java index a93d2b364d51f..80f47ae6e52f9 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/discovery/ClusterDiscoveryConfiguration.java +++ b/test/framework/src/main/java/org/elasticsearch/test/discovery/ClusterDiscoveryConfiguration.java @@ -137,7 +137,6 @@ public Settings nodeSettings(int nodeOrdinal) { // we need to pin the node port & host so we'd know where to point things builder.put(TcpTransport.PORT.getKey(), unicastHostPorts[nodeOrdinal]); builder.put(TcpTransport.HOST.getKey(), IP_ADDR); // only bind on one IF we use v4 here by default - builder.put(NetworkModule.HTTP_ENABLED.getKey(), false); for (int i = 0; i < unicastHostOrdinals.length; i++) { unicastHosts[i] = IP_ADDR + ":" + (unicastHostPorts[unicastHostOrdinals[i]]); } diff --git a/test/framework/src/test/java/org/elasticsearch/node/MockNodeTests.java b/test/framework/src/test/java/org/elasticsearch/node/MockNodeTests.java index a217540b89fca..92ccca0d04daa 100644 --- a/test/framework/src/test/java/org/elasticsearch/node/MockNodeTests.java +++ b/test/framework/src/test/java/org/elasticsearch/node/MockNodeTests.java @@ -27,6 +27,7 @@ import org.elasticsearch.search.MockSearchService; import org.elasticsearch.search.SearchService; import org.elasticsearch.test.ESTestCase; +import org.elasticsearch.test.MockHttpTransport; import java.io.IOException; import java.util.ArrayList; @@ -41,10 +42,10 @@ public void testComponentsMockedByMarkerPlugins() throws IOException { Settings settings = Settings.builder() // All these are required or MockNode will fail to build. .put(Environment.PATH_HOME_SETTING.getKey(), createTempDir()) .put("transport.type", getTestTransportType()) - .put("http.enabled", false) .build(); List> plugins = new ArrayList<>(); plugins.add(getTestTransportPlugin()); + plugins.add(MockHttpTransport.TestPlugin.class); boolean useMockBigArrays = randomBoolean(); boolean useMockSearchService = randomBoolean(); if (useMockBigArrays) { diff --git a/test/framework/src/test/java/org/elasticsearch/test/test/InternalTestClusterTests.java b/test/framework/src/test/java/org/elasticsearch/test/test/InternalTestClusterTests.java index 05fdfac541a2e..e3aa9dc71f19f 100644 --- a/test/framework/src/test/java/org/elasticsearch/test/test/InternalTestClusterTests.java +++ b/test/framework/src/test/java/org/elasticsearch/test/test/InternalTestClusterTests.java @@ -33,6 +33,7 @@ import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.InternalTestCluster; +import org.elasticsearch.test.MockHttpTransport; import org.elasticsearch.test.NodeConfigurationSource; import org.elasticsearch.test.discovery.TestZenDiscovery; import org.elasticsearch.transport.TcpTransport; @@ -42,6 +43,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -70,6 +72,10 @@ @LuceneTestCase.SuppressFileSystems("ExtrasFS") // doesn't work with potential multi data path from test cluster yet public class InternalTestClusterTests extends ESTestCase { + private static Collection> mockPlugins() { + return Arrays.asList(getTestTransportPlugin(), TestZenDiscovery.TestPlugin.class, MockHttpTransport.TestPlugin.class); + } + public void testInitializiationIsConsistent() { long clusterSeed = randomLong(); boolean masterNodes = randomBoolean(); @@ -182,7 +188,6 @@ public Settings nodeSettings(int nodeOrdinal) { .put( NodeEnvironment.MAX_LOCAL_STORAGE_NODES_SETTING.getKey(), 2 * ((masterNodes ? InternalTestCluster.DEFAULT_HIGH_NUM_MASTER_NODES : 0) + maxNumDataNodes + numClientNodes)) - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put(NetworkModule.TRANSPORT_TYPE_KEY, getTestTransportType()); if (autoManageMinMasterNodes == false) { assert minNumDataNodes == maxNumDataNodes; @@ -208,13 +213,12 @@ public Settings transportClientSettings() { String nodePrefix = "foobar"; Path baseDir = createTempDir(); - final List> mockPlugins = Arrays.asList(getTestTransportPlugin(), TestZenDiscovery.TestPlugin.class); InternalTestCluster cluster0 = new InternalTestCluster(clusterSeed, baseDir, masterNodes, autoManageMinMasterNodes, minNumDataNodes, maxNumDataNodes, clusterName1, nodeConfigurationSource, numClientNodes, - enableHttpPipelining, nodePrefix, mockPlugins, Function.identity()); + enableHttpPipelining, nodePrefix, mockPlugins(), Function.identity()); InternalTestCluster cluster1 = new InternalTestCluster(clusterSeed, baseDir, masterNodes, autoManageMinMasterNodes, minNumDataNodes, maxNumDataNodes, clusterName2, nodeConfigurationSource, numClientNodes, - enableHttpPipelining, nodePrefix, mockPlugins, Function.identity()); + enableHttpPipelining, nodePrefix, mockPlugins(), Function.identity()); assertClusters(cluster0, cluster1, false); long seed = randomLong(); @@ -256,7 +260,7 @@ public void testDataFolderAssignmentAndCleaning() throws IOException, Interrupte NodeConfigurationSource nodeConfigurationSource = new NodeConfigurationSource() { @Override public Settings nodeSettings(int nodeOrdinal) { - return Settings.builder().put(NetworkModule.HTTP_ENABLED.getKey(), false) + return Settings.builder() .put( NodeEnvironment.MAX_LOCAL_STORAGE_NODES_SETTING.getKey(), 2 + (masterNodes ? InternalTestCluster.DEFAULT_HIGH_NUM_MASTER_NODES : 0) + maxNumDataNodes + numClientNodes) @@ -280,8 +284,7 @@ public Settings transportClientSettings() { Path baseDir = createTempDir(); InternalTestCluster cluster = new InternalTestCluster(clusterSeed, baseDir, masterNodes, true, minNumDataNodes, maxNumDataNodes, clusterName1, nodeConfigurationSource, numClientNodes, - enableHttpPipelining, nodePrefix, Arrays.asList(getTestTransportPlugin(), TestZenDiscovery.TestPlugin.class), - Function.identity()); + enableHttpPipelining, nodePrefix, mockPlugins(), Function.identity()); try { cluster.beforeTest(random(), 0.0); final int originalMasterCount = cluster.numMasterNodes(); @@ -368,7 +371,6 @@ public void testDifferentRolesMaintainPathOnRestart() throws Exception { public Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(NodeEnvironment.MAX_LOCAL_STORAGE_NODES_SETTING.getKey(), numNodes) - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put(NetworkModule.TRANSPORT_TYPE_KEY, getTestTransportType()) .put(DiscoverySettings.INITIAL_STATE_TIMEOUT_SETTING.getKey(), 0) // speedup join timeout as setting initial state timeout to 0 makes split @@ -387,7 +389,7 @@ public Settings transportClientSettings() { return Settings.builder() .put(NetworkModule.TRANSPORT_TYPE_KEY, transportClient).build(); } - }, 0, randomBoolean(), "", Arrays.asList(getTestTransportPlugin(), TestZenDiscovery.TestPlugin.class), Function.identity()); + }, 0, randomBoolean(), "", mockPlugins(), Function.identity()); cluster.beforeTest(random(), 0.0); List roles = new ArrayList<>(); for (int i = 0; i < numNodes; i++) { @@ -453,7 +455,7 @@ public void testTwoNodeCluster() throws Exception { NodeConfigurationSource nodeConfigurationSource = new NodeConfigurationSource() { @Override public Settings nodeSettings(int nodeOrdinal) { - return Settings.builder().put(NetworkModule.HTTP_ENABLED.getKey(), false) + return Settings.builder() .put(NodeEnvironment.MAX_LOCAL_STORAGE_NODES_SETTING.getKey(), 2) .put(NetworkModule.TRANSPORT_TYPE_KEY, getTestTransportType()) .build(); @@ -475,7 +477,7 @@ public Settings transportClientSettings() { Path baseDir = createTempDir(); InternalTestCluster cluster = new InternalTestCluster(randomLong(), baseDir, false, true, 2, 2, "test", nodeConfigurationSource, 0, enableHttpPipelining, nodePrefix, - Arrays.asList(getTestTransportPlugin(), TestZenDiscovery.TestPlugin.class), Function.identity()); + mockPlugins(), Function.identity()); try { cluster.beforeTest(random(), 0.0); assertMMNinNodeSetting(cluster, 2); From 45a97c3b507be527e4bd344a638a028db50cc4ec Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Wed, 18 Apr 2018 21:34:16 -0700 Subject: [PATCH 3/9] add migration doc --- docs/reference/migration/migrate_7_0/settings.asciidoc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/reference/migration/migrate_7_0/settings.asciidoc b/docs/reference/migration/migrate_7_0/settings.asciidoc index 1556056337b37..72f7ad9bd7d05 100644 --- a/docs/reference/migration/migrate_7_0/settings.asciidoc +++ b/docs/reference/migration/migrate_7_0/settings.asciidoc @@ -13,4 +13,10 @@ requests with a single-document payload. This means that these requests are executed on the bulk thread pool. As such, the indexing thread pool is no longer needed and has been removed. As such, the settings - `thread_pool.index.size` and `thread_pool.index.queue_size` have been removed. \ No newline at end of file + `thread_pool.index.size` and `thread_pool.index.queue_size` have been removed. + +==== Http enabled setting removed + +The setting `http.enabled` previously allowed disabling binding to http, only allowing +use of the transport client. This setting has been removed, as the transport client +will be removed in the future, thus requiring http to always be enabled. From 1abe03fa712d7fe7ad7182d2fbc2ea267a662eb6 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Wed, 18 Apr 2018 21:54:06 -0700 Subject: [PATCH 4/9] Add changelog --- docs/CHANGELOG.asciidoc | 2 ++ docs/reference/migration/migrate_7_0/settings.asciidoc | 1 + 2 files changed, 3 insertions(+) diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index 9c6e36a2e1d0d..e068618a70bd5 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -11,6 +11,8 @@ === Breaking Java Changes +* <> ({pull}29601[#29601]) + === Deprecations === New Features diff --git a/docs/reference/migration/migrate_7_0/settings.asciidoc b/docs/reference/migration/migrate_7_0/settings.asciidoc index 72f7ad9bd7d05..4e807ad69ad94 100644 --- a/docs/reference/migration/migrate_7_0/settings.asciidoc +++ b/docs/reference/migration/migrate_7_0/settings.asciidoc @@ -15,6 +15,7 @@ longer needed and has been removed. As such, the settings `thread_pool.index.size` and `thread_pool.index.queue_size` have been removed. +[[remove-http-enabled]] ==== Http enabled setting removed The setting `http.enabled` previously allowed disabling binding to http, only allowing From e9668860a15692ea1a4d66457429aff2b4fa371c Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 19 Apr 2018 14:11:10 -0700 Subject: [PATCH 5/9] remove nocommit --- .../org/elasticsearch/transport/RemoteClusterConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/transport/RemoteClusterConnection.java b/server/src/main/java/org/elasticsearch/transport/RemoteClusterConnection.java index c2746353242c0..ad1a56b3379dc 100644 --- a/server/src/main/java/org/elasticsearch/transport/RemoteClusterConnection.java +++ b/server/src/main/java/org/elasticsearch/transport/RemoteClusterConnection.java @@ -633,7 +633,7 @@ public void handleResponse(NodesInfoResponse response) { } if (httpAddresses.size() < maxNumRemoteConnections) { - // nocommit: is this needed anymore? + // TODO: remove this when master is 8.0, since 7.0+ nodes always have http enabled // just in case non of the connected nodes have http enabled we get other http enabled nodes instead. for (NodeInfo info : response.getNodes()) { if (nodePredicate.test(info.getNode()) && info.getHttp() != null) { From f7ea441c256301ca42c07ae52745f07c4618f778 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 19 Apr 2018 14:40:05 -0700 Subject: [PATCH 6/9] remove expected deprecation --- .../org/elasticsearch/test/test/InternalTestClusterTests.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/framework/src/test/java/org/elasticsearch/test/test/InternalTestClusterTests.java b/test/framework/src/test/java/org/elasticsearch/test/test/InternalTestClusterTests.java index 22715e0f92cbe..c70708c73acbf 100644 --- a/test/framework/src/test/java/org/elasticsearch/test/test/InternalTestClusterTests.java +++ b/test/framework/src/test/java/org/elasticsearch/test/test/InternalTestClusterTests.java @@ -234,9 +234,6 @@ public Settings transportClientSettings() { cluster1.beforeTest(random, random.nextDouble()); } assertArrayEquals(cluster0.getNodeNames(), cluster1.getNodeNames()); - if (cluster0.getNodeNames().length > 0) { - assertSettingDeprecationsAndWarnings(new Setting[]{NetworkModule.HTTP_ENABLED}); - } Iterator iterator1 = cluster1.getClients().iterator(); for (Client client : cluster0.getClients()) { assertTrue(iterator1.hasNext()); From 0d0b1f44ee8951422ef3fb6c64e1b4aa2a09f422 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 19 Apr 2018 17:55:25 -0700 Subject: [PATCH 7/9] make mock http transport more realistic --- .../org/elasticsearch/test/MockHttpTransport.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/test/framework/src/main/java/org/elasticsearch/test/MockHttpTransport.java b/test/framework/src/main/java/org/elasticsearch/test/MockHttpTransport.java index 4d8584553e9b2..5955bcead67eb 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/MockHttpTransport.java +++ b/test/framework/src/main/java/org/elasticsearch/test/MockHttpTransport.java @@ -22,6 +22,7 @@ import org.elasticsearch.common.component.AbstractLifecycleComponent; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.BoundTransportAddress; +import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.http.HttpInfo; import org.elasticsearch.http.HttpServerTransport; import org.elasticsearch.http.HttpStats; @@ -37,6 +38,14 @@ public class MockHttpTransport extends AbstractLifecycleComponent implements Htt */ public static class TestPlugin extends Plugin {} + // dummy address/info that can be read by code expecting objects from the relevant methods, + // but not actually used for a real connection + private static final TransportAddress DUMMY_TRANSPORT_ADDRESS = new TransportAddress(TransportAddress.META_ADDRESS, 0); + private static final BoundTransportAddress DUMMY_BOUND_ADDRESS = new BoundTransportAddress( + new TransportAddress[] { DUMMY_TRANSPORT_ADDRESS }, DUMMY_TRANSPORT_ADDRESS); + private static final HttpInfo DUMMY_HTTP_INFO = new HttpInfo(DUMMY_BOUND_ADDRESS, 0); + private static final HttpStats DUMMY_HTTP_STATS = new HttpStats(0, 0); + public MockHttpTransport() { super(Settings.EMPTY); } @@ -52,16 +61,16 @@ protected void doClose() {} @Override public BoundTransportAddress boundAddress() { - return null; + return DUMMY_BOUND_ADDRESS; } @Override public HttpInfo info() { - return null; + return DUMMY_HTTP_INFO; } @Override public HttpStats stats() { - return null; + return DUMMY_HTTP_STATS; } } From 0fe42c92221d9e6c8e509c7f9930b73ee74c4627 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Wed, 25 Apr 2018 15:59:41 -0700 Subject: [PATCH 8/9] convert xpack uses --- x-pack/docs/en/settings/security-settings.asciidoc | 4 ++-- x-pack/docs/en/setup/bootstrap-checks-xes.asciidoc | 2 +- .../org/elasticsearch/xpack/core/XPackSettings.java | 9 ++------- .../LicenseServiceClusterNotRecoveredTests.java | 8 ++++++-- .../license/LicenseServiceClusterTests.java | 8 ++++++-- .../license/StartBasicLicenseTests.java | 8 ++++++-- .../license/StartTrialLicenseTests.java | 8 ++++++-- .../xpack/ml/support/BaseMlIntegTestCase.java | 3 ++- .../exporter/local/LocalExporterIntegTestCase.java | 1 - .../xpack/security/TokenSSLBootstrapCheck.java | 3 +-- .../elasticsearch/integration/BulkUpdateTests.java | 6 +++++- .../integration/ClearRealmsCacheTests.java | 7 ++----- .../integration/ClearRolesCacheTests.java | 7 ++----- .../integration/ClusterPrivilegeTests.java | 6 +++++- .../integration/IndexPrivilegeTests.java | 6 ++---- .../org/elasticsearch/license/LicensingTests.java | 6 ++---- .../test/NativeRealmIntegTestCase.java | 7 ++----- .../xpack/security/SecurityPluginTests.java | 7 ++----- .../xpack/security/TokenSSLBootsrapCheckTests.java | 13 ------------- .../xpack/security/audit/index/AuditTrailTests.java | 6 +++++- .../xpack/security/authc/RunAsIntegTests.java | 7 ++----- .../authc/esnative/ESNativeMigrateToolTests.java | 6 +++++- .../security/authc/pki/PkiAuthenticationTests.java | 6 +++++- .../authc/pki/PkiOptionalClientAuthTests.java | 5 ++++- .../rest/action/RestAuthenticateActionTests.java | 9 ++++++--- .../ServerTransportFilterIntegrationTests.java | 13 +++++++++---- .../filter/IpFilteringIntegrationTests.java | 6 +++++- .../transport/filter/IpFilteringUpdateTests.java | 6 +++++- .../security/transport/ssl/SslIntegrationTests.java | 7 ++++++- .../security/user/AnonymousUserIntegTests.java | 6 +++++- .../elasticsearch/xpack/ssl/SSLClientAuthTests.java | 7 ++++++- .../xpack/sql/action/SqlLicenseIT.java | 6 +++++- .../actions/webhook/WebhookIntegrationTests.java | 4 ++-- .../watcher/input/chain/ChainIntegrationTests.java | 6 +++++- 34 files changed, 129 insertions(+), 90 deletions(-) diff --git a/x-pack/docs/en/settings/security-settings.asciidoc b/x-pack/docs/en/settings/security-settings.asciidoc index eb2299e693d52..adf83fe46d4b7 100644 --- a/x-pack/docs/en/settings/security-settings.asciidoc +++ b/x-pack/docs/en/settings/security-settings.asciidoc @@ -89,8 +89,8 @@ You can set the following token service settings in `xpack.security.authc.token.enabled`:: Set to `false` to disable the built-in token service. Defaults to `true` unless - `xpack.security.http.ssl.enabled` is `false` and `http.enabled` is `true`. - This prevents sniffing the token from a connection over plain http. + `xpack.security.http.ssl.enabled` is `false`. This prevents sniffing the token + from a connection over plain http. `xpack.security.authc.token.timeout`:: The length of time that a token is valid for. By default this value is `20m` or diff --git a/x-pack/docs/en/setup/bootstrap-checks-xes.asciidoc b/x-pack/docs/en/setup/bootstrap-checks-xes.asciidoc index 6d831b81ddbbf..a9150ec056c1e 100644 --- a/x-pack/docs/en/setup/bootstrap-checks-xes.asciidoc +++ b/x-pack/docs/en/setup/bootstrap-checks-xes.asciidoc @@ -76,7 +76,7 @@ If you use {security} and the built-in token service is enabled, you must configure your cluster to use SSL/TLS for the HTTP interface. HTTPS is required in order to use the token service. -In particular, if `xpack.security.authc.token.enabled` and `http.enabled` are +In particular, if `xpack.security.authc.token.enabled` is set to `true` in the `elasticsearch.yml` file, you must also set `xpack.security.http.ssl.enabled` to `true`. For more information about these settings, see <> and <>. diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackSettings.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackSettings.java index a88d423be95b2..aa7b2b216b229 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackSettings.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackSettings.java @@ -73,13 +73,8 @@ public class XPackSettings { true, Setting.Property.NodeScope); /** Setting for enabling or disabling the token service. Defaults to true */ - public static final Setting TOKEN_SERVICE_ENABLED_SETTING = Setting.boolSetting("xpack.security.authc.token.enabled", (s) -> { - if (NetworkModule.HTTP_ENABLED.get(s)) { - return XPackSettings.HTTP_SSL_ENABLED.getRaw(s); - } else { - return Boolean.TRUE.toString(); - } - }, Setting.Property.NodeScope); + public static final Setting TOKEN_SERVICE_ENABLED_SETTING = Setting.boolSetting("xpack.security.authc.token.enabled", + XPackSettings.HTTP_SSL_ENABLED::getRaw, Setting.Property.NodeScope); /** Setting for enabling or disabling sql. Defaults to true. */ public static final Setting SQL_ENABLED = Setting.boolSetting("xpack.sql.enabled", true, Setting.Property.NodeScope); diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceClusterNotRecoveredTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceClusterNotRecoveredTests.java index 4e7356ad63d13..d253656fd9cd0 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceClusterNotRecoveredTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceClusterNotRecoveredTests.java @@ -27,12 +27,16 @@ protected Settings nodeSettings(int nodeOrdinal) { return nodeSettingsBuilder(nodeOrdinal).build(); } + @Override + protected boolean addMockHttpTransport() { + return false; + } + private Settings.Builder nodeSettingsBuilder(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) .put("node.data", true) - .put("resource.reload.interval.high", "500ms") // for license mode file watcher - .put(NetworkModule.HTTP_ENABLED.getKey(), true); + .put("resource.reload.interval.high", "500ms"); // for license mode file watcher } @Override diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceClusterTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceClusterTests.java index ad508ddb7bc77..6bf2befbddd02 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceClusterTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceClusterTests.java @@ -34,12 +34,16 @@ protected Settings nodeSettings(int nodeOrdinal) { return nodeSettingsBuilder(nodeOrdinal).build(); } + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + private Settings.Builder nodeSettingsBuilder(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) .put("node.data", true) - .put("resource.reload.interval.high", "500ms") // for license mode file watcher - .put(NetworkModule.HTTP_ENABLED.getKey(), true); + .put("resource.reload.interval.high", "500ms"); // for license mode file watcher } @Override diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/StartBasicLicenseTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/StartBasicLicenseTests.java index 55b14a4d79280..12dd8ff9f3e3d 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/StartBasicLicenseTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/StartBasicLicenseTests.java @@ -28,13 +28,17 @@ @ESIntegTestCase.ClusterScope(scope = SUITE) public class StartBasicLicenseTests extends AbstractLicensesIntegrationTestCase { + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) .put("node.data", true) - .put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "basic") - .put(NetworkModule.HTTP_ENABLED.getKey(), true).build(); + .put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "basic").build(); } @Override diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/StartTrialLicenseTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/StartTrialLicenseTests.java index d673c4e720452..db53b9e001ce4 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/StartTrialLicenseTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/StartTrialLicenseTests.java @@ -27,13 +27,17 @@ @ESIntegTestCase.ClusterScope(scope = SUITE) public class StartTrialLicenseTests extends AbstractLicensesIntegrationTestCase { + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) .put("node.data", true) - .put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "basic") - .put(NetworkModule.HTTP_ENABLED.getKey(), true).build(); + .put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "basic").build(); } @Override diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/support/BaseMlIntegTestCase.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/support/BaseMlIntegTestCase.java index 7a554a51ea49f..9f3d1c779f8eb 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/support/BaseMlIntegTestCase.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/support/BaseMlIntegTestCase.java @@ -24,6 +24,7 @@ import org.elasticsearch.license.LicenseService; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESIntegTestCase; +import org.elasticsearch.test.MockHttpTransport; import org.elasticsearch.test.discovery.TestZenDiscovery; import org.elasticsearch.xpack.core.XPackSettings; import org.elasticsearch.xpack.ml.LocalStateMachineLearning; @@ -111,7 +112,7 @@ protected Collection> transportClientPlugins() { @Override protected Collection> getMockPlugins() { - return Arrays.asList(TestZenDiscovery.TestPlugin.class, TestSeedPlugin.class); + return Arrays.asList(TestZenDiscovery.TestPlugin.class, TestSeedPlugin.class, MockHttpTransport.TestPlugin.class); } @Before diff --git a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporterIntegTestCase.java b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporterIntegTestCase.java index ac44af04483a9..ed13a3ab12770 100644 --- a/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporterIntegTestCase.java +++ b/x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporterIntegTestCase.java @@ -46,7 +46,6 @@ protected Settings localExporterSettings() { .put("xpack.monitoring.exporters." + exporterName + ".enabled", false) .put("xpack.monitoring.exporters." + exporterName + ".cluster_alerts.management.enabled", false) .put(XPackSettings.MACHINE_LEARNING_ENABLED.getKey(), false) - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .build(); } diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/TokenSSLBootstrapCheck.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/TokenSSLBootstrapCheck.java index cc6da23247987..6ce1e3815805b 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/TokenSSLBootstrapCheck.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/TokenSSLBootstrapCheck.java @@ -19,10 +19,9 @@ final class TokenSSLBootstrapCheck implements BootstrapCheck { @Override public BootstrapCheckResult check(BootstrapContext context) { - final Boolean httpEnabled = NetworkModule.HTTP_ENABLED.get(context.settings); final Boolean httpsEnabled = XPackSettings.HTTP_SSL_ENABLED.get(context.settings); final Boolean tokenServiceEnabled = XPackSettings.TOKEN_SERVICE_ENABLED_SETTING.get(context.settings); - if (httpEnabled && httpsEnabled == false && tokenServiceEnabled) { + if (httpsEnabled == false && tokenServiceEnabled) { final String message = String.format( Locale.ROOT, "HTTPS is required in order to use the token service; " diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/BulkUpdateTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/BulkUpdateTests.java index ce7e58972b8e8..681735a6a7c72 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/BulkUpdateTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/BulkUpdateTests.java @@ -32,11 +32,15 @@ public class BulkUpdateTests extends SecurityIntegTestCase { + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override public Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put(XPackSettings.DLS_FLS_ENABLED.getKey(), randomBoolean()) .build(); } diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClearRealmsCacheTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClearRealmsCacheTests.java index fcab6f0d73240..7c4f6e364d9b0 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClearRealmsCacheTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClearRealmsCacheTests.java @@ -174,11 +174,8 @@ static void executeHttpRequest(String path, Map params) throws E } @Override - public Settings nodeSettings(int nodeOrdinal) { - return Settings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) - .build(); + protected boolean addMockHttpTransport() { + return false; // enable http } @Override diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClearRolesCacheTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClearRolesCacheTests.java index eadbe3738b63f..3c3eddfc14c08 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClearRolesCacheTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClearRolesCacheTests.java @@ -68,11 +68,8 @@ public void setupForTests() { } @Override - public Settings nodeSettings(int nodeOrdinal) { - return Settings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) - .build(); + protected boolean addMockHttpTransport() { + return false; // enable http } public void testModifyingViaApiClearsCache() throws Exception { diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClusterPrivilegeTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClusterPrivilegeTests.java index 19d61ed77c5f4..0baa1e916754b 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClusterPrivilegeTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/ClusterPrivilegeTests.java @@ -56,10 +56,14 @@ public static void cleanupRepositoryPath() { repositoryLocation = null; } + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings() { return Settings.builder().put(super.nodeSettings()) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("path.repo", repositoryLocation) .build(); } diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/IndexPrivilegeTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/IndexPrivilegeTests.java index b1428040080d4..8efbddcf57fbe 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/IndexPrivilegeTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/integration/IndexPrivilegeTests.java @@ -120,10 +120,8 @@ public class IndexPrivilegeTests extends AbstractPrivilegeTestCase { "index_a_role:u13\n"; @Override - protected Settings nodeSettings() { - return Settings.builder().put(super.nodeSettings()) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) - .build(); + protected boolean addMockHttpTransport() { + return false; // enable http } @Override diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/license/LicensingTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/license/LicensingTests.java index 351cf91bf9428..2c70bc1ff81a2 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/license/LicensingTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/license/LicensingTests.java @@ -104,10 +104,8 @@ protected String configUsersRoles() { } @Override - public Settings nodeSettings(int nodeOrdinal) { - return Settings.builder().put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) - .build(); + protected boolean addMockHttpTransport() { + return false; // enable http } @Override diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/test/NativeRealmIntegTestCase.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/test/NativeRealmIntegTestCase.java index 2727353b36f0b..5f082eae62fa9 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/test/NativeRealmIntegTestCase.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/test/NativeRealmIntegTestCase.java @@ -56,11 +56,8 @@ public void stopESNativeStores() throws Exception { } @Override - protected Settings nodeSettings(int nodeOrdinal) { - return Settings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) - .build(); + protected boolean addMockHttpTransport() { + return false; // enable http } @Override diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityPluginTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityPluginTests.java index 3f74437032980..295ee42ff7881 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityPluginTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/SecurityPluginTests.java @@ -25,11 +25,8 @@ public class SecurityPluginTests extends SecurityIntegTestCase { @Override - public Settings nodeSettings(int nodeOrdinal) { - return Settings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put("http.enabled", true) //This test requires HTTP - .build(); + protected boolean addMockHttpTransport() { + return false; // enable http } public void testThatPluginIsLoaded() throws IOException { diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/TokenSSLBootsrapCheckTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/TokenSSLBootsrapCheckTests.java index c66b882ac0a3f..1e9875ae5369d 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/TokenSSLBootsrapCheckTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/TokenSSLBootsrapCheckTests.java @@ -19,11 +19,6 @@ public void testTokenSSLBootstrapCheck() { assertFalse(new TokenSSLBootstrapCheck().check(new BootstrapContext(settings, null)).isFailure()); - settings = Settings.builder() - .put(NetworkModule.HTTP_ENABLED.getKey(), false) - .put(XPackSettings.TOKEN_SERVICE_ENABLED_SETTING.getKey(), true).build(); - assertFalse(new TokenSSLBootstrapCheck().check(new BootstrapContext(settings, null)).isFailure()); - settings = Settings.builder().put(XPackSettings.HTTP_SSL_ENABLED.getKey(), true).build(); assertFalse(new TokenSSLBootstrapCheck().check(new BootstrapContext(settings, null)).isFailure()); @@ -35,13 +30,5 @@ public void testTokenSSLBootstrapCheck() { .put(XPackSettings.HTTP_SSL_ENABLED.getKey(), false) .put(XPackSettings.TOKEN_SERVICE_ENABLED_SETTING.getKey(), true).build(); assertTrue(new TokenSSLBootstrapCheck().check(new BootstrapContext(settings, null)).isFailure()); - - settings = Settings.builder() - .put(XPackSettings.HTTP_SSL_ENABLED.getKey(), false) - .put(XPackSettings.TOKEN_SERVICE_ENABLED_SETTING.getKey(), true) - .put(NetworkModule.HTTP_ENABLED.getKey(), false).build(); - assertFalse(new TokenSSLBootstrapCheck().check(new BootstrapContext(settings, null)).isFailure()); - - assertSettingDeprecationsAndWarnings(new Setting[] { NetworkModule.HTTP_ENABLED }); } } diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/index/AuditTrailTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/index/AuditTrailTests.java index e64d9bb7e4447..8b845fd3393c3 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/index/AuditTrailTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/audit/index/AuditTrailTests.java @@ -49,11 +49,15 @@ public class AuditTrailTests extends SecurityIntegTestCase { private static final String ROLE_CAN_RUN_AS = "can_run_as"; private static final String ROLES = ROLE_CAN_RUN_AS + ":\n" + " run_as: [ '" + EXECUTE_USER + "' ]\n"; + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override public Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("xpack.security.audit.enabled", true) .put("xpack.security.audit.outputs", "index") .putList("xpack.security.audit.index.events.include", "access_denied", "authentication_failed", "run_as_denied") diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/RunAsIntegTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/RunAsIntegTests.java index ce67b84134f56..56d34abb9d3da 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/RunAsIntegTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/RunAsIntegTests.java @@ -54,11 +54,8 @@ public static void configureRunAsHasSuperUserRole() { } @Override - public Settings nodeSettings(int nodeOrdinal) { - return Settings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) - .build(); + protected boolean addMockHttpTransport() { + return false; // enable http } @Override diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/esnative/ESNativeMigrateToolTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/esnative/ESNativeMigrateToolTests.java index ebe6b6abf1860..839b272d115cc 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/esnative/ESNativeMigrateToolTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/esnative/ESNativeMigrateToolTests.java @@ -39,12 +39,16 @@ public static void setSSL() { useSSL = randomBoolean(); } + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override public Settings nodeSettings(int nodeOrdinal) { logger.info("--> use SSL? {}", useSSL); Settings s = Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("xpack.security.http.ssl.enabled", useSSL) .build(); return s; diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/pki/PkiAuthenticationTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/pki/PkiAuthenticationTests.java index e64a06d435fc1..73825a3b6fcd8 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/pki/PkiAuthenticationTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/pki/PkiAuthenticationTests.java @@ -51,13 +51,17 @@ */ public class PkiAuthenticationTests extends SecuritySingleNodeTestCase { + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings() { SSLClientAuth sslClientAuth = randomBoolean() ? SSLClientAuth.REQUIRED : SSLClientAuth.OPTIONAL; Settings.Builder builder = Settings.builder() .put(super.nodeSettings()) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("xpack.security.http.ssl.enabled", true) .put("xpack.security.http.ssl.client_authentication", sslClientAuth) .put("xpack.security.authc.realms.file.type", FileRealmSettings.TYPE) diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/pki/PkiOptionalClientAuthTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/pki/PkiOptionalClientAuthTests.java index 720ab17aedb45..47263cd395229 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/pki/PkiOptionalClientAuthTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/pki/PkiOptionalClientAuthTests.java @@ -41,12 +41,15 @@ public static void initPort() { } @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + protected Settings nodeSettings() { String randomClientPortRange = randomClientPort + "-" + (randomClientPort+100); Settings.Builder builder = Settings.builder() .put(super.nodeSettings()) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("xpack.security.http.ssl.enabled", true) .put("xpack.security.http.ssl.client_authentication", SSLClientAuth.OPTIONAL) .put("xpack.security.authc.realms.file.type", "file") diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/RestAuthenticateActionTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/RestAuthenticateActionTests.java index a35af3c749fa7..fea442287ae62 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/RestAuthenticateActionTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/RestAuthenticateActionTests.java @@ -35,11 +35,14 @@ public static void maybeEnableAnonymous() { anonymousEnabled = randomBoolean(); } + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { - Settings.Builder builder = Settings.builder() - .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true); + Settings.Builder builder = Settings.builder().put(super.nodeSettings(nodeOrdinal)); if (anonymousEnabled) { builder.put(AnonymousUser.USERNAME_SETTING.getKey(), "anon") diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/ServerTransportFilterIntegrationTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/ServerTransportFilterIntegrationTests.java index 0964bc5a45df7..8af8c5da81a94 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/ServerTransportFilterIntegrationTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/ServerTransportFilterIntegrationTests.java @@ -16,6 +16,8 @@ import org.elasticsearch.node.MockNode; import org.elasticsearch.node.Node; import org.elasticsearch.node.NodeValidationException; +import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.test.MockHttpTransport; import org.elasticsearch.test.SecurityIntegTestCase; import org.elasticsearch.test.SecuritySettingsSource; import org.elasticsearch.test.SecuritySettingsSourceField; @@ -40,6 +42,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; +import java.util.Collection; import java.util.concurrent.CountDownLatch; import static org.elasticsearch.test.SecuritySettingsSource.addSSLSettingsForStore; @@ -114,12 +117,13 @@ public void testThatConnectionToServerTypeConnectionWorks() throws IOException, .put("xpack.security.audit.enabled", false) .put(XPackSettings.WATCHER_ENABLED.getKey(), false) .put("path.home", home) - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put(Node.NODE_MASTER_SETTING.getKey(), false) .put(TestZenDiscovery.USE_MOCK_PINGS.getKey(), false); //.put("xpack.ml.autodetect_process", false); + Collection> mockPlugins = Arrays.asList( + LocalStateSecurity.class, TestZenDiscovery.TestPlugin.class, MockHttpTransport.TestPlugin.class); addSSLSettingsForStore(nodeSettings, "/org/elasticsearch/xpack/security/transport/ssl/certs/simple/testnode.jks", "testnode"); - try (Node node = new MockNode(nodeSettings.build(), Arrays.asList(LocalStateSecurity.class, TestZenDiscovery.TestPlugin.class))) { + try (Node node = new MockNode(nodeSettings.build(), mockPlugins)) { node.start(); ensureStableCluster(cluster().size() + 1); } @@ -150,14 +154,15 @@ public void testThatConnectionToClientTypeConnectionIsRejected() throws IOExcept .put("xpack.security.enabled", true) .put("xpack.security.audit.enabled", false) .put(XPackSettings.WATCHER_ENABLED.getKey(), false) - .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put("discovery.initial_state_timeout", "0s") .put("path.home", home) .put(Node.NODE_MASTER_SETTING.getKey(), false) .put(TestZenDiscovery.USE_MOCK_PINGS.getKey(), false); //.put("xpack.ml.autodetect_process", false); + Collection> mockPlugins = Arrays.asList( + LocalStateSecurity.class, TestZenDiscovery.TestPlugin.class, MockHttpTransport.TestPlugin.class); addSSLSettingsForStore(nodeSettings, "/org/elasticsearch/xpack/security/transport/ssl/certs/simple/testnode.jks", "testnode"); - try (Node node = new MockNode(nodeSettings.build(), Arrays.asList(LocalStateSecurity.class, TestZenDiscovery.TestPlugin.class))) { + try (Node node = new MockNode(nodeSettings.build(), mockPlugins)) { node.start(); TransportService instance = node.injector().getInstance(TransportService.class); try (Transport.Connection connection = instance.openConnection(new DiscoveryNode("theNode", transportAddress, Version.CURRENT), diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/filter/IpFilteringIntegrationTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/filter/IpFilteringIntegrationTests.java index ef1eeace73b31..3a199aec5c870 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/filter/IpFilteringIntegrationTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/filter/IpFilteringIntegrationTests.java @@ -37,11 +37,15 @@ public static void getRandomPort() { randomClientPort = randomIntBetween(49000, 65500); // ephemeral port } + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { String randomClientPortRange = randomClientPort + "-" + (randomClientPort+100); return Settings.builder().put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("transport.profiles.client.port", randomClientPortRange) // make sure this is "localhost", no matter if ipv4 or ipv6, but be consistent .put("transport.profiles.client.bind_host", "localhost") diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/filter/IpFilteringUpdateTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/filter/IpFilteringUpdateTests.java index 9c3572b767606..b50fc1ce42851 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/filter/IpFilteringUpdateTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/filter/IpFilteringUpdateTests.java @@ -34,12 +34,16 @@ public static void getRandomPort() { randomClientPort = randomIntBetween(49000, 65500); } + @Override + protected boolean addMockHttpTransport() { + return httpEnabled == false; + } + @Override protected Settings nodeSettings(int nodeOrdinal) { String randomClientPortRange = randomClientPort + "-" + (randomClientPort+100); return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), httpEnabled) .put("xpack.security.transport.filter.deny", "127.0.0.200") .put("transport.profiles.client.port", randomClientPortRange) .build(); diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/ssl/SslIntegrationTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/ssl/SslIntegrationTests.java index 37f13806c2388..c46bac7e6efbc 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/ssl/SslIntegrationTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/transport/ssl/SslIntegrationTests.java @@ -47,10 +47,15 @@ import static org.hamcrest.Matchers.instanceOf; public class SslIntegrationTests extends SecurityIntegTestCase { + + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder().put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put("xpack.security.http.ssl.enabled", true).build(); } diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/user/AnonymousUserIntegTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/user/AnonymousUserIntegTests.java index 738cf68763b85..b47c3b3e10fde 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/user/AnonymousUserIntegTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/user/AnonymousUserIntegTests.java @@ -22,11 +22,15 @@ public class AnonymousUserIntegTests extends SecurityIntegTestCase { private boolean authorizationExceptionsEnabled = randomBoolean(); + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override public Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put(AnonymousUser.ROLES_SETTING.getKey(), "anonymous") .put(AuthorizationService.ANONYMOUS_AUTHORIZATION_EXCEPTION_SETTING.getKey(), authorizationExceptionsEnabled) .build(); diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/ssl/SSLClientAuthTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/ssl/SSLClientAuthTests.java index 0c885840a1734..062a376681119 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/ssl/SSLClientAuthTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/ssl/SSLClientAuthTests.java @@ -45,6 +45,12 @@ import static org.hamcrest.Matchers.instanceOf; public class SSLClientAuthTests extends SecurityIntegTestCase { + + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() @@ -54,7 +60,6 @@ protected Settings nodeSettings(int nodeOrdinal) { .put("xpack.security.http.ssl.enabled", true) .put("xpack.security.http.ssl.client_authentication", SSLClientAuth.REQUIRED) .put("transport.profiles.default.xpack.security.ssl.client_authentication", SSLClientAuth.NONE) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .build(); } diff --git a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/action/SqlLicenseIT.java b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/action/SqlLicenseIT.java index d4d9ab4c3e87e..a97f66763a9b6 100644 --- a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/action/SqlLicenseIT.java +++ b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/action/SqlLicenseIT.java @@ -55,12 +55,16 @@ protected Collection> nodePlugins() { return plugins; } + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { // Enable http so we can test JDBC licensing because only exists on the REST layer. return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .put(NetworkModule.HTTP_TYPE_KEY, Netty4Plugin.NETTY_HTTP_TRANSPORT_NAME) .build(); } diff --git a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/actions/webhook/WebhookIntegrationTests.java b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/actions/webhook/WebhookIntegrationTests.java index 151bf4af18939..8dfc5dc25aeee 100644 --- a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/actions/webhook/WebhookIntegrationTests.java +++ b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/actions/webhook/WebhookIntegrationTests.java @@ -49,8 +49,8 @@ public class WebhookIntegrationTests extends AbstractWatcherIntegrationTestCase private MockWebServer webServer = new MockWebServer(); @Override - protected Settings nodeSettings(int nodeOrdinal) { - return Settings.builder().put(super.nodeSettings(nodeOrdinal)).put("http.enabled", true).build(); + protected boolean addMockHttpTransport() { + return false; // enable http } @Override diff --git a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/input/chain/ChainIntegrationTests.java b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/input/chain/ChainIntegrationTests.java index 3dbc9de70d50d..3a590fbfe28c9 100644 --- a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/input/chain/ChainIntegrationTests.java +++ b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/input/chain/ChainIntegrationTests.java @@ -36,11 +36,15 @@ public class ChainIntegrationTests extends AbstractWatcherIntegrationTestCase { + @Override + protected boolean addMockHttpTransport() { + return false; // enable http + } + @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.builder() .put(super.nodeSettings(nodeOrdinal)) - .put(NetworkModule.HTTP_ENABLED.getKey(), true) .build(); } From 7ba233c8bff2f4ee2ee84e91e507d5688da319e6 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Mon, 30 Apr 2018 17:54:47 -0700 Subject: [PATCH 9/9] feedback --- docs/reference/migration/migrate_7_0/settings.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/migration/migrate_7_0/settings.asciidoc b/docs/reference/migration/migrate_7_0/settings.asciidoc index 6fee302ea5acb..d62d7e6065de0 100644 --- a/docs/reference/migration/migrate_7_0/settings.asciidoc +++ b/docs/reference/migration/migrate_7_0/settings.asciidoc @@ -29,6 +29,6 @@ [[remove-http-enabled]] ==== Http enabled setting removed -The setting `http.enabled` previously allowed disabling binding to http, only allowing +The setting `http.enabled` previously allowed disabling binding to HTTP, only allowing use of the transport client. This setting has been removed, as the transport client -will be removed in the future, thus requiring http to always be enabled. +will be removed in the future, thus requiring HTTP to always be enabled.