Unistore Chore: Add OTEL testing harness (#94835)
* add testing harness * fix mockery and linters * fix data race in tests * fix data race in tests * reduce cardinality of data
This commit is contained in:
committed by
GitHub
parent
8b9bb2acf6
commit
cf08f6762d
@@ -28,6 +28,30 @@ func (d sqlDB) DriverName() string {
|
||||
return d.driverName
|
||||
}
|
||||
|
||||
func (d sqlDB) BeginTx(ctx context.Context, opts *sql.TxOptions) (db.Tx, error) {
|
||||
return d.DB.BeginTx(ctx, opts)
|
||||
func (d sqlDB) QueryContext(ctx context.Context, query string, args ...any) (db.Rows, error) {
|
||||
return d.DB.QueryContext(ctx, query, args...)
|
||||
}
|
||||
|
||||
func (d sqlDB) QueryRowContext(ctx context.Context, query string, args ...any) db.Row {
|
||||
return d.DB.QueryRowContext(ctx, query, args...)
|
||||
}
|
||||
|
||||
func (d sqlDB) BeginTx(ctx context.Context, opts *sql.TxOptions) (db.Tx, error) {
|
||||
tx, err := d.DB.BeginTx(ctx, opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return sqlTx{tx}, err
|
||||
}
|
||||
|
||||
type sqlTx struct {
|
||||
*sql.Tx
|
||||
}
|
||||
|
||||
func (d sqlTx) QueryContext(ctx context.Context, query string, args ...any) (db.Rows, error) {
|
||||
return d.Tx.QueryContext(ctx, query, args...)
|
||||
}
|
||||
|
||||
func (d sqlTx) QueryRowContext(ctx context.Context, query string, args ...any) db.Row {
|
||||
return d.Tx.QueryRowContext(ctx, query, args...)
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
|
||||
func TestDB_BeginTx(t *testing.T) {
|
||||
t.Parallel()
|
||||
registerTestSQLDrivers()
|
||||
ctx := testutil.NewDefaultTestContext(t)
|
||||
|
||||
sqlDB, err := sql.Open(driverWithIsolationLevelName, "")
|
||||
|
||||
@@ -60,6 +60,7 @@ type resourceDBProvider struct {
|
||||
cfg *setting.Cfg
|
||||
log log.Logger
|
||||
migrateFunc func(context.Context, *xorm.Engine, *setting.Cfg) error
|
||||
tracer trace.Tracer
|
||||
registerMetrics bool
|
||||
logQueries bool
|
||||
}
|
||||
@@ -77,6 +78,7 @@ func newResourceDBProvider(grafanaDB infraDB.DB, cfg *setting.Cfg, tracer trace.
|
||||
log: log.New("entity-db"),
|
||||
logQueries: getter.Bool("log_queries"),
|
||||
migrateFunc: migrations.MigrateResourceStore,
|
||||
tracer: tracer,
|
||||
}
|
||||
|
||||
dbType := getter.String("type")
|
||||
@@ -145,5 +147,7 @@ func (p *resourceDBProvider) init(ctx context.Context) (db.DB, error) {
|
||||
}
|
||||
}
|
||||
|
||||
return NewDB(p.engine.DB().DB, p.engine.Dialect().DriverName()), nil
|
||||
d := NewDB(p.engine.DB().DB, p.engine.Dialect().DriverName())
|
||||
|
||||
return d, nil
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"net/http"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/google/uuid"
|
||||
@@ -111,8 +112,18 @@ func newTestInfraDB(t *testing.T, m cfgMap) infraDB.DB {
|
||||
return sqlstoreDB
|
||||
}
|
||||
|
||||
// globalUnprotectedMutableState controls access to global mutable state found
|
||||
// in the `setting` package that is not appropriately protected. This would
|
||||
// ideally be a part of some struct instead of being global, be protected if it
|
||||
// needs to change, and be unmutable once it no longer needs to change. Example:
|
||||
// `setting.AppUrl`. Nothing can run in parallel because of this.
|
||||
// TODO: fix that.
|
||||
var globalUnprotectedMutableState sync.Mutex
|
||||
|
||||
func newCfgFromIniMap(t *testing.T, m cfgMap) *setting.Cfg {
|
||||
t.Helper()
|
||||
globalUnprotectedMutableState.Lock()
|
||||
defer globalUnprotectedMutableState.Unlock()
|
||||
cfg, err := setting.NewCfgFromINIFile(newTestINIFile(t, m))
|
||||
require.NoError(t, err)
|
||||
return cfg
|
||||
|
||||
Reference in New Issue
Block a user