Elasticsearch: Улучшение тестового покрытия для сегментов и метрических агрегатов

Созданный на 20 дек. 2016  ·  3Комментарии  ·  Источник: elastic/elasticsearch

Сегодня существует очень ограниченное покрытие модульных тестов для агрегаций сегментов и показателей. Цель этой мета-проблемы - значительно улучшить ее. Для каждой агрегации мы должны добавить дополнительные модульные тесты для агрегатора (как он взаимодействует с индексом Lucene через org.apache.lucene.search.Collector который реализует каждое агрегирование), логику сокращения и сериализацию результатов агрегации.

Мы должны добавить модульные тесты для следующих реализаций Aggregator :

  • [x] ParentToChildrenAggregator @cbuescher #
  • [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 @полифрактал
  • [x] ReverseNestedAggregator @cbuescher
  • [x] RangeAggregator (также протестируйте с DateRangeAggregationBuilder и GeoDistanceAggregationBuilder ) @tlrx # 24569
  • [x] BinaryRangeAggregator (также протестируйте с IpRangeAggregationBuilder ) @jimczi # 23255
  • [x] Разнообразный агрегатор семплеров, в котором необходимо протестировать следующие реализации: DiversifiedBytesHashSamplerAggregator , DiversifiedMapSamplerAggregator , DiversifiedNumericSamplerAggregator и DiversifiedOrdinalsSamplerAggregator . @martijnvg #
  • [x] SamplerAggregator @ nik9000 # 23243
  • [x] Агрегирование важных терминов: GlobalOrdinalsSignificantTermsAggregator , GlobalOrdinalsSignificantTermsAggregator.WithHash , SignificantLongTermsAggregator и SignificantStringTermsAggregator . @markharwood # 24904
  • [x] Объединение терминов: DoubleTermsAggregator , GlobalOrdinalsStringTermsAggregator. LowCardinality , GlobalOrdinalsStringTermsAggregator. WithHash , LongTermsAggregator и StringTermsAggregator . @martijnvg # 24949
  • [x] BestBucketsDeferringCollector @MaineC #
  • [x] BestDocsDeferringCollector @polyfractal #
  • [x] AvgAggregator @cbuescher # 23000
  • [x] CardinalityAggregator @ colings86 # 23826
  • [x] GeoBoundsAggregator @jimczi #
  • [x] GeoCentroidAggregator @martijnvg # 24111
  • [x] MaxAggregator @ nik9000 # 22668
  • [x] MinAggregator [ MvG ] # 22279
  • [x] Агрегирование показателей процентилей: TDigestPercentilesAggregator и HDRPercentilesAggregator @tlrx # 24245.
  • [x] Агрегирование показателей ранжирования процентилей: TDigestPercentileRanksAggregator и HDRPercentileRanksAggregator . @jpountz # 23240
  • [x] ScriptedMetricAggregator @cbuescher # 23404
  • [x] StatsAggregator @jimczi
  • [x] ExtendedStatsAggregator @jimczi
  • [x] SumAggregator @martijnvg # 22954
  • [x] TopHitsAggregator @ nik9000 # 22754
  • [x] ValueCountAggregator @tlrx # 22741
  • [x] MatrixStatsAggregator @martijnvg # 24837

Мы также должны добавить тесты для следующих реализаций InternalAggregation :
(для проверки логики уменьшения и сериализации результатов)

  • [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 @MaineC # 23388
  • [x] InternalNested @polyfractal # 23388
  • [x] InternalReverseNested @cbuescher # 23388
  • [x] InternalRange , InternalDateRange , InternalGeoDistance . @tlrx # 24569
  • [x] InternalBinaryRange @jimczi #
  • [x] InternalSampler @martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8
  • [x] Агрегирование важных терминов: SignificantLongTerms и SignificantStringTerms . @tlrx # 23428
  • [x] Объединение терминов: DoubleTerms , LongTerms , StringTerms и UnmappedTerms . @jpountz # 23149
  • [x] InternalAvg @cbuescher # 23000
  • [x] InternalCardinality @ colings86 # 23826
  • [x] InternalGeoBounds @jimczi #
  • [x] InternalGeoCentroid @martijnvg # 24176
  • [x] InternalMax @ nik9000 # 22668
  • [x] InternalMin @ colings86 + @ nik9000 # 22668
  • [x] Агрегирование показателей процентилей: InternalTDigestPercentiles (# 24090) и InternalHDRPercentiles (# 24157) @tlrx.
  • [x] Агрегирование показателей ранжирования процентилей: InternalTDigestPercentileRanks и InternalHDRPercentileRanks . @jpountz # 23240
  • [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 и Aggregator могут быть добавлены в один и тот же PR.

Я думаю, что хотя бы модульные тесты нужно добавить в главную ветку. Обратное портирование на ветку 5.x - лучшее решение, и его следует рассматривать только в том случае, если это низко висящие плоды.

Я предлагаю работать следующим образом, чтобы случайно не выполнить работу дважды:

  • Добавьте свое имя к задаче, над которой вы хотите работать, прежде чем начинать писать модульные тесты.
  • Когда вы открываете PR, добавьте PR номер к задаче.
  • Как только PR будет объединен, отметьте задачу.

Обратите внимание, что агрегаты тестируются, однако из-за того, как до того, как код был структурирован, модульное тестирование было действительно сложным.

:AnalyticAggregations >test Meta

Самый полезный комментарий

Все задачи по этой заявке выполнены 🎉

Все 3 Комментарий

Кто-нибудь будет возражать, если я буду работать над чем-нибудь для всех подклассов или InternalSingleBucketAggregation ? Я бы смог поставить много флажков ...

Кто-нибудь будет возражать, если я буду работать над чем-нибудь для всех подклассов или InternalSingleBucketAggregation? Я бы смог поставить много флажков ...

Слил # 23388.

Все задачи по этой заявке выполнены 🎉

Была ли эта страница полезной?
0 / 5 - 0 рейтинги