mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
mssql: add integration test to verify stored procedure usage
This commit is contained in:
parent
8f6626e805
commit
192e913b7b
@ -88,7 +88,7 @@
|
|||||||
"gnetId": null,
|
"gnetId": null,
|
||||||
"graphTooltip": 0,
|
"graphTooltip": 0,
|
||||||
"id": null,
|
"id": null,
|
||||||
"iteration": 1521475806814,
|
"iteration": 1521481503341,
|
||||||
"links": [],
|
"links": [],
|
||||||
"panels": [
|
"panels": [
|
||||||
{
|
{
|
||||||
@ -184,7 +184,7 @@
|
|||||||
"thresholds": [],
|
"thresholds": [],
|
||||||
"timeFrom": null,
|
"timeFrom": null,
|
||||||
"timeShift": null,
|
"timeShift": null,
|
||||||
"title": "Metrics - timeGroup macro 5m without fill",
|
"title": "timeGroup macro 5m without fill",
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"shared": true,
|
"shared": true,
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
@ -204,7 +204,7 @@
|
|||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
"min": null,
|
"min": "0",
|
||||||
"show": true
|
"show": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -263,7 +263,7 @@
|
|||||||
"thresholds": [],
|
"thresholds": [],
|
||||||
"timeFrom": null,
|
"timeFrom": null,
|
||||||
"timeShift": null,
|
"timeShift": null,
|
||||||
"title": "Metrics - timeGroup macro 5m with fill(NULL) and null as zero",
|
"title": "timeGroup macro 5m with fill(NULL) and null as zero",
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"shared": true,
|
"shared": true,
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
@ -283,7 +283,7 @@
|
|||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
"min": null,
|
"min": "0",
|
||||||
"show": true
|
"show": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -342,7 +342,7 @@
|
|||||||
"thresholds": [],
|
"thresholds": [],
|
||||||
"timeFrom": null,
|
"timeFrom": null,
|
||||||
"timeShift": null,
|
"timeShift": null,
|
||||||
"title": "Metrics - timeGroup macro 5m with fill(10.0)",
|
"title": "timeGroup macro 5m with fill(10.0)",
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"shared": true,
|
"shared": true,
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
@ -362,7 +362,7 @@
|
|||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
"min": null,
|
"min": "0",
|
||||||
"show": true
|
"show": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -655,7 +655,7 @@
|
|||||||
{
|
{
|
||||||
"alias": "",
|
"alias": "",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"rawSql": "SELECT \n $__timeGroup(time, '$summarize') as time, \n measurement + ' - value one' as metric, \n avg(valueOne) as valueOne\nFROM\n metric_values \nGROUP BY \n $__timeGroup(time, '$summarize'), \n measurement \nORDER BY 1",
|
"rawSql": "SELECT \n $__timeGroup(time, '$summarize') as time, \n measurement + ' - value one' as metric, \n avg(valueOne) as valueOne\nFROM\n metric_values \nWHERE\n $__timeFilter(time)\nGROUP BY \n $__timeGroup(time, '$summarize'), \n measurement \nORDER BY 1",
|
||||||
"refId": "A"
|
"refId": "A"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1292,6 +1292,172 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"aliasColors": {},
|
||||||
|
"bars": false,
|
||||||
|
"dashLength": 10,
|
||||||
|
"dashes": false,
|
||||||
|
"datasource": "${DS_MSSQL_TEST}",
|
||||||
|
"fill": 2,
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 12,
|
||||||
|
"x": 0,
|
||||||
|
"y": 54
|
||||||
|
},
|
||||||
|
"id": 29,
|
||||||
|
"legend": {
|
||||||
|
"alignAsTable": true,
|
||||||
|
"avg": true,
|
||||||
|
"current": true,
|
||||||
|
"hideEmpty": false,
|
||||||
|
"hideZero": false,
|
||||||
|
"max": true,
|
||||||
|
"min": true,
|
||||||
|
"rightSide": true,
|
||||||
|
"show": true,
|
||||||
|
"total": true,
|
||||||
|
"values": true
|
||||||
|
},
|
||||||
|
"lines": true,
|
||||||
|
"linewidth": 2,
|
||||||
|
"links": [],
|
||||||
|
"nullPointMode": "null",
|
||||||
|
"percentage": false,
|
||||||
|
"pointradius": 3,
|
||||||
|
"points": false,
|
||||||
|
"renderer": "flot",
|
||||||
|
"seriesOverrides": [],
|
||||||
|
"spaceLength": 10,
|
||||||
|
"stack": false,
|
||||||
|
"steppedLine": false,
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"alias": "",
|
||||||
|
"format": "time_series",
|
||||||
|
"rawSql": "DECLARE \n @from int = $__unixEpochFrom(),\n @to int = $__unixEpochTo()\n \nEXEC dbo.sp_test_epoch @from, @to",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"thresholds": [],
|
||||||
|
"timeFrom": null,
|
||||||
|
"timeShift": null,
|
||||||
|
"title": "Stored procedure support using epoch",
|
||||||
|
"tooltip": {
|
||||||
|
"shared": true,
|
||||||
|
"sort": 0,
|
||||||
|
"value_type": "individual"
|
||||||
|
},
|
||||||
|
"type": "graph",
|
||||||
|
"xaxis": {
|
||||||
|
"buckets": null,
|
||||||
|
"mode": "time",
|
||||||
|
"name": null,
|
||||||
|
"show": true,
|
||||||
|
"values": []
|
||||||
|
},
|
||||||
|
"yaxes": [
|
||||||
|
{
|
||||||
|
"format": "short",
|
||||||
|
"label": null,
|
||||||
|
"logBase": 1,
|
||||||
|
"max": null,
|
||||||
|
"min": "0",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"format": "short",
|
||||||
|
"label": null,
|
||||||
|
"logBase": 1,
|
||||||
|
"max": null,
|
||||||
|
"min": null,
|
||||||
|
"show": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"aliasColors": {},
|
||||||
|
"bars": false,
|
||||||
|
"dashLength": 10,
|
||||||
|
"dashes": false,
|
||||||
|
"datasource": "${DS_MSSQL_TEST}",
|
||||||
|
"fill": 2,
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 12,
|
||||||
|
"x": 12,
|
||||||
|
"y": 54
|
||||||
|
},
|
||||||
|
"id": 30,
|
||||||
|
"legend": {
|
||||||
|
"alignAsTable": true,
|
||||||
|
"avg": true,
|
||||||
|
"current": true,
|
||||||
|
"hideEmpty": false,
|
||||||
|
"hideZero": false,
|
||||||
|
"max": true,
|
||||||
|
"min": true,
|
||||||
|
"rightSide": true,
|
||||||
|
"show": true,
|
||||||
|
"total": true,
|
||||||
|
"values": true
|
||||||
|
},
|
||||||
|
"lines": true,
|
||||||
|
"linewidth": 2,
|
||||||
|
"links": [],
|
||||||
|
"nullPointMode": "null",
|
||||||
|
"percentage": false,
|
||||||
|
"pointradius": 3,
|
||||||
|
"points": false,
|
||||||
|
"renderer": "flot",
|
||||||
|
"seriesOverrides": [],
|
||||||
|
"spaceLength": 10,
|
||||||
|
"stack": false,
|
||||||
|
"steppedLine": false,
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"alias": "",
|
||||||
|
"format": "time_series",
|
||||||
|
"rawSql": "DECLARE \n @from datetime = $__timeFrom(),\n @to datetime = $__timeTo()\n \nEXEC dbo.sp_test_datetime @from, @to",
|
||||||
|
"refId": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"thresholds": [],
|
||||||
|
"timeFrom": null,
|
||||||
|
"timeShift": null,
|
||||||
|
"title": "Stored procedure support using datetime",
|
||||||
|
"tooltip": {
|
||||||
|
"shared": true,
|
||||||
|
"sort": 0,
|
||||||
|
"value_type": "individual"
|
||||||
|
},
|
||||||
|
"type": "graph",
|
||||||
|
"xaxis": {
|
||||||
|
"buckets": null,
|
||||||
|
"mode": "time",
|
||||||
|
"name": null,
|
||||||
|
"show": true,
|
||||||
|
"values": []
|
||||||
|
},
|
||||||
|
"yaxes": [
|
||||||
|
{
|
||||||
|
"format": "short",
|
||||||
|
"label": null,
|
||||||
|
"logBase": 1,
|
||||||
|
"max": null,
|
||||||
|
"min": "0",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"format": "short",
|
||||||
|
"label": null,
|
||||||
|
"logBase": 1,
|
||||||
|
"max": null,
|
||||||
|
"min": null,
|
||||||
|
"show": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"aliasColors": {},
|
"aliasColors": {},
|
||||||
"bars": true,
|
"bars": true,
|
||||||
@ -1303,7 +1469,7 @@
|
|||||||
"h": 8,
|
"h": 8,
|
||||||
"w": 12,
|
"w": 12,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 54
|
"y": 62
|
||||||
},
|
},
|
||||||
"id": 14,
|
"id": 14,
|
||||||
"legend": {
|
"legend": {
|
||||||
@ -1393,7 +1559,7 @@
|
|||||||
"h": 8,
|
"h": 8,
|
||||||
"w": 12,
|
"w": 12,
|
||||||
"x": 12,
|
"x": 12,
|
||||||
"y": 54
|
"y": 62
|
||||||
},
|
},
|
||||||
"id": 15,
|
"id": 15,
|
||||||
"legend": {
|
"legend": {
|
||||||
@ -1476,7 +1642,7 @@
|
|||||||
"h": 8,
|
"h": 8,
|
||||||
"w": 12,
|
"w": 12,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 62
|
"y": 70
|
||||||
},
|
},
|
||||||
"id": 25,
|
"id": 25,
|
||||||
"legend": {
|
"legend": {
|
||||||
@ -1566,7 +1732,7 @@
|
|||||||
"h": 8,
|
"h": 8,
|
||||||
"w": 12,
|
"w": 12,
|
||||||
"x": 12,
|
"x": 12,
|
||||||
"y": 62
|
"y": 70
|
||||||
},
|
},
|
||||||
"id": 22,
|
"id": 22,
|
||||||
"legend": {
|
"legend": {
|
||||||
@ -1649,7 +1815,7 @@
|
|||||||
"h": 8,
|
"h": 8,
|
||||||
"w": 12,
|
"w": 12,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 70
|
"y": 78
|
||||||
},
|
},
|
||||||
"id": 21,
|
"id": 21,
|
||||||
"legend": {
|
"legend": {
|
||||||
@ -1739,7 +1905,7 @@
|
|||||||
"h": 8,
|
"h": 8,
|
||||||
"w": 12,
|
"w": 12,
|
||||||
"x": 12,
|
"x": 12,
|
||||||
"y": 70
|
"y": 78
|
||||||
},
|
},
|
||||||
"id": 26,
|
"id": 26,
|
||||||
"legend": {
|
"legend": {
|
||||||
@ -1822,7 +1988,7 @@
|
|||||||
"h": 8,
|
"h": 8,
|
||||||
"w": 12,
|
"w": 12,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 78
|
"y": 86
|
||||||
},
|
},
|
||||||
"id": 23,
|
"id": 23,
|
||||||
"legend": {
|
"legend": {
|
||||||
@ -1912,7 +2078,7 @@
|
|||||||
"h": 8,
|
"h": 8,
|
||||||
"w": 12,
|
"w": 12,
|
||||||
"x": 12,
|
"x": 12,
|
||||||
"y": 78
|
"y": 86
|
||||||
},
|
},
|
||||||
"id": 24,
|
"id": 24,
|
||||||
"legend": {
|
"legend": {
|
||||||
@ -2072,5 +2238,5 @@
|
|||||||
"timezone": "",
|
"timezone": "",
|
||||||
"title": "Microsoft SQL Server Data Source Test",
|
"title": "Microsoft SQL Server Data Source Test",
|
||||||
"uid": "GlAqcPgmz",
|
"uid": "GlAqcPgmz",
|
||||||
"version": 35
|
"version": 37
|
||||||
}
|
}
|
@ -404,6 +404,164 @@ func TestMSSQL(t *testing.T) {
|
|||||||
So(queryResult.Series[0].Name, ShouldEqual, "valueOne")
|
So(queryResult.Series[0].Name, ShouldEqual, "valueOne")
|
||||||
So(queryResult.Series[1].Name, ShouldEqual, "valueTwo")
|
So(queryResult.Series[1].Name, ShouldEqual, "valueTwo")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Convey("Given a stored procedure that takes @from and @to in epoch time", func() {
|
||||||
|
sql := `
|
||||||
|
IF object_id('sp_test_epoch') IS NOT NULL
|
||||||
|
DROP PROCEDURE sp_test_epoch
|
||||||
|
`
|
||||||
|
|
||||||
|
_, err := sess.Exec(sql)
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
|
sql = `
|
||||||
|
CREATE PROCEDURE sp_test_epoch(
|
||||||
|
@from int,
|
||||||
|
@to int
|
||||||
|
) AS
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int) as time,
|
||||||
|
measurement + ' - value one' as metric,
|
||||||
|
avg(valueOne) as value
|
||||||
|
FROM
|
||||||
|
metric_values
|
||||||
|
WHERE
|
||||||
|
time >= DATEADD(s, @from, '1970-01-01') AND time <= DATEADD(s, @to, '1970-01-01')
|
||||||
|
GROUP BY
|
||||||
|
cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int),
|
||||||
|
measurement
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int) as time,
|
||||||
|
measurement + ' - value two' as metric,
|
||||||
|
avg(valueTwo) as value
|
||||||
|
FROM
|
||||||
|
metric_values
|
||||||
|
WHERE
|
||||||
|
time >= DATEADD(s, @from, '1970-01-01') AND time <= DATEADD(s, @to, '1970-01-01')
|
||||||
|
GROUP BY
|
||||||
|
cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int),
|
||||||
|
measurement
|
||||||
|
ORDER BY 1
|
||||||
|
END
|
||||||
|
`
|
||||||
|
|
||||||
|
_, err = sess.Exec(sql)
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
|
Convey("When doing a metric query using stored procedure should return correct result", func() {
|
||||||
|
query := &tsdb.TsdbQuery{
|
||||||
|
Queries: []*tsdb.Query{
|
||||||
|
{
|
||||||
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
||||||
|
"rawSql": `DECLARE
|
||||||
|
@from int = $__unixEpochFrom(),
|
||||||
|
@to int = $__unixEpochTo()
|
||||||
|
|
||||||
|
EXEC dbo.sp_test_epoch @from, @to`,
|
||||||
|
"format": "time_series",
|
||||||
|
}),
|
||||||
|
RefId: "A",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
TimeRange: &tsdb.TimeRange{
|
||||||
|
From: "1521117000000",
|
||||||
|
To: "1521122100000",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := endpoint.Query(nil, nil, query)
|
||||||
|
queryResult := resp.Results["A"]
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
So(queryResult.Error, ShouldBeNil)
|
||||||
|
|
||||||
|
So(len(queryResult.Series), ShouldEqual, 4)
|
||||||
|
So(queryResult.Series[0].Name, ShouldEqual, "Metric A - value one")
|
||||||
|
So(queryResult.Series[1].Name, ShouldEqual, "Metric B - value one")
|
||||||
|
So(queryResult.Series[2].Name, ShouldEqual, "Metric A - value two")
|
||||||
|
So(queryResult.Series[3].Name, ShouldEqual, "Metric B - value two")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
Convey("Given a stored procedure that takes @from and @to in datetime", func() {
|
||||||
|
sql := `
|
||||||
|
IF object_id('sp_test_datetime') IS NOT NULL
|
||||||
|
DROP PROCEDURE sp_test_datetime
|
||||||
|
`
|
||||||
|
|
||||||
|
_, err := sess.Exec(sql)
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
|
sql = `
|
||||||
|
CREATE PROCEDURE sp_test_datetime(
|
||||||
|
@from datetime,
|
||||||
|
@to datetime
|
||||||
|
) AS
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int) as time,
|
||||||
|
measurement + ' - value one' as metric,
|
||||||
|
avg(valueOne) as value
|
||||||
|
FROM
|
||||||
|
metric_values
|
||||||
|
WHERE
|
||||||
|
time >= @from AND time <= @to
|
||||||
|
GROUP BY
|
||||||
|
cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int),
|
||||||
|
measurement
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int) as time,
|
||||||
|
measurement + ' - value two' as metric,
|
||||||
|
avg(valueTwo) as value
|
||||||
|
FROM
|
||||||
|
metric_values
|
||||||
|
WHERE
|
||||||
|
time >= @from AND time <= @to
|
||||||
|
GROUP BY
|
||||||
|
cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int),
|
||||||
|
measurement
|
||||||
|
ORDER BY 1
|
||||||
|
END
|
||||||
|
`
|
||||||
|
|
||||||
|
_, err = sess.Exec(sql)
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
|
Convey("When doing a metric query using stored procedure should return correct result", func() {
|
||||||
|
query := &tsdb.TsdbQuery{
|
||||||
|
Queries: []*tsdb.Query{
|
||||||
|
{
|
||||||
|
Model: simplejson.NewFromAny(map[string]interface{}{
|
||||||
|
"rawSql": `DECLARE
|
||||||
|
@from int = $__unixEpochFrom(),
|
||||||
|
@to int = $__unixEpochTo()
|
||||||
|
|
||||||
|
EXEC dbo.sp_test_epoch @from, @to`,
|
||||||
|
"format": "time_series",
|
||||||
|
}),
|
||||||
|
RefId: "A",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
TimeRange: &tsdb.TimeRange{
|
||||||
|
From: "1521117000000",
|
||||||
|
To: "1521122100000",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := endpoint.Query(nil, nil, query)
|
||||||
|
queryResult := resp.Results["A"]
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
So(queryResult.Error, ShouldBeNil)
|
||||||
|
|
||||||
|
So(len(queryResult.Series), ShouldEqual, 4)
|
||||||
|
So(queryResult.Series[0].Name, ShouldEqual, "Metric A - value one")
|
||||||
|
So(queryResult.Series[1].Name, ShouldEqual, "Metric B - value one")
|
||||||
|
So(queryResult.Series[2].Name, ShouldEqual, "Metric A - value two")
|
||||||
|
So(queryResult.Series[3].Name, ShouldEqual, "Metric B - value two")
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Convey("Given a table with event data", func() {
|
Convey("Given a table with event data", func() {
|
||||||
|
Loading…
Reference in New Issue
Block a user