Skip to content

Commit

Permalink
Fix failure in AppendProcessorTests.testAppendingToListWithDuplicates…
Browse files Browse the repository at this point in the history
…Disallowed (elastic#62385)
  • Loading branch information
danhermann committed Oct 20, 2020
1 parent b6db094 commit 51fcb72
Showing 1 changed file with 17 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -34,6 +35,8 @@
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;
Expand Down Expand Up @@ -192,23 +195,26 @@ public void testAppendingUniqueValueToScalar() throws Exception {

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);
Set<String> uniqueValues = new HashSet<>(uniqueValuesSize);
while (uniqueValues.size() < uniqueValuesSize) {
uniqueValues.add(randomValueOtherThanMany(list::contains, () -> 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);
Expand Down

0 comments on commit 51fcb72

Please sign in to comment.