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
:
ParentToChildrenAggregator
@cbuescher # 23305FilterAggregator
@ colings86 # 23826FiltersAggregator
@jimczi # 22678GeoHashGridAggregator
@martijnvg # 23417GlobalAggregator
@ nik9000 # 22668DateHistogramAggregator
@tlrx # 22714HistogramAggregator
@jpountz # 22961MissingAggregator
@jimczi # 23895NestedAggregator
@polifractalReverseNestedAggregator
@cbuescherRangeAggregator
(también prueba con DateRangeAggregationBuilder
y GeoDistanceAggregationBuilder
) @tlrx # BinaryRangeAggregator
(también prueba con IpRangeAggregationBuilder
) @jimczi # 23255DiversifiedBytesHashSamplerAggregator
, DiversifiedMapSamplerAggregator
, DiversifiedNumericSamplerAggregator
y DiversifiedOrdinalsSamplerAggregator
. @martijnvg # 23511SamplerAggregator
@ nik9000 # 23243GlobalOrdinalsSignificantTermsAggregator
, GlobalOrdinalsSignificantTermsAggregator.WithHash
, SignificantLongTermsAggregator
y SignificantStringTermsAggregator
. @markharwood # 24904DoubleTermsAggregator
, GlobalOrdinalsStringTermsAggregator. LowCardinality
, GlobalOrdinalsStringTermsAggregator. WithHash
, LongTermsAggregator
y StringTermsAggregator
. @martijnvg # 24949BestBucketsDeferringCollector
@MaineC # 23511BestDocsDeferringCollector
@polyfractal # 23511AvgAggregator
@cbuescher # 23000CardinalityAggregator
@ colings86 # 23826GeoBoundsAggregator
@jimczi # 23259GeoCentroidAggregator
@martijnvg # 24111MaxAggregator
@ nik9000 # 22668MinAggregator
[ MvG ] # 22279TDigestPercentilesAggregator
y HDRPercentilesAggregator
@tlrx # 24245TDigestPercentileRanksAggregator
y HDRPercentileRanksAggregator
. @jpountz # 23240ScriptedMetricAggregator
@cbuescher # 23404StatsAggregator
@jimcziExtendedStatsAggregator
@jimcziSumAggregator
@martijnvg # 22954TopHitsAggregator
@ nik9000 # 22754ValueCountAggregator
@tlrx # 22741MatrixStatsAggregator
@martijnvg # 24837También deberíamos agregar pruebas para las siguientes implementaciones InternalAggregation
:
(para probar la lógica de serialización de reducción y resultado)
InternalChildren
@cbuescher # 23261InternalFilter
@ colings86 # 23388InternalFilters
@jimczi # 22678InternalGeoHashGrid
@martijnvg # 23417InternalGlobal
@ nik9000 # 23388InternalHistogram
@jpountz # 22961InternalDateHistogram
@tlrx # 23402InternalMissing
@MaineC # 23388InternalNested
@polyfractal # 23388InternalReverseNested
@cbuescher # 23388InternalRange
, InternalDateRange
, InternalGeoDistance
. @tlrx # InternalBinaryRange
@jimczi # 23259InternalSampler
@martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8SignificantLongTerms
y SignificantStringTerms
. @tlrx # 23428DoubleTerms
, LongTerms
, StringTerms
y UnmappedTerms
. @jpountz # 23149InternalAvg
@cbuescher # 23000InternalCardinality
@ colings86 # 23826InternalGeoBounds
@jimczi # 23259InternalGeoCentroid
@martijnvg # 24176InternalMax
@ nik9000 # 22668InternalMin
@ colings86 + @ nik9000 # 22668InternalTDigestPercentiles
(# 24090) y InternalHDRPercentiles
(# 24157) @tlrxInternalTDigestPercentileRanks
y InternalHDRPercentileRanks
. @jpountz # 23240InternalScriptedMetric
@cbuescher # 23330InternalStats
@jimcziInternalExtendedStats
@jimcziInternalSum
@martijnvg # 22954InternalTopHits
@ nik9000InternalValueCount
@tlrx # 22741InternalMatrixStats
@martijnvg # 24559Es 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:
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.
¿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 🎉
Comentario más útil
Todas las tareas para este ticket ya se han completado 🎉