12345678910111213141516171819202122232425262728293031 |
- 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)
- fmt.Printf("=> %+v %+v\n", dn.info.Id, dn.freeEcSlot)
- }
- }
|