@@ -193,6 +193,61 @@ func Test_QueryRange_Limited(t *testing.T) {
193193 }
194194}
195195
196+ func Test_QueryRange_Ranged (t * testing.T ) {
197+ ctx := context .Background ()
198+ reg := prometheus .NewRegistry ()
199+ logger := log .NewNopLogger ()
200+ tracer := trace .NewNoopTracerProvider ().Tracer ("" )
201+
202+ db := storage .OpenDB (reg , tracer , nil )
203+ s , err := metastore .NewInMemorySQLiteProfileMetaStore (
204+ reg ,
205+ tracer ,
206+ "queryrangeranged" ,
207+ )
208+ t .Cleanup (func () {
209+ s .Close ()
210+ })
211+ require .NoError (t , err )
212+
213+ f , err := os .Open ("testdata/alloc_objects.pb.gz" )
214+ require .NoError (t , err )
215+ p , err := profile .Parse (f )
216+ require .NoError (t , err )
217+
218+ lset := labels .FromStrings ("__name__" , "allocs" )
219+
220+ app , err := db .Appender (ctx , lset )
221+ require .NoError (t , err )
222+
223+ start := time .Now ()
224+
225+ for i := 0 ; i < 500 ; i ++ {
226+ p .TimeNanos = start .Add (time .Duration (i ) * time .Second ).UnixNano ()
227+ pprof , err := storage .ProfileFromPprof (ctx , logger , s , p , 0 )
228+ require .NoError (t , err )
229+ err = app .Append (ctx , pprof )
230+ require .NoError (t , err )
231+ }
232+
233+ q := New (logger , tracer , db , s )
234+
235+ resp , err := q .QueryRange (ctx , & pb.QueryRangeRequest {
236+ Query : "allocs" ,
237+ Start : timestamppb .New (start .Add (199 * time .Second )), // only 200 will be included
238+ End : timestamppb .New (start .Add (1000 * time .Second )),
239+ })
240+ require .NoError (t , err )
241+ require .NotEmpty (t , resp .Series )
242+ require .NotEmpty (t , resp .Series [0 ].Samples )
243+
244+ for i , s := range resp .Series [0 ].Samples {
245+ expectedTime := start .Add (time .Duration (200 + i ) * time .Second ).Unix ()
246+ require .Equal (t , expectedTime , s .Timestamp .GetSeconds (), "failed to find the correct timestamp in iteration: %d" , i )
247+ require .Equal (t , int64 (310797348 ), s .Value )
248+ }
249+ }
250+
196251func Test_QueryRange_InputValidation (t * testing.T ) {
197252 ctx := context .Background ()
198253 end := time .Now ()
0 commit comments