Files
nezha_domains/service/singleton/tsdb_disk_guard_test.go
T

59 lines
1.3 KiB
Go

package singleton
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
"github.com/nezhahq/nezha/model"
"github.com/nezhahq/nezha/pkg/tsdb"
)
func TestInitTSDBContinuesWhenDiskIsFull(t *testing.T) {
originalConf := Conf
originalDB := DB
originalShared := TSDBShared
originalOpen := openTSDB
t.Cleanup(func() {
Conf = originalConf
DB = originalDB
TSDBShared = originalShared
openTSDB = originalOpen
})
Conf = &ConfigClass{Config: &model.Config{
TSDB: model.TSDBConf{DataPath: "/full/tsdb"},
}}
DB = nil
TSDBShared = nil
openTSDB = func(*tsdb.Config) (*tsdb.TSDB, error) {
return nil, fmt.Errorf("open failed: %w", tsdb.ErrDiskFull)
}
require.NoError(t, InitTSDB())
require.Nil(t, TSDBShared)
}
func TestInitTSDBStillReturnsNonDiskErrors(t *testing.T) {
originalConf := Conf
originalShared := TSDBShared
originalOpen := openTSDB
t.Cleanup(func() {
Conf = originalConf
TSDBShared = originalShared
openTSDB = originalOpen
})
Conf = &ConfigClass{Config: &model.Config{
TSDB: model.TSDBConf{DataPath: "/broken/tsdb"},
}}
TSDBShared = nil
openTSDB = func(*tsdb.Config) (*tsdb.TSDB, error) {
return nil, fmt.Errorf("permission denied")
}
require.ErrorContains(t, InitTSDB(), "permission denied")
require.Nil(t, TSDBShared)
}