From 966600fc9069992328df8e8ff659d45226cdfc96 Mon Sep 17 00:00:00 2001 From: Boaz Leskes Date: Tue, 18 Oct 2016 21:12:36 +0200 Subject: [PATCH] Adapt testing code to the removal of local discovery (elastic/elasticsearch#3767) See https://github.com/elastic/elasticsearch/pull/20960 Original commit: elastic/x-pack-elasticsearch@f368fd4b1cb362f732d76b0a7f1ca7574169aac4 --- .../license/TribeTransportTestCase.java | 17 ++++++------ .../test/SecuritySettingsSource.java | 19 ++++++-------- .../transport/KnownActionsTests.java | 7 ++++- .../xpack/security/SecurityTribeIT.java | 26 +++++-------------- ...ServerTransportFilterIntegrationTests.java | 11 ++++---- .../test/integration/NoMasterNodeTests.java | 1 - 6 files changed, 33 insertions(+), 48 deletions(-) diff --git a/elasticsearch/src/test/java/org/elasticsearch/license/TribeTransportTestCase.java b/elasticsearch/src/test/java/org/elasticsearch/license/TribeTransportTestCase.java index ad924612e49..f9b3073cab2 100644 --- a/elasticsearch/src/test/java/org/elasticsearch/license/TribeTransportTestCase.java +++ b/elasticsearch/src/test/java/org/elasticsearch/license/TribeTransportTestCase.java @@ -19,12 +19,8 @@ import org.elasticsearch.common.UUIDs; import org.elasticsearch.common.network.NetworkModule; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.TransportAddress; -import org.elasticsearch.discovery.DiscoveryModule; import org.elasticsearch.discovery.zen.ping.unicast.UnicastZenPing; import org.elasticsearch.node.MockNode; -import org.elasticsearch.transport.MockTcpTransportPlugin; -import org.elasticsearch.xpack.XPackPlugin; -import org.elasticsearch.xpack.XPackSettings; import org.elasticsearch.node.Node; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESIntegTestCase; @@ -33,8 +29,13 @@ import org.elasticsearch.test.ESIntegTestCase.Scope; import org.elasticsearch.test.InternalTestCluster; import org.elasticsearch.test.NodeConfigurationSource; import org.elasticsearch.test.TestCluster; +import org.elasticsearch.test.discovery.MockZenPing; +import org.elasticsearch.transport.MockTcpTransportPlugin; +import org.elasticsearch.xpack.XPackPlugin; +import org.elasticsearch.xpack.XPackSettings; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -56,8 +57,7 @@ public abstract class TribeTransportTestCase extends ESIntegTestCase { protected final Settings nodeSettings(int nodeOrdinal) { final Settings.Builder builder = Settings.builder() .put(NetworkModule.HTTP_ENABLED.getKey(), false) - .put("transport.type", MockTcpTransportPlugin.MOCK_TCP_TRANSPORT_NAME) - .put(DiscoveryModule.DISCOVERY_TYPE_SETTING.getKey(), "local"); + .put("transport.type", MockTcpTransportPlugin.MOCK_TCP_TRANSPORT_NAME); List enabledFeatures = enabledFeatures(); builder.put(XPackSettings.SECURITY_ENABLED.getKey(), enabledFeatures.contains(XPackPlugin.SECURITY)); builder.put(XPackSettings.MONITORING_ENABLED.getKey(), enabledFeatures.contains(XPackPlugin.MONITORING)); @@ -132,8 +132,6 @@ public abstract class TribeTransportTestCase extends ESIntegTestCase { .put("tribe.t2.cluster.name", cluster2.getClusterName()) .put("tribe.t1.transport.type", MockTcpTransportPlugin.MOCK_TCP_TRANSPORT_NAME) .put("tribe.t2.transport.type", MockTcpTransportPlugin.MOCK_TCP_TRANSPORT_NAME) - .put("tribe.t1.discovery.type", "local") - .put("tribe.t2.discovery.type", "local") .put("tribe.blocks.write", false) .put(tribe1Defaults.build()) .put(tribe2Defaults.build()) @@ -143,7 +141,8 @@ public abstract class TribeTransportTestCase extends ESIntegTestCase { .put("transport.type", MockTcpTransportPlugin.MOCK_TCP_TRANSPORT_NAME) .build(); - final Node tribeNode = new MockNode(merged, Collections.singleton(MockTcpTransportPlugin.class)).start(); + final List> mockPlugins = Arrays.asList(MockZenPing.TestPlugin.class, MockTcpTransportPlugin.class); + final Node tribeNode = new MockNode(merged, mockPlugins).start(); Client tribeClient = tribeNode.client(); logger.info("wait till tribe has the same nodes as the 2 clusters"); diff --git a/elasticsearch/src/test/java/org/elasticsearch/test/SecuritySettingsSource.java b/elasticsearch/src/test/java/org/elasticsearch/test/SecuritySettingsSource.java index f5178e97396..37709201797 100644 --- a/elasticsearch/src/test/java/org/elasticsearch/test/SecuritySettingsSource.java +++ b/elasticsearch/src/test/java/org/elasticsearch/test/SecuritySettingsSource.java @@ -10,23 +10,22 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.PathUtils; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; -import org.elasticsearch.discovery.DiscoveryModule; -import org.elasticsearch.xpack.XPackSettings; -import org.elasticsearch.transport.Netty3Plugin; -import org.elasticsearch.transport.Netty4Plugin; import org.elasticsearch.env.Environment; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESIntegTestCase.Scope; -import org.elasticsearch.xpack.security.authc.file.FileRealm; -import org.elasticsearch.xpack.security.authc.esnative.NativeRealm; +import org.elasticsearch.test.discovery.ClusterDiscoveryConfiguration; +import org.elasticsearch.transport.Netty3Plugin; +import org.elasticsearch.transport.Netty4Plugin; +import org.elasticsearch.xpack.XPackPlugin; +import org.elasticsearch.xpack.XPackSettings; import org.elasticsearch.xpack.security.Security; import org.elasticsearch.xpack.security.audit.logfile.LoggingAuditTrail; +import org.elasticsearch.xpack.security.authc.esnative.NativeRealm; +import org.elasticsearch.xpack.security.authc.file.FileRealm; import org.elasticsearch.xpack.security.authc.support.Hasher; import org.elasticsearch.xpack.security.authc.support.SecuredString; import org.elasticsearch.xpack.security.crypto.CryptoService; import org.elasticsearch.xpack.security.test.SecurityTestUtils; -import org.elasticsearch.test.discovery.ClusterDiscoveryConfiguration; -import org.elasticsearch.xpack.XPackPlugin; import java.net.URISyntaxException; import java.nio.file.Files; @@ -48,9 +47,7 @@ import static org.elasticsearch.xpack.security.test.SecurityTestUtils.writeFile; */ public class SecuritySettingsSource extends ClusterDiscoveryConfiguration.UnicastZen { - public static final Settings DEFAULT_SETTINGS = Settings.builder() - .put(DiscoveryModule.DISCOVERY_TYPE_SETTING.getKey(), "zen") - .build(); + public static final Settings DEFAULT_SETTINGS = Settings.EMPTY; public static final String DEFAULT_USER_NAME = "test_user"; public static final String DEFAULT_PASSWORD = "changeme"; diff --git a/elasticsearch/src/test/java/org/elasticsearch/transport/KnownActionsTests.java b/elasticsearch/src/test/java/org/elasticsearch/transport/KnownActionsTests.java index 252263505d4..7ee939e0a72 100644 --- a/elasticsearch/src/test/java/org/elasticsearch/transport/KnownActionsTests.java +++ b/elasticsearch/src/test/java/org/elasticsearch/transport/KnownActionsTests.java @@ -11,11 +11,11 @@ import org.elasticsearch.common.io.PathUtils; import org.elasticsearch.common.io.Streams; import org.elasticsearch.license.Licensing; import org.elasticsearch.plugins.Plugin; -import org.elasticsearch.xpack.security.action.SecurityActionModule; import org.elasticsearch.test.ESIntegTestCase.ClusterScope; import org.elasticsearch.test.SecurityIntegTestCase; import org.elasticsearch.xpack.XPackPlugin; import org.elasticsearch.xpack.graph.Graph; +import org.elasticsearch.xpack.security.action.SecurityActionModule; import org.junit.BeforeClass; import java.io.IOException; @@ -57,6 +57,11 @@ public class KnownActionsTests extends SecurityIntegTestCase { return mockPlugins.stream().filter(p -> p != AssertingTransportInterceptor.TestPlugin.class).collect(Collectors.toList()); } + @Override + protected boolean addMockZenPings() { + return false; // make sure unicasthost zen ping actions are loaded + } + @BeforeClass public static void init() throws Exception { knownActions = loadKnownActions(); diff --git a/elasticsearch/src/test/java/org/elasticsearch/xpack/security/SecurityTribeIT.java b/elasticsearch/src/test/java/org/elasticsearch/xpack/security/SecurityTribeIT.java index 462327d9c1c..79ead36d733 100644 --- a/elasticsearch/src/test/java/org/elasticsearch/xpack/security/SecurityTribeIT.java +++ b/elasticsearch/src/test/java/org/elasticsearch/xpack/security/SecurityTribeIT.java @@ -7,23 +7,21 @@ package org.elasticsearch.xpack.security; import org.elasticsearch.ElasticsearchSecurityException; import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse; -import org.elasticsearch.action.admin.cluster.node.info.NodeInfo; -import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse; import org.elasticsearch.client.Client; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.common.UUIDs; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.transport.TransportAddress; -import org.elasticsearch.discovery.zen.ping.unicast.UnicastZenPing; import org.elasticsearch.env.NodeEnvironment; import org.elasticsearch.index.IndexNotFoundException; import org.elasticsearch.node.MockNode; import org.elasticsearch.node.Node; import org.elasticsearch.node.NodeValidationException; +import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.InternalTestCluster; import org.elasticsearch.test.NativeRealmIntegTestCase; import org.elasticsearch.test.SecuritySettingsSource; +import org.elasticsearch.test.discovery.MockZenPing; import org.elasticsearch.xpack.security.action.role.GetRolesResponse; import org.elasticsearch.xpack.security.action.role.PutRoleResponse; import org.elasticsearch.xpack.security.action.user.PutUserResponse; @@ -35,6 +33,7 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -145,11 +144,6 @@ public class SecurityTribeIT extends NativeRealmIntegTestCase { tribe1Defaults.put("tribe.t1." + entry.getKey(), entry.getValue()); tribe2Defaults.put("tribe.t2." + entry.getKey(), entry.getValue()); } - // give each tribe it's unicast hosts to connect to - tribe1Defaults.putArray("tribe.t1." + UnicastZenPing.DISCOVERY_ZEN_PING_UNICAST_HOSTS_SETTING.getKey(), - getUnicastHosts(internalCluster().client())); - tribe2Defaults.putArray("tribe.t2." + UnicastZenPing.DISCOVERY_ZEN_PING_UNICAST_HOSTS_SETTING.getKey(), - getUnicastHosts(cluster2.client())); Settings merged = Settings.builder() .put(internalCluster().getDefaultSettings()) @@ -164,20 +158,12 @@ public class SecurityTribeIT extends NativeRealmIntegTestCase { .put("node.name", "tribe_node") // make sure we can identify threads from this node .build(); - tribeNode = new MockNode(merged, nodePlugins()).start(); + final Collection> plugins = new ArrayList<>(nodePlugins()); + plugins.add(MockZenPing.TestPlugin.class); + tribeNode = new MockNode(merged, plugins).start(); tribeClient = getClientWrapper().apply(tribeNode.client()); } - private String[] getUnicastHosts(Client client) { - ArrayList unicastHosts = new ArrayList<>(); - NodesInfoResponse nodeInfos = client.admin().cluster().prepareNodesInfo().clear().setTransport(true).get(); - for (NodeInfo info : nodeInfos.getNodes()) { - TransportAddress address = info.getTransport().getAddress().publishAddress(); - unicastHosts.add(address.getAddress() + ":" + address.getPort()); - } - return unicastHosts.toArray(new String[unicastHosts.size()]); - } - public void testThatTribeCanAuthenticateElasticUser() throws Exception { setupTribeNode(Settings.EMPTY); ClusterHealthResponse response = tribeClient.filterWithHeader(Collections.singletonMap("Authorization", diff --git a/elasticsearch/src/test/java/org/elasticsearch/xpack/security/transport/ServerTransportFilterIntegrationTests.java b/elasticsearch/src/test/java/org/elasticsearch/xpack/security/transport/ServerTransportFilterIntegrationTests.java index 7ea939d37f4..ad81aec4762 100644 --- a/elasticsearch/src/test/java/org/elasticsearch/xpack/security/transport/ServerTransportFilterIntegrationTests.java +++ b/elasticsearch/src/test/java/org/elasticsearch/xpack/security/transport/ServerTransportFilterIntegrationTests.java @@ -15,6 +15,7 @@ import org.elasticsearch.node.MockNode; import org.elasticsearch.node.Node; import org.elasticsearch.node.NodeValidationException; import org.elasticsearch.test.SecurityIntegTestCase; +import org.elasticsearch.test.discovery.MockZenPing; import org.elasticsearch.transport.Transport; import org.elasticsearch.xpack.XPackPlugin; import org.elasticsearch.xpack.security.Security; @@ -23,16 +24,14 @@ import org.elasticsearch.xpack.ssl.SSLClientAuth; import org.junit.BeforeClass; import java.io.IOException; -import java.net.InetSocketAddress; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Arrays; import java.util.Collections; import static java.util.Collections.singletonMap; - import static org.elasticsearch.test.SecuritySettingsSource.getSSLSettingsForStore; import static org.elasticsearch.xpack.security.test.SecurityTestUtils.writeFile; -import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; public class ServerTransportFilterIntegrationTests extends SecurityIntegTestCase { @@ -101,7 +100,7 @@ public class ServerTransportFilterIntegrationTests extends SecurityIntegTestCase .put(NetworkModule.HTTP_ENABLED.getKey(), false) .put(Node.NODE_MASTER_SETTING.getKey(), false) .build(); - try (Node node = new MockNode(nodeSettings, Collections.singletonList(XPackPlugin.class))) { + try (Node node = new MockNode(nodeSettings, Arrays.asList(XPackPlugin.class, MockZenPing.TestPlugin.class))) { node.start(); assertGreenClusterState(node.client()); } @@ -127,7 +126,7 @@ public class ServerTransportFilterIntegrationTests extends SecurityIntegTestCase .put("xpack.security.transport.ssl.enabled", sslTransportEnabled()) .put("xpack.security.audit.enabled", false) .put(NetworkModule.HTTP_ENABLED.getKey(), false) - .put("discovery.initial_state_timeout", "2s") + .put("discovery.initial_state_timeout", "0s") .put("path.home", home) .put(Node.NODE_MASTER_SETTING.getKey(), false) .build(); @@ -143,7 +142,7 @@ public class ServerTransportFilterIntegrationTests extends SecurityIntegTestCase // the license is disabled and therefore blocking health & stats calls. node.client().admin().cluster().prepareUpdateSettings() .setTransientSettings(singletonMap("key", "value")) - .setMasterNodeTimeout(TimeValue.timeValueSeconds(2)) + .setMasterNodeTimeout(TimeValue.timeValueMillis(100)) .get(); fail("Expected to fail update settings as the node should not be able to connect to the cluster, cause there should be no" + " master"); diff --git a/elasticsearch/src/test/java/org/elasticsearch/xpack/watcher/test/integration/NoMasterNodeTests.java b/elasticsearch/src/test/java/org/elasticsearch/xpack/watcher/test/integration/NoMasterNodeTests.java index 1ad570c9c04..6b46dd4112c 100644 --- a/elasticsearch/src/test/java/org/elasticsearch/xpack/watcher/test/integration/NoMasterNodeTests.java +++ b/elasticsearch/src/test/java/org/elasticsearch/xpack/watcher/test/integration/NoMasterNodeTests.java @@ -74,7 +74,6 @@ public class NoMasterNodeTests extends AbstractWatcherIntegrationTestCase { .put(settings) .put(unicastSettings) .put(ElectMasterService.DISCOVERY_ZEN_MINIMUM_MASTER_NODES_SETTING.getKey(), 2) - .put("discovery.type", "zen") .build(); }