From 23a34713943d10f4d401f4f70275bdcb5657d788 Mon Sep 17 00:00:00 2001 From: Gordon Brown Date: Wed, 19 Jun 2019 10:34:39 -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); }