|
|
package topology
import ( "code.google.com/p/weed-fs/go/sequence" _ "fmt" "strconv" "testing" )
func TestXYZ(t *testing.T) { topo, err := NewTopology("topo", "/etc/weed.conf", sequence.NewMemorySequencer(), 234, 5) if err != nil { t.Error("cannot create new topology:", err) t.FailNow() } for i := 0; i < 5; i++ { dc := NewDataCenter("dc" + strconv.Itoa(i)) dc.activeVolumeCount = i dc.maxVolumeCount = 5 topo.LinkChildNode(dc) } nl := NewNodeList(topo.Children(), nil)
picked, ret := nl.RandomlyPickN(1, 0, "") if !ret || len(picked) != 1 { t.Error("need to randomly pick 1 node") }
picked, ret = nl.RandomlyPickN(1, 0, "dc1") if !ret || len(picked) != 1 { t.Error("need to randomly pick 1 node") } if picked[0].Id() != "dc1" { t.Error("need to randomly pick 1 dc1 node") }
picked, ret = nl.RandomlyPickN(2, 0, "dc1") if !ret || len(picked) != 2 { t.Error("need to randomly pick 1 node") } if picked[0].Id() != "dc1" { t.Error("need to randomly pick 2 with one dc1 node") }
picked, ret = nl.RandomlyPickN(4, 0, "") if !ret || len(picked) != 4 { t.Error("need to randomly pick 4 nodes") }
picked, ret = nl.RandomlyPickN(5, 0, "") if !ret || len(picked) != 5 { t.Error("need to randomly pick 5 nodes") }
picked, ret = nl.RandomlyPickN(6, 0, "") if ret || len(picked) != 0 { t.Error("can not randomly pick 6 nodes:", ret, picked) }
}
|