github.com/go-graphite/carbonapi@v0.17.0/expr/functions/timeShift/function_test.go (about)

     1  package timeShift
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/go-graphite/carbonapi/expr/interfaces"
     7  	"github.com/go-graphite/carbonapi/expr/metadata"
     8  	"github.com/go-graphite/carbonapi/expr/types"
     9  	"github.com/go-graphite/carbonapi/pkg/parser"
    10  	th "github.com/go-graphite/carbonapi/tests"
    11  )
    12  
    13  var (
    14  	md []interfaces.FunctionMetadata = New("")
    15  )
    16  
    17  func init() {
    18  	for _, m := range md {
    19  		metadata.RegisterFunction(m.Name, m.F)
    20  	}
    21  }
    22  
    23  func TestTimeShift(t *testing.T) {
    24  	var startTime int64 = 86400
    25  
    26  	tests := []th.EvalTestItemWithRange{
    27  		// TODO(civil): Do not pass `true` resetEnd parameter in 0.15
    28  		{
    29  			Target: `timeShift(metric1, "0s", true)`,
    30  			M: map[parser.MetricRequest][]*types.MetricData{
    31  				{Metric: "metric1", From: startTime, Until: startTime + 6}: {types.MakeMetricData("metric1", []float64{0, 1, 2, 3, 4, 5}, 1, startTime)},
    32  			},
    33  			Want: []*types.MetricData{types.MakeMetricData("timeShift(metric1,'0',true)",
    34  				[]float64{0, 1, 2, 3, 4, 5}, 1, startTime).SetTag("timeshift", "0")},
    35  			From:  startTime,
    36  			Until: startTime + 6,
    37  		},
    38  		{
    39  			Target: `timeShift(metric1, "1s", false)`,
    40  			M: map[parser.MetricRequest][]*types.MetricData{
    41  				{Metric: "metric1", From: startTime - 1, Until: startTime + 5}: {types.MakeMetricData("metric1", []float64{-1, 0, 1, 2, 3, 4}, 1, startTime-1)},
    42  			},
    43  			Want: []*types.MetricData{types.MakeMetricData("timeShift(metric1,'-1',false)",
    44  				[]float64{-1, 0, 1, 2, 3, 4}, 1, startTime).SetTag("timeshift", "-1")},
    45  			From:  startTime,
    46  			Until: startTime + 6,
    47  		},
    48  		{
    49  			Target: `timeShift(metric1, "1s", true)`,
    50  			M: map[parser.MetricRequest][]*types.MetricData{
    51  				{Metric: "metric1", From: startTime - 1, Until: startTime + 5}: {types.MakeMetricData("metric1", []float64{-1, 0, 1, 2, 3}, 1, startTime-1)},
    52  			},
    53  			Want: []*types.MetricData{types.MakeMetricData("timeShift(metric1,'-1',true)",
    54  				[]float64{-1, 0, 1, 2, 3}, 1, startTime).SetTag("timeshift", "-1")},
    55  			From:  startTime,
    56  			Until: startTime + 6,
    57  		},
    58  		{
    59  			Target: `timeShift(metric1, "1h", false)`,
    60  			M: map[parser.MetricRequest][]*types.MetricData{
    61  				{Metric: "metric1", From: startTime - 60*60, Until: startTime - 60*60 + 6}: {types.MakeMetricData("metric1", []float64{-1, 0, 1, 2, 3, 4}, 1, startTime-60*60)},
    62  			},
    63  			Want: []*types.MetricData{types.MakeMetricData("timeShift(metric1,'-3600',false)",
    64  				[]float64{-1, 0, 1, 2, 3, 4}, 1, startTime).SetTag("timeshift", "-3600")},
    65  			From:  startTime,
    66  			Until: startTime + 6,
    67  		},
    68  		{
    69  			Target: `timeShift(metric1, "1h", true)`,
    70  			M: map[parser.MetricRequest][]*types.MetricData{
    71  				{Metric: "metric1", From: startTime - 60*60, Until: startTime - 60*60 + 6}: {types.MakeMetricData("metric1", []float64{-1, 0, 1, 2, 3, 4}, 1, startTime-60*60)},
    72  			},
    73  			Want: []*types.MetricData{types.MakeMetricData("timeShift(metric1,'-3600',true)",
    74  				[]float64{-1, 0, 1, 2, 3, 4}, 1, startTime).SetTag("timeshift", "-3600")},
    75  			From:  startTime,
    76  			Until: startTime + 6,
    77  		},
    78  		{
    79  			Target: `timeShift(metric1, "1d", false)`,
    80  			M: map[parser.MetricRequest][]*types.MetricData{
    81  				{Metric: "metric1", From: startTime - 86400, Until: startTime - 86400 + 6}: {types.MakeMetricData("metric1", []float64{-1, 0, 1, 2, 3, 4}, 1, startTime-86400)},
    82  			},
    83  			Want: []*types.MetricData{types.MakeMetricData("timeShift(metric1,'-86400',false)",
    84  				[]float64{-1, 0, 1, 2, 3, 4}, 1, startTime).SetTag("timeshift", "-86400")},
    85  			From:  startTime,
    86  			Until: startTime + 6,
    87  		},
    88  		{
    89  			Target: `timeShift(metric1, "1d", true)`,
    90  			M: map[parser.MetricRequest][]*types.MetricData{
    91  				{Metric: "metric1", From: startTime - 86400, Until: startTime - 86400 + 6}: {types.MakeMetricData("metric1", []float64{-1, 0, 1, 2, 3, 4}, 1, startTime-86400)},
    92  			},
    93  			Want: []*types.MetricData{types.MakeMetricData("timeShift(metric1,'-86400',true)",
    94  				[]float64{-1, 0, 1, 2, 3, 4}, 1, startTime).SetTag("timeshift", "-86400")},
    95  			From:  startTime,
    96  			Until: startTime + 6,
    97  		},
    98  	}
    99  
   100  	for _, tt := range tests {
   101  		testName := tt.Target
   102  		t.Run(testName, func(t *testing.T) {
   103  			eval := th.EvaluatorFromFunc(md[0].F)
   104  			th.TestEvalExprWithRange(t, eval, &tt)
   105  		})
   106  	}
   107  }