Skip to content

Commit 01f2334

Browse files
committed
add more test for balance range
Signed-off-by: 童剑 <[email protected]>
1 parent 5bb9eb5 commit 01f2334

File tree

4 files changed

+28
-0
lines changed

4 files changed

+28
-0
lines changed

pkg/schedule/schedulers/balance_leader_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"github.com/tikv/pd/pkg/schedule/plan"
3636
"github.com/tikv/pd/pkg/schedule/types"
3737
"github.com/tikv/pd/pkg/storage"
38+
"github.com/tikv/pd/pkg/utils/keyutil"
3839
"github.com/tikv/pd/pkg/utils/operatorutil"
3940
"github.com/tikv/pd/pkg/versioninfo"
4041
)
@@ -449,6 +450,13 @@ func (suite *balanceLeaderRangeSchedulerTestSuite) TestSingleRangeBalance() {
449450
re.NoError(err)
450451
ops, _ = lb.Schedule(suite.tc, false)
451452
re.Empty(ops)
453+
454+
kye := keyutil.NewKeyRange("a", "g")
455+
suite.tc.Append([]keyutil.KeyRange{kye})
456+
lb, err = CreateScheduler(types.BalanceLeaderScheduler, suite.oc, storage.NewStorageWithMemoryBackend(), ConfigSliceDecoder(types.BalanceLeaderScheduler, []string{"", ""}))
457+
re.NoError(err)
458+
ops, _ = lb.Schedule(suite.tc, false)
459+
re.Empty(ops)
452460
}
453461

454462
func (suite *balanceLeaderRangeSchedulerTestSuite) TestMultiRangeBalance() {

pkg/schedule/schedulers/balance_range.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,12 +394,16 @@ func (s *balanceRangeScheduler) IsScheduleAllowed(cluster sche.SchedulerCluster)
394394
if err := s.conf.begin(index); err != nil {
395395
return false
396396
}
397+
km := cluster.GetKeyRangeManager()
398+
km.Append(job.Ranges)
397399
}
398400
// todo: add other conditions such as the diff of the score between the source and target store.
399401
if time.Since(*job.Start) > job.Timeout {
400402
if err := s.conf.finish(index); err != nil {
401403
return false
402404
}
405+
km := cluster.GetKeyRangeManager()
406+
km.Delete(job.Ranges)
403407
balanceRangeExpiredCounter.Inc()
404408
}
405409
}

pkg/schedule/schedulers/balance_range_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ func TestTIKVEngine(t *testing.T) {
6161
scheduler, err := CreateScheduler(types.BalanceRangeScheduler, oc, storage.NewStorageWithMemoryBackend(),
6262
ConfigSliceDecoder(types.BalanceRangeScheduler,
6363
[]string{"leader-scatter", "tikv", "1h", "test", "100", "200"}))
64+
re.True(scheduler.IsScheduleAllowed(tc))
65+
km := tc.GetKeyRangeManager()
66+
kr := keyutil.NewKeyRange("", "")
67+
ranges := km.GetNonOverlappingKeyRanges(&kr)
68+
re.Len(ranges, 2)
69+
re.Equal(ranges[0], keyutil.NewKeyRange("", "100"))
70+
re.Equal(ranges[1], keyutil.NewKeyRange("200", ""))
71+
6472
re.NoError(err)
6573
ops, _ := scheduler.Schedule(tc, true)
6674
re.Empty(ops)

pkg/schedule/schedulers/balance_region_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/tikv/pd/pkg/schedule/plan"
3030
"github.com/tikv/pd/pkg/schedule/types"
3131
"github.com/tikv/pd/pkg/storage"
32+
"github.com/tikv/pd/pkg/utils/keyutil"
3233
"github.com/tikv/pd/pkg/utils/operatorutil"
3334
"github.com/tikv/pd/pkg/versioninfo"
3435
)
@@ -654,9 +655,16 @@ func TestBalanceRegionEmptyRegion(t *testing.T) {
654655
core.SetApproximateKeys(1),
655656
)
656657
tc.PutRegion(region)
658+
659+
tc.Append([]keyutil.KeyRange{keyutil.NewKeyRange("a", "b")})
657660
operators, _ := sb.Schedule(tc, false)
661+
re.Empty(operators)
662+
tc.Delete([]keyutil.KeyRange{keyutil.NewKeyRange("a", "b")})
663+
664+
operators, _ = sb.Schedule(tc, false)
658665
re.NotEmpty(operators)
659666

667+
// reject the empty regions if the cluster has more regions.
660668
for i := uint64(10); i < 111; i++ {
661669
tc.PutRegionStores(i, 1, 3, 4)
662670
}

0 commit comments

Comments
 (0)