@@ -14,6 +14,7 @@ package collector
14
14
15
15
import (
16
16
"context"
17
+ "math"
17
18
"testing"
18
19
19
20
"github.com/DATA-DOG/go-sqlmock"
@@ -56,3 +57,40 @@ func TestPgArchiverCollector(t *testing.T) {
56
57
t .Errorf ("there were unfulfilled exceptions: %s" , err )
57
58
}
58
59
}
60
+
61
+ func TestPgArchiverNaNCollector (t * testing.T ) {
62
+ db , mock , err := sqlmock .New ()
63
+ if err != nil {
64
+ t .Fatalf ("Error opening a stub db connection: %s" , err )
65
+ }
66
+ defer db .Close ()
67
+
68
+ inst := & instance {db : db }
69
+ mock .ExpectQuery (sanitizeQuery (pgArchiverQuery )).WillReturnRows (sqlmock .NewRows ([]string {"pending_wal_count" }).
70
+ AddRow (math .NaN ()))
71
+
72
+ ch := make (chan prometheus.Metric )
73
+ go func () {
74
+ defer close (ch )
75
+ c := PGArchiverCollector {}
76
+
77
+ if err := c .Update (context .Background (), inst , ch ); err != nil {
78
+ t .Errorf ("Error calling PGArchiverCollector.Update: %s" , err )
79
+ }
80
+ }()
81
+
82
+ expected := []MetricResult {
83
+ {labels : labelMap {}, value : math .NaN (), metricType : dto .MetricType_GAUGE },
84
+ }
85
+ convey .Convey ("Metrics comparison" , t , func () {
86
+ for _ , expect := range expected {
87
+ m := readMetric (<- ch )
88
+ convey .So (expect .labels , convey .ShouldResemble , m .labels )
89
+ convey .So (math .IsNaN (m .value ), convey .ShouldResemble , math .IsNaN (expect .value ))
90
+ convey .So (expect .metricType , convey .ShouldEqual , m .metricType )
91
+ }
92
+ })
93
+ if err := mock .ExpectationsWereMet (); err != nil {
94
+ t .Errorf ("there were unfulfilled exceptions: %s" , err )
95
+ }
96
+ }
0 commit comments