Elasticsearch: 提高存储桶和指标聚合的测试覆盖率

创建于 2016-12-20  ·  3评论  ·  资料来源: elastic/elasticsearch

如今,存储桶和指标聚合的单元测试覆盖率非常低。 这个元问题旨在显着改善这一点。 对于每个聚合,我们应该为聚合器添加更多单元测试(它如何通过每个聚合实现的org.apache.lucene.search.Collector与 Lucene 索引交互)、聚合结果的归约逻辑和序列化。

我们应该为以下Aggregator实现添加单元测试:

  • [x] ParentToChildrenAggregator @cbuescher #23305
  • [x] FilterAggregator @colings86 #23826
  • [x] FiltersAggregator @jimczi #22678
  • [x] GeoHashGridAggregator @martijnvg #23417
  • [x] GlobalAggregator @nik9000 #22668
  • [x] DateHistogramAggregator @tlrx #22714
  • [x] HistogramAggregator @jpountz #22961
  • [x] MissingAggregator @jimczi #23895
  • [x] NestedAggregator @polyfractal
  • [x] ReverseNestedAggregator @cbuescher
  • [x] RangeAggregator (也用DateRangeAggregationBuilderGeoDistanceAggregationBuilder@tlrx #24569
  • [x] BinaryRangeAggregator (也用IpRangeAggregationBuilder@jimczi #23255
  • [x] 多样化的采样器聚合器,它有以下需要测试的实现: DiversifiedBytesHashSamplerAggregatorDiversifiedMapSamplerAggregatorDiversifiedNumericSamplerAggregatorDiversifiedOrdinalsSamplerAggregator@martijnvg #23511
  • [x] SamplerAggregator @nik9000 #23243
  • [x] 重要术语聚合: GlobalOrdinalsSignificantTermsAggregatorGlobalOrdinalsSignificantTermsAggregator.WithHashSignificantLongTermsAggregatorSignificantStringTermsAggregator@markharwood #24904
  • [x] 术语聚合: DoubleTermsAggregatorGlobalOrdinalsStringTermsAggregator. LowCardinalityGlobalOrdinalsStringTermsAggregator. WithHashLongTermsAggregatorStringTermsAggregator@martijnvg #24949
  • [x] BestBucketsDeferringCollector @缅因州#23511
  • [x] BestDocsDeferringCollector @polyfractal #23511
  • [x] AvgAggregator @cbuescher #23000
  • [x] CardinalityAggregator @colings86 #23826
  • [x] GeoBoundsAggregator @jimczi #23259
  • [x] GeoCentroidAggregator @martijnvg #24111
  • [x] MaxAggregator @nik9000 #22668
  • [x] MinAggregator [ MVG ] #22279
  • [x] 百分位数指标聚合: TDigestPercentilesAggregatorHDRPercentilesAggregator @tlrx #24245
  • [x] 百分位数排名指标聚合: TDigestPercentileRanksAggregatorHDRPercentileRanksAggregator@jpountz #
  • [x] ScriptedMetricAggregator @cbuescher #
  • [x] StatsAggregator @jimczi
  • [x] ExtendedStatsAggregator @jimczi
  • [x] SumAggregator @martijnvg #22954
  • [x] TopHitsAggregator @nik9000 #22754
  • [x] ValueCountAggregator @tlrx #22741
  • [x] MatrixStatsAggregator @martijnvg #24837

我们还应该为以下InternalAggregation实现添加测试:
(测试reduce和result序列化逻辑)

  • [x] InternalChildren @cbuescher #23261
  • [x] InternalFilter @colings86 #23388
  • [x] InternalFilters @jimczi #22678
  • [x] InternalGeoHashGrid @martijnvg #23417
  • [x] InternalGlobal @nik9000 #23388
  • [x] InternalHistogram @jpountz #22961
  • [x] InternalDateHistogram @tlrx #23402
  • [x] InternalMissing @缅因州#23388
  • [x] InternalNested @polyfractal #23388
  • [x] InternalReverseNested @cbuescher #23388
  • [x] InternalRangeInternalDateRangeInternalGeoDistance@tlrx #24569
  • [x] InternalBinaryRange @jimczi #23259
  • [x] InternalSampler @martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8
  • [x] 重要术语聚合: SignificantLongTermsSignificantStringTerms@tlrx #23428
  • [x] 术语聚合: DoubleTermsLongTermsStringTermsUnmappedTerms@jpountz #23149
  • [x] InternalAvg @cbuescher #23000
  • [x] InternalCardinality @colings86 #23826
  • [x] InternalGeoBounds @jimczi #23259
  • [x] InternalGeoCentroid @martijnvg #
  • [x] InternalMax @nik9000 #22668
  • [x] InternalMin @colings86 + @nik9000 #22668
  • [x] 百分位数指标聚合: InternalTDigestPercentiles (#24090) 和InternalHDRPercentiles (#24157) @tlrx
  • [x] 百分位数排名指标聚合: InternalTDigestPercentileRanksInternalHDRPercentileRanks@jpountz #
  • [x] InternalScriptedMetric @cbuescher #23330
  • [x] InternalStats @jimczi
  • [x] InternalExtendedStats @jimczi
  • [x] InternalSum @martijnvg #22954
  • [x] InternalTopHits @nik9000
  • [x] InternalValueCount @tlrx #22741
  • [x] InternalMatrixStats @martijnvg #24559

我可能忘记了一些课程,所以如果是这种情况,请更新这个问题:)

我将InternalAggregation实现与Aggregator InternalAggregation实现分开列出,因为每个实现的单元测试可以由不同的开发人员并行编写。 但是我认为对于InternalAggregation实现和Aggregator实现的不太复杂的聚合单元测试可以添加到同一个 PR 中。

我认为至少应该将单元测试添加到 master 分支。 向后移植到 5.x 分支是最好的努力,只有当它是低挂的果实时才应该考虑。

我建议我们按以下方式工作,以避免不小心做两次工作:

  • 在开始编写单元测试之前,将您的名字添加到您喜欢处理的任务中。
  • 当您打开 pr 时,将 PR 编号添加到任务中。
  • 一旦 pr 被合并,然后检查任务。

请注意,聚合是经过测试的,但是由于代码结构化之前的方式,单元测试非常困难。

:AnalyticAggregations >test Meta

最有用的评论

这张票的所有任务现已完成🎉

所有3条评论

如果我为所有子类或InternalSingleBucketAggregation工作,有人会介意吗? 我可以点击很多复选框.....

如果我为所有子类或 InternalSingleBucketAggregation 工作,有人会介意吗? 我可以点击很多复选框.....

我合并了#23388。

这张票的所有任务现已完成🎉

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mayya-sharipova picture mayya-sharipova  ·  45评论

clintongormley picture clintongormley  ·  55评论

monken picture monken  ·  160评论

gwbrown picture gwbrown  ·  48评论

geekpete picture geekpete  ·  59评论