45 lines
1.4 KiB
Go
45 lines
1.4 KiB
Go
package tests
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/grafana/grafana/pkg/infra/localcache"
|
|
"github.com/grafana/grafana/pkg/registry"
|
|
"github.com/grafana/grafana/pkg/services/live"
|
|
"github.com/grafana/grafana/pkg/services/live/database"
|
|
"github.com/grafana/grafana/pkg/services/sqlstore"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
)
|
|
|
|
// SetupTestStorage initializes a storage to used by the integration tests.
|
|
// This is required to properly register and execute migrations.
|
|
func SetupTestStorage(t *testing.T) *database.Storage {
|
|
cfg := setting.NewCfg()
|
|
// Live is disabled by default and only if it's enabled its database migrations run
|
|
// and the related database tables are created.
|
|
cfg.FeatureToggles = map[string]bool{"live": true}
|
|
|
|
gLive := live.NewGrafanaLive()
|
|
gLive.Cfg = cfg
|
|
|
|
// Hook for initialising the service after the Cfg is populated
|
|
// so that database migrations will run.
|
|
overrideServiceFunc := func(descriptor registry.Descriptor) (*registry.Descriptor, bool) {
|
|
if _, ok := descriptor.Instance.(*live.GrafanaLive); ok {
|
|
return ®istry.Descriptor{
|
|
Name: descriptor.Name,
|
|
Instance: gLive,
|
|
InitPriority: descriptor.InitPriority,
|
|
}, true
|
|
}
|
|
return nil, false
|
|
}
|
|
registry.RegisterOverride(overrideServiceFunc)
|
|
|
|
// Now we can use sql.Store.
|
|
sqlStore := sqlstore.InitTestDB(t)
|
|
localCache := localcache.New(time.Hour, time.Hour)
|
|
return database.NewStorage(sqlStore, localCache)
|
|
}
|