mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 12:02:30 +08:00
sql: improve sqleng-api, leave sql.DB creation to the plugins (#79672)
This commit is contained in:
@ -184,17 +184,10 @@ func TestIntegrationPostgres(t *testing.T) {
|
||||
t.Skip()
|
||||
}
|
||||
|
||||
x := InitPostgresTestDB(t)
|
||||
|
||||
origDB := sqleng.NewDB
|
||||
origInterpolate := sqleng.Interpolate
|
||||
t.Cleanup(func() {
|
||||
sqleng.NewDB = origDB
|
||||
sqleng.Interpolate = origInterpolate
|
||||
})
|
||||
sqleng.NewDB = func(d, c string) (*sql.DB, error) {
|
||||
return x, nil
|
||||
}
|
||||
sqleng.Interpolate = func(query backend.DataQuery, timeRange backend.TimeRange, timeInterval string, sql string) (string, error) {
|
||||
return sql, nil
|
||||
}
|
||||
@ -216,8 +209,6 @@ func TestIntegrationPostgres(t *testing.T) {
|
||||
}
|
||||
|
||||
config := sqleng.DataPluginConfiguration{
|
||||
DriverName: "postgres",
|
||||
ConnectionString: "",
|
||||
DSInfo: dsInfo,
|
||||
MetricColumnTypes: []string{"UNKNOWN", "TEXT", "VARCHAR", "CHAR"},
|
||||
RowLimit: 1000000,
|
||||
@ -226,12 +217,14 @@ func TestIntegrationPostgres(t *testing.T) {
|
||||
queryResultTransformer := postgresQueryResultTransformer{}
|
||||
|
||||
logger := backend.NewLoggerWith("logger", "postgres.test")
|
||||
exe, err := sqleng.NewQueryDataHandler(cfg, config, &queryResultTransformer, newPostgresMacroEngine(dsInfo.JsonData.Timescaledb),
|
||||
|
||||
db := InitPostgresTestDB(t, jsonData)
|
||||
|
||||
exe, err := sqleng.NewQueryDataHandler(cfg, db, config, &queryResultTransformer, newPostgresMacroEngine(dsInfo.JsonData.Timescaledb),
|
||||
logger)
|
||||
|
||||
require.NoError(t, err)
|
||||
|
||||
db := x
|
||||
fromStart := time.Date(2018, 3, 15, 13, 0, 0, 0, time.UTC).In(time.Local)
|
||||
|
||||
t.Run("Given a table with different native data types", func(t *testing.T) {
|
||||
@ -1282,8 +1275,6 @@ func TestIntegrationPostgres(t *testing.T) {
|
||||
t.Run("When row limit set to 1", func(t *testing.T) {
|
||||
dsInfo := sqleng.DataSourceInfo{}
|
||||
config := sqleng.DataPluginConfiguration{
|
||||
DriverName: "postgres",
|
||||
ConnectionString: "",
|
||||
DSInfo: dsInfo,
|
||||
MetricColumnTypes: []string{"UNKNOWN", "TEXT", "VARCHAR", "CHAR"},
|
||||
RowLimit: 1,
|
||||
@ -1291,7 +1282,7 @@ func TestIntegrationPostgres(t *testing.T) {
|
||||
|
||||
queryResultTransformer := postgresQueryResultTransformer{}
|
||||
|
||||
handler, err := sqleng.NewQueryDataHandler(setting.NewCfg(), config, &queryResultTransformer, newPostgresMacroEngine(false), logger)
|
||||
handler, err := sqleng.NewQueryDataHandler(setting.NewCfg(), db, config, &queryResultTransformer, newPostgresMacroEngine(false), logger)
|
||||
require.NoError(t, err)
|
||||
|
||||
t.Run("When doing a table query that returns 2 rows should limit the result to 1 row", func(t *testing.T) {
|
||||
@ -1392,11 +1383,15 @@ func TestIntegrationPostgres(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func InitPostgresTestDB(t *testing.T) *sql.DB {
|
||||
func InitPostgresTestDB(t *testing.T, jsonData sqleng.JsonData) *sql.DB {
|
||||
connStr := postgresTestDBConnString()
|
||||
x, err := sql.Open("postgres", connStr)
|
||||
db, err := sql.Open("postgres", connStr)
|
||||
require.NoError(t, err, "Failed to init postgres DB")
|
||||
return x
|
||||
|
||||
db.SetMaxOpenConns(jsonData.MaxOpenConns)
|
||||
db.SetMaxIdleConns(jsonData.MaxIdleConns)
|
||||
db.SetConnMaxLifetime(time.Duration(jsonData.ConnMaxLifetime) * time.Second)
|
||||
return db
|
||||
}
|
||||
|
||||
func genTimeRangeByInterval(from time.Time, duration time.Duration, interval time.Duration) []time.Time {
|
||||
|
Reference in New Issue
Block a user