diff --git a/server/cluster/coordinator_test.go b/server/cluster/coordinator_test.go index 84c43b7e60b..1da1df9535a 100644 --- a/server/cluster/coordinator_test.go +++ b/server/cluster/coordinator_test.go @@ -709,6 +709,15 @@ func TestAddScheduler(t *testing.T) { re.NoError(err) re.NoError(co.addScheduler(gls)) + hb, err := schedule.CreateScheduler(schedulers.HotRegionType, oc, storage.NewStorageWithMemoryBackend(), schedule.ConfigJSONDecoder([]byte("{}"))) + re.NoError(err) + conf, err = hb.EncodeConfig() + re.NoError(err) + data = make(map[string]interface{}) + re.NoError(json.Unmarshal(conf, &data)) + re.Contains(data, "enable-for-tiflash") + re.Equal("true", data["enable-for-tiflash"].(string)) + // Transfer all leaders to store 1. waitOperator(re, co, 2) region2 := tc.GetRegion(2) diff --git a/server/schedulers/hot_region.go b/server/schedulers/hot_region.go index 4386d5daa26..0916f7d6cb1 100644 --- a/server/schedulers/hot_region.go +++ b/server/schedulers/hot_region.go @@ -134,6 +134,10 @@ func (h *hotScheduler) GetType() string { return HotRegionType } +func (h *hotScheduler) EncodeConfig() ([]byte, error) { + return h.conf.EncodeConfig() +} + func (h *hotScheduler) ServeHTTP(w http.ResponseWriter, r *http.Request) { h.conf.ServeHTTP(w, r) } diff --git a/server/schedulers/hot_region_test.go b/server/schedulers/hot_region_test.go index a4f11ac67d5..b4e148aaac4 100644 --- a/server/schedulers/hot_region_test.go +++ b/server/schedulers/hot_region_test.go @@ -2618,3 +2618,17 @@ func TestExpect(t *testing.T) { re.Equal(testCase.allow, bs.checkDstByPriorityAndTolerance(srcToDst(testCase.load), srcToDst(testCase.expect), toleranceRatio)) } } + +// ref https://github.com/tikv/pd/issues/5701 +func TestEncodeConfig(t *testing.T) { + re := require.New(t) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + opt := config.NewTestOptions() + tc := mockcluster.NewCluster(ctx, opt) + sche, err := schedule.CreateScheduler(HotRegionType, schedule.NewOperatorController(ctx, tc, nil), storage.NewStorageWithMemoryBackend(), schedule.ConfigJSONDecoder([]byte("null"))) + re.NoError(err) + data, err := sche.EncodeConfig() + re.NoError(err) + re.NotEqual("null", string(data)) +}