From 02bc8fd17ba7a0ad02fce749310598d7926c5f21 Mon Sep 17 00:00:00 2001 From: Gordon Brown Date: Tue, 18 Jun 2019 16:22:21 -0600 Subject: [PATCH] Fix randomization in testPerformActionAttrsRequestFails (#43304) The randomization in this test would occasionally generate duplicate node attribute keys, causing spurious test failures. This commit adjusts the randomization to not generate duplicate keys and cleans up the data structure used to hold the generated keys. --- .../SetSingleNodeAllocateStepTests.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/indexlifecycle/SetSingleNodeAllocateStepTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/indexlifecycle/SetSingleNodeAllocateStepTests.java index 794e7b2edaa0f..fe3b864a089a2 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/indexlifecycle/SetSingleNodeAllocateStepTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/indexlifecycle/SetSingleNodeAllocateStepTests.java @@ -39,7 +39,9 @@ import org.mockito.stubbing.Answer; import java.io.IOException; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -202,17 +204,18 @@ public void testPerformActionAttrsNoNodesValid() { assertNoValidNode(indexMetaData, index, nodes); } - @AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/42932") public void testPerformActionAttrsRequestFails() { int numAttrs = randomIntBetween(1, 10); - String[][] validAttrs = new String[numAttrs][2]; + Map validAttributes = new HashMap<>(); for (int i = 0; i < numAttrs; i++) { - validAttrs[i] = new String[] { randomAlphaOfLengthBetween(1, 20), randomAlphaOfLengthBetween(1, 20) }; + validAttributes.put(randomValueOtherThanMany(validAttributes::containsKey, + () -> randomAlphaOfLengthBetween(1,20)), randomAlphaOfLengthBetween(1,20)); } Settings.Builder indexSettings = settings(Version.CURRENT); - for (String[] attr : validAttrs) { - indexSettings.put(IndexMetaData.INDEX_ROUTING_INCLUDE_GROUP_SETTING.getKey() + attr[0], attr[1]); - } + validAttributes.forEach((k, v) -> { + indexSettings.put(IndexMetaData.INDEX_ROUTING_INCLUDE_GROUP_SETTING.getKey() + k, v); + + }); IndexMetaData indexMetaData = IndexMetaData.builder(randomAlphaOfLength(10)).settings(indexSettings) .numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build(); Index index = indexMetaData.getIndex(); @@ -224,9 +227,9 @@ public void testPerformActionAttrsRequestFails() { String nodeId = "node_id_" + i; String nodeName = "node_" + i; int nodePort = 9300 + i; - String[] nodeAttr = randomFrom(validAttrs); + Map.Entry nodeAttr = randomFrom(validAttributes.entrySet()); Settings nodeSettings = Settings.builder().put(validNodeSettings).put(Node.NODE_NAME_SETTING.getKey(), nodeName) - .put(Node.NODE_ATTRIBUTES.getKey() + nodeAttr[0], nodeAttr[1]).build(); + .put(Node.NODE_ATTRIBUTES.getKey() + nodeAttr.getKey(), nodeAttr.getValue()).build(); nodes.add(DiscoveryNode.createLocal(nodeSettings, new TransportAddress(TransportAddress.META_ADDRESS, nodePort), nodeId)); validNodeIds.add(nodeId); }