aboutsummaryrefslogtreecommitdiff
path: root/weed/shell/command_volume_balance_test.go
diff options
context:
space:
mode:
authorthemarkchen <132556106+themarkchen@users.noreply.github.com>2023-05-04 22:35:37 +0800
committerGitHub <noreply@github.com>2023-05-04 07:35:37 -0700
commit7592d013fe83c67d1f9071d513fbfbd2cd17270b (patch)
tree493742cb68c1c2dd57256e8ab607543cee3f399d /weed/shell/command_volume_balance_test.go
parent6fdff0bb1857da8ce18668518e4ab19e5540b347 (diff)
downloadseaweedfs-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.go79
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 {