package weed_server import ( "context" "testing" "github.com/seaweedfs/seaweedfs/weed/filer" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" ) func TestMountRegister_EnabledStoresAndLists(t *testing.T) { fs := &FilerServer{mountPeerRegistry: filer.NewMountPeerRegistry()} if _, err := fs.MountRegister(context.Background(), &filer_pb.MountRegisterRequest{ PeerAddr: "mount-a:18080", Rack: "rack-a", TtlSeconds: 60, }); err != nil { t.Fatalf("MountRegister: %v", err) } if _, err := fs.MountRegister(context.Background(), &filer_pb.MountRegisterRequest{ PeerAddr: "mount-b:18080", Rack: "rack-b", TtlSeconds: 60, }); err != nil { t.Fatalf("MountRegister: %v", err) } resp, err := fs.MountList(context.Background(), &filer_pb.MountListRequest{}) if err != nil { t.Fatalf("MountList: %v", err) } if len(resp.Mounts) != 2 { t.Fatalf("expected 2 mounts, got %d", len(resp.Mounts)) } byAddr := map[string]*filer_pb.MountInfo{} for _, m := range resp.Mounts { byAddr[m.PeerAddr] = m } if byAddr["mount-a:18080"].Rack != "rack-a" { t.Errorf("unexpected rack for mount-a: %+v", byAddr["mount-a:18080"]) } if byAddr["mount-b:18080"].Rack != "rack-b" { t.Errorf("unexpected rack for mount-b: %+v", byAddr["mount-b:18080"]) } if byAddr["mount-a:18080"].LastSeenNs == 0 { t.Errorf("last_seen_ns should be populated") } } func TestMountRegister_RenewIsIdempotent(t *testing.T) { fs := &FilerServer{mountPeerRegistry: filer.NewMountPeerRegistry()} for i := 0; i < 5; i++ { if _, err := fs.MountRegister(context.Background(), &filer_pb.MountRegisterRequest{ PeerAddr: "mount-a:18080", TtlSeconds: 30, }); err != nil { t.Fatalf("MountRegister iteration %d: %v", i, err) } } resp, _ := fs.MountList(context.Background(), &filer_pb.MountListRequest{}) if len(resp.Mounts) != 1 { t.Errorf("repeated renew should still show 1 entry, got %d", len(resp.Mounts)) } }