Elasticsearch: Melhorar a cobertura de teste para agregações de bucket e métricas

Criado em 20 dez. 2016  ·  3Comentários  ·  Fonte: elastic/elasticsearch

Hoje, há muito pouca cobertura de teste de unidade para agregações de bucket e métricas. Este meta problema tem como objetivo melhorar isso significativamente. Para cada agregação, devemos adicionar mais testes de unidade para o agregador (como ele interage com o índice Lucene por meio de org.apache.lucene.search.Collector que cada agregação implementa), a lógica de redução e a serialização dos resultados da agregação.

Devemos adicionar testes de unidade para as seguintes implementações de Aggregator :

  • [x] ParentToChildrenAggregator @cbuescher # 23305
  • [x] FilterAggregator @ colings86 # 23826
  • [x] FiltersAggregator @jimczi # 22678
  • [x] GeoHashGridAggregator @martijnvg # 23417
  • [x] GlobalAggregator @ nik9000 #
  • [x] DateHistogramAggregator @tlrx # 22714
  • [x] HistogramAggregator @jpountz # 22961
  • [x] MissingAggregator @jimczi # 23895
  • [x] NestedAggregator @polyfractal
  • [x] ReverseNestedAggregator @cbuescher
  • [x] RangeAggregator (também teste com DateRangeAggregationBuilder e GeoDistanceAggregationBuilder ) @tlrx # 24569
  • [x] BinaryRangeAggregator (também teste com IpRangeAggregationBuilder ) @jimczi # 23255
  • [x] Agregador de amostragem diversificado, que possui as seguintes implementações que precisam ser testadas: DiversifiedBytesHashSamplerAggregator , DiversifiedMapSamplerAggregator , DiversifiedNumericSamplerAggregator e DiversifiedOrdinalsSamplerAggregator . @martijnvg # 23511
  • [x] SamplerAggregator @ nik9000 # 23243
  • [x] Agregação de termos significativos: GlobalOrdinalsSignificantTermsAggregator , GlobalOrdinalsSignificantTermsAggregator.WithHash , SignificantLongTermsAggregator e SignificantStringTermsAggregator . @markharwood # 24904
  • [x] Agregação de termos: DoubleTermsAggregator , GlobalOrdinalsStringTermsAggregator. LowCardinality , GlobalOrdinalsStringTermsAggregator. WithHash , LongTermsAggregator e StringTermsAggregator . @martijnvg # 24949
  • [x] BestBucketsDeferringCollector @MaineC # 23511
  • [x] BestDocsDeferringCollector @polyfractal # 23511
  • [x] AvgAggregator @cbuescher # 23000
  • [x] CardinalityAggregator @ colings86 # 23826
  • [x] GeoBoundsAggregator @jimczi # 23259
  • [x] GeoCentroidAggregator @martijnvg # 24111
  • [x] MaxAggregator @ nik9000 #
  • [x] MinAggregator [ MvG ] # 22279
  • [x] Agregação métrica de percentis: TDigestPercentilesAggregator e HDRPercentilesAggregator @tlrx # 24245
  • [x] Percentis classificam a agregação métrica: TDigestPercentileRanksAggregator e HDRPercentileRanksAggregator . @jpountz # 23240
  • [x] ScriptedMetricAggregator @cbuescher # 23404
  • [x] StatsAggregator @jimczi
  • [x] ExtendedStatsAggregator @jimczi
  • [x] SumAggregator @martijnvg #
  • [x] TopHitsAggregator @ nik9000 # 22754
  • [x] ValueCountAggregator @tlrx # 22741
  • [x] MatrixStatsAggregator @martijnvg # 24837

Devemos também adicionar testes para as seguintes implementações InternalAggregation :
(para testar a redução e a lógica de serialização de resultados)

  • [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 #
  • [x] InternalMissing @MaineC # 23388
  • [x] InternalNested @polyfractal # 23388
  • [x] InternalReverseNested @cbuescher # 23388
  • [x] InternalRange , InternalDateRange , InternalGeoDistance . @tlrx # 24569
  • [x] InternalBinaryRange @jimczi # 23259
  • [x] InternalSampler @martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8
  • [x] Agregação de termos significativos: SignificantLongTerms e SignificantStringTerms . @tlrx # 23428
  • [x] Agregação de termos: DoubleTerms , LongTerms , StringTerms e UnmappedTerms . @jpountz # 23149
  • [x] InternalAvg @cbuescher # 23000
  • [x] InternalCardinality @ colings86 # 23826
  • [x] InternalGeoBounds @jimczi # 23259
  • [x] InternalGeoCentroid @martijnvg # 24176
  • [x] InternalMax @ nik9000 #
  • [x] InternalMin @ colings86 + @ nik9000 #
  • [x] Agregação métrica de percentis: InternalTDigestPercentiles (# 24090) e InternalHDRPercentiles (# 24157) @tlrx
  • [x] Percentis classificam a agregação métrica: InternalTDigestPercentileRanks e InternalHDRPercentileRanks . @jpountz # 23240
  • [x] InternalScriptedMetric @cbuescher # 23330
  • [x] InternalStats @jimczi
  • [x] InternalExtendedStats @jimczi
  • [x] InternalSum @martijnvg #
  • [x] InternalTopHits @ nik9000
  • [x] InternalValueCount @tlrx # 22741
  • [x] InternalMatrixStats @martijnvg # 24559

Posso ter esquecido algumas aulas, então atualize este problema se for o caso :)

Listei as implementações InternalAggregation separadamente das implementações Aggregator pois os testes de unidade para cada uma podem ser escritos em paralelo por desenvolvedores diferentes. No entanto, acho que para as agregações menos complexas, os testes de unidade para as implementações InternalAggregation e Aggregator podem ser adicionados no mesmo PR.

Acho que pelo menos os testes de unidade devem ser adicionados ao branch master. O backporting para o ramo 5.x é o melhor esforço e só deve ser considerado se for mais fácil.

Sugiro que trabalhemos da seguinte maneira para evitar fazer duas vezes o trabalho acidentalmente:

  • Adicione seu nome a uma tarefa na qual você gostaria de trabalhar antes de começar a escrever os testes de unidade.
  • Ao abrir um PR, adicione o número do PR à tarefa.
  • Assim que o PR for mesclado, marque a tarefa.

Observe que as agregações são testadas, no entanto, devido a como antes do código ser estruturado, o teste de unidade era realmente difícil.

:AnalyticAggregations >test Meta

Comentários muito úteis

Todas as tarefas para este tíquete foram concluídas 🎉

Todos 3 comentários

Alguém se importaria se eu trabalhasse em algo para todas as subclasses ou InternalSingleBucketAggregation ? Eu seria capaz de clicar em várias caixas de seleção ...

Alguém se importaria se eu trabalhasse em algo para todas as subclasses ou InternalSingleBucketAggregation? Eu seria capaz de clicar em várias caixas de seleção ...

Eu fundi # 23388.

Todas as tarefas para este tíquete foram concluídas 🎉

Esta página foi útil?
0 / 5 - 0 avaliações