mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Change the query to first select the dashboards, apply the limit then join with tags. Means the limit will apply to the number of dashboards returned in the search. The disadvantage is that the query will return more rows than the limit, no. of dashboards x no. of tags. So hard limit set to 5000 for all rows.
115 lines
2.5 KiB
Go
115 lines
2.5 KiB
Go
package sqlstore
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/go-xorm/xorm"
|
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
|
|
m "github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/services/sqlstore/sqlutil"
|
|
)
|
|
|
|
func InitTestDB(t *testing.T) *xorm.Engine {
|
|
x, err := xorm.NewEngine(sqlutil.TestDB_Sqlite3.DriverName, sqlutil.TestDB_Sqlite3.ConnStr)
|
|
//x, err := xorm.NewEngine(sqlutil.TestDB_Mysql.DriverName, sqlutil.TestDB_Mysql.ConnStr)
|
|
//x, err := xorm.NewEngine(sqlutil.TestDB_Postgres.DriverName, sqlutil.TestDB_Postgres.ConnStr)
|
|
|
|
// x.ShowSQL()
|
|
|
|
if err != nil {
|
|
t.Fatalf("Failed to init in memory sqllite3 db %v", err)
|
|
}
|
|
|
|
sqlutil.CleanDB(x)
|
|
|
|
if err := SetEngine(x); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
return x
|
|
}
|
|
|
|
type Test struct {
|
|
Id int64
|
|
Name string
|
|
}
|
|
|
|
func TestDataAccess(t *testing.T) {
|
|
|
|
Convey("Testing DB", t, func() {
|
|
InitTestDB(t)
|
|
|
|
Convey("Can add datasource", func() {
|
|
|
|
err := AddDataSource(&m.AddDataSourceCommand{
|
|
OrgId: 10,
|
|
Name: "laban",
|
|
Type: m.DS_INFLUXDB,
|
|
Access: m.DS_ACCESS_DIRECT,
|
|
Url: "http://test",
|
|
Database: "site",
|
|
})
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
query := m.GetDataSourcesQuery{OrgId: 10}
|
|
err = GetDataSources(&query)
|
|
So(err, ShouldBeNil)
|
|
|
|
So(len(query.Result), ShouldEqual, 1)
|
|
|
|
ds := query.Result[0]
|
|
|
|
So(ds.OrgId, ShouldEqual, 10)
|
|
So(ds.Database, ShouldEqual, "site")
|
|
})
|
|
|
|
Convey("Given a datasource", func() {
|
|
|
|
err := AddDataSource(&m.AddDataSourceCommand{
|
|
OrgId: 10,
|
|
Name: "nisse",
|
|
Type: m.DS_GRAPHITE,
|
|
Access: m.DS_ACCESS_DIRECT,
|
|
Url: "http://test",
|
|
})
|
|
So(err, ShouldBeNil)
|
|
|
|
query := m.GetDataSourcesQuery{OrgId: 10}
|
|
err = GetDataSources(&query)
|
|
So(err, ShouldBeNil)
|
|
|
|
ds := query.Result[0]
|
|
|
|
Convey("Can delete datasource by id", func() {
|
|
err := DeleteDataSourceById(&m.DeleteDataSourceByIdCommand{Id: ds.Id, OrgId: ds.OrgId})
|
|
So(err, ShouldBeNil)
|
|
|
|
GetDataSources(&query)
|
|
So(len(query.Result), ShouldEqual, 0)
|
|
})
|
|
|
|
Convey("Can delete datasource by name", func() {
|
|
err := DeleteDataSourceByName(&m.DeleteDataSourceByNameCommand{Name: ds.Name, OrgId: ds.OrgId})
|
|
So(err, ShouldBeNil)
|
|
|
|
GetDataSources(&query)
|
|
So(len(query.Result), ShouldEqual, 0)
|
|
})
|
|
|
|
Convey("Can not delete datasource with wrong orgId", func() {
|
|
err := DeleteDataSourceById(&m.DeleteDataSourceByIdCommand{Id: ds.Id, OrgId: 123123})
|
|
So(err, ShouldBeNil)
|
|
|
|
GetDataSources(&query)
|
|
So(len(query.Result), ShouldEqual, 1)
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|