Elasticsearch: Testabdeckung für Bucket- und Metrik-Aggregationen verbessern

Erstellt am 20. Dez. 2016  ·  3Kommentare  ·  Quelle: elastic/elasticsearch

Heutzutage gibt es für Bucket- und Metrik-Aggregationen nur sehr wenig Unit-Test-Abdeckung. Diese Metaausgabe soll das deutlich verbessern. Für jede Aggregation sollten wir weitere Unit-Tests für den Aggregator hinzufügen (wie er mit dem Lucene-Index über org.apache.lucene.search.Collector interagiert, die jede Aggregation implementiert), die Logik und die Serialisierung der Aggregationsergebnisse reduzieren.

Wir sollten Unit-Tests für die folgenden Aggregator Implementierungen hinzufügen:

  • [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 @polyfractal
  • [x] ReverseNestedAggregator @cbuescher
  • [x] RangeAggregator (auch testen mit DateRangeAggregationBuilder und GeoDistanceAggregationBuilder ) @tlrx #24569
  • [x] BinaryRangeAggregator (auch testen mit IpRangeAggregationBuilder ) @jimczi #23255
  • [x] Diversifizierter Sampler-Aggregator mit den folgenden zu testenden Implementierungen: DiversifiedBytesHashSamplerAggregator , DiversifiedMapSamplerAggregator , DiversifiedNumericSamplerAggregator und DiversifiedOrdinalsSamplerAggregator . @martijnvg #23511
  • [x] SamplerAggregator @nik9000 #23243
  • [x] Aggregation wichtiger Begriffe: GlobalOrdinalsSignificantTermsAggregator , GlobalOrdinalsSignificantTermsAggregator.WithHash , SignificantLongTermsAggregator und SignificantStringTermsAggregator . @markharwood #24904
  • [x] Begriffsaggregation: DoubleTermsAggregator , GlobalOrdinalsStringTermsAggregator. LowCardinality , GlobalOrdinalsStringTermsAggregator. WithHash , LongTermsAggregator und 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] Perzentile Metrik-Aggregation: TDigestPercentilesAggregator und HDRPercentilesAggregator @tlrx #24245
  • [x] Perzentile Rang-Metrik-Aggregation: TDigestPercentileRanksAggregator und 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

Wir sollten auch Tests für die folgenden InternalAggregation Implementierungen hinzufügen:
(um die Reduzier- und Ergebnisserialisierungslogik zu testen)

  • [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 #23259
  • [x] InternalSampler @martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8
  • [x] Aggregation wichtiger Begriffe: SignificantLongTerms und SignificantStringTerms . @tlrx #23428
  • [x] Begriffsaggregation: DoubleTerms , LongTerms , StringTerms und 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] Perzentile Metrik-Aggregation: InternalTDigestPercentiles (#24090) und InternalHDRPercentiles (#24157) @tlrx
  • [x] Perzentile Rang-Metrik-Aggregation: InternalTDigestPercentileRanks und 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

Ich habe möglicherweise einige Klassen vergessen, bitte aktualisieren Sie dieses Problem, wenn dies der Fall ist :)

Ich habe die InternalAggregation Implementierungen getrennt von den Aggregator Implementierungen aufgelistet, da Unit-Tests für jede von verschiedenen Entwicklern parallel geschrieben werden können. Ich denke jedoch, dass für die weniger komplexen Aggregationen Unit-Tests sowohl für die InternalAggregation Implementierung als auch für die Aggregator Implementierungen im selben PR hinzugefügt werden können.

Ich denke, dass zumindest die Unit-Tests dem Master-Zweig hinzugefügt werden sollten. Das Zurückportieren auf den 5.x-Zweig ist die beste Anstrengung und sollte nur in Betracht gezogen werden, wenn es sich um niedrig hängende Früchte handelt.

Ich schlage vor, dass wir wie folgt vorgehen, um zu vermeiden, dass versehentlich doppelte Arbeit geleistet wird:

  • Fügen Sie Ihren Namen der Aufgabe hinzu, an der Sie arbeiten möchten, bevor Sie mit dem Schreiben der Komponententests beginnen.
  • Wenn Sie einen PR öffnen, fügen Sie die PR-Nummer zur Aufgabe hinzu.
  • Sobald der pr zusammengeführt ist, haken Sie die Aufgabe ab.

Beachten Sie, dass Aggregationen getestet werden, aber aufgrund der Strukturierung des Codes war der Unit-Test wirklich schwierig.

:AnalyticAggregations >test Meta

Hilfreichster Kommentar

Alle Aufgaben für dieses Ticket sind nun erledigt 🎉

Alle 3 Kommentare

Würde es jemandem etwas ausmachen, wenn ich an etwas für alle Unterklassen oder InternalSingleBucketAggregation arbeite? Ich könnte viele Kontrollkästchen anklicken.....

Würde es jemandem etwas ausmachen, wenn ich an etwas für alle Unterklassen oder InternalSingleBucketAggregation arbeite? Ich könnte viele Kontrollkästchen anklicken.....

Ich habe #23388 zusammengeführt.

Alle Aufgaben für dieses Ticket sind nun erledigt 🎉

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen