aboutsummaryrefslogtreecommitdiff
path: root/weed/mq/pub_balancer/repair_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/mq/pub_balancer/repair_test.go')
-rw-r--r--weed/mq/pub_balancer/repair_test.go97
1 files changed, 97 insertions, 0 deletions
diff --git a/weed/mq/pub_balancer/repair_test.go b/weed/mq/pub_balancer/repair_test.go
new file mode 100644
index 000000000..08465c7e8
--- /dev/null
+++ b/weed/mq/pub_balancer/repair_test.go
@@ -0,0 +1,97 @@
+package pub_balancer
+
+import (
+ "github.com/seaweedfs/seaweedfs/weed/mq/topic"
+ "reflect"
+ "testing"
+)
+
+func Test_findMissingPartitions(t *testing.T) {
+ type args struct {
+ partitions []topic.Partition
+ }
+ tests := []struct {
+ name string
+ args args
+ wantMissingPartitions []topic.Partition
+ }{
+ {
+ name: "one partition",
+ args: args{
+ partitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 0, RangeStop: 1024},
+ },
+ },
+ wantMissingPartitions: nil,
+ },
+ {
+ name: "two partitions",
+ args: args{
+ partitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 0, RangeStop: 512},
+ {RingSize: 1024, RangeStart: 512, RangeStop: 1024},
+ },
+ },
+ wantMissingPartitions: nil,
+ },
+ {
+ name: "four partitions, missing last two",
+ args: args{
+ partitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 0, RangeStop: 256},
+ {RingSize: 1024, RangeStart: 256, RangeStop: 512},
+ },
+ },
+ wantMissingPartitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 512, RangeStop: 768},
+ {RingSize: 1024, RangeStart: 768, RangeStop: 1024},
+ },
+ },
+ {
+ name: "four partitions, missing first two",
+ args: args{
+ partitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 512, RangeStop: 768},
+ {RingSize: 1024, RangeStart: 768, RangeStop: 1024},
+ },
+ },
+ wantMissingPartitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 0, RangeStop: 256},
+ {RingSize: 1024, RangeStart: 256, RangeStop: 512},
+ },
+ },
+ {
+ name: "four partitions, missing middle two",
+ args: args{
+ partitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 0, RangeStop: 256},
+ {RingSize: 1024, RangeStart: 768, RangeStop: 1024},
+ },
+ },
+ wantMissingPartitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 256, RangeStop: 512},
+ {RingSize: 1024, RangeStart: 512, RangeStop: 768},
+ },
+ },
+ {
+ name: "four partitions, missing three",
+ args: args{
+ partitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 512, RangeStop: 768},
+ },
+ },
+ wantMissingPartitions: []topic.Partition{
+ {RingSize: 1024, RangeStart: 0, RangeStop: 256},
+ {RingSize: 1024, RangeStart: 256, RangeStop: 512},
+ {RingSize: 1024, RangeStart: 768, RangeStop: 1024},
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if gotMissingPartitions := findMissingPartitions(tt.args.partitions, 1024); !reflect.DeepEqual(gotMissingPartitions, tt.wantMissingPartitions) {
+ t.Errorf("findMissingPartitions() = %v, want %v", gotMissingPartitions, tt.wantMissingPartitions)
+ }
+ })
+ }
+}