diff options
| author | themarkchen <132556106+themarkchen@users.noreply.github.com> | 2023-05-04 22:35:37 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-04 07:35:37 -0700 |
| commit | 7592d013fe83c67d1f9071d513fbfbd2cd17270b (patch) | |
| tree | 493742cb68c1c2dd57256e8ab607543cee3f399d /weed/shell/command_volume_balance_test.go | |
| parent | 6fdff0bb1857da8ce18668518e4ab19e5540b347 (diff) | |
| download | seaweedfs-7592d013fe83c67d1f9071d513fbfbd2cd17270b.tar.xz seaweedfs-7592d013fe83c67d1f9071d513fbfbd2cd17270b.zip | |
fix shell volume.balance bug (#4447)
Diffstat (limited to 'weed/shell/command_volume_balance_test.go')
| -rw-r--r-- | weed/shell/command_volume_balance_test.go | 79 |
1 files changed, 78 insertions, 1 deletions
diff --git a/weed/shell/command_volume_balance_test.go b/weed/shell/command_volume_balance_test.go index 5bd170e71..20c5abdf8 100644 --- a/weed/shell/command_volume_balance_test.go +++ b/weed/shell/command_volume_balance_test.go @@ -1,9 +1,10 @@ package shell import ( + "testing" + "github.com/seaweedfs/seaweedfs/weed/storage/types" "github.com/stretchr/testify/assert" - "testing" "github.com/seaweedfs/seaweedfs/weed/pb/master_pb" "github.com/seaweedfs/seaweedfs/weed/storage/super_block" @@ -149,6 +150,82 @@ func TestIsGoodMove(t *testing.T) { targetLocation: location{"dc1", "r2", &master_pb.DataNodeInfo{Id: "dn3"}}, expected: true, }, + + { + name: "test 011 switch which rack has more replicas", + replication: "011", + replicas: []*VolumeReplica{ + { + location: &location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn1"}}, + }, + { + location: &location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn2"}}, + }, + { + location: &location{"dc1", "r2", &master_pb.DataNodeInfo{Id: "dn3"}}, + }, + }, + sourceLocation: location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn1"}}, + targetLocation: location{"dc1", "r2", &master_pb.DataNodeInfo{Id: "dn4"}}, + expected: true, + }, + + { + name: "test 011 move the lonely replica to another racks", + replication: "011", + replicas: []*VolumeReplica{ + { + location: &location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn1"}}, + }, + { + location: &location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn2"}}, + }, + { + location: &location{"dc1", "r2", &master_pb.DataNodeInfo{Id: "dn3"}}, + }, + }, + sourceLocation: location{"dc1", "r2", &master_pb.DataNodeInfo{Id: "dn3"}}, + targetLocation: location{"dc1", "r3", &master_pb.DataNodeInfo{Id: "dn4"}}, + expected: true, + }, + + { + name: "test 011 move to wrong racks", + replication: "011", + replicas: []*VolumeReplica{ + { + location: &location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn1"}}, + }, + { + location: &location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn2"}}, + }, + { + location: &location{"dc1", "r2", &master_pb.DataNodeInfo{Id: "dn3"}}, + }, + }, + sourceLocation: location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn1"}}, + targetLocation: location{"dc1", "r3", &master_pb.DataNodeInfo{Id: "dn4"}}, + expected: false, + }, + + { + name: "test 011 move all to the same rack", + replication: "011", + replicas: []*VolumeReplica{ + { + location: &location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn1"}}, + }, + { + location: &location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn2"}}, + }, + { + location: &location{"dc1", "r2", &master_pb.DataNodeInfo{Id: "dn3"}}, + }, + }, + sourceLocation: location{"dc1", "r2", &master_pb.DataNodeInfo{Id: "dn3"}}, + targetLocation: location{"dc1", "r1", &master_pb.DataNodeInfo{Id: "dn4"}}, + expected: false, + }, } for _, tt := range tests { |
