Skip to content

Commit 2486b15

Browse files
author
Thor
committed
unit tests
Signed-off-by: Thor <[email protected]>
1 parent 0cc64f5 commit 2486b15

File tree

2 files changed

+84
-1
lines changed

2 files changed

+84
-1
lines changed

pkg/ingester/ingester_v2.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,7 @@ func (i *Ingester) openExistingTSDB(ctx context.Context) error {
476476
// Top level directories are assumed to be user TSDBs
477477
if info.IsDir() {
478478

479+
userID := info.Name()
479480
f, err := os.Open(path)
480481
if err != nil {
481482
level.Error(util.Logger).Log("msg", "unable to open user TSDB dir", "err", err, "user", userID)
@@ -499,7 +500,6 @@ func (i *Ingester) openExistingTSDB(ctx context.Context) error {
499500
return err
500501
}
501502

502-
userID := info.Name()
503503
wg.Add(1)
504504
go func(userID string) {
505505
defer wg.Done()

pkg/ingester/ingester_v2_test.go

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"math"
77
"net/http"
88
"os"
9+
"path/filepath"
910
"strings"
1011
"testing"
1112
"time"
@@ -743,3 +744,85 @@ func newIngesterMockWithTSDBStorage(ingesterCfg Config, registerer prometheus.Re
743744

744745
return ingester, cleanup, nil
745746
}
747+
748+
func TestIngester_V2Startup(t *testing.T) {
749+
t.Parallel()
750+
751+
tests := []struct {
752+
name string
753+
seed func(string)
754+
check func(*Ingester)
755+
}{
756+
{
757+
name: "empty user dir",
758+
seed: func(dir string) {
759+
require.NoError(t, os.Mkdir(filepath.Join(dir, "user0"), 0700))
760+
},
761+
check: func(i *Ingester) {
762+
require.Empty(t, i.getTSDB("user0"), "tsdb created for empty user dir")
763+
},
764+
},
765+
{
766+
name: "empty tsdbs",
767+
seed: func(dir string) {},
768+
check: func(i *Ingester) {
769+
require.Zero(t, len(i.TSDBState.dbs), "user tsdb's were created on empty dir")
770+
},
771+
},
772+
{
773+
name: "missing tsdb dir",
774+
seed: func(dir string) {
775+
require.NoError(t, os.Remove(dir))
776+
},
777+
check: func(i *Ingester) {
778+
require.Zero(t, len(i.TSDBState.dbs), "user tsdb's were created on missing dir")
779+
},
780+
},
781+
{
782+
name: "populated user dirs with unpopulated",
783+
seed: func(dir string) {
784+
require.NoError(t, os.MkdirAll(filepath.Join(dir, "user0", "dummy"), 0700))
785+
require.NoError(t, os.MkdirAll(filepath.Join(dir, "user1", "dummy"), 0700))
786+
require.NoError(t, os.Mkdir(filepath.Join(dir, "user2"), 0700))
787+
},
788+
check: func(i *Ingester) {
789+
require.NotNil(t, i.getTSDB("user0"), "tsdb not created for non-empty user dir")
790+
require.NotNil(t, i.getTSDB("user1"), "tsdb not created for non-empty user dir")
791+
require.Empty(t, i.getTSDB("user2"), "tsdb created for empty user dir")
792+
},
793+
},
794+
}
795+
796+
for _, test := range tests {
797+
testName := test.name
798+
testData := test
799+
t.Run(testName, func(t *testing.T) {
800+
clientCfg := defaultClientTestConfig()
801+
limits := defaultLimitsTestConfig()
802+
803+
overrides, err := validation.NewOverrides(limits)
804+
require.NoError(t, err)
805+
806+
// Create a temporary directory for TSDB
807+
tempDir, err := ioutil.TempDir("", "tsdb")
808+
require.NoError(t, err)
809+
810+
ingesterCfg := defaultIngesterTestConfig()
811+
ingesterCfg.TSDBEnabled = true
812+
ingesterCfg.TSDBConfig.Dir = tempDir
813+
ingesterCfg.TSDBConfig.Backend = "s3"
814+
ingesterCfg.TSDBConfig.S3.Endpoint = "localhost"
815+
816+
// Seed the tsdbs dir
817+
testData.seed(tempDir)
818+
819+
ingester, err := NewV2(ingesterCfg, clientCfg, overrides, nil)
820+
require.NoError(t, err)
821+
822+
defer ingester.Shutdown()
823+
defer os.RemoveAll(tempDir)
824+
825+
testData.check(ingester)
826+
})
827+
}
828+
}

0 commit comments

Comments
 (0)