Include the const labels in baseMetric.upsertEntry in the same way as baseMetric.entryForValues.
The "Derived" form of metrics use an UpsertEntry method to provide the function that supplies the metric value as well as the label values. These methods use baseMetric.upsertEntry to do the work, but that method was ignoring any const labels set by WithConstLabel.
Commit c31d2681 added const labels to metrics and updated baseMetric.entryForValues to add the const labels, but baseMetric.upsertEntry was not similarly updated.
This causes UpsertEntry to return an errKeyValueMismatch error ("must supply the same number of label values as keys used to construct this metric") when called unless the values for the const labels were passed to UpsertEntry. That kind of defeats the purpose of const labels.
Add a test case for const labels on Int64DerivedGauge. It is not necessary to add test cases for all the derived metrics as they all use the same baseMetric implementation.
Include the const labels in
baseMetric.upsertEntry
in the same way asbaseMetric.entryForValues
.The "Derived" form of metrics use an
UpsertEntry
method to provide the function that supplies the metric value as well as the label values. These methods usebaseMetric.upsertEntry
to do the work, but that method was ignoring any const labels set byWithConstLabel
.Commit c31d2681 added const labels to metrics and updated
baseMetric.entryForValues
to add the const labels, butbaseMetric.upsertEntry
was not similarly updated.This causes
UpsertEntry
to return anerrKeyValueMismatch
error ("must supply the same number of label values as keys used to construct this metric") when called unless the values for the const labels were passed toUpsertEntry
. That kind of defeats the purpose of const labels.Add a test case for const labels on Int64DerivedGauge. It is not necessary to add test cases for all the derived metrics as they all use the same
baseMetric
implementation.