Ver código fonte

Fix failure in AppendProcessorTests.testAppendingToListWithDuplicatesDisallowed (#62385)

Dan Hermann 5 anos atrás
pai
commit
03d0e191c6

+ 19 - 11
modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/AppendProcessorTests.java

@@ -19,6 +19,7 @@
 
 package org.elasticsearch.ingest.common;
 
+import org.elasticsearch.common.util.set.Sets;
 import org.elasticsearch.ingest.IngestDocument;
 import org.elasticsearch.ingest.IngestDocument.Metadata;
 import org.elasticsearch.ingest.Processor;
@@ -30,8 +31,12 @@ import org.elasticsearch.test.ESTestCase;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.instanceOf;
@@ -190,23 +195,26 @@ public class AppendProcessorTests extends ESTestCase {
 
     public void testAppendingToListWithDuplicatesDisallowed() throws Exception {
         IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random());
-        List<String> list = new ArrayList<>();
         int size = randomIntBetween(0, 10);
-        for (int i = 0; i < size; i++) {
-            list.add(randomAlphaOfLengthBetween(1, 10));
-        }
+        List<String> list = Stream.generate(() -> randomAlphaOfLengthBetween(1, 10)).limit(size).collect(Collectors.toList());
         String originalField = RandomDocumentPicks.addRandomField(random(), ingestDocument, list);
         List<String> expectedValues = new ArrayList<>(list);
         List<String> existingValues = randomSubsetOf(list);
-        int uniqueValuesSize = randomIntBetween(0, 10);
-        List<String> uniqueValues = new ArrayList<>();
-        for (int i = 0; i < uniqueValuesSize; i++) {
-            uniqueValues.add(randomAlphaOfLengthBetween(1, 10));
-        }
+
+        // generate new values
+        int nonexistingValuesSize = randomIntBetween(0, 10);
+        Set<String> newValues = Stream.generate(() -> randomAlphaOfLengthBetween(1, 10))
+            .limit(nonexistingValuesSize)
+            .collect(Collectors.toSet());
+
+        // create a set using the new values making sure there are no overlapping values already present in the existing values
+        Set<String> nonexistingValues = Sets.difference(newValues, new HashSet<>(existingValues));
         List<String> valuesToAppend = new ArrayList<>(existingValues);
-        valuesToAppend.addAll(uniqueValues);
-        expectedValues.addAll(uniqueValues);
+        valuesToAppend.addAll(nonexistingValues);
+        expectedValues.addAll(nonexistingValues);
         Collections.sort(valuesToAppend);
+
+        // attempt to append both new and existing values
         Processor appendProcessor = createAppendProcessor(originalField, valuesToAppend, false);
         appendProcessor.execute(ingestDocument);
         List<?> fieldValue = ingestDocument.getFieldValue(originalField, List.class);