You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							67 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							67 lines
						
					
					
						
							1.8 KiB
						
					
					
				| 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, | |
| 		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}, | |
| 		}, | |
| 	}) | |
| 	broker2Stats := &BrokerStats{ | |
| 		TopicPartitionCount: 2, | |
| 		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}, | |
| 		}, | |
| 	}) | |
| 	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}, | |
| 		}, | |
| 	}) | |
| 	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) | |
| 			} | |
| 		}) | |
| 	} | |
| }
 |