Add a test case to detect regression on issue fixed by PR #39.
Related issue is #38. Time to start expanding functional test coverage since the integration tests missed this.
This commit is contained in:
parent
8f3088611b
commit
3ead0f9aff
2
Makefile
2
Makefile
|
@ -21,7 +21,7 @@ vet:
|
|||
go vet .
|
||||
|
||||
test:
|
||||
go test -v .
|
||||
go test -v -cover .
|
||||
|
||||
test-integration: postgres_exporter postgres_exporter_integration_test
|
||||
tests/test-smoke ./postgres_exporter ./postgres_exporter_integration_test
|
||||
|
|
|
@ -508,6 +508,9 @@ func makeDescMap(pgVersion semver.Version, metricMaps map[string]map[string]Colu
|
|||
// Force to discard if not compatible.
|
||||
if columnMapping.supportedVersions != nil {
|
||||
if !columnMapping.supportedVersions(pgVersion) {
|
||||
// It's very useful to be able to see what columns are being
|
||||
// rejected.
|
||||
log.Debugln(columnName, "is being forced to discard due to version incompatibility.")
|
||||
thisMap[columnName] = MetricMap{
|
||||
discard: true,
|
||||
conversion: func(in interface{}) (float64, bool) {
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
// +build !integration
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
. "gopkg.in/check.v1"
|
||||
|
||||
"github.com/blang/semver"
|
||||
)
|
||||
|
||||
// Hook up gocheck into the "go test" runner.
|
||||
func Test(t *testing.T) { TestingT(t) }
|
||||
|
||||
type FunctionalSuite struct{
|
||||
e *Exporter
|
||||
}
|
||||
|
||||
var _ = Suite(&FunctionalSuite{})
|
||||
|
||||
func (s *FunctionalSuite) SetUpSuite(c *C) {
|
||||
|
||||
}
|
||||
|
||||
func (s *FunctionalSuite) TestSemanticVersionColumnDiscard(c *C) {
|
||||
testMetricMap := map[string]map[string]ColumnMapping{
|
||||
"test_namespace" : map[string]ColumnMapping{
|
||||
"metric_which_stays" : {COUNTER, "This metric should not be eliminated", nil, nil},
|
||||
"metric_which_discards" : {COUNTER, "This metric should be forced to DISCARD", nil, nil},
|
||||
},
|
||||
}
|
||||
|
||||
{
|
||||
// No metrics should be eliminated
|
||||
resultMap := makeDescMap(semver.MustParse("0.0.1"), testMetricMap)
|
||||
c.Check(
|
||||
resultMap["test_namespace"].columnMappings["metric_which_stays"].discard,
|
||||
Equals,
|
||||
false,
|
||||
)
|
||||
c.Check(
|
||||
resultMap["test_namespace"].columnMappings["metric_which_discards"].discard,
|
||||
Equals,
|
||||
false,
|
||||
)
|
||||
}
|
||||
|
||||
{
|
||||
// Update the map so the discard metric should be eliminated
|
||||
discardable_metric := testMetricMap["test_namespace"]["metric_which_discards"]
|
||||
discardable_metric.supportedVersions = semver.MustParseRange(">0.0.1")
|
||||
testMetricMap["test_namespace"]["metric_which_discards"] = discardable_metric
|
||||
|
||||
// Discard metric should be discarded
|
||||
resultMap := makeDescMap(semver.MustParse("0.0.1"), testMetricMap)
|
||||
c.Check(
|
||||
resultMap["test_namespace"].columnMappings["metric_which_stays"].discard,
|
||||
Equals,
|
||||
false,
|
||||
)
|
||||
c.Check(
|
||||
resultMap["test_namespace"].columnMappings["metric_which_discards"].discard,
|
||||
Equals,
|
||||
true,
|
||||
)
|
||||
}
|
||||
|
||||
{
|
||||
// Update the map so the discard metric should be kept but has a version
|
||||
discardable_metric := testMetricMap["test_namespace"]["metric_which_discards"]
|
||||
discardable_metric.supportedVersions = semver.MustParseRange(">0.0.1")
|
||||
testMetricMap["test_namespace"]["metric_which_discards"] = discardable_metric
|
||||
|
||||
// Discard metric should be discarded
|
||||
resultMap := makeDescMap(semver.MustParse("0.0.2"), testMetricMap)
|
||||
c.Check(
|
||||
resultMap["test_namespace"].columnMappings["metric_which_stays"].discard,
|
||||
Equals,
|
||||
false,
|
||||
)
|
||||
c.Check(
|
||||
resultMap["test_namespace"].columnMappings["metric_which_discards"].discard,
|
||||
Equals,
|
||||
false,
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue