diff options
Diffstat (limited to 'weed/mq/pub_balancer/balance_brokers_test.go')
| -rw-r--r-- | weed/mq/pub_balancer/balance_brokers_test.go | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/weed/mq/pub_balancer/balance_brokers_test.go b/weed/mq/pub_balancer/balance_brokers_test.go new file mode 100644 index 000000000..54667d154 --- /dev/null +++ b/weed/mq/pub_balancer/balance_brokers_test.go @@ -0,0 +1,75 @@ +package pub_balancer + +import ( + cmap "github.com/orcaman/concurrent-map/v2" + "github.com/seaweedfs/seaweedfs/weed/mq/topic" + "reflect" + "testing" +) + +func TestBalanceTopicPartitionOnBrokers(t *testing.T) { + + brokers := cmap.New[*BrokerStats]() + broker1Stats := &BrokerStats{ + TopicPartitionCount: 1, + ConsumerCount: 1, + CpuUsagePercent: 1, + TopicPartitionStats: cmap.New[*TopicPartitionStats](), + } + broker1Stats.TopicPartitionStats.Set("topic1:0", &TopicPartitionStats{ + TopicPartition: topic.TopicPartition{ + Topic: topic.Topic{Namespace: "topic1", Name: "topic1"}, + Partition: topic.Partition{RangeStart: 0, RangeStop: 512, RingSize: 1024}, + }, + ConsumerCount: 1, + IsLeader: true, + }) + broker2Stats := &BrokerStats{ + TopicPartitionCount: 2, + ConsumerCount: 1, + CpuUsagePercent: 1, + TopicPartitionStats: cmap.New[*TopicPartitionStats](), + } + broker2Stats.TopicPartitionStats.Set("topic1:1", &TopicPartitionStats{ + TopicPartition: topic.TopicPartition{ + Topic: topic.Topic{Namespace: "topic1", Name: "topic1"}, + Partition: topic.Partition{RangeStart: 512, RangeStop: 1024, RingSize: 1024}, + }, + ConsumerCount: 1, + IsLeader: true, + }) + broker2Stats.TopicPartitionStats.Set("topic2:0", &TopicPartitionStats{ + TopicPartition: topic.TopicPartition{ + Topic: topic.Topic{Namespace: "topic2", Name: "topic2"}, + Partition: topic.Partition{RangeStart: 0, RangeStop: 1024, RingSize: 1024}, + }, + ConsumerCount: 1, + IsLeader: true, + }) + brokers.Set("broker1", broker1Stats) + brokers.Set("broker2", broker2Stats) + + type args struct { + brokers cmap.ConcurrentMap[string, *BrokerStats] + } + tests := []struct { + name string + args args + want BalanceAction + }{ + { + name: "test", + args: args{ + brokers: brokers, + }, + want: nil, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := BalanceTopicPartitionOnBrokers(tt.args.brokers); !reflect.DeepEqual(got, tt.want) { + t.Errorf("BalanceTopicPartitionOnBrokers() = %v, want %v", got, tt.want) + } + }) + } +} |
