Elasticsearch: Mejore la cobertura de la prueba para agregaciones métricas y de cubos

Creado en 20 dic. 2016  ·  3Comentarios  ·  Fuente: elastic/elasticsearch

En la actualidad, hay muy poca cobertura de prueba unitaria para agregaciones métricas y de cubos. El objetivo de este meta problema es mejorarlo significativamente. Para cada agregación, debemos agregar más pruebas unitarias para el agregador (cómo interactúa con el índice de Lucene a través de org.apache.lucene.search.Collector que implementa cada agregación), la lógica de reducción y la serialización de los resultados de la agregación.

Deberíamos agregar pruebas unitarias para las siguientes implementaciones 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 @polifractal
  • [x] ReverseNestedAggregator @cbuescher
  • [x] RangeAggregator (también prueba con DateRangeAggregationBuilder y GeoDistanceAggregationBuilder ) @tlrx #
  • [x] BinaryRangeAggregator (también prueba con IpRangeAggregationBuilder ) @jimczi # 23255
  • [x] Agregador de muestreador diversificado, que tiene las siguientes implementaciones que deben probarse: DiversifiedBytesHashSamplerAggregator , DiversifiedMapSamplerAggregator , DiversifiedNumericSamplerAggregator y DiversifiedOrdinalsSamplerAggregator . @martijnvg # 23511
  • [x] SamplerAggregator @ nik9000 # 23243
  • [x] Agregación de términos significativos: GlobalOrdinalsSignificantTermsAggregator , GlobalOrdinalsSignificantTermsAggregator.WithHash , SignificantLongTermsAggregator y SignificantStringTermsAggregator . @markharwood # 24904
  • [x] Agregación de términos: DoubleTermsAggregator , GlobalOrdinalsStringTermsAggregator. LowCardinality , GlobalOrdinalsStringTermsAggregator. WithHash , LongTermsAggregator y 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 # 22668
  • [x] MinAggregator [ MvG ] # 22279
  • [x] Agregación de métricas de percentiles: TDigestPercentilesAggregator y HDRPercentilesAggregator @tlrx # 24245
  • [x] Los percentiles clasifican la agregación de métricas: TDigestPercentileRanksAggregator y 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

También deberíamos agregar pruebas para las siguientes implementaciones InternalAggregation :
(para probar la lógica de serialización de reducción y resultado)

  • [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 #
  • [x] InternalBinaryRange @jimczi # 23259
  • [x] InternalSampler @martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8
  • [x] Agregación de términos significativos: SignificantLongTerms y SignificantStringTerms . @tlrx # 23428
  • [x] Agregación de términos: DoubleTerms , LongTerms , StringTerms y UnmappedTerms . @jpountz # 23149
  • [x] InternalAvg @cbuescher # 23000
  • [x] InternalCardinality @ colings86 # 23826
  • [x] InternalGeoBounds @jimczi # 23259
  • [x] InternalGeoCentroid @martijnvg # 24176
  • [x] InternalMax @ nik9000 # 22668
  • [x] InternalMin @ colings86 + @ nik9000 # 22668
  • [x] Agregación de métricas de percentiles: InternalTDigestPercentiles (# 24090) y InternalHDRPercentiles (# 24157) @tlrx
  • [x] Los percentiles clasifican la agregación de métricas: InternalTDigestPercentileRanks y 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

Es posible que haya olvidado algunas clases, así que actualice este problema si ese es el caso :)

Enumeré las implementaciones InternalAggregation separado de las implementaciones Aggregator , ya que diferentes desarrolladores pueden escribir pruebas unitarias para cada una en paralelo. Sin embargo, creo que para las agregaciones menos complejas, las pruebas unitarias para la implementación InternalAggregation y las implementaciones Aggregator se pueden agregar en el mismo PR.

Creo que al menos las pruebas unitarias deberían agregarse a la rama maestra. El retroceso a la rama 5.x es el mejor esfuerzo y solo debe considerarse si se trata de una fruta madura.

Sugiero que trabajemos de la siguiente manera para evitar trabajar accidentalmente dos veces:

  • Agregue su nombre a la tarea en la que le gusta trabajar antes de comenzar a escribir las pruebas unitarias.
  • Cuando abra un PR, agregue el número PR a la tarea.
  • Una vez que el pr se haya fusionado, marque la tarea.

Tenga en cuenta que las agregaciones se prueban, sin embargo, debido a cómo antes de que se estructurara el código, las pruebas unitarias eran realmente difíciles.

:AnalyticAggregations >test Meta

Comentario más útil

Todas las tareas para este ticket ya se han completado 🎉

Todos 3 comentarios

¿A alguien le importaría si trabajé en algo para todas las subclases o InternalSingleBucketAggregation ? Podría hacer clic en muchas casillas de verificación ...

¿A alguien le importaría si trabajara en algo para todas las subclases o InternalSingleBucketAggregation? Podría hacer clic en muchas casillas de verificación ...

Fusioné # 23388.

Todas las tareas para este ticket ya se han completado 🎉

¿Fue útil esta página
0 / 5 - 0 calificaciones