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) } } }