package worker import ( "context" "fmt" "testing" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gcfg" ) func TestHistoryUsageScanSettings(t *testing.T) { old := g.Cfg().GetAdapter() t.Cleanup(func() { g.Cfg().SetAdapter(old) }) for _, section := range []string{"trafficUsageDailySync", "trafficUsageMonthlyHistorySync"} { for _, test := range []struct { name, fields, mode string concurrency int invalid bool }{ {"omitted", "pageSize: 100", "serial", 4, false}, {"channel", "scanMode: channel\n scanConcurrency: 2", "channel", 2, false}, {"rollback", "scanMode: serial\n scanConcurrency: 1", "serial", 1, false}, {"zero", "scanMode: channel\n scanConcurrency: 0", "", 0, true}, {"negative", "scanConcurrency: -1", "", 0, true}, {"empty_mode", "scanMode: ''", "", 0, true}, {"invalid_mode", "scanMode: pool", "", 0, true}, } { t.Run(section+"/"+test.name, func(t *testing.T) { adapter, err := gcfg.NewAdapterContent(fmt.Sprintf("%s:\n producer:\n %s\n", section, test.fields)) if err != nil { t.Fatal(err) } g.Cfg().SetAdapter(adapter) mode, concurrency, err := loadHistoryUsageScanSettings(context.Background(), section) if (err != nil) != test.invalid || mode != test.mode || concurrency != test.concurrency { t.Fatalf("mode=%q concurrency=%d err=%v", mode, concurrency, err) } }) } } }