You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.2 KiB
116 lines
3.2 KiB
package command
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/filer"
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
|
|
)
|
|
|
|
func TestMetadataEventDirectoryMembershipUsesDirectoryBoundaries(t *testing.T) {
|
|
resp := &filer_pb.SubscribeMetadataResponse{
|
|
Directory: filer.DirectoryEtcRemote,
|
|
EventNotification: &filer_pb.EventNotification{
|
|
OldEntry: &filer_pb.Entry{Name: "remote.conf"},
|
|
NewEntry: &filer_pb.Entry{Name: "remote.conf"},
|
|
NewParentPath: "/etc/remote-sibling",
|
|
},
|
|
}
|
|
|
|
sourceInDir, targetInDir := metadataEventDirectoryMembership(resp, filer.DirectoryEtcRemote)
|
|
if !sourceInDir {
|
|
t.Fatal("expected source directory to match")
|
|
}
|
|
if targetInDir {
|
|
t.Fatal("did not expect sibling target directory to match")
|
|
}
|
|
}
|
|
|
|
func TestMetadataEventUpdatesAndRemovesDirectory(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
resp *filer_pb.SubscribeMetadataResponse
|
|
wantUpdate bool
|
|
wantRemoval bool
|
|
}{
|
|
{
|
|
name: "nil response",
|
|
resp: nil,
|
|
wantUpdate: false,
|
|
wantRemoval: false,
|
|
},
|
|
{
|
|
name: "create event",
|
|
resp: &filer_pb.SubscribeMetadataResponse{
|
|
Directory: filer.DirectoryEtcRemote,
|
|
EventNotification: &filer_pb.EventNotification{
|
|
NewEntry: &filer_pb.Entry{Name: "new.conf"},
|
|
NewParentPath: filer.DirectoryEtcRemote,
|
|
},
|
|
},
|
|
wantUpdate: true,
|
|
wantRemoval: false,
|
|
},
|
|
{
|
|
name: "rename out",
|
|
resp: &filer_pb.SubscribeMetadataResponse{
|
|
Directory: filer.DirectoryEtcRemote,
|
|
EventNotification: &filer_pb.EventNotification{
|
|
OldEntry: &filer_pb.Entry{Name: "remote.conf"},
|
|
NewEntry: &filer_pb.Entry{Name: "remote.conf"},
|
|
NewParentPath: "/tmp",
|
|
},
|
|
},
|
|
wantUpdate: false,
|
|
wantRemoval: true,
|
|
},
|
|
{
|
|
name: "rename into",
|
|
resp: &filer_pb.SubscribeMetadataResponse{
|
|
Directory: "/tmp",
|
|
EventNotification: &filer_pb.EventNotification{
|
|
OldEntry: &filer_pb.Entry{Name: "remote.conf"},
|
|
NewEntry: &filer_pb.Entry{Name: "remote.conf"},
|
|
NewParentPath: filer.DirectoryEtcRemote,
|
|
},
|
|
},
|
|
wantUpdate: true,
|
|
wantRemoval: false,
|
|
},
|
|
{
|
|
name: "rename within",
|
|
resp: &filer_pb.SubscribeMetadataResponse{
|
|
Directory: filer.DirectoryEtcRemote,
|
|
EventNotification: &filer_pb.EventNotification{
|
|
OldEntry: &filer_pb.Entry{Name: "remote.conf"},
|
|
NewEntry: &filer_pb.Entry{Name: "renamed.conf"},
|
|
NewParentPath: filer.DirectoryEtcRemote,
|
|
},
|
|
},
|
|
wantUpdate: true,
|
|
wantRemoval: false,
|
|
},
|
|
{
|
|
name: "delete",
|
|
resp: &filer_pb.SubscribeMetadataResponse{
|
|
Directory: filer.DirectoryEtcRemote,
|
|
EventNotification: &filer_pb.EventNotification{
|
|
OldEntry: &filer_pb.Entry{Name: "remote.conf"},
|
|
},
|
|
},
|
|
wantUpdate: false,
|
|
wantRemoval: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := metadataEventUpdatesDirectory(tt.resp, filer.DirectoryEtcRemote); got != tt.wantUpdate {
|
|
t.Fatalf("metadataEventUpdatesDirectory() = %v, want %v", got, tt.wantUpdate)
|
|
}
|
|
if got := metadataEventRemovesFromDirectory(tt.resp, filer.DirectoryEtcRemote); got != tt.wantRemoval {
|
|
t.Fatalf("metadataEventRemovesFromDirectory() = %v, want %v", got, tt.wantRemoval)
|
|
}
|
|
})
|
|
}
|
|
}
|