Skip to content

Commit 64d18ac

Browse files
authored
experimental: DataQuery: switch from timeRange to _timeRange (#1420)
* experimental: DataQuery: switch from timeRange to _timeRange * added explanation
1 parent 858e0f7 commit 64d18ac

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

experimental/apis/data/v0alpha1/conversions_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func TestToBackendDataQueryJSON(t *testing.T) {
5454
require.Equal(t, time.UnixMilli(12345678).UTC(), bq.TimeRange.From)
5555
require.Equal(t, time.UnixMilli(87654321).UTC(), bq.TimeRange.To)
5656

57-
jsonData := `{"refId":"A","timeRange":{"from":"12345678","to":"87654321"},"datasource":{"type":"prometheus","uid":"hello-world"},"queryType":"interesting","maxDataPoints":42,"intervalMs":15,"key1":"value1","key2":"value2"}`
57+
jsonData := `{"refId":"A","_timeRange":{"from":"12345678","to":"87654321"},"datasource":{"type":"prometheus","uid":"hello-world"},"queryType":"interesting","maxDataPoints":42,"intervalMs":15,"key1":"value1","key2":"value2"}`
5858

5959
require.Equal(t, jsonData, string(bq.JSON))
6060
}

experimental/apis/data/v0alpha1/query.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ func writeQuery(g *DataQuery, stream *j.Stream) {
269269

270270
if q.TimeRange != nil {
271271
stream.WriteMore()
272-
stream.WriteObjectField("timeRange")
272+
stream.WriteObjectField("_timeRange")
273273
stream.WriteVal(g.TimeRange)
274274
}
275275

@@ -347,7 +347,9 @@ func (g *CommonQueryProperties) readQuery(iter *jsoniter.Iterator,
347347
g.RefID, err = iter.ReadString()
348348
case "resultAssertions":
349349
err = iter.ReadVal(&g.ResultAssertions)
350-
case "timeRange":
350+
case "timeRange": // temporarily kept for backward compatibility
351+
err = iter.ReadVal(&g.TimeRange)
352+
case "_timeRange":
351353
err = iter.ReadVal(&g.TimeRange)
352354
case "datasource":
353355
// Old datasource values may just be a string

experimental/apis/data/v0alpha1/query_test.go

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,18 @@ func TestParseQueriesIntoQueryDataRequest(t *testing.T) {
5656
"from": "100",
5757
"to": "200"
5858
}
59+
},
60+
{
61+
"refId": "Q",
62+
"datasource": {
63+
"type": "prometheus",
64+
"uid": "u-i-d"
65+
},
66+
"expr": "42",
67+
"_timeRange": {
68+
"from": "10",
69+
"to": "20"
70+
}
5971
}
6072
],
6173
"from": "1692624667389",
@@ -67,7 +79,7 @@ func TestParseQueriesIntoQueryDataRequest(t *testing.T) {
6779
require.NoError(t, err)
6880

6981
t.Run("verify raw unmarshal", func(t *testing.T) {
70-
require.Len(t, req.Queries, 2)
82+
require.Len(t, req.Queries, 3)
7183
require.Equal(t, "b1808c48-9fc9-4045-82d7-081781f8a553", req.Queries[0].Datasource.UID)
7284
require.Equal(t, "spreadsheetID", req.Queries[0].GetString("spreadsheet"))
7385

@@ -84,21 +96,42 @@ func TestParseQueriesIntoQueryDataRequest(t *testing.T) {
8496
require.Equal(t, int64(10), req.Queries[1].MaxDataPoints) // input was a string
8597

8698
// The second query has an explicit time range, and legacy datasource name
99+
require.NotNil(t, req.Queries[1].TimeRange)
100+
require.Equal(t, "100", req.Queries[1].TimeRange.From)
101+
require.Equal(t, "200", req.Queries[1].TimeRange.To)
87102
out, err = json.MarshalIndent(req.Queries[1], "", " ")
88103
require.NoError(t, err)
89-
// fmt.Printf("%s\n", string(out))
90104
require.JSONEq(t, `{
91105
"datasource": {
92106
"type": "", ` /* NOTE! this implies legacy naming */ +`
93107
"uid": "old"
94108
},
95109
"maxDataPoints": 10,
96110
"refId": "Z",
97-
"timeRange": {
111+
"_timeRange": {
98112
"from": "100",
99113
"to": "200"
100114
}
101115
}`, string(out))
116+
117+
// The third query has a time-range with an underscore prefix
118+
require.NotNil(t, req.Queries[2].TimeRange)
119+
require.Equal(t, "10", req.Queries[2].TimeRange.From)
120+
require.Equal(t, "20", req.Queries[2].TimeRange.To)
121+
out, err = json.MarshalIndent(req.Queries[2], "", " ")
122+
require.NoError(t, err)
123+
require.JSONEq(t, `{
124+
"datasource": {
125+
"type": "prometheus",
126+
"uid": "u-i-d"
127+
},
128+
"expr": "42",
129+
"refId": "Q",
130+
"_timeRange": {
131+
"from": "10",
132+
"to": "20"
133+
}
134+
}`, string(out))
102135
})
103136

104137
t.Run("verify deep copy", func(t *testing.T) {

0 commit comments

Comments
 (0)