Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
faf9e3f7
Commit
faf9e3f7
authored
Mar 15, 2018
by
Marcus Efraimsson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mssql: add timeGroup integration test
parent
571556e1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
112 additions
and
61 deletions
+112
-61
pkg/tsdb/mssql/mssql_test.go
+112
-61
No files found.
pkg/tsdb/mssql/mssql_test.go
View file @
faf9e3f7
...
...
@@ -34,6 +34,7 @@ func TestMSSQL(t *testing.T) {
sess
:=
x
.
NewSession
()
defer
sess
.
Close
()
Convey
(
"Given a table with different native data types"
,
func
()
{
sql
:=
`
IF OBJECT_ID('dbo.[mssql_types]', 'U') IS NOT NULL
DROP TABLE dbo.[mssql_types]
...
...
@@ -67,49 +68,11 @@ func TestMSSQL(t *testing.T) {
c_time time,
c_datetimeoffset datetimeoffset
)
IF OBJECT_ID('dbo.[metric]', 'U') IS NOT NULL
DROP TABLE dbo.[metric]
CREATE TABLE [metric] (
time datetime,
measurement nvarchar(100),
value int
)
`
_
,
err
:=
sess
.
Exec
(
sql
)
So
(
err
,
ShouldBeNil
)
// type metric struct {
// Time time.Time
// Measurement string
// Value int64
// }
// series := []*metric{}
// from := time.Now().Truncate(60 * time.Minute).Add((-30 * time.Minute))
// for _, t := range genTimeRangeByInterval(from, 10*time.Minute, 10*time.Second) {
// series = append(series, &metric{
// Time: t,
// Measurement: "test",
// Value: 0,
// })
// }
// for _, t := range genTimeRangeByInterval(from.Add(20*time.Minute), 10*time.Minute, 10*time.Second) {
// series = append(series, &metric{
// Time: t,
// Measurement: "test",
// Value: 0,
// })
// }
// rowsAffected, err := sess.InsertMulti(series)
// So(err, ShouldBeNil)
// So(rowsAffected, ShouldBeGreaterThan, 0)
dt
:=
time
.
Date
(
2018
,
3
,
14
,
21
,
20
,
6
,
527e6
,
time
.
UTC
)
dtFormat
:=
"2006-01-02 15:04:05.999999999"
d
:=
dt
.
Format
(
dtFormat
)
...
...
@@ -179,35 +142,123 @@ func TestMSSQL(t *testing.T) {
So
(
column
[
22
]
.
(
time
.
Time
),
ShouldEqual
,
dt2
.
In
(
time
.
FixedZone
(
"UTC"
,
int
(
-
7
*
time
.
Hour
))))
})
Convey
(
"stored procedure"
,
func
()
{
// Convey("stored procedure", func() {
// sql := `
// create procedure dbo.test_sp as
// begin
// select 1
// end
// `
// sess.Exec(sql)
// sql = `
// ALTER PROCEDURE dbo.test_sp
// @from int,
// @to int
// AS
// BEGIN
// select
// GETDATE() AS Time,
// 1 as value,
// 'metric' as metric
// END
// `
// _, err := sess.Exec(sql)
// So(err, ShouldBeNil)
// sql = `
// EXEC dbo.test_sp 1, 2
// `
// _, err = sess.Exec(sql)
// So(err, ShouldBeNil)
// })
})
Convey
(
"Given a table with metrics"
,
func
()
{
sql
:=
`
create procedure dbo.test_sp as
begin
select 1
end
`
sess
.
Exec
(
sql
)
sql
=
`
ALTER PROCEDURE dbo.test_sp
@from int,
@to int
AS
BEGIN
select
GETDATE() AS Time,
1 as value,
'metric' as metric
END
IF OBJECT_ID('dbo.[metric]', 'U') IS NOT NULL
DROP TABLE dbo.[metric]
CREATE TABLE [metric] (
time datetime,
measurement nvarchar(100),
value int
)
`
_
,
err
:=
sess
.
Exec
(
sql
)
So
(
err
,
ShouldBeNil
)
sql
=
`
EXEC dbo.test_sp 1, 2
`
type
metric
struct
{
Time
time
.
Time
Measurement
string
Value
int64
}
series
:=
[]
*
metric
{}
fromStart
:=
time
.
Date
(
2018
,
3
,
15
,
13
,
0
,
0
,
0
,
time
.
UTC
)
firstRange
:=
genTimeRangeByInterval
(
fromStart
,
10
*
time
.
Minute
,
10
*
time
.
Second
)
secondRange
:=
genTimeRangeByInterval
(
fromStart
.
Add
(
20
*
time
.
Minute
),
10
*
time
.
Minute
,
10
*
time
.
Second
)
for
_
,
t
:=
range
firstRange
{
series
=
append
(
series
,
&
metric
{
Time
:
t
,
Measurement
:
"test"
,
Value
:
15
,
})
}
for
_
,
t
:=
range
secondRange
{
series
=
append
(
series
,
&
metric
{
Time
:
t
,
Measurement
:
"test"
,
Value
:
20
,
})
}
dtFormat
:=
"2006-01-02 15:04:05.999999999"
for
_
,
s
:=
range
series
{
sql
=
fmt
.
Sprintf
(
`
INSERT INTO metric (time, measurement, value)
VALUES(CAST('%s' AS DATETIME), '%s', %d)
`
,
s
.
Time
.
Format
(
dtFormat
),
s
.
Measurement
,
s
.
Value
)
_
,
err
=
sess
.
Exec
(
sql
)
So
(
err
,
ShouldBeNil
)
}
Convey
(
"When doing a metric query using timeGroup"
,
func
()
{
query
:=
&
tsdb
.
TsdbQuery
{
Queries
:
[]
*
tsdb
.
Query
{
{
Model
:
simplejson
.
NewFromAny
(
map
[
string
]
interface
{}{
"rawSql"
:
"SELECT $__timeGroup(time, '5m') AS time, measurement as metric, avg(value) as value FROM metric GROUP BY $__timeGroup(time, '5m'), measurement ORDER BY 1"
,
"format"
:
"time_series"
,
}),
RefId
:
"A"
,
},
},
}
resp
,
err
:=
endpoint
.
Query
(
nil
,
nil
,
query
)
queryResult
:=
resp
.
Results
[
"A"
]
So
(
err
,
ShouldBeNil
)
So
(
queryResult
.
Error
,
ShouldBeNil
)
points
:=
queryResult
.
Series
[
0
]
.
Points
So
(
len
(
points
),
ShouldEqual
,
4
)
actualValueFirst
:=
points
[
0
][
0
]
.
Float64
actualTimeFirst
:=
time
.
Unix
(
int64
(
points
[
0
][
1
]
.
Float64
)
/
1000
,
0
)
So
(
actualValueFirst
,
ShouldEqual
,
15
)
So
(
actualTimeFirst
,
ShouldEqual
,
fromStart
)
actualValueLast
:=
points
[
3
][
0
]
.
Float64
actualTimeLast
:=
time
.
Unix
(
int64
(
points
[
3
][
1
]
.
Float64
)
/
1000
,
0
)
So
(
actualValueLast
,
ShouldEqual
,
20
)
So
(
actualTimeLast
,
ShouldEqual
,
fromStart
.
Add
(
25
*
time
.
Minute
))
})
})
})
}
...
...
@@ -231,7 +282,7 @@ func genTimeRangeByInterval(from time.Time, duration time.Duration, interval tim
intervalSec
:=
int64
(
interval
.
Seconds
())
timeRange
:=
[]
time
.
Time
{}
for
i
:=
int64
(
0
);
i
<
=
durationSec
;
i
+=
intervalSec
{
for
i
:=
int64
(
0
);
i
<
durationSec
;
i
+=
intervalSec
{
timeRange
=
append
(
timeRange
,
from
)
from
=
from
.
Add
(
time
.
Duration
(
int64
(
time
.
Second
)
*
intervalSec
))
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment