aboutsummaryrefslogtreecommitdiff
path: root/weed/topology/topology_test.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-06-24 23:55:27 -0700
committerChris Lu <chris.lu@gmail.com>2018-06-24 23:55:27 -0700
commit018a9a20be26b704abb27b19a22a4377624a9d5c (patch)
treefb2497b4c25d7f16e15c567b72d3525dca3042a4 /weed/topology/topology_test.go
parentcb19a7da9909c551852a8b98709f894dda5cf031 (diff)
downloadseaweedfs-018a9a20be26b704abb27b19a22a4377624a9d5c.tar.xz
seaweedfs-018a9a20be26b704abb27b19a22a4377624a9d5c.zip
add test for volume registeration at master
Diffstat (limited to 'weed/topology/topology_test.go')
-rw-r--r--weed/topology/topology_test.go96
1 files changed, 96 insertions, 0 deletions
diff --git a/weed/topology/topology_test.go b/weed/topology/topology_test.go
index 9a0dbc6b8..06f506c37 100644
--- a/weed/topology/topology_test.go
+++ b/weed/topology/topology_test.go
@@ -2,6 +2,9 @@ package topology
import (
"testing"
+ "github.com/chrislusf/seaweedfs/weed/sequence"
+ "github.com/chrislusf/seaweedfs/weed/pb/master_pb"
+ "github.com/chrislusf/seaweedfs/weed/storage"
)
func TestRemoveDataCenter(t *testing.T) {
@@ -15,3 +18,96 @@ func TestRemoveDataCenter(t *testing.T) {
t.Fail()
}
}
+
+func TestHandlingVolumeServerHeartbeat(t *testing.T) {
+ topo := NewTopology("weedfs", sequence.NewMemorySequencer(), 32*1024, 5)
+
+ dc := topo.GetOrCreateDataCenter("dc1")
+ rack := dc.GetOrCreateRack("rack1")
+ dn := rack.GetOrCreateDataNode("127.0.0.1", 34534, "127.0.0.1", 25)
+
+ {
+ volumeCount := 700
+ var volumeMessages []*master_pb.VolumeInformationMessage
+ for k := 1; k <= volumeCount; k++ {
+ volumeMessage := &master_pb.VolumeInformationMessage{
+ Id: uint32(k),
+ Size: uint64(25432),
+ Collection: "",
+ FileCount: uint64(2343),
+ DeleteCount: uint64(345),
+ DeletedByteCount: 34524,
+ ReadOnly: false,
+ ReplicaPlacement: uint32(0),
+ Version: uint32(1),
+ Ttl: 0,
+ }
+ volumeMessages = append(volumeMessages, volumeMessage)
+ }
+ var volumeInfos []storage.VolumeInfo
+ for _, v := range volumeMessages {
+ if vi, err := storage.NewVolumeInfo(v); err == nil {
+ volumeInfos = append(volumeInfos, vi)
+ }
+ }
+
+ deletedVolumes := dn.UpdateVolumes(volumeInfos)
+ for _, v := range volumeInfos {
+ topo.RegisterVolumeLayout(v, dn)
+ }
+ for _, v := range deletedVolumes {
+ topo.UnRegisterVolumeLayout(v, dn)
+ }
+
+ assert(t, "activeVolumeCount1", topo.activeVolumeCount, volumeCount)
+ assert(t, "volumeCount", topo.volumeCount, volumeCount)
+ }
+
+ {
+ volumeCount := 700 - 1
+ var volumeMessages []*master_pb.VolumeInformationMessage
+ for k := 1; k <= volumeCount; k++ {
+ volumeMessage := &master_pb.VolumeInformationMessage{
+ Id: uint32(k),
+ Size: uint64(254320),
+ Collection: "",
+ FileCount: uint64(2343),
+ DeleteCount: uint64(345),
+ DeletedByteCount: 345240,
+ ReadOnly: false,
+ ReplicaPlacement: uint32(0),
+ Version: uint32(1),
+ Ttl: 0,
+ }
+ volumeMessages = append(volumeMessages, volumeMessage)
+ }
+ var volumeInfos []storage.VolumeInfo
+ for _, v := range volumeMessages {
+ if vi, err := storage.NewVolumeInfo(v); err == nil {
+ volumeInfos = append(volumeInfos, vi)
+ }
+ }
+
+ deletedVolumes := dn.UpdateVolumes(volumeInfos)
+ for _, v := range volumeInfos {
+ topo.RegisterVolumeLayout(v, dn)
+ }
+ for _, v := range deletedVolumes {
+ topo.UnRegisterVolumeLayout(v, dn)
+ }
+
+ assert(t, "activeVolumeCount1", topo.activeVolumeCount, volumeCount)
+ assert(t, "volumeCount", topo.volumeCount, volumeCount)
+ }
+
+ topo.UnRegisterDataNode(dn)
+
+ assert(t, "activeVolumeCount2", topo.activeVolumeCount, 0)
+
+}
+
+func assert(t *testing.T, message string, actual, expected int) {
+ if actual != expected {
+ t.Fatalf("unexpected %s: %d, expected: %d", message, actual, expected)
+ }
+}