如今,存储桶和指标聚合的单元测试覆盖率非常低。 这个元问题旨在显着改善这一点。 对于每个聚合,我们应该为聚合器添加更多单元测试(它如何通过每个聚合实现的org.apache.lucene.search.Collector
与 Lucene 索引交互)、聚合结果的归约逻辑和序列化。
我们应该为以下Aggregator
实现添加单元测试:
ParentToChildrenAggregator
@cbuescher #23305FilterAggregator
@colings86 #23826FiltersAggregator
@jimczi #22678GeoHashGridAggregator
@martijnvg #23417GlobalAggregator
@nik9000 #22668DateHistogramAggregator
@tlrx #22714HistogramAggregator
@jpountz #22961MissingAggregator
@jimczi #23895NestedAggregator
@polyfractalReverseNestedAggregator
@cbuescherRangeAggregator
(也用DateRangeAggregationBuilder
和GeoDistanceAggregationBuilder
) @tlrx #24569BinaryRangeAggregator
(也用IpRangeAggregationBuilder
) @jimczi #23255DiversifiedBytesHashSamplerAggregator
、 DiversifiedMapSamplerAggregator
、 DiversifiedNumericSamplerAggregator
和DiversifiedOrdinalsSamplerAggregator
。 @martijnvg #23511SamplerAggregator
@nik9000 #23243GlobalOrdinalsSignificantTermsAggregator
、 GlobalOrdinalsSignificantTermsAggregator.WithHash
、 SignificantLongTermsAggregator
和SignificantStringTermsAggregator
。 @markharwood #24904DoubleTermsAggregator
、 GlobalOrdinalsStringTermsAggregator. LowCardinality
、 GlobalOrdinalsStringTermsAggregator. WithHash
、 LongTermsAggregator
和StringTermsAggregator
。 @martijnvg #24949BestBucketsDeferringCollector
@缅因州#23511BestDocsDeferringCollector
@polyfractal #23511AvgAggregator
@cbuescher #23000CardinalityAggregator
@colings86 #23826GeoBoundsAggregator
@jimczi #23259GeoCentroidAggregator
@martijnvg #24111MaxAggregator
@nik9000 #22668MinAggregator
[ MVG ] #22279TDigestPercentilesAggregator
和HDRPercentilesAggregator
@tlrx #24245TDigestPercentileRanksAggregator
和HDRPercentileRanksAggregator
。 @jpountz # ScriptedMetricAggregator
@cbuescher # StatsAggregator
@jimcziExtendedStatsAggregator
@jimcziSumAggregator
@martijnvg #22954TopHitsAggregator
@nik9000 #22754ValueCountAggregator
@tlrx #22741MatrixStatsAggregator
@martijnvg #24837我们还应该为以下InternalAggregation
实现添加测试:
(测试reduce和result序列化逻辑)
InternalChildren
@cbuescher #23261InternalFilter
@colings86 #23388InternalFilters
@jimczi #22678InternalGeoHashGrid
@martijnvg #23417InternalGlobal
@nik9000 #23388InternalHistogram
@jpountz #22961InternalDateHistogram
@tlrx #23402InternalMissing
@缅因州#23388InternalNested
@polyfractal #23388InternalReverseNested
@cbuescher #23388InternalRange
, InternalDateRange
, InternalGeoDistance
。 @tlrx #24569InternalBinaryRange
@jimczi #23259InternalSampler
@martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8SignificantLongTerms
和SignificantStringTerms
。 @tlrx #23428DoubleTerms
、 LongTerms
、 StringTerms
和UnmappedTerms
。 @jpountz #23149InternalAvg
@cbuescher #23000InternalCardinality
@colings86 #23826InternalGeoBounds
@jimczi #23259InternalGeoCentroid
@martijnvg # InternalMax
@nik9000 #22668InternalMin
@colings86 + @nik9000 #22668InternalTDigestPercentiles
(#24090) 和InternalHDRPercentiles
(#24157) @tlrxInternalTDigestPercentileRanks
和InternalHDRPercentileRanks
。 @jpountz # InternalScriptedMetric
@cbuescher #23330InternalStats
@jimcziInternalExtendedStats
@jimcziInternalSum
@martijnvg #22954InternalTopHits
@nik9000InternalValueCount
@tlrx #22741InternalMatrixStats
@martijnvg #24559我可能忘记了一些课程,所以如果是这种情况,请更新这个问题:)
我将InternalAggregation
实现与Aggregator
InternalAggregation
实现分开列出,因为每个实现的单元测试可以由不同的开发人员并行编写。 但是我认为对于InternalAggregation
实现和Aggregator
实现的不太复杂的聚合单元测试可以添加到同一个 PR 中。
我认为至少应该将单元测试添加到 master 分支。 向后移植到 5.x 分支是最好的努力,只有当它是低挂的果实时才应该考虑。
我建议我们按以下方式工作,以避免不小心做两次工作:
请注意,聚合是经过测试的,但是由于代码结构化之前的方式,单元测试非常困难。
如果我为所有子类或InternalSingleBucketAggregation
工作,有人会介意吗? 我可以点击很多复选框.....
如果我为所有子类或 InternalSingleBucketAggregation 工作,有人会介意吗? 我可以点击很多复选框.....
我合并了#23388。
这张票的所有任务现已完成🎉
最有用的评论
这张票的所有任务现已完成🎉