Skip to content

Commit

Permalink
refactor tests to use a local variable
Browse files Browse the repository at this point in the history
  • Loading branch information
jimczi committed Nov 5, 2020
1 parent 22ae61b commit 3777760
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 95 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@

public abstract class InternalTermsTestCase extends InternalMultiBucketAggregationTestCase<InternalTerms<?, ?>> {

private boolean showDocCount;
private long docCountError;
protected boolean showDocCount;
protected long docCountError;

@Before
public void init() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,49 +34,24 @@
import java.util.Set;

public class StringTermsTests extends InternalTermsTestCase {
private final BytesRef[] dict;

public StringTermsTests() {
this.dict = generateRandomDict();
}

private BytesRef[] generateRandomDict() {
Set<BytesRef> terms = new HashSet<>();
int numTerms = randomIntBetween(2, 100);
for (int i = 0; i < numTerms; i++) {
terms.add(new BytesRef(randomAlphaOfLength(10)));
}
return terms.stream().toArray(BytesRef[]::new);
}

@Override
protected InternalTerms<?, ?> createTestInstance(String name,
Map<String, Object> metadata,
InternalAggregations aggregations,
boolean showTermDocCountError,
long docCountError) {
generateRandomDict();
BucketOrder order = BucketOrder.count(false);
long minDocCount = 1;
int requiredSize = 3;
int shardSize = requiredSize + 2;
DocValueFormat format = DocValueFormat.RAW;
long otherDocCount = 0;
List<StringTerms.Bucket> buckets = new ArrayList<>();
final int numBuckets = randomNumberOfBuckets();
Set<BytesRef> terms = new HashSet<>();
for (int i = 0; i < numBuckets; ++i) {
BytesRef term = dict[randomIntBetween(0, dict.length-1)];
if (terms.add(term)) {
int docCount = randomIntBetween(1, 100);
buckets.add(new StringTerms.Bucket(term, docCount, aggregations, showTermDocCountError, docCountError, format));
}
return createTestInstance(generateRandomDict(), name, metadata, aggregations, showTermDocCountError, docCountError);
}

@Override
protected List<InternalTerms<?, ?>> randomResultsToReduce(String name, int size) {
List<InternalTerms<?, ?>> inputs = new ArrayList<>();
BytesRef[] dict = generateRandomDict();
for (int i = 0; i < size; i++) {
InternalTerms<?, ?> t = randomBoolean() ? createUnmappedInstance(name) : createTestInstance(dict, name);
inputs.add(t);
}
BucketOrder reduceOrder = randomBoolean() ?
BucketOrder.compound(BucketOrder.key(true), BucketOrder.count(false)) : BucketOrder.key(true);
Collections.sort(buckets, reduceOrder.comparator());
return new StringTerms(name, reduceOrder, order, requiredSize, minDocCount,
metadata, format, shardSize, showTermDocCountError, otherDocCount, buckets, docCountError);
return inputs;
}

@Override
Expand All @@ -100,74 +75,116 @@ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
long docCountError = stringTerms.getDocCountError();
Map<String, Object> metadata = stringTerms.getMetadata();
switch (between(0, 8)) {
case 0:
name += randomAlphaOfLength(5);
break;
case 1:
requiredSize += between(1, 100);
break;
case 2:
minDocCount += between(1, 100);
break;
case 3:
shardSize += between(1, 100);
break;
case 4:
showTermDocCountError = showTermDocCountError == false;
break;
case 5:
otherDocCount += between(1, 100);
break;
case 6:
docCountError += between(1, 100);
break;
case 7:
buckets = new ArrayList<>(buckets);
buckets.add(new StringTerms.Bucket(new BytesRef(randomAlphaOfLengthBetween(1, 10)), randomNonNegativeLong(),
case 0:
name += randomAlphaOfLength(5);
break;
case 1:
requiredSize += between(1, 100);
break;
case 2:
minDocCount += between(1, 100);
break;
case 3:
shardSize += between(1, 100);
break;
case 4:
showTermDocCountError = showTermDocCountError == false;
break;
case 5:
otherDocCount += between(1, 100);
break;
case 6:
docCountError += between(1, 100);
break;
case 7:
buckets = new ArrayList<>(buckets);
buckets.add(new StringTerms.Bucket(new BytesRef(randomAlphaOfLengthBetween(1, 10)), randomNonNegativeLong(),
InternalAggregations.EMPTY, showTermDocCountError, docCountError, format));
break;
case 8:
if (metadata == null) {
metadata = new HashMap<>(1);
} else {
metadata = new HashMap<>(instance.getMetadata());
}
metadata.put(randomAlphaOfLength(15), randomInt());
break;
default:
throw new AssertionError("Illegal randomisation branch");
break;
case 8:
if (metadata == null) {
metadata = new HashMap<>(1);
} else {
metadata = new HashMap<>(instance.getMetadata());
}
metadata.put(randomAlphaOfLength(15), randomInt());
break;
default:
throw new AssertionError("Illegal randomisation branch");
}
Collections.sort(buckets, stringTerms.reduceOrder.comparator());
return new StringTerms(name, stringTerms.reduceOrder, order, requiredSize, minDocCount, metadata, format, shardSize,
showTermDocCountError, otherDocCount, buckets, docCountError);
showTermDocCountError, otherDocCount, buckets, docCountError);
} else {
String name = instance.getName();
BucketOrder order = instance.order;
int requiredSize = instance.requiredSize;
long minDocCount = instance.minDocCount;
Map<String, Object> metadata = instance.getMetadata();
switch (between(0, 3)) {
case 0:
name += randomAlphaOfLength(5);
break;
case 1:
requiredSize += between(1, 100);
break;
case 2:
minDocCount += between(1, 100);
break;
case 3:
if (metadata == null) {
metadata = new HashMap<>(1);
} else {
metadata = new HashMap<>(instance.getMetadata());
}
metadata.put(randomAlphaOfLength(15), randomInt());
break;
default:
throw new AssertionError("Illegal randomisation branch");
case 0:
name += randomAlphaOfLength(5);
break;
case 1:
requiredSize += between(1, 100);
break;
case 2:
minDocCount += between(1, 100);
break;
case 3:
if (metadata == null) {
metadata = new HashMap<>(1);
} else {
metadata = new HashMap<>(instance.getMetadata());
}
metadata.put(randomAlphaOfLength(15), randomInt());
break;
default:
throw new AssertionError("Illegal randomisation branch");
}
return new UnmappedTerms(name, order, requiredSize, minDocCount, metadata);
}
}

private BytesRef[] generateRandomDict() {
Set<BytesRef> terms = new HashSet<>();
int numTerms = randomIntBetween(2, 100);
for (int i = 0; i < numTerms; i++) {
terms.add(new BytesRef(randomAlphaOfLength(10)));
}
return terms.stream().toArray(BytesRef[]::new);
}

private InternalTerms<?, ?> createTestInstance(BytesRef[] dict, String name) {
return createTestInstance(dict, name, createTestMetadata(), createSubAggregations(), showDocCount, docCountError);
}

private InternalTerms<?, ?> createTestInstance(BytesRef[] dict,
String name,
Map<String, Object> metadata,
InternalAggregations aggregations,
boolean showTermDocCountError,
long docCountError) {
BucketOrder order = BucketOrder.count(false);
long minDocCount = 1;
int requiredSize = 3;
int shardSize = requiredSize + 2;
DocValueFormat format = DocValueFormat.RAW;
long otherDocCount = 0;
List<StringTerms.Bucket> buckets = new ArrayList<>();
final int numBuckets = randomNumberOfBuckets();
Set<BytesRef> terms = new HashSet<>();
for (int i = 0; i < numBuckets; ++i) {
BytesRef term = dict[randomIntBetween(0, dict.length-1)];
if (terms.add(term)) {
int docCount = randomIntBetween(1, 100);
buckets.add(new StringTerms.Bucket(term, docCount, aggregations, showTermDocCountError, docCountError, format));
}
}
BucketOrder reduceOrder = randomBoolean() ?
BucketOrder.compound(BucketOrder.key(true), BucketOrder.count(false)) : BucketOrder.key(true);
Collections.sort(buckets, reduceOrder.comparator());
return new StringTerms(name, reduceOrder, order, requiredSize, minDocCount,
metadata, format, shardSize, showTermDocCountError, otherDocCount, buckets, docCountError);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ public final T createTestInstance() {
return createTestInstance(randomAlphaOfLength(5));
}

private T createTestInstance(String name) {
public final Map<String, Object> createTestMetadata() {
Map<String, Object> metadata = null;
if (randomBoolean()) {
metadata = new HashMap<>();
Expand All @@ -423,7 +423,11 @@ private T createTestInstance(String name) {
metadata.put(randomAlphaOfLength(5), randomAlphaOfLength(5));
}
}
return createTestInstance(name, metadata);
return metadata;
}

private T createTestInstance(String name) {
return createTestInstance(name, createTestMetadata());
}

/** Return an instance on an unmapped field. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ public void setSubAggregationsSupplier(Supplier<InternalAggregations> subAggrega
this.subAggregationsSupplier = subAggregationsSupplier;
}

public final InternalAggregations createSubAggregations() {
return subAggregationsSupplier.get();
}

@Override
public void setUp() throws Exception {
super.setUp();
Expand Down

0 comments on commit 3777760

Please sign in to comment.