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.
		
		
		
		
		
			
		
			
				
					
					
						
							97 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							97 lines
						
					
					
						
							2.6 KiB
						
					
					
				
								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)
							 | 
						|
											}
							 | 
						|
										})
							 | 
						|
									}
							 | 
						|
								}
							 |