aboutsummaryrefslogtreecommitdiff
path: root/weed/mq/pub_balancer/balance_brokers_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/mq/pub_balancer/balance_brokers_test.go')
-rw-r--r--weed/mq/pub_balancer/balance_brokers_test.go75
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)
+ }
+ })
+ }
+}