Elasticsearch: Améliorer la couverture des tests pour les agrégations de buckets et de métriques

Créé le 20 déc. 2016  ·  3Commentaires  ·  Source: elastic/elasticsearch

Aujourd'hui, il existe très peu de couverture de tests unitaires pour les agrégations de compartiments et de métriques. Ce méta-problème vise à améliorer considérablement cela. Pour chaque agrégation, nous devons ajouter plus de tests unitaires pour l'agrégateur (comment il interagit avec l'index Lucene via org.apache.lucene.search.Collector que chaque agrégation implémente), la logique de réduction et la sérialisation des résultats d'agrégation.

Nous devrions ajouter des tests unitaires pour les implémentations 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 @polyfractal
  • [x] ReverseNestedAggregator @cbuescher
  • [x] RangeAggregator (tester aussi avec DateRangeAggregationBuilder et GeoDistanceAggregationBuilder ) @tlrx #24569
  • [x] BinaryRangeAggregator (tester aussi avec IpRangeAggregationBuilder ) @jimczi #23255
  • [x] Agrégateur d'échantillonneurs diversifié, dont les implémentations suivantes doivent être testées : DiversifiedBytesHashSamplerAggregator , DiversifiedMapSamplerAggregator , DiversifiedNumericSamplerAggregator et DiversifiedOrdinalsSamplerAggregator . @martijnvg #23511
  • [x] SamplerAggregator @nik9000 #23243
  • [x] Agrégation de termes significatifs : GlobalOrdinalsSignificantTermsAggregator , GlobalOrdinalsSignificantTermsAggregator.WithHash , SignificantLongTermsAggregator et SignificantStringTermsAggregator . @markharwood #24904
  • [x] Agrégation des termes : DoubleTermsAggregator , GlobalOrdinalsStringTermsAggregator. LowCardinality , GlobalOrdinalsStringTermsAggregator. WithHash , LongTermsAggregator et StringTermsAggregator . @martijnvg #24949
  • [x] BestBucketsDeferringCollector @MaineC #23511
  • [x] BestDocsDeferringCollector @polyfractale #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] Agrégation de métriques de centiles : TDigestPercentilesAggregator et HDRPercentilesAggregator @tlrx #24245
  • [x] Agrégation de métriques de rang centiles : TDigestPercentileRanksAggregator et 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

Nous devrions également ajouter des tests pour les implémentations InternalAggregation :
(pour tester la logique de sérialisation de réduction et de résultat)

  • [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 @polyfractale #23388
  • [x] InternalReverseNested @cbuescher #23388
  • [x] InternalRange , InternalDateRange , InternalGeoDistance . @tlrx #24569
  • [x] InternalBinaryRange @jimczi #23259
  • [x] InternalSampler @martijnvg edada2581e75400da9fac82bdfbc7ec1f02ef0d8
  • [x] Agrégation de termes significatifs : SignificantLongTerms et SignificantStringTerms . @tlrx #23428
  • [x] Agrégation des termes : DoubleTerms , LongTerms , StringTerms et 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] Agrégation de métriques de centiles : InternalTDigestPercentiles (#24090) et InternalHDRPercentiles (#24157) @tlrx
  • [x] Agrégation de métriques de rang centiles : InternalTDigestPercentileRanks et 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

J'ai peut-être oublié certaines classes, alors veuillez mettre à jour ce problème si tel est le cas :)

J'ai répertorié les implémentations InternalAggregation séparément des implémentations Aggregator car les tests unitaires pour chacune peuvent être écrits en parallèle par différents développeurs. Cependant, je pense que pour les agrégations moins complexes, des tests unitaires pour l'implémentation InternalAggregation et les implémentations Aggregator peuvent être ajoutés dans le même PR.

Je pense qu'au moins les tests unitaires devraient être ajoutés à la branche master. Le rétroportage vers la branche 5.x est le meilleur effort et ne devrait être envisagé que s'il s'agit de fruits à portée de main.

Je suggère que nous travaillions de la manière suivante afin d'éviter de faire accidentellement le travail deux fois :

  • Ajoutez votre nom à la tâche sur laquelle vous aimez travailler avant de commencer à écrire les tests unitaires.
  • Lorsque vous ouvrez un PR, ajoutez le numéro PR à la tâche.
  • Une fois le pr fusionné, cochez la tâche.

Notez que les agrégations sont testées, mais en raison de la façon dont le code était structuré avant, les tests unitaires étaient vraiment difficiles.

:AnalyticAggregations >test Meta

Commentaire le plus utile

Toutes les tâches pour ce ticket sont maintenant terminées 🎉

Tous les 3 commentaires

Est-ce que quelqu'un s'en soucierait si je travaillais sur quelque chose pour toutes les sous-classes ou InternalSingleBucketAggregation ? Je pourrais cliquer sur beaucoup de cases à cocher.....

Est-ce que quelqu'un s'en soucierait si je travaillais sur quelque chose pour toutes les sous-classes ou InternalSingleBucketAggregation ? Je pourrais cliquer sur beaucoup de cases à cocher.....

J'ai fusionné #23388.

Toutes les tâches pour ce ticket sont maintenant terminées 🎉

Cette page vous a été utile?
0 / 5 - 0 notes