diff options
| author | Lisandro Pin <lisandro.pin@proton.ch> | 2024-12-12 17:41:33 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-12 08:41:33 -0800 |
| commit | 23ffbb083c4bcc9d723ce5857e08f85e7205140a (patch) | |
| tree | 09f03ef1a87703f0ebfdeb5af20501bfcd4d4e70 /weed/shell/command_ec_common_test.go | |
| parent | 6320036c567bb3d2bde32824574233aee817cd53 (diff) | |
| download | seaweedfs-23ffbb083c4bcc9d723ce5857e08f85e7205140a.tar.xz seaweedfs-23ffbb083c4bcc9d723ce5857e08f85e7205140a.zip | |
Limit EC re-balancing for `ec.encode` to relevant collections when a volume ID argument is provided. (#6347)
Limit EC re-balancing for `ec.encode` to relevant collections when a volume ID is provided.
Diffstat (limited to 'weed/shell/command_ec_common_test.go')
| -rw-r--r-- | weed/shell/command_ec_common_test.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/weed/shell/command_ec_common_test.go b/weed/shell/command_ec_common_test.go index e9c9b1d99..f76840f3c 100644 --- a/weed/shell/command_ec_common_test.go +++ b/weed/shell/command_ec_common_test.go @@ -2,6 +2,7 @@ package shell import ( "fmt" + "reflect" "strings" "testing" @@ -33,6 +34,39 @@ func errorCheck(got error, want string) error { return nil } +func TestCollectCollectionsForVolumeIds(t *testing.T) { + testCases := []struct { + topology *master_pb.TopologyInfo + vids []needle.VolumeId + want []string + }{ + // normal volumes + {topology1, nil, nil}, + {topology1, []needle.VolumeId{}, nil}, + {topology1, []needle.VolumeId{needle.VolumeId(9999)}, nil}, + {topology1, []needle.VolumeId{needle.VolumeId(2)}, nil}, + {topology1, []needle.VolumeId{needle.VolumeId(2), needle.VolumeId(272)}, []string{"collection2"}}, + {topology1, []needle.VolumeId{needle.VolumeId(2), needle.VolumeId(272), needle.VolumeId(299)}, []string{"collection2"}}, + {topology1, []needle.VolumeId{needle.VolumeId(272), needle.VolumeId(299), needle.VolumeId(95)}, []string{"collection1", "collection2"}}, + {topology1, []needle.VolumeId{needle.VolumeId(272), needle.VolumeId(299), needle.VolumeId(95), needle.VolumeId(51)}, []string{"collection1", "collection2"}}, + {topology1, []needle.VolumeId{needle.VolumeId(272), needle.VolumeId(299), needle.VolumeId(95), needle.VolumeId(51), needle.VolumeId(15)}, []string{"collection0", "collection1", "collection2"}}, + // EC volumes + {topology2, []needle.VolumeId{needle.VolumeId(9577)}, []string{"s3qldata"}}, + {topology2, []needle.VolumeId{needle.VolumeId(9577), needle.VolumeId(12549)}, []string{"s3qldata"}}, + // normal + EC volumes + {topology2, []needle.VolumeId{needle.VolumeId(18111)}, []string{"s3qldata"}}, + {topology2, []needle.VolumeId{needle.VolumeId(8677)}, []string{"s3qldata"}}, + {topology2, []needle.VolumeId{needle.VolumeId(18111), needle.VolumeId(8677)}, []string{"s3qldata"}}, + } + + for _, tc := range testCases { + got := collectCollectionsForVolumeIds(tc.topology, tc.vids) + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("for %v: got %v, want %v", tc.vids, got, tc.want) + } + } +} + func TestParseReplicaPlacementArg(t *testing.T) { getDefaultReplicaPlacementOrig := getDefaultReplicaPlacement getDefaultReplicaPlacement = func(commandEnv *CommandEnv) (*super_block.ReplicaPlacement, error) { |
