From 625784ffb3bbf6eeea96ced716cfdcc2cde0f700 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 | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 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 525744d68af10..7b6b3668b2437 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; @@ -204,14 +206,16 @@ public void testPerformActionAttrsNoNodesValid() { 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(); @@ -223,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); }