@@ -257,7 +257,7 @@ public void TestMRangeGroupby()
257
257
}
258
258
259
259
[ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
260
- public void TestMRangeReduce ( )
260
+ public void TestMRangeReduceSum ( )
261
261
{
262
262
IDatabase db = redisFixture . Redis . GetDatabase ( ) ;
263
263
db . Execute ( "FLUSHALL" ) ;
@@ -281,6 +281,181 @@ public void TestMRangeReduce()
281
281
}
282
282
}
283
283
284
+ [ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
285
+ public void TestMRangeReduceAvg ( )
286
+ {
287
+ IDatabase db = redisFixture . Redis . GetDatabase ( ) ;
288
+ db . Execute ( "FLUSHALL" ) ;
289
+ var ts = db . TS ( ) ;
290
+ foreach ( var key in _keys )
291
+ {
292
+ var label = new TimeSeriesLabel ( "key" , "MRangeReduce" ) ;
293
+ ts . Create ( key , labels : new List < TimeSeriesLabel > { label } ) ;
294
+ }
295
+
296
+ var tuples = CreateData ( ts , 50 ) ;
297
+ var results = ts . MRange ( "-" , "+" , new List < string > { "key=MRangeReduce" } , withLabels : true , groupbyTuple : ( "key" , TsReduce . Avg ) ) ;
298
+ Assert . Equal ( 1 , results . Count ) ;
299
+ Assert . Equal ( "key=MRangeReduce" , results [ 0 ] . key ) ;
300
+ Assert . Equal ( new TimeSeriesLabel ( "key" , "MRangeReduce" ) , results [ 0 ] . labels [ 0 ] ) ;
301
+ Assert . Equal ( new TimeSeriesLabel ( "__reducer__" , "avg" ) , results [ 0 ] . labels [ 1 ] ) ;
302
+ Assert . Equal ( new TimeSeriesLabel ( "__source__" , string . Join ( "," , _keys ) ) , results [ 0 ] . labels [ 2 ] ) ;
303
+ for ( int i = 0 ; i < results [ 0 ] . values . Count ; i ++ )
304
+ {
305
+ Assert . Equal ( tuples [ i ] . Val , results [ 0 ] . values [ i ] . Val ) ;
306
+ }
307
+ }
308
+
309
+ [ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
310
+ public void TestMRangeReduceRange ( )
311
+ {
312
+ IDatabase db = redisFixture . Redis . GetDatabase ( ) ;
313
+ db . Execute ( "FLUSHALL" ) ;
314
+ var ts = db . TS ( ) ;
315
+ foreach ( var key in _keys )
316
+ {
317
+ var label = new TimeSeriesLabel ( "key" , "MRangeReduce" ) ;
318
+ ts . Create ( key , labels : new List < TimeSeriesLabel > { label } ) ;
319
+ }
320
+
321
+ var tuples = CreateData ( ts , 50 ) ;
322
+ var results = ts . MRange ( "-" , "+" , new List < string > { "key=MRangeReduce" } , withLabels : true , groupbyTuple : ( "key" , TsReduce . Range ) ) ;
323
+ Assert . Equal ( 1 , results . Count ) ;
324
+ Assert . Equal ( "key=MRangeReduce" , results [ 0 ] . key ) ;
325
+ Assert . Equal ( new TimeSeriesLabel ( "key" , "MRangeReduce" ) , results [ 0 ] . labels [ 0 ] ) ;
326
+ Assert . Equal ( new TimeSeriesLabel ( "__reducer__" , "range" ) , results [ 0 ] . labels [ 1 ] ) ;
327
+ Assert . Equal ( new TimeSeriesLabel ( "__source__" , string . Join ( "," , _keys ) ) , results [ 0 ] . labels [ 2 ] ) ;
328
+ for ( int i = 0 ; i < results [ 0 ] . values . Count ; i ++ )
329
+ {
330
+ Assert . Equal ( 0 , results [ 0 ] . values [ i ] . Val ) ;
331
+ }
332
+ }
333
+
334
+ [ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
335
+ public void TestMRangeReduceCount ( )
336
+ {
337
+ IDatabase db = redisFixture . Redis . GetDatabase ( ) ;
338
+ db . Execute ( "FLUSHALL" ) ;
339
+ var ts = db . TS ( ) ;
340
+ foreach ( var key in _keys )
341
+ {
342
+ var label = new TimeSeriesLabel ( "key" , "MRangeReduce" ) ;
343
+ ts . Create ( key , labels : new List < TimeSeriesLabel > { label } ) ;
344
+ }
345
+
346
+ var tuples = CreateData ( ts , 50 ) ;
347
+ var results = ts . MRange ( "-" , "+" , new List < string > { "key=MRangeReduce" } , withLabels : true , groupbyTuple : ( "key" , TsReduce . Count ) ) ;
348
+ Assert . Equal ( 1 , results . Count ) ;
349
+ Assert . Equal ( "key=MRangeReduce" , results [ 0 ] . key ) ;
350
+ Assert . Equal ( new TimeSeriesLabel ( "key" , "MRangeReduce" ) , results [ 0 ] . labels [ 0 ] ) ;
351
+ Assert . Equal ( new TimeSeriesLabel ( "__reducer__" , "count" ) , results [ 0 ] . labels [ 1 ] ) ;
352
+ Assert . Equal ( new TimeSeriesLabel ( "__source__" , string . Join ( "," , _keys ) ) , results [ 0 ] . labels [ 2 ] ) ;
353
+ for ( int i = 0 ; i < results [ 0 ] . values . Count ; i ++ )
354
+ {
355
+ Assert . Equal ( 2 , results [ 0 ] . values [ i ] . Val ) ;
356
+ }
357
+ }
358
+
359
+ [ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
360
+ public void TestMRangeReduceStdP ( )
361
+ {
362
+ IDatabase db = redisFixture . Redis . GetDatabase ( ) ;
363
+ db . Execute ( "FLUSHALL" ) ;
364
+ var ts = db . TS ( ) ;
365
+ foreach ( var key in _keys )
366
+ {
367
+ var label = new TimeSeriesLabel ( "key" , "MRangeReduce" ) ;
368
+ ts . Create ( key , labels : new List < TimeSeriesLabel > { label } ) ;
369
+ }
370
+
371
+ var tuples = CreateData ( ts , 50 ) ;
372
+ var results = ts . MRange ( "-" , "+" , new List < string > { "key=MRangeReduce" } , withLabels : true , groupbyTuple : ( "key" , TsReduce . StdP ) ) ;
373
+ Assert . Equal ( 1 , results . Count ) ;
374
+ Assert . Equal ( "key=MRangeReduce" , results [ 0 ] . key ) ;
375
+ Assert . Equal ( new TimeSeriesLabel ( "key" , "MRangeReduce" ) , results [ 0 ] . labels [ 0 ] ) ;
376
+ Assert . Equal ( new TimeSeriesLabel ( "__reducer__" , "std.p" ) , results [ 0 ] . labels [ 1 ] ) ;
377
+ Assert . Equal ( new TimeSeriesLabel ( "__source__" , string . Join ( "," , _keys ) ) , results [ 0 ] . labels [ 2 ] ) ;
378
+ for ( int i = 0 ; i < results [ 0 ] . values . Count ; i ++ )
379
+ {
380
+ Assert . Equal ( 0 , results [ 0 ] . values [ i ] . Val ) ;
381
+ }
382
+ }
383
+
384
+ [ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
385
+ public void TestMRangeReduceStdS ( )
386
+ {
387
+ IDatabase db = redisFixture . Redis . GetDatabase ( ) ;
388
+ db . Execute ( "FLUSHALL" ) ;
389
+ var ts = db . TS ( ) ;
390
+ foreach ( var key in _keys )
391
+ {
392
+ var label = new TimeSeriesLabel ( "key" , "MRangeReduce" ) ;
393
+ ts . Create ( key , labels : new List < TimeSeriesLabel > { label } ) ;
394
+ }
395
+
396
+ var tuples = CreateData ( ts , 50 ) ;
397
+ var results = ts . MRange ( "-" , "+" , new List < string > { "key=MRangeReduce" } , withLabels : true , groupbyTuple : ( "key" , TsReduce . StdS ) ) ;
398
+ Assert . Equal ( 1 , results . Count ) ;
399
+ Assert . Equal ( "key=MRangeReduce" , results [ 0 ] . key ) ;
400
+ Assert . Equal ( new TimeSeriesLabel ( "key" , "MRangeReduce" ) , results [ 0 ] . labels [ 0 ] ) ;
401
+ Assert . Equal ( new TimeSeriesLabel ( "__reducer__" , "std.s" ) , results [ 0 ] . labels [ 1 ] ) ;
402
+ Assert . Equal ( new TimeSeriesLabel ( "__source__" , string . Join ( "," , _keys ) ) , results [ 0 ] . labels [ 2 ] ) ;
403
+ for ( int i = 0 ; i < results [ 0 ] . values . Count ; i ++ )
404
+ {
405
+ Assert . Equal ( 0 , results [ 0 ] . values [ i ] . Val ) ;
406
+ }
407
+ }
408
+
409
+ [ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
410
+ public void TestMRangeReduceVarP ( )
411
+ {
412
+ IDatabase db = redisFixture . Redis . GetDatabase ( ) ;
413
+ db . Execute ( "FLUSHALL" ) ;
414
+ var ts = db . TS ( ) ;
415
+ foreach ( var key in _keys )
416
+ {
417
+ var label = new TimeSeriesLabel ( "key" , "MRangeReduce" ) ;
418
+ ts . Create ( key , labels : new List < TimeSeriesLabel > { label } ) ;
419
+ }
420
+
421
+ var tuples = CreateData ( ts , 50 ) ;
422
+ var results = ts . MRange ( "-" , "+" , new List < string > { "key=MRangeReduce" } , withLabels : true , groupbyTuple : ( "key" , TsReduce . VarP ) ) ;
423
+ Assert . Equal ( 1 , results . Count ) ;
424
+ Assert . Equal ( "key=MRangeReduce" , results [ 0 ] . key ) ;
425
+ Assert . Equal ( new TimeSeriesLabel ( "key" , "MRangeReduce" ) , results [ 0 ] . labels [ 0 ] ) ;
426
+ Assert . Equal ( new TimeSeriesLabel ( "__reducer__" , "var.p" ) , results [ 0 ] . labels [ 1 ] ) ;
427
+ Assert . Equal ( new TimeSeriesLabel ( "__source__" , string . Join ( "," , _keys ) ) , results [ 0 ] . labels [ 2 ] ) ;
428
+ for ( int i = 0 ; i < results [ 0 ] . values . Count ; i ++ )
429
+ {
430
+ Assert . Equal ( 0 , results [ 0 ] . values [ i ] . Val ) ;
431
+ }
432
+ }
433
+
434
+ [ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
435
+ public void TestMRangeReduceVarS ( )
436
+ {
437
+ IDatabase db = redisFixture . Redis . GetDatabase ( ) ;
438
+ db . Execute ( "FLUSHALL" ) ;
439
+ var ts = db . TS ( ) ;
440
+ foreach ( var key in _keys )
441
+ {
442
+ var label = new TimeSeriesLabel ( "key" , "MRangeReduce" ) ;
443
+ ts . Create ( key , labels : new List < TimeSeriesLabel > { label } ) ;
444
+ }
445
+
446
+ var tuples = CreateData ( ts , 50 ) ;
447
+ var results = ts . MRange ( "-" , "+" , new List < string > { "key=MRangeReduce" } , withLabels : true , groupbyTuple : ( "key" , TsReduce . VarS ) ) ;
448
+ Assert . Equal ( 1 , results . Count ) ;
449
+ Assert . Equal ( "key=MRangeReduce" , results [ 0 ] . key ) ;
450
+ Assert . Equal ( new TimeSeriesLabel ( "key" , "MRangeReduce" ) , results [ 0 ] . labels [ 0 ] ) ;
451
+ Assert . Equal ( new TimeSeriesLabel ( "__reducer__" , "var.s" ) , results [ 0 ] . labels [ 1 ] ) ;
452
+ Assert . Equal ( new TimeSeriesLabel ( "__source__" , string . Join ( "," , _keys ) ) , results [ 0 ] . labels [ 2 ] ) ;
453
+ for ( int i = 0 ; i < results [ 0 ] . values . Count ; i ++ )
454
+ {
455
+ Assert . Equal ( 0 , results [ 0 ] . values [ i ] . Val ) ;
456
+ }
457
+ }
458
+
284
459
[ SkipIfRedis ( Is . OSSCluster , Is . Enterprise ) ]
285
460
public void TestMRangeFilterBy ( )
286
461
{
0 commit comments