mirror of
https://github.com/juanfont/headscale.git
synced 2026-10-27 08:46:49 +09:00
1 parent
c6181989b1
commit
c32e8e4c97
2 files changed
+65
-3
No files matched your search
+14
-3
@@ -968,16 +968,23 @@ func openDB(cfg types.DatabaseConfig) (*gorm.DB, error) {
|
||||
Logger: dbLogger,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// The pure Go SQLite library does not handle locking in
|
||||
// the same way as the C based one and we can't use the gorm
|
||||
// connection pool as of 2022/02/23.
|
||||
sqlDB, _ := db.DB()
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sqlDB.SetMaxIdleConns(1)
|
||||
sqlDB.SetMaxOpenConns(1)
|
||||
sqlDB.SetConnMaxIdleTime(time.Hour)
|
||||
|
||||
return db, err
|
||||
return db, nil
|
||||
|
||||
case types.DatabasePostgres:
|
||||
dbString := fmt.Sprintf(
|
||||
@@ -1015,7 +1022,11 @@ func openDB(cfg types.DatabaseConfig) (*gorm.DB, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sqlDB, _ := db.DB()
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sqlDB.SetMaxIdleConns(cfg.Postgres.MaxIdleConnections)
|
||||
sqlDB.SetMaxOpenConns(cfg.Postgres.MaxOpenConnections)
|
||||
sqlDB.SetConnMaxIdleTime(
|
||||
|
||||
@@ -646,3 +646,54 @@ func TestSQLiteAllTestdataMigrations(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestOpenDBReturnsOpenError(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
cfg func(t *testing.T) types.DatabaseConfig
|
||||
}{
|
||||
{
|
||||
name: "sqlite-path-is-a-directory",
|
||||
cfg: func(t *testing.T) types.DatabaseConfig {
|
||||
t.Helper()
|
||||
|
||||
return types.DatabaseConfig{
|
||||
Type: types.DatabaseSqlite,
|
||||
Sqlite: types.SqliteConfig{Path: t.TempDir()},
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "postgres-unreachable-host",
|
||||
cfg: func(t *testing.T) types.DatabaseConfig {
|
||||
t.Helper()
|
||||
|
||||
return types.DatabaseConfig{
|
||||
Type: types.DatabasePostgres,
|
||||
Postgres: types.PostgresConfig{
|
||||
Host: "127.0.0.1",
|
||||
Port: 1,
|
||||
Name: "headscale",
|
||||
User: "headscale",
|
||||
Ssl: "false",
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
var (
|
||||
db *gorm.DB
|
||||
err error
|
||||
)
|
||||
|
||||
require.NotPanics(t, func() {
|
||||
db, err = openDB(tt.cfg(t))
|
||||
})
|
||||
require.Error(t, err)
|
||||
assert.Nil(t, db)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user