Сегодня существует очень ограниченное покрытие модульных тестов для агрегаций сегментов и показателей. Цель этой мета-проблемы - значительно улучшить ее. Для каждой агрегации мы должны добавить дополнительные модульные тесты для агрегатора (как он взаимодействует с индексом Lucene через org.apache.lucene.search.Collector
который реализует каждое агрегирование), логику сокращения и сериализацию результатов агрегации.
Мы должны добавить модульные тесты для следующих реализаций Aggregator
:
ParentToChildrenAggregator
@cbuescher # FilterAggregator
@ colings86 # 23826FiltersAggregator
@jimczi # 22678GeoHashGridAggregator
@martijnvg # 23417GlobalAggregator
@ nik9000 # 22668DateHistogramAggregator
@tlrx # 22714HistogramAggregator
@jpountz # 22961MissingAggregator
@jimczi # 23895NestedAggregator
@полифракталReverseNestedAggregator
@cbuescherRangeAggregator
(также протестируйте с DateRangeAggregationBuilder
и GeoDistanceAggregationBuilder
) @tlrx # 24569BinaryRangeAggregator
(также протестируйте с IpRangeAggregationBuilder
) @jimczi # 23255DiversifiedBytesHashSamplerAggregator
, DiversifiedMapSamplerAggregator
, DiversifiedNumericSamplerAggregator
и DiversifiedOrdinalsSamplerAggregator
. @martijnvg # SamplerAggregator
@ nik9000 # 23243GlobalOrdinalsSignificantTermsAggregator
, GlobalOrdinalsSignificantTermsAggregator.WithHash
, SignificantLongTermsAggregator
и SignificantStringTermsAggregator
. @markharwood # 24904DoubleTermsAggregator
, GlobalOrdinalsStringTermsAggregator. LowCardinality
, GlobalOrdinalsStringTermsAggregator. WithHash
, LongTermsAggregator
и StringTermsAggregator
. @martijnvg # 24949BestBucketsDeferringCollector
@MaineC # BestDocsDeferringCollector
@polyfractal # AvgAggregator
@cbuescher # 23000CardinalityAggregator
@ colings86 # 23826GeoBoundsAggregator
@jimczi # GeoCentroidAggregator
@martijnvg # 24111MaxAggregator
@ nik9000 # 22668MinAggregator
[ MvG ] # 22279TDigestPercentilesAggregator
и HDRPercentilesAggregator
@tlrx # 24245.TDigestPercentileRanksAggregator
и HDRPercentileRanksAggregator
. @jpountz # 23240ScriptedMetricAggregator
@cbuescher # 23404StatsAggregator
@jimcziExtendedStatsAggregator
@jimcziSumAggregator
@martijnvg # 22954TopHitsAggregator
@ nik9000 # 22754ValueCountAggregator
@tlrx # 22741MatrixStatsAggregator
@martijnvg # 24837Мы также должны добавить тесты для следующих реализаций InternalAggregation
:
(для проверки логики уменьшения и сериализации результатов)
InternalChildren
@cbuescher # 23261InternalFilter
@ colings86 # 23388InternalFilters
@jimczi # 22678InternalGeoHashGrid
@martijnvg # 23417InternalGlobal
@ nik9000 # 23388InternalHistogram
@jpountz # 22961InternalDateHistogram
@tlrx # 23402InternalMissing
@MaineC # 23388InternalNested
@polyfractal # 23388InternalReverseNested
@cbuescher # 23388InternalRange
, InternalDateRange
, InternalGeoDistance
. @tlrx # 24569InternalBinaryRange
@jimczi # InternalSampler
@martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8SignificantLongTerms
и SignificantStringTerms
. @tlrx # 23428DoubleTerms
, LongTerms
, StringTerms
и UnmappedTerms
. @jpountz # 23149InternalAvg
@cbuescher # 23000InternalCardinality
@ colings86 # 23826InternalGeoBounds
@jimczi # InternalGeoCentroid
@martijnvg # 24176InternalMax
@ nik9000 # 22668InternalMin
@ colings86 + @ nik9000 # 22668InternalTDigestPercentiles
(# 24090) и InternalHDRPercentiles
(# 24157) @tlrx.InternalTDigestPercentileRanks
и InternalHDRPercentileRanks
. @jpountz # 23240InternalScriptedMetric
@cbuescher # 23330InternalStats
@jimcziInternalExtendedStats
@jimcziInternalSum
@martijnvg # 22954InternalTopHits
@ nik9000InternalValueCount
@tlrx # 22741InternalMatrixStats
@martijnvg # 24559Возможно, я забыл некоторые классы, поэтому, пожалуйста, обновите эту проблему, если это так :)
Я перечислил реализации InternalAggregation
отдельно от реализаций Aggregator
поскольку модульные тесты для каждой из них могут быть написаны параллельно разными разработчиками. Однако я думаю, что для менее сложных агрегатов модульные тесты для реализации InternalAggregation
и Aggregator
могут быть добавлены в один и тот же PR.
Я думаю, что хотя бы модульные тесты нужно добавить в главную ветку. Обратное портирование на ветку 5.x - лучшее решение, и его следует рассматривать только в том случае, если это низко висящие плоды.
Я предлагаю работать следующим образом, чтобы случайно не выполнить работу дважды:
Обратите внимание, что агрегаты тестируются, однако из-за того, как до того, как код был структурирован, модульное тестирование было действительно сложным.
Кто-нибудь будет возражать, если я буду работать над чем-нибудь для всех подклассов или InternalSingleBucketAggregation
? Я бы смог поставить много флажков ...
Кто-нибудь будет возражать, если я буду работать над чем-нибудь для всех подклассов или InternalSingleBucketAggregation? Я бы смог поставить много флажков ...
Слил # 23388.
Все задачи по этой заявке выполнены 🎉
Самый полезный комментарий
Все задачи по этой заявке выполнены 🎉