62 lines
2.2 KiB
Go
62 lines
2.2 KiB
Go
package tdengine
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/os/gcfg"
|
|
)
|
|
|
|
func TestGetConfigDatabaseRouting(t *testing.T) {
|
|
previous := g.Cfg().GetAdapter()
|
|
t.Cleanup(func() { g.Cfg().SetAdapter(previous) })
|
|
for _, test := range []struct {
|
|
name string
|
|
fields string
|
|
fallback string
|
|
daily string
|
|
monthly string
|
|
}{
|
|
{"defaults", "", "iotlcm_daily", "iotlcm_daily", "iotlcm_daily"},
|
|
{"legacy", " dbName: legacy\n", "legacy", "legacy", "legacy"},
|
|
{"split", " dbName: legacy\n dailyDbName: iotlcm_daily\n monthlyDbName: iotlcm_monthly\n", "legacy", "iotlcm_daily", "iotlcm_monthly"},
|
|
{"daily_only", " dbName: legacy\n dailyDbName: iotlcm_daily\n", "legacy", "iotlcm_daily", "legacy"},
|
|
{"monthly_only", " dbName: legacy\n monthlyDbName: iotlcm_monthly\n", "legacy", "legacy", "iotlcm_monthly"},
|
|
} {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
adapter, err := gcfg.NewAdapterContent("tsdb:\n database: TdEngine\n tdengine:\n batchSize: 20\n" + test.fields)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
g.Cfg().SetAdapter(adapter)
|
|
config := GetConfig(context.Background())
|
|
if config.DbName != test.fallback {
|
|
t.Fatalf("fallback=%q want=%q", config.DbName, test.fallback)
|
|
}
|
|
for _, stable := range []string{config.DailyStable, config.PoolDailyStable, config.PoolCardCountDailyStable} {
|
|
if got := config.DbNameFor(stable); got != test.daily {
|
|
t.Errorf("%s database=%q want=%q", stable, got, test.daily)
|
|
}
|
|
}
|
|
for _, stable := range []string{config.MonthlyStable, config.PoolMonthlyStable, config.PoolCardCountMonthlyStable} {
|
|
if got := config.DbNameFor(stable); got != test.monthly {
|
|
t.Errorf("%s database=%q want=%q", stable, got, test.monthly)
|
|
}
|
|
}
|
|
if got := config.DbNameFor("other_stable"); got != test.fallback {
|
|
t.Errorf("unknown stable database=%q", got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestDatabaseRoutingEmptySplitNames(t *testing.T) {
|
|
config := Config{DbName: "legacy", DailyStable: "daily", MonthlyStable: "monthly"}
|
|
for _, stable := range []string{"daily", "monthly", "other"} {
|
|
if got := config.DbNameFor(stable); got != "legacy" {
|
|
t.Errorf("%s database=%q", stable, got)
|
|
}
|
|
}
|
|
}
|