CloudWatch: Add macro for resolving period in SEARCH expressions (#60435)
* interpolate macro in the backend * refactor logger in cloudwatch query * revert added metrics * add docs * apply pr feedback * fix broken test * fix spelling
This commit is contained in:
@@ -15,6 +15,8 @@ import (
|
||||
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/utils"
|
||||
)
|
||||
|
||||
var logger = &logtest.Fake{}
|
||||
|
||||
func TestCloudWatchQuery(t *testing.T) {
|
||||
t.Run("Deeplink", func(t *testing.T) {
|
||||
t.Run("is not generated for MetricQueryTypeQuery", func(t *testing.T) {
|
||||
@@ -317,7 +319,7 @@ func TestRequestParser(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
migratedQueries, err := ParseMetricDataQueries(oldQuery, time.Now(), time.Now(), "us-east-2", false, false)
|
||||
migratedQueries, err := ParseMetricDataQueries(oldQuery, time.Now(), time.Now(), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
require.Len(t, migratedQueries, 1)
|
||||
require.NotNil(t, migratedQueries[0])
|
||||
@@ -348,7 +350,7 @@ func TestRequestParser(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
results, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
results, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, results, 1)
|
||||
res := results[0]
|
||||
@@ -391,7 +393,7 @@ func TestRequestParser(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
results, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
results, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
require.Len(t, results, 1)
|
||||
res := results[0]
|
||||
@@ -424,7 +426,7 @@ func TestRequestParser(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
_, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
_, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.Error(t, err)
|
||||
|
||||
assert.Equal(t, `error parsing query "", failed to parse dimensions: unknown type as dimension value`, err.Error())
|
||||
@@ -453,7 +455,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -485,7 +487,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
to := time.Now()
|
||||
from := to.Local().Add(time.Minute * time.Duration(5))
|
||||
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 60, res[0].Period)
|
||||
@@ -495,7 +497,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
to := time.Now()
|
||||
from := to.AddDate(0, 0, -1)
|
||||
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 60, res[0].Period)
|
||||
@@ -504,7 +506,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
t.Run("Time range is 2 days", func(t *testing.T) {
|
||||
to := time.Now()
|
||||
from := to.AddDate(0, 0, -2)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 300, res[0].Period)
|
||||
@@ -514,7 +516,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
to := time.Now()
|
||||
from := to.AddDate(0, 0, -7)
|
||||
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 900, res[0].Period)
|
||||
@@ -524,7 +526,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
to := time.Now()
|
||||
from := to.AddDate(0, 0, -30)
|
||||
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 3600, res[0].Period)
|
||||
@@ -534,7 +536,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
to := time.Now()
|
||||
from := to.AddDate(0, 0, -90)
|
||||
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 21600, res[0].Period)
|
||||
@@ -544,7 +546,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
to := time.Now()
|
||||
from := to.AddDate(-1, 0, 0)
|
||||
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 21600, res[0].Period)
|
||||
@@ -554,7 +556,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
to := time.Now()
|
||||
from := to.AddDate(-2, 0, 0)
|
||||
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 86400, res[0].Period)
|
||||
@@ -563,7 +565,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
t.Run("Time range is 2 days, but 16 days ago", func(t *testing.T) {
|
||||
to := time.Now().AddDate(0, 0, -14)
|
||||
from := to.AddDate(0, 0, -2)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 300, res[0].Period)
|
||||
@@ -572,7 +574,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
t.Run("Time range is 2 days, but 90 days ago", func(t *testing.T) {
|
||||
to := time.Now().AddDate(0, 0, -88)
|
||||
from := to.AddDate(0, 0, -2)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 3600, res[0].Period)
|
||||
@@ -581,7 +583,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
t.Run("Time range is 2 days, but 456 days ago", func(t *testing.T) {
|
||||
to := time.Now().AddDate(0, 0, -454)
|
||||
from := to.AddDate(0, 0, -2)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, from, to, "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
assert.Equal(t, 21600, res[0].Period)
|
||||
@@ -596,7 +598,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
_, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
_, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.Error(t, err)
|
||||
assert.Equal(t, `error parsing query "", failed to parse period as duration: time: invalid duration "invalid"`, err.Error())
|
||||
})
|
||||
@@ -611,7 +613,7 @@ func Test_ParseMetricDataQueries_periods(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
require.Len(t, res, 1)
|
||||
@@ -698,13 +700,13 @@ func Test_ParseMetricDataQueries_query_type_and_metric_editor_mode_and_GMD_query
|
||||
),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
assert.Equal(t, tc.expectedMetricQueryType, res[0].MetricQueryType)
|
||||
assert.Equal(t, tc.expectedMetricEditorMode, res[0].MetricEditorMode)
|
||||
assert.Equal(t, tc.expectedGMDApiMode, res[0].GetGMDAPIMode(&logtest.Fake{}))
|
||||
assert.Equal(t, tc.expectedGMDApiMode, res[0].GetGetMetricDataAPIMode())
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -724,7 +726,7 @@ func Test_ParseMetricDataQueries_hide_and_ReturnData(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -745,7 +747,7 @@ func Test_ParseMetricDataQueries_hide_and_ReturnData(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -766,7 +768,7 @@ func Test_ParseMetricDataQueries_hide_and_ReturnData(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -785,7 +787,7 @@ func Test_ParseMetricDataQueries_hide_and_ReturnData(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -806,7 +808,7 @@ func Test_ParseMetricDataQueries_hide_and_ReturnData(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -827,7 +829,7 @@ func Test_ParseMetricDataQueries_hide_and_ReturnData(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -850,7 +852,7 @@ func Test_ParseMetricDataQueries_ID(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -871,7 +873,7 @@ func Test_ParseMetricDataQueries_ID(t *testing.T) {
|
||||
}`),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), "us-east-2", logger, false, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -898,7 +900,7 @@ func Test_ParseMetricDataQueries_sets_label_when_label_is_present_in_json_query(
|
||||
},
|
||||
}
|
||||
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", true, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", logger, true, false)
|
||||
assert.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
@@ -962,7 +964,7 @@ func Test_ParseMetricDataQueries_migrate_alias_to_label(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", true, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", logger, true, false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
require.Len(t, res, 1)
|
||||
@@ -1009,7 +1011,7 @@ func Test_ParseMetricDataQueries_migrate_alias_to_label(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", true, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", logger, true, false)
|
||||
assert.NoError(t, err)
|
||||
require.Len(t, res, 2)
|
||||
|
||||
@@ -1078,7 +1080,7 @@ func Test_ParseMetricDataQueries_migrate_alias_to_label(t *testing.T) {
|
||||
}`, tc.labelJson)),
|
||||
},
|
||||
}
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", tc.dynamicLabelsFeatureToggleEnabled, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now(), time.Now(), "us-east-2", logger, tc.dynamicLabelsFeatureToggleEnabled, false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
require.Len(t, res, 1)
|
||||
@@ -1105,7 +1107,7 @@ func Test_ParseMetricDataQueries_statistics_and_query_type_validation_and_MatchE
|
||||
{
|
||||
JSON: []byte("{}"),
|
||||
},
|
||||
}, time.Now(), time.Now(), "us-east-2", false, false)
|
||||
}, time.Now(), time.Now(), "us-east-2", logger, false, false)
|
||||
assert.Error(t, err)
|
||||
assert.Equal(t, `error parsing query "", query must have either statistic or statistics field`, err.Error())
|
||||
|
||||
@@ -1118,7 +1120,7 @@ func Test_ParseMetricDataQueries_statistics_and_query_type_validation_and_MatchE
|
||||
{
|
||||
JSON: []byte(`{"type":"some other type", "statistic":"Average", "matchExact":false}`),
|
||||
},
|
||||
}, time.Now(), time.Now(), "us-east-2", false, false)
|
||||
}, time.Now(), time.Now(), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.Empty(t, actual)
|
||||
@@ -1130,7 +1132,7 @@ func Test_ParseMetricDataQueries_statistics_and_query_type_validation_and_MatchE
|
||||
{
|
||||
JSON: []byte(`{"statistic":"Average"}`),
|
||||
},
|
||||
}, time.Now(), time.Now(), "us-east-2", false, false)
|
||||
}, time.Now(), time.Now(), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.NotEmpty(t, actual)
|
||||
@@ -1142,7 +1144,7 @@ func Test_ParseMetricDataQueries_statistics_and_query_type_validation_and_MatchE
|
||||
{
|
||||
JSON: []byte(`{"statistic":"Average"}`),
|
||||
},
|
||||
}, time.Now(), time.Now(), "us-east-2", false, false)
|
||||
}, time.Now(), time.Now(), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.Len(t, actual, 1)
|
||||
@@ -1156,7 +1158,7 @@ func Test_ParseMetricDataQueries_statistics_and_query_type_validation_and_MatchE
|
||||
{
|
||||
JSON: []byte(`{"statistic":"Average","matchExact":false}`),
|
||||
},
|
||||
}, time.Now(), time.Now(), "us-east-2", false, false)
|
||||
}, time.Now(), time.Now(), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.Len(t, actual, 1)
|
||||
@@ -1172,7 +1174,7 @@ func Test_ParseMetricDataQueries_account_Id(t *testing.T) {
|
||||
{
|
||||
JSON: []byte(`{"accountId":"some account id", "statistic":"Average"}`),
|
||||
},
|
||||
}, time.Now(), time.Now(), "us-east-2", false, true)
|
||||
}, time.Now(), time.Now(), "us-east-2", logger, false, true)
|
||||
assert.NoError(t, err)
|
||||
|
||||
require.Len(t, actual, 1)
|
||||
@@ -1187,7 +1189,7 @@ func Test_ParseMetricDataQueries_account_Id(t *testing.T) {
|
||||
{
|
||||
JSON: []byte(`{"accountId":"some account id", "statistic":"Average"}`),
|
||||
},
|
||||
}, time.Now(), time.Now(), "us-east-2", false, false)
|
||||
}, time.Now(), time.Now(), "us-east-2", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
require.Len(t, actual, 1)
|
||||
@@ -1219,10 +1221,82 @@ func Test_ParseMetricDataQueries_default_region(t *testing.T) {
|
||||
}
|
||||
|
||||
region := "us-east-2"
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), region, false, false)
|
||||
res, err := ParseMetricDataQueries(query, time.Now().Add(-2*time.Hour), time.Now().Add(-time.Hour), region, logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
require.Len(t, res, 1)
|
||||
require.NotNil(t, res[0])
|
||||
assert.Equal(t, region, res[0].Region)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_ParseMetricDataQueries_ApplyMacros(t *testing.T) {
|
||||
t.Run("should expand $__period_auto macro when a metric search code query is used", func(t *testing.T) {
|
||||
timeNow := time.Now()
|
||||
testCases := []struct {
|
||||
startTime time.Time
|
||||
expectedPeriod string
|
||||
}{
|
||||
{
|
||||
startTime: timeNow.Add(-2 * time.Hour),
|
||||
expectedPeriod: "60",
|
||||
},
|
||||
{
|
||||
startTime: timeNow.Add(-100 * time.Hour),
|
||||
expectedPeriod: "300",
|
||||
},
|
||||
{
|
||||
startTime: timeNow.Add(-1000 * time.Hour),
|
||||
expectedPeriod: "3600",
|
||||
},
|
||||
}
|
||||
for _, tc := range testCases {
|
||||
t.Run(fmt.Sprintf("should expand $__period_auto macro to %s when a metric search code query is used", tc.expectedPeriod), func(t *testing.T) {
|
||||
actual, err := ParseMetricDataQueries(
|
||||
[]backend.DataQuery{
|
||||
{
|
||||
JSON: []byte(`{
|
||||
"refId":"A",
|
||||
"region":"us-east-1",
|
||||
"namespace":"ec2",
|
||||
"metricName":"CPUUtilization",
|
||||
"alias":"{{period}} {{any_other_word}}",
|
||||
"dimensions":{"InstanceId":["test"]},
|
||||
"statistic":"Average",
|
||||
"period":"600",
|
||||
"hide":false,
|
||||
"expression": "SEARCH('{AWS/EC2,InstanceId}', 'Average', $__period_auto)",
|
||||
"metricQueryType": 0,
|
||||
"metricEditorMode": 1
|
||||
}`),
|
||||
},
|
||||
}, tc.startTime, time.Now(), "us-east-1", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, fmt.Sprintf("SEARCH('{AWS/EC2,InstanceId}', 'Average', %s)", tc.expectedPeriod), actual[0].Expression)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("should not expand __period_auto macro if it's a metric query code query", func(t *testing.T) {
|
||||
actual, err := ParseMetricDataQueries(
|
||||
[]backend.DataQuery{
|
||||
{
|
||||
JSON: []byte(`{
|
||||
"refId":"A",
|
||||
"region":"us-east-1",
|
||||
"namespace":"ec2",
|
||||
"metricName":"CPUUtilization",
|
||||
"alias":"{{period}} {{any_other_word}}",
|
||||
"dimensions":{"InstanceId":["test"]},
|
||||
"statistic":"Average",
|
||||
"period":"600",
|
||||
"hide":false,
|
||||
"expression": "SEARCH('{AWS/EC2,InstanceId}', 'Average', $__period_auto)",
|
||||
"metricQueryType": 1,
|
||||
"metricEditorMode": 1
|
||||
}`),
|
||||
},
|
||||
}, time.Now(), time.Now(), "us-east-1", logger, false, false)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "SEARCH('{AWS/EC2,InstanceId}', 'Average', $__period_auto)", actual[0].Expression)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user