aboutsummaryrefslogtreecommitdiff
path: root/weed/shell/command_ec_encode_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/shell/command_ec_encode_test.go')
-rw-r--r--weed/shell/command_ec_encode_test.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/weed/shell/command_ec_encode_test.go b/weed/shell/command_ec_encode_test.go
new file mode 100644
index 000000000..d5e341e5b
--- /dev/null
+++ b/weed/shell/command_ec_encode_test.go
@@ -0,0 +1,30 @@
+package shell
+
+import (
+ "fmt"
+ "github.com/chrislusf/seaweedfs/weed/storage/erasure_coding"
+ "testing"
+)
+
+func TestEcDistribution(t *testing.T) {
+
+ topologyInfo := parseOutput(topoData)
+
+ // find out all volume servers with one slot left.
+ ecNodes, totalFreeEcSlots := collectEcVolumeServersByDc(topologyInfo, "")
+
+ sortEcNodesByFreeslotsDecending(ecNodes)
+
+ if totalFreeEcSlots < erasure_coding.TotalShardsCount {
+ println("not enough free ec shard slots", totalFreeEcSlots)
+ }
+ allocatedDataNodes := ecNodes
+ if len(allocatedDataNodes) > erasure_coding.TotalShardsCount {
+ allocatedDataNodes = allocatedDataNodes[:erasure_coding.TotalShardsCount]
+ }
+
+ for _, dn := range allocatedDataNodes {
+ fmt.Printf("info %+v %+v\n", dn.info, dn)
+ }
+
+}