@@ -151,3 +151,46 @@ func TestPGStateStatementsCollectorNewPG(t *testing.T) {
151151 t .Errorf ("there were unfulfilled exceptions: %s" , err )
152152 }
153153}
154+
155+ func TestPGStateStatementsCollector_PG17 (t * testing.T ) {
156+ db , mock , err := sqlmock .New ()
157+ if err != nil {
158+ t .Fatalf ("Error opening a stub db connection: %s" , err )
159+ }
160+ defer db .Close ()
161+
162+ inst := & instance {db : db , version : semver .MustParse ("17.0.0" )}
163+
164+ columns := []string {"user" , "datname" , "queryid" , "calls_total" , "seconds_total" , "rows_total" , "block_read_seconds_total" , "block_write_seconds_total" }
165+ rows := sqlmock .NewRows (columns ).
166+ AddRow ("postgres" , "postgres" , 1500 , 5 , 0.4 , 100 , 0.1 , 0.2 )
167+ mock .ExpectQuery (sanitizeQuery (pgStatStatementsQuery_PG17 )).WillReturnRows (rows )
168+
169+ ch := make (chan prometheus.Metric )
170+ go func () {
171+ defer close (ch )
172+ c := PGStatStatementsCollector {}
173+
174+ if err := c .Update (context .Background (), inst , ch ); err != nil {
175+ t .Errorf ("Error calling PGStatStatementsCollector.Update: %s" , err )
176+ }
177+ }()
178+
179+ expected := []MetricResult {
180+ {labels : labelMap {"user" : "postgres" , "datname" : "postgres" , "queryid" : "1500" }, metricType : dto .MetricType_COUNTER , value : 5 },
181+ {labels : labelMap {"user" : "postgres" , "datname" : "postgres" , "queryid" : "1500" }, metricType : dto .MetricType_COUNTER , value : 0.4 },
182+ {labels : labelMap {"user" : "postgres" , "datname" : "postgres" , "queryid" : "1500" }, metricType : dto .MetricType_COUNTER , value : 100 },
183+ {labels : labelMap {"user" : "postgres" , "datname" : "postgres" , "queryid" : "1500" }, metricType : dto .MetricType_COUNTER , value : 0.1 },
184+ {labels : labelMap {"user" : "postgres" , "datname" : "postgres" , "queryid" : "1500" }, metricType : dto .MetricType_COUNTER , value : 0.2 },
185+ }
186+
187+ convey .Convey ("Metrics comparison" , t , func () {
188+ for _ , expect := range expected {
189+ m := readMetric (<- ch )
190+ convey .So (expect , convey .ShouldResemble , m )
191+ }
192+ })
193+ if err := mock .ExpectationsWereMet (); err != nil {
194+ t .Errorf ("there were unfulfilled exceptions: %s" , err )
195+ }
196+ }
0 commit comments