From 771193a5d0bff779c63fb2ac3862cf9c5e8282d4 Mon Sep 17 00:00:00 2001 From: chejennifer <69875368+chejennifer@users.noreply.github.com> Date: Fri, 31 Jan 2025 11:11:59 -0800 Subject: [PATCH] Fix non deterministic facet ranking (#1513) Update facet ranking to take import name into account because some facets differ by only the import name. This non-deterministic ranking of facets causes flaky NL tests in the website repository because NL chooses the top ranked facet. --- internal/server/ranking/ranking.go | 3 ++ .../series_facet_test_ranking.json | 54 +++++++++++++++++++ .../v2/facet/golden/series_facet_test.go | 5 ++ 3 files changed, 62 insertions(+) create mode 100644 internal/server/v2/facet/golden/series_facet/series_facet_test_ranking.json diff --git a/internal/server/ranking/ranking.go b/internal/server/ranking/ranking.go index 5a295c417..62fc62d44 100644 --- a/internal/server/ranking/ranking.go +++ b/internal/server/ranking/ranking.go @@ -473,5 +473,8 @@ func (a FacetByRank) Less(i, j int) bool { if oi.Facet.ProvenanceUrl != oj.Facet.ProvenanceUrl { return oi.Facet.ProvenanceUrl < oj.Facet.ProvenanceUrl } + if oi.Facet.ImportName != oj.Facet.ImportName { + return oi.Facet.ImportName < oj.Facet.ImportName + } return true } diff --git a/internal/server/v2/facet/golden/series_facet/series_facet_test_ranking.json b/internal/server/v2/facet/golden/series_facet/series_facet_test_ranking.json new file mode 100644 index 000000000..83ad817a1 --- /dev/null +++ b/internal/server/v2/facet/golden/series_facet/series_facet_test_ranking.json @@ -0,0 +1,54 @@ +{ + "by_variable": { + "Count_Death_AgeAdjusted_AsAFractionOf_Count_Person": { + "by_entity": { + "geoId/01": { + "ordered_facets": [ + { + "facet_id": "1151455814", + "obs_count": 18, + "earliest_date": "2001", + "latest_date": "2020" + }, + { + "facet_id": "1123266408", + "obs_count": 18, + "earliest_date": "2001", + "latest_date": "2020" + } + ] + }, + "geoId/02": { + "ordered_facets": [ + { + "facet_id": "1151455814", + "obs_count": 18, + "earliest_date": "2001", + "latest_date": "2020" + }, + { + "facet_id": "1123266408", + "obs_count": 18, + "earliest_date": "2001", + "latest_date": "2020" + } + ] + } + } + } + }, + "facets": { + "1123266408": { + "import_name": "OECDRegionalDemography_Mortality", + "provenance_url": "https://stats.oecd.org/Index.aspx?DataSetCode=REGION_DEMOGR#", + "measurement_method": "OECDRegionalStatistics", + "observation_period": "P1Y" + }, + "1151455814": { + "import_name": "OECDRegionalDemography", + "provenance_url": "https://stats.oecd.org/Index.aspx?DataSetCode=REGION_DEMOGR#", + "measurement_method": "OECDRegionalStatistics", + "observation_period": "P1Y" + } + } +} \ No newline at end of file diff --git a/internal/server/v2/facet/golden/series_facet_test.go b/internal/server/v2/facet/golden/series_facet_test.go index 6cfffc4d0..9eb083b83 100644 --- a/internal/server/v2/facet/golden/series_facet_test.go +++ b/internal/server/v2/facet/golden/series_facet_test.go @@ -45,6 +45,11 @@ func TestSeriesFacet(t *testing.T) { []string{"country/USA", "geoId/06", "Earth"}, "series_facet.json", }, + { + []string{"Count_Death_AgeAdjusted_AsAFractionOf_Count_Person"}, + []string{"geoId/01", "geoId/02"}, + "series_facet_test_ranking.json", + }, } { goldenFile := c.goldenFile resp, err := mixer.V2Observation(ctx, &pbv2.ObservationRequest{