diff --git a/management/server/sql_store.go b/management/server/sql_store.go index b5ae82828..6bcff9f81 100644 --- a/management/server/sql_store.go +++ b/management/server/sql_store.go @@ -662,11 +662,7 @@ func NewSqliteStore(ctx context.Context, dataDir string, metrics telemetry.AppMe } file := filepath.Join(dataDir, storeStr) - db, err := gorm.Open(sqlite.Open(file), &gorm.Config{ - Logger: logger.Default.LogMode(logger.Silent), - CreateBatchSize: 400, - PrepareStmt: true, - }) + db, err := gorm.Open(sqlite.Open(file), getGormConfig()) if err != nil { return nil, err } @@ -676,10 +672,7 @@ func NewSqliteStore(ctx context.Context, dataDir string, metrics telemetry.AppMe // NewPostgresqlStore creates a new Postgres store. func NewPostgresqlStore(ctx context.Context, dsn string, metrics telemetry.AppMetrics) (*SqlStore, error) { - db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{ - Logger: logger.Default.LogMode(logger.Silent), - PrepareStmt: true, - }) + db, err := gorm.Open(postgres.Open(dsn), getGormConfig()) if err != nil { return nil, err } @@ -687,6 +680,14 @@ func NewPostgresqlStore(ctx context.Context, dsn string, metrics telemetry.AppMe return NewSqlStore(ctx, db, PostgresStoreEngine, metrics) } +func getGormConfig() *gorm.Config { + return &gorm.Config{ + Logger: logger.Default.LogMode(logger.Silent), + CreateBatchSize: 400, + PrepareStmt: true, + } +} + // newPostgresStore initializes a new Postgres store. func newPostgresStore(ctx context.Context, metrics telemetry.AppMetrics) (Store, error) { dsn, ok := os.LookupEnv(postgresDsnEnv) diff --git a/management/server/sql_store_test.go b/management/server/sql_store_test.go index e0e893052..e3ba00b56 100644 --- a/management/server/sql_store_test.go +++ b/management/server/sql_store_test.go @@ -41,11 +41,22 @@ func TestSqlite_NewStore(t *testing.T) { } func TestSqlite_SaveAccount_Large(t *testing.T) { - if runtime.GOOS == "windows" { - t.Skip("The SQLite store is not properly supported by Windows yet") + if runtime.GOOS != "linux" && os.Getenv("CI") == "true" || runtime.GOOS == "windows" { + t.Skip("skip large test on non-linux OS due to environment restrictions") } + t.Run("SQLite", func(t *testing.T) { + store := newSqliteStore(t) + runLargeTest(t, store) + }) + // create store outside to have a better time counter for the test + store := newPostgresqlStore(t) + t.Run("PostgreSQL", func(t *testing.T) { + runLargeTest(t, store) + }) +} - store := newSqliteStore(t) +func runLargeTest(t *testing.T, store Store) { + t.Helper() account := newAccountWithId(context.Background(), "account_id", "testuser", "") groupALL, err := account.GetGroupAll() @@ -54,7 +65,7 @@ func TestSqlite_SaveAccount_Large(t *testing.T) { } setupKey := GenerateDefaultSetupKey() account.SetupKeys[setupKey.Key] = setupKey - const numPerAccount = 2000 + const numPerAccount = 6000 for n := 0; n < numPerAccount; n++ { netIP := randomIPv4() peerID := fmt.Sprintf("%s-peer-%d", account.Id, n)