From 1810e5d46c9dda9fdc451ec5166d7569990a664c Mon Sep 17 00:00:00 2001 From: David Turner Date: Fri, 27 Dec 2024 09:26:38 +0000 Subject: [PATCH] Fix `DiscoveryEc2AvailabilityZoneAttributeNoImdsIT` (#118821) This test asserts that no AZ attribute is set, assuming that the current AZ is unavailable, but in fact that's not true when running these tests in EC2. With this commit we override the IMDS endpoint address to one that definitely does not exist. Relates #118675 Closes #118564 --- ...coveryEc2AvailabilityZoneAttributeNoImdsIT.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/plugins/discovery-ec2/src/javaRestTest/java/org/elasticsearch/discovery/ec2/DiscoveryEc2AvailabilityZoneAttributeNoImdsIT.java b/plugins/discovery-ec2/src/javaRestTest/java/org/elasticsearch/discovery/ec2/DiscoveryEc2AvailabilityZoneAttributeNoImdsIT.java index 73213090b6f93..af3b3d67951dd 100644 --- a/plugins/discovery-ec2/src/javaRestTest/java/org/elasticsearch/discovery/ec2/DiscoveryEc2AvailabilityZoneAttributeNoImdsIT.java +++ b/plugins/discovery-ec2/src/javaRestTest/java/org/elasticsearch/discovery/ec2/DiscoveryEc2AvailabilityZoneAttributeNoImdsIT.java @@ -9,30 +9,24 @@ package org.elasticsearch.discovery.ec2; -import com.amazonaws.util.EC2MetadataUtils; - import org.elasticsearch.client.Request; import org.elasticsearch.test.cluster.ElasticsearchCluster; -import org.elasticsearch.test.rest.ESRestTestCase; import org.junit.ClassRule; import java.io.IOException; -public class DiscoveryEc2AvailabilityZoneAttributeNoImdsIT extends ESRestTestCase { +public class DiscoveryEc2AvailabilityZoneAttributeNoImdsIT extends DiscoveryEc2AvailabilityZoneAttributeTestCase { @ClassRule - public static ElasticsearchCluster cluster = ElasticsearchCluster.local() - .plugin("discovery-ec2") - .setting(AwsEc2Service.AUTO_ATTRIBUTE_SETTING.getKey(), "true") - .build(); + // use an address which definitely isn't running an IMDS, just in case we're running these tests in EC2 + public static ElasticsearchCluster cluster = DiscoveryEc2AvailabilityZoneAttributeTestCase.buildCluster(() -> "http://127.0.0.1:1"); @Override protected String getTestRestCluster() { return cluster.getHttpAddresses(); } + @Override // the base class asserts that the attribute is set, but we don't want that here public void testAvailabilityZoneAttribute() throws IOException { - assumeTrue("test only in non-AWS environment", EC2MetadataUtils.getInstanceId() == null); - final var nodesInfoResponse = assertOKAndCreateObjectPath(client().performRequest(new Request("GET", "/_nodes/_all/_none"))); for (final var nodeId : nodesInfoResponse.evaluateMapKeys("nodes")) { assertNull(nodesInfoResponse.evaluateExact("nodes", nodeId, "attributes", "aws_availability_zone"));